From c9a3e8ab1389015bfcca8fdf49dc7a30eb39ecc4 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Tue, 25 Feb 2020 12:00:07 +0100 Subject: [PATCH 001/176] Update .gitmodules --- .gitmodules | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index a019069..7f0c753 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,16 +1,16 @@ [submodule "ttcn/LibCommon"] path = ttcn/LibCommon url = https://forge.etsi.org/rep/LIBS/LibCommon.git - branch = master + branch = STF574 [submodule "ttcn/LibSip"] path = ttcn/LibSip url = https://forge.etsi.org/rep/LIBS/LibSip.git - branch = master + branch = STF574 [submodule "ttcn/LibDiameter"] path = ttcn/LibDiameter url = https://forge.etsi.org/rep/LIBS/LibDiameter.git - branch = master + branch = STF574 [submodule "ttcn/LibIms"] path = ttcn/LibIms url = https://forge.etsi.org/rep/LIBS/LibIms.git - branch = master + branch = STF574 -- GitLab From 6c68a0f5e47a0162dbf235b83ce45d9410ced48e Mon Sep 17 00:00:00 2001 From: pintar Date: Tue, 25 Feb 2020 14:26:28 +0100 Subject: [PATCH 002/176] TP for Rx interface added --- test_purposes/Rx/TP_RX.tplan2 | 30 ++++++++++++++++++++++++++++++ ttcn/LibCommon | 2 +- ttcn/LibDiameter | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index ce4c141..f08ce2a 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -116,6 +116,36 @@ Package TP_RX { } } } // End of TP_RX_PCRF_AAA_02 + + Test Purpose { + TP Id TP_RX_PCRF_AAA_03 + //TP_EPC_8001_09 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives AA-Answer from home PCRF and it sends AA-Answer towards visited P-CSCF." + + Reference + "TS 129 214 (V15.6.0) [8], clause 4.4.5a, A.8 and annex B" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_A entity sends a AAA + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the AAA + to the IMS_P_CSCF_B entity + } + } + } // End of TP_RX_PCRF_AAA_03 Test Purpose { TP Id TP_RX_PCSCF_AAR_01 diff --git a/ttcn/LibCommon b/ttcn/LibCommon index 21bad7c..22cc04e 160000 --- a/ttcn/LibCommon +++ b/ttcn/LibCommon @@ -1 +1 @@ -Subproject commit 21bad7c51917d19bebdff5b36983e22922421976 +Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916 diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter index 9d2e24a..0e6bfc4 160000 --- a/ttcn/LibDiameter +++ b/ttcn/LibDiameter @@ -1 +1 @@ -Subproject commit 9d2e24aeb673ade20d4e6c4e69184285b8b43c7f +Subproject commit 0e6bfc478a043944cca7098f277fc8374cd89504 -- GitLab From ebe05af2cbba972e62fe435a8d542cd9d2bc5ffe Mon Sep 17 00:00:00 2001 From: pintar Date: Wed, 26 Feb 2020 10:21:53 +0100 Subject: [PATCH 003/176] TP for Rx, S9 interface added and Sip_Common update. --- test_purposes/Rx/TP_RX.tplan2 | 3 -- test_purposes/S9/TP_S9.tplan2 | 91 ++++++++++++++++++++++++++++++++- test_purposes/Sh/TP_Sh.tplan2 | 74 +++++++++++++++++++++++++++ test_purposes/Sip_Common.tplan2 | 1 + 4 files changed, 165 insertions(+), 4 deletions(-) create mode 100644 test_purposes/Sh/TP_Sh.tplan2 diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index f08ce2a..4d66ad7 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -71,9 +71,7 @@ Package TP_RX { ; ;, IP_CAN_AVP - indicating value "Current_IP_CAN_Type of UE_A", RAT_Type_AVP - indicating value "Current_RAT_Type of UE_A" ; to the IMS_P_CSCF_A entity } @@ -109,7 +107,6 @@ Package TP_RX { indicating value DIAMETER_SUCCESS "(2001)" Acceptable_Service_Info_AVP containing "one or more" Media_Component_Description_AVP - indicating value "derived from AA-Request" ; ; to the IMS_P_CSCF_A entity diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index 2284581..239ddac 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -18,6 +18,95 @@ Package TP_S9 { import all from Sip_Common; import all from Diameter_Common; + + Test Purpose { + TP Id TP_S9_PCRF_AAR_01 + //TP_EPC_8001_07 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives AA-Request from home PCSCS and it sends AA-Request towards home PCRF." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity sends a AAR + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the AAR + to the EPC_PCRF_A entity + } + } + } // End of TP_S9_PCRF_AAR_01 + + Test Purpose { + TP Id TP_S9_PCRF_AAA_01 + //TP_EPC_8001_08 from TS 103 029 V5.1.1 + Test objective "Verify when IUT receives AA-Request from visited PCRF then it sends a AA-Answer." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isNotAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_B entity sends a AAR + to the EPC_PCRF_A entity + } + then { + the EPC_PCRF_A entity sends a AAA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS + Acceptable_Service_Info_AVP containing + "one or more" Media_Component_Description_AVP containing + Media_Component_Number_AVP + indicating value 0, + Media_Sub_Component_AVP containing + Flow_Description_AVP + indicating value + "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or + permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or + permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number)", + Flow_Description_AVP + indicating value + "permit_out_ip from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or + permit_out_udp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or + permit_out_tcp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address", + Flow_Usage_AVP + indicating value AF_SIGNALING, + Flow_Status_AVP + indicating value ENABLED, + AF_Signalling_Protocol_AVP + indicating value SIP + ; + ; + ;, + IP_CAN_AVP + RAT_Type_AVP + ; + to the EPC_PCRF_A entity + } + } + } // End of TP_S9_PCRF_AAA_01 Test Purpose { TP Id TP_S9_PCRF_CCR_01 @@ -85,7 +174,7 @@ Package TP_S9 { Test Purpose { TP Id TP_S9_PCRF_CCA_01 //TP_EPC_8001_05 from TS 103 029 V5.1.1 - Test objective "Verify when IUT receives CC-Request from visited PCRF and it sends a CC-Answer." + Test objective "Verify when IUT receives CC-Request from visited PCRF then it sends a CC-Answer." Reference "TS 129 215 (V15.3.0) [11], clauses 4.5.1.1 and 4.5.3.1" diff --git a/test_purposes/Sh/TP_Sh.tplan2 b/test_purposes/Sh/TP_Sh.tplan2 new file mode 100644 index 0000000..9ab6083 --- /dev/null +++ b/test_purposes/Sh/TP_Sh.tplan2 @@ -0,0 +1,74 @@ +/* +Copyright (c) ETSI 2019. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + + +Package TP_Sh { + + import all from Sip_Common; + import all from Diameter_Common; + + + + Test Purpose { + TP Id TP_SH_HSS_UDA_01 + //TP_SH_HSS_UD_01 from TS 103 571-2 V1.1.1 + Test objective "IUT successfully processes all mandatory AVPs in a UD-Request and sends UD-Answer." + + Reference + "TS 129 328 (V15.3.0) [12], clause 6.1.1.1" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_AS_A entity sends a UDR containing + Session_ID_AVP + Vendor_Specific_Application_Id_AVP + Auth_Session_State_AVP + indicating value NO_STATE_MAINTAINED + Origin_Host_AVP + Origin_Realm_AVP + Destination_Realm_AVP + User_Identity_AVP + Data_Reference_AVP + ; + to the IMS_HSS_A entity + } + then { + the IMS_HSS_A entity sends the UDA containing + Session_ID_AVP + Vendor_Specific_Application_Id_AVP + Auth_Session_State_AVP + Origin_Host_AVP + Origin_Realm_AVP + Result_Code_AVP + indicating value DIAMETER_SUCCESS + User_Data_AVP + ; + to the IMS_AS_A entity + } + } + } // End of TP_SH_AS_UDA_01 + +} // End of Package TP_Sh + diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 6e9fffe..d88a2b6 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -45,6 +45,7 @@ Package Sip_Common { - IMS_I_CSCF_A - IMS_S_CSCF_A - IMS_IBCF_A + - IMS_AS_A - IMS_HSS_A - IMS_P_CSCF_B - IMS_I_CSCF_B -- GitLab From 4bae571f915d03cea2999c2ff27b4da95ab8c33f Mon Sep 17 00:00:00 2001 From: Rennoch Date: Wed, 26 Feb 2020 10:56:08 +0100 Subject: [PATCH 004/176] fixing errors due to lib V3 and ttwb29 --- .project | 22 +++++++ ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn | 15 +++-- ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn | 28 +++++++++ ttcn/AtsImsIot/AtsImsIot_Templates.ttcn | 84 +++++++++++++++---------- ttcn/LibCommon | 2 +- ttcn/LibDiameter | 2 +- 6 files changed, 115 insertions(+), 38 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn diff --git a/.project b/.project index 696eeef..f668e88 100644 --- a/.project +++ b/.project @@ -6,13 +6,35 @@ Abstract_Socket_CNL113384 + + org.eclipse.jdt.core.javabuilder + + + + + com.testingtech.ttworkbench.ttthree.modelBuilder + + + org.eclipse.xtext.ui.shared.xtextBuilder + + com.testingtech.ttworkbench.ttthree.todoBuilder + + + + + com.testingtech.ttworkbench.ttthree.tt3pluginbuilder + + + + com.testingtech.ttworkbench.core.ttcn3nature org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature diff --git a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn index df20f5d..4e389fa 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn @@ -15,6 +15,13 @@ module AtsImsIot_Behavior { import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + import from AtsImsIot_Functions all; import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} // LibSip @@ -33,7 +40,7 @@ module AtsImsIot_Behavior { }; // LibDiameter import from LibDiameter_Templates all; - import from DiameterRx_Templates all; +// import from DiameterRx_Templates all; group checks { @@ -3407,8 +3414,8 @@ group checksTC_IMS_SS_0008 { var Via v_Via; var template Via vt_pcscfVia := { fieldName := VIA_E, - viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.hostPort), *}, - {mw_ViaBody_interface(v_pcscfEutAIpUrl.hostPort), *} ) + viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.components.sip.hostPort), *}, + {mw_ViaBody_interface(v_pcscfEutAIpUrl.components.sip.hostPort), *} ) }; p_monitorCompRef.start( @@ -5049,7 +5056,7 @@ group checksTC_IMS_SHARE_0009 { mw_msrpSEND_toPath_fromPath_contentType( mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response mw_fromPath(v_fromPath), // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE - mw_contentType("text", "plain") // Content-Type_header indicating text/plain + LibMsrp_Templates.mw_contentType("text", "plain") // Content-Type_header indicating text/plain ) ) }, diff --git a/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn b/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn new file mode 100644 index 0000000..7072b8b --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn @@ -0,0 +1,28 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the module parameter + */ + +module AtsImsIot_PIXITS +{ + +group SUT { + +group SUT_CONF { + /** + * @desc charstring for SUT/conference domain + */ + modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net"; + /** + * @desc charstring for conference factory URI name + */ + modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name"; + +} // end group SUT_CONF + +} // end group SUT +group TS { + +} // end group TS +} // end module AtsImsIot_PIXITS diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn index 4c023ca..d4cb32c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn @@ -29,6 +29,11 @@ module AtsImsIot_Templates { }; import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } import from LibMsrp_TypesAndValues { type SEND_request, @@ -45,7 +50,7 @@ module AtsImsIot_Templates { PX_IOT_MERGE_TOOL_PATH, PX_IOT_IFACES; } - import from LibIms_PIXITS { + import from AtsImsIot_PIXITS { modulepar PX_IMS_SUT_CONF_FACTORY_NAME, PX_IMS_SUT_CONF_HOME_DOMAIN }; @@ -118,7 +123,11 @@ module AtsImsIot_Templates { template NAPTRmessage mw_EnumQuery_Base := { enumMessage := { query := { - enumQuestion_list := ? length (1 .. infinity) + header := ?, + enumQuestion_list := ? length (1 .. infinity), + enumResponse_list := *, + authority_list := *, + additional_list := * } } } @@ -175,7 +184,7 @@ module AtsImsIot_Templates { template GenericParam mw_User_Caps ( charstring p_rcseTags ) := { id := ?, - paramValue := p_rcseTags + paramValue := { quotedString := p_rcseTags } } } @@ -230,7 +239,7 @@ module AtsImsIot_Templates { * } }, - authorization := m_Authorization(mw_credentialIntegrityNo), + authorization := mw_Authorization(mw_credentialIntegrityNo), securityClient := omit, securityVerify :=omit, pVisitedNetworkID := mw_PVisitedNetworkIDAny @@ -276,7 +285,7 @@ module AtsImsIot_Templates { {id := "orig-ioi", paramValue := ?}, * }), - authorization := m_Authorization(mw_credentialIntegrityYes), + authorization := mw_Authorization(mw_credentialIntegrityYes), securityClient := omit, securityVerify :=omit, pVisitedNetworkID := mw_PVisitedNetworkIDAny @@ -312,7 +321,7 @@ module AtsImsIot_Templates { * } }, - authorization := m_Authorization(mw_credentialIntegrityIpAssocPending), + authorization := mw_Authorization(mw_credentialIntegrityIpAssocPending), securityClient := omit, securityVerify :=omit, pVisitedNetworkID := mw_PVisitedNetworkIDAny @@ -332,7 +341,7 @@ module AtsImsIot_Templates { {id := "orig-ioi", paramValue := ?}, * }), - authorization := m_Authorization(mw_credentialIntegrityIpAssocYes), + authorization := mw_Authorization(mw_credentialIntegrityIpAssocYes), securityClient := omit, securityVerify :=omit, pVisitedNetworkID := mw_PVisitedNetworkIDAny @@ -345,7 +354,7 @@ module AtsImsIot_Templates { */ template REGISTER_Request mdw_TP_IMS_5089_01_ic_when modifies mw_REGISTER_Request_Base := { msgHeader := { - authorization := m_Authorization(mw_credentialIntegrityNo) + authorization := mw_Authorization(mw_credentialIntegrityNo) } } @@ -355,7 +364,7 @@ module AtsImsIot_Templates { */ template REGISTER_Request mdw_TP_IMS_5089_02_ic_when modifies mw_REGISTER_Request_Base := { msgHeader := { - authorization := m_Authorization(mw_credentialIntegrityIpAssocPending) + authorization := mw_Authorization(mw_credentialIntegrityIpAssocPending) } } @@ -365,7 +374,7 @@ module AtsImsIot_Templates { */ template REGISTER_Request mdw_TP_IMS_5092_01_ic_when modifies mw_REGISTER_Request_Base := { msgHeader := { - authorization := m_Authorization(mw_credentialIntegrityNo) + authorization := mw_Authorization(mw_credentialIntegrityNo) } } @@ -431,7 +440,7 @@ module AtsImsIot_Templates { }, msgHeader := { fromField := mw_From (p_eutAUri), - toField := mw_To_NameAddr_SipUrl (p_EUTB_PublicId, ?, ?), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), event := m_Event_reg, expires := ?, // checked outside the template pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_eutAUri)), @@ -1967,7 +1976,7 @@ module AtsImsIot_Templates { } template REGISTER_Request mdw_TP_IMS_5088_01_gm modifies mw_REGISTER_Request_Base := { - msgHeader := {authorization := m_Authorization(mw_credentialIntegrityYes)} + msgHeader := {authorization := mw_Authorization(mw_credentialIntegrityYes)} } template NOTIFY_Request mdw_TP_IMS_5088_01_ic(template CallId p_callId, template SipUrl p_PCSCF_SIP_URI) modifies mw_NOTIFY_Request_Base := { @@ -2178,12 +2187,12 @@ module AtsImsIot_Templates { displayName := *, addrSpec := { scheme := "sip", - userInfo := *, - hostPort := { - host := p_Host, - portField := *}, - urlParameters := *, - headers := omit} + components := {sip := { + userInfo := *, + hostPort := {host := p_Host,portField := *} + }}, + urlParameters := *, + headers := omit} }, rrParam := omit }} @@ -2196,6 +2205,7 @@ module AtsImsIot_Templates { template PChargingVector mw_PChargingVector (template SemicolonParam_List p_List) := { fieldName := P_CHARGING_VECTOR_E, + icidValue := ?, chargeParams := p_List } // template @@ -2237,7 +2247,7 @@ module AtsImsIot_Templates { {id := "autn", paramValue := ?}, {id := "ik", paramValue := ?}, {id := "ck", paramValue := ?}, - {id := "algorithm", paramValue := "AKAv1-MD5"}, + {id := "algorithm", paramValue := { quotedString := "AKAv1-MD5" }}, *} } @@ -2250,7 +2260,7 @@ module AtsImsIot_Templates { {id := "realm", paramValue := ?}, // TODO containing operator ID {id := "nonce", paramValue := ?}, {id := "qop", paramValue := ?}, - {id := "algorithm", paramValue := "MD5"}, + {id := "algorithm", paramValue := { quotedString := "MD5" }}, *} } @@ -2264,7 +2274,7 @@ module AtsImsIot_Templates { acRcParams := { { id := "Video Sharing Feature Tag", - paramValue := "+g.3gpp.cs-voice" + paramValue := {quotedString:="+g.3gpp.cs-voice"} } } } @@ -2280,7 +2290,7 @@ module AtsImsIot_Templates { contactParams := { { id := "Video Sharing Feature Tag", - paramValue := "+g.3gpp.cs-voice" + paramValue := {quotedString:="+g.3gpp.cs-voice"} } } } @@ -2294,21 +2304,24 @@ module AtsImsIot_Templates { group AuxiliaryInformationElementTemplates { template Credentials mw_credentialIntegrityYes := { - otherResponse := {authScheme := ?, authParams := { {"integrity-protected", "yes"},*} // TODO + otherResponse := {authScheme := ?, authParams := { {"integrity-protected", {quotedString:="yes"}},*} // TODO }} + template Credentials mw_credentialIntegrityNo := { - otherResponse := {authScheme := ?, authParams := { {"integrity-protected", "no"},*} // TODO + otherResponse := {authScheme := ?, authParams := { {"integrity-protected", {quotedString:="no"}},*} // TODO }} + template Credentials mw_credentialIntegrityIpAssocPending := { otherResponse := { authScheme := ?, authParams := { - complement ({"integrity-protected", "no"},{"integrity-protected", "yes"},{"integrity-protected", "ip-assoc-yes"}), *//alowed parameters are {"integrity-protected" id with "ip-assoc-pending" value or no "integrity-protected" id} + complement ({"integrity-protected", {quotedString:="no"}},{"integrity-protected", {quotedString:="yes"}},{"integrity-protected", {quotedString:="ip-assoc-yes"}}), * //alowed parameters are {"integrity-protected" id with "ip-assoc-pending" value or no "integrity-protected" id} } } } + template Credentials mw_credentialIntegrityIpAssocYes := { - otherResponse := {authScheme := ?, authParams := { {"integrity-protected", "ip-assoc-yes"},*} // TODO + otherResponse := {authScheme := ?, authParams := { {"integrity-protected", {quotedString:="ip-assoc-yes"}},*} // TODO }} template RouteBody mw_routeBodyTH (template SipUrl p_sipurl):= { @@ -2330,24 +2343,31 @@ module AtsImsIot_Templates { template SipUrl mw_SIP_URI_Base := { scheme := "sip", // meaning "not tel" - userInfo := ?, - hostPort := ?, + components := { sip := { + userInfo := ?, + hostPort := ? + } + }, urlParameters := *, headers := * } template SipUrl mw_TEL_URI_Base := { scheme := "tel", - userInfo := ?, - hostPort := *, + components := { tel := { + subscriber := ? + } + }, urlParameters := *, headers := * } template SipUrl mw_SIP_URI_ConfFactory modifies mw_SIP_URI_Base := { - userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_CONF_FACTORY_NAME, password:=*}, - hostPort := {host := PX_IMS_SUT_CONF_HOME_DOMAIN, portField := *} + components := { sip := { + userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_CONF_FACTORY_NAME, password:=*}, + hostPort := {host := PX_IMS_SUT_CONF_HOME_DOMAIN, portField := *} + } } } } //end group diff --git a/ttcn/LibCommon b/ttcn/LibCommon index 21bad7c..22cc04e 160000 --- a/ttcn/LibCommon +++ b/ttcn/LibCommon @@ -1 +1 @@ -Subproject commit 21bad7c51917d19bebdff5b36983e22922421976 +Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916 diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter index 9d2e24a..0e6bfc4 160000 --- a/ttcn/LibDiameter +++ b/ttcn/LibDiameter @@ -1 +1 @@ -Subproject commit 9d2e24aeb673ade20d4e6c4e69184285b8b43c7f +Subproject commit 0e6bfc478a043944cca7098f277fc8374cd89504 -- GitLab From 405abe2912040d14c490333e55a56381388d50f6 Mon Sep 17 00:00:00 2001 From: pintar Date: Wed, 26 Feb 2020 11:08:22 +0100 Subject: [PATCH 005/176] TP for S9 interface added. --- test_purposes/S9/TP_S9.tplan2 | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index 239ddac..8b338f4 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -108,6 +108,42 @@ Package TP_S9 { } } // End of TP_S9_PCRF_AAA_01 + Test Purpose { + TP Id TP_S9_PCRF_AAA_02 + //TP_EPC_8002_02 from TS 103 029 V5.1.1 + Test objective "Verify when IUT receives AA-Request from visited PCRF then it sends a AA-Answer." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isNotAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_B entity sends a AAR + to the EPC_PCRF_A entity + } + then { + the EPC_PCRF_A entity sends a AAA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS + Acceptable_Service_Info_AVP containing + "one or more" Media_Component_Description_AVP + ; + ; + to the EPC_PCRF_A entity + } + } + } // End of TP_S9_PCRF_AAA_02 + Test Purpose { TP Id TP_S9_PCRF_CCR_01 //TP_EPC_8001_04 from TS 103 029 V5.1.1 -- GitLab From 3db239ab8807ae5a3bf3da0e640b00a00551d3b7 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 26 Feb 2020 11:13:19 +0100 Subject: [PATCH 006/176] Review all Canellation/Abort TPs --- test_purposes/Gm/TP_GM.tplan2 | 154 ++++++++--- test_purposes/Mw/TP_MW_IB.tplan2 | 420 +++++++++++++++++++++++++++++- test_purposes/Mw/TP_MW_PS.tplan2 | 154 +++++++++-- test_purposes/Mw/TP_MW_SS.tplan2 | 424 ++++++++++++++++++++++++++++++- ttcn/LibCommon | 2 +- ttcn/LibDiameter | 2 +- 6 files changed, 1068 insertions(+), 88 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 933ec57..026e2fc 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -2071,7 +2071,7 @@ Package TP_GM { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity previouslyEstablishedCallWith the UE_A + the UE_A entity hasAchieveInitialINVITE } Expected behaviour @@ -2109,10 +2109,10 @@ Package TP_GM { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A and + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and the UE_A entity hasAchieveInitialINVITE } @@ -2151,11 +2151,11 @@ Package TP_GM { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A and - the UE_B entity previouslyEstablishedCallWith the UE_A + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity hasAchieveInitialINVITE } Expected behaviour @@ -2287,15 +2287,15 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend a CANCEL + the IMS_P_CSCF_B entity isRequestedToSend a 200_Ok } then { - the IMS_P_CSCF_B entity receives a 200_Ok containing + the IMS_P_CSCF_B entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity ; - from the UE_A entity + to the UE_A entity } } @@ -2355,7 +2355,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2372,7 +2372,7 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend an 486_INVITE + the UE_B entity isRequestedToSend an 486_INVITE } then { the IMS_P_CSCF_A entity sends a 486_INVITE containing @@ -2397,7 +2397,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2408,16 +2408,16 @@ Package TP_GM { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isBusy + the UE_B entity isBusy } Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend a CANCEL + the UE_A entity isRequestedToSend a 486_INVITE } then { - the IMS_P_CSCF_B entity sends a 486_INVITE containing + the IMS_P_CSCF_B entity receives a 486_INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2439,7 +2439,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -2456,10 +2456,10 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend an INVITE + the UE_B entity isRequestedToSend an 486_INVITE } then { - the IMS_P_CSCF_A entity sends a 486_INVITE containing + the IMS_P_CSCF_B entity sends a 486_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2481,7 +2481,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -2498,10 +2498,10 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity hasAchieveInitialINVITE + the UE_A entity isRequestedToSend a 486_INVITE } then { - the IMS_P_CSCF_B entity sends a 486_INVITE containing + the IMS_P_CSCF_A entity receives a 486_INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2532,7 +2532,8 @@ Package TP_GM { the UE_A entity isAttachedTo the EPC_A and the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasAchieveInitialINVITE } Expected behaviour @@ -2572,13 +2573,14 @@ Package TP_GM { the UE_A entity isAttachedTo the EPC_A and the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL } Expected behaviour ensure that { when { - the UE_B entity isRequestedToSend a CANCEL + the UE_A entity isRequestedToSend a CANCEL } then { the IMS_P_CSCF_B entity receives a 487_INVITE containing @@ -2598,20 +2600,90 @@ Package TP_GM { } // End of TP_GM_PCSCF_487INVITE_02 + Test Purpose { + + TP Id TP_GM_PCSCF_487INVITE_03 + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasAchieveInitialINVITE + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToSend an CANCEL + } + then { + the IMS_P_CSCF_B entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the UE_A entity + } + } + + } // End of TP_GM_PCSCF_487INVITE_03 - - - - - - - - - - - - - + Test Purpose { + + TP Id TP_GM_PCSCF_487INVITE_04 + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToSend a CANCEL + } + then { + the IMS_P_CSCF_A entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE, + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity + // TODO To be continued + ; + from the UE_B entity + } + } + + } // End of TP_GM_PCSCF_487INVITE_04 } // End of Package TP_GM diff --git a/test_purposes/Mw/TP_MW_IB.tplan2 b/test_purposes/Mw/TP_MW_IB.tplan2 index 478cba5..2a164c5 100644 --- a/test_purposes/Mw/TP_MW_IB.tplan2 +++ b/test_purposes/Mw/TP_MW_IB.tplan2 @@ -1592,7 +1592,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1644,7 +1644,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1656,7 +1656,7 @@ Package TP_MW_IB { the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and the UE_B entity hasAchieveInitialINVITE and - the UE_B entity isRequestedToSend a CANCEL + the UE_A entity isRequestedToSend a CANCEL } Expected behaviour @@ -1689,13 +1689,117 @@ Package TP_MW_IB { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_01 + TP Id TP_MW_ICSCF_CANCEL_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the I-CSCF successfully processes a CANCEL (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasAchieveInitialINVITE and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_S_CSCF_B entity + } + then { + the IMS_I_CSCF_B entity sends an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_IBCF_B entity + } + } + + } // End of TP_MW_ICSCF_CANCEL_03 + + Test Purpose { + + TP Id TP_MW_ICSCF_CANCEL_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the I-CSCF successfully processes a CANCEL (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity hasAchieveInitialINVITE and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_IBCF_A entity + } + then { + the IMS_I_CSCF_A entity sends an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_S_CSCF_A entity + } + } + + } // End of TP_MW_ICSCF_CANCEL_04 + + Test Purpose { + + TP Id TP_MW_PCSCF_486INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1739,13 +1843,13 @@ Package TP_MW_IB { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_02 + TP Id TP_MW_PCSCF_486INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1756,6 +1860,106 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity isBusy + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_S_CSCF_B entity + } + then { + the IMS_I_CSCF_B entity sends a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_IBCF_B entity + } + } + + } // End of TP_MW_ICSCF_486INVITE_02 + + Test Purpose { + + TP Id TP_MW_ICSCF_486INVITE_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity isBusy + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_IBCF_B entity + } + then { + the IMS_I_CSCF_B entity sends a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_S_CSCF_B entity + } + } + + } // End of TP_MW_ICSCF_486INVITE_03 + + Test Purpose { + + TP Id TP_MW_ICSCF_486INVITE_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and the UE_A entity isBusy } @@ -1785,7 +1989,207 @@ Package TP_MW_IB { } } - } // End of TP_MW_ICSCF_486INVITE_02 + } // End of TP_MW_ICSCF_486INVITE_04 + + Test Purpose { + + TP Id TP_MW_ICSCF_487INVITE_01 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the I-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_IBCF_A entity + } + then { + the IMS_I_CSCF_A entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_S_CSCF_A entity + } + } + + } // End of TP_MW_ICSCF_487INVITE_01 + + Test Purpose { + + TP Id TP_MW_ICSCF_487INVITE_02 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_S_CSCF_B entity + } + then { + the IMS_I_CSCF_B entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_IBCF_B entity + } + } + + } // End of TP_MW_ICSCF_487INVITE_02 + + Test Purpose { + + TP Id TP_MW_ICSCF_487INVITE_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the I-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_IBCF_B entity + } + then { + the IMS_I_CSCF_B entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_S_CSCF_B entity + } + } + + } // End of TP_MW_ICSCF_487INVITE_03 + + Test Purpose { + + TP Id TP_MW_ICSCF_487INVITE_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_S_CSCF_A entity + } + then { + the IMS_I_CSCF_A entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_IBCF_A entity + } + } + + } // End of TP_MW_ICSCF_487INVITE_04 } // End of Package TP_MW_IB diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 5785900..45c291d 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -2491,7 +2491,7 @@ Package TP_MW_PS { the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and the UE_B entity hasAchieveInitialINVITE and - the UE_B entity isRequestedToSend a CANCEL + the UE_A entity isRequestedToSend a CANCEL } Expected behaviour @@ -2549,7 +2549,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends an CANCEL containing + the IMS_P_CSCF_B entity receives an CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2557,7 +2557,7 @@ Package TP_MW_PS { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_P_CSCF_B entity + from the UE_A entity } then { the IMS_P_CSCF_B entity sends an CANCEL containing @@ -2568,7 +2568,7 @@ Package TP_MW_PS { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_B entity + to the IMS_S_CSCF_B entity } } @@ -2590,12 +2590,12 @@ Package TP_MW_PS { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A and + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and the UE_B entity hasAchieveInitialINVITE and - the UE_B entity isRequestedToSend a CANCEL + the UE_A entity isRequestedToSend a CANCEL } Expected behaviour @@ -2628,13 +2628,13 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_01 + TP Id TP_MW_PCSCF_486INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2678,13 +2678,13 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_02 + TP Id TP_MW_PCSCF_486INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2695,7 +2695,7 @@ Package TP_MW_PS { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isBusy + the UE_B entity isBusy } Expected behaviour @@ -2728,22 +2728,22 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_03 + TP Id TP_MW_PCSCF_486INVITE_03 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_RMI PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and + the UE_A entity isRegisteredTo the IMS_B and the UE_B entity isRegisteredTo the IMS_B and the UE_B entity isBusy } @@ -2751,7 +2751,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives a 486_INVITE containing + the IMS_P_CSCF_B entity receives a 486_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2759,10 +2759,10 @@ Package TP_MW_PS { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_A entity + from the IMS_S_CSCF_B entity } then { - the IMS_P_CSCF_A entity sends a 486_INVITE containing + the IMS_P_CSCF_B entity sends a 486_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2778,10 +2778,10 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_04 + TP Id TP_MW_PCSCF_486INVITE_04 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" @@ -2828,7 +2828,7 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_ME_PCSCF_487INVITE_01 + TP Id TP_MW_PCSCF_487INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." @@ -2845,7 +2845,7 @@ Package TP_MW_PS { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity isBusy + the UE_A entity isRequestedToSend a CANCEL } Expected behaviour @@ -2878,7 +2878,7 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_ME_PCSCF_487INVITE_02 + TP Id TP_MW_PCSCF_487INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." @@ -2895,7 +2895,7 @@ Package TP_MW_PS { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isBusy + the UE_A entity isRequestedToSend a CANCEL } Expected behaviour @@ -2926,5 +2926,105 @@ Package TP_MW_PS { } // End of TP_MW_PCSCF_487INVITE_02 + Test Purpose { + + TP Id TP_MW_PCSCF_487INVITE_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_S_CSCF_B entity + } + then { + the IMS_P_CSCF_B entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the UE_A entity + } + } + + } // End of TP_MW_PCSCF_487INVITE_03 + + Test Purpose { + + TP Id TP_MW_PCSCF_487INVITE_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the UE_B entity + } + then { + the IMS_P_CSCF_A entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_S_CSCF_A entity + } + } + + } // End of TP_MW_PCSCF_487INVITE_04 + } // End of Package TP_MW_PS diff --git a/test_purposes/Mw/TP_MW_SS.tplan2 b/test_purposes/Mw/TP_MW_SS.tplan2 index e8c28f8..1b6081e 100644 --- a/test_purposes/Mw/TP_MW_SS.tplan2 +++ b/test_purposes/Mw/TP_MW_SS.tplan2 @@ -1785,7 +1785,7 @@ Package TP_MW_SI { the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and the IMS_P_CSCF_B entity hasAchieveInitialINVITE and - the UE_B entity isRequestedToSend a CANCEL + the UE_A entity isRequestedToSend a CANCEL } Expected behaviour @@ -1818,13 +1818,117 @@ Package TP_MW_SI { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_01 + TP Id TP_MW_SCSCF_CANCEL_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasAchieveInitialINVITE and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_P_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_I_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_CANCEL_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_CANCEL_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity hasAchieveInitialINVITE and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_I_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends an CANCEL containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_P_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_CANCEL_04 + + Test Purpose { + + TP Id TP_MW_PCSCF_486INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses Clause 5.2.7 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1868,13 +1972,13 @@ Package TP_MW_SI { Test Purpose { - TP Id TP_ME_PCSCF_486INVITE_02 + TP Id TP_MW_PCSCF_486INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1885,13 +1989,13 @@ Package TP_MW_SI { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isBusy + the UE_B entity isBusy } Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives a 486_INVITE containing + the IMS_S_CSCF_B entity receives a 486_INVITE containing From indicating value PX_UA_B_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_B_CALLID, @@ -1899,10 +2003,10 @@ Package TP_MW_SI { Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_P_CSCF_A entity + from the IMS_P_CSCF_B entity } then { - the IMS_S_CSCF_A entity sends a 486_INVITE containing + the IMS_S_CSCF_B entity sends a 486_INVITE containing From indicating value PX_UA_B_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_B_CALLID, @@ -1910,11 +2014,311 @@ Package TP_MW_SI { Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_A entity + to the IMS_I_CSCF_B entity } } } // End of TP_MW_SCSCF_486INVITE_02 + Test Purpose { + + TP Id TP_MW_SCSCF_486INVITE_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity isBusy + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_I_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_P_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_486INVITE_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_486INVITE_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and + the UE_A entity isBusy + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_P_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a 486_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_I_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_486INVITE_04 + + Test Purpose { + + TP Id TP_MW_SCSCF_487INVITE_01 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_I_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_P_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_487INVITE_01 + + Test Purpose { + + TP Id TP_MW_SCSCF_487INVITE_02 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_P_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_I_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_487INVITE_02 + + Test Purpose { + + TP Id TP_MW_SCSCF_487INVITE_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_I_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_P_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_487INVITE_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_487INVITE_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_P_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a 487_INVITE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_I_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_487INVITE_04 + } // End of Package TP_MW_SI diff --git a/ttcn/LibCommon b/ttcn/LibCommon index 21bad7c..22cc04e 160000 --- a/ttcn/LibCommon +++ b/ttcn/LibCommon @@ -1 +1 @@ -Subproject commit 21bad7c51917d19bebdff5b36983e22922421976 +Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916 diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter index 9d2e24a..0e6bfc4 160000 --- a/ttcn/LibDiameter +++ b/ttcn/LibDiameter @@ -1 +1 @@ -Subproject commit 9d2e24aeb673ade20d4e6c4e69184285b8b43c7f +Subproject commit 0e6bfc478a043944cca7098f277fc8374cd89504 -- GitLab From 0ba85249da5701849dfbed5695eaa5a26737ffd4 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 26 Feb 2020 11:14:29 +0100 Subject: [PATCH 007/176] Test push on ttcn folder --- ttcn/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ttcn/README.md b/ttcn/README.md index e69de29..136d063 100644 --- a/ttcn/README.md +++ b/ttcn/README.md @@ -0,0 +1 @@ + \ No newline at end of file -- GitLab From 9e6ed546ef83024717194386147bc2bc78c26220 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 26 Feb 2020 14:22:21 +0100 Subject: [PATCH 008/176] Review all Registration TPs --- test_purposes/Gm/TP_GM.tplan2 | 96 +++++++++++++++++--- test_purposes/Mw/TP_MW_IB.tplan2 | 104 +++++++++++----------- test_purposes/Mw/TP_MW_PS.tplan2 | 146 +++++++++++++++++++++++-------- test_purposes/Mw/TP_MW_SS.tplan2 | 93 ++++++++++++++------ 4 files changed, 310 insertions(+), 129 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 026e2fc..37d1b35 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -23,7 +23,7 @@ Package TP_GM { // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_GM_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 300 bytes" + Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference "TS 124 229 (V15.6.0) [1], clause 4.2A (1st paragraph)" @@ -45,7 +45,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - ContentLength indicating value greater than 1500 bytes + ContentLength indicating value greater than 1300 bytes ; to the IMS_P_CSCF_A entity } @@ -55,7 +55,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - ContentLength indicating value greater than 1500 bytes + ContentLength indicating value greater than 1300 bytes ; from the UE_A entity and the IMS_P_CSCF_A entity sends a 200_Ok containing @@ -83,7 +83,7 @@ Package TP_GM { // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_INT @@ -147,7 +147,7 @@ Package TP_GM { // TP_IMST2_GM_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" Config Id CF_VxLTE_INT @@ -178,6 +178,7 @@ Package TP_GM { qop indicating value "auth", not SecurityClient ;; + from the UE_A entity } then { the IMS_P_CSCF_A entity sends an 200_Ok containing @@ -211,7 +212,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_INT @@ -260,7 +261,7 @@ Package TP_GM { // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" Config Id CF_VxLTE_RMI @@ -325,7 +326,7 @@ Package TP_GM { // TP_IMST2_GM_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.13" Config Id CF_VxLTE_RMI @@ -356,9 +357,10 @@ Package TP_GM { qop indicating value "auth", not SecurityClient ;; + from the UE_A entity } then { - the IMS_P_CSCF_A entity sends an 200_Ok containing + the IMS_P_CSCF_B entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -390,7 +392,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.1" Config Id CF_VxLTE_RMI @@ -430,6 +432,74 @@ Package TP_GM { } } // End of TP_GM_PCSCF_REGISTER_06 + Test Purpose { + + TP Id TP_GM_PCSCF_REGISTER_07 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity isTriggeredToDetachUser + } + then { + the IMS_P_CSCF_A entity receives a REGISTER containing + Expire indicating value 0 + ; + from the UE_A entity + } + } + } // End of TP_GM_PCSCF_REGISTER_07 + + Test Purpose { + + TP Id TP_GM_PCSCF_REGISTER_08 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity isTriggeredToDetachUser + } + then { + the IMS_P_CSCF_B entity receives a REGISTER containing + Expire indicating value 0 + ; + from the UE_A entity + } + } + } // End of TP_GM_PCSCF_REGISTER_08 + Test Purpose { TP Id TP_GM_PCSCF_SUBSCRIBE_01 @@ -439,7 +509,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.1.2 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_INT @@ -486,14 +556,14 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.1.2 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_RMI PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_B } diff --git a/test_purposes/Mw/TP_MW_IB.tplan2 b/test_purposes/Mw/TP_MW_IB.tplan2 index 2a164c5..4c314f3 100644 --- a/test_purposes/Mw/TP_MW_IB.tplan2 +++ b/test_purposes/Mw/TP_MW_IB.tplan2 @@ -24,7 +24,7 @@ Package TP_MW_IB { // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1 500 bytes" + Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference "TS 124 229 (V15.6.0) [1], clause 4.2A" @@ -41,10 +41,10 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity sends a MESSAGE - containing ContentLength indicating value greater than 1500 bytes + the IMS_I_CSCF_A entity receives a MESSAGE + containing ContentLength indicating value greater than 1300 bytes ; - to the IMS_I_CSCF_A entity + from the IMS_S_CSCF_A entity } then { the IMS_I_CSCF_A entity forwards the MESSAGE @@ -59,10 +59,10 @@ Package TP_MW_IB { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a first registration." + Test objective "Verify that the I-CSCF successfully processes a first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.3.1.2" Config Id CF_VxLTE_INT @@ -77,13 +77,13 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity sends a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA ; - to the IMS_I_CSCF_A entity + from the IMS_S_CSCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing @@ -98,7 +98,7 @@ Package TP_MW_IB { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_IBCF_A entity + to the IMS_IBCF_A entity and the IMS_I_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -125,10 +125,10 @@ Package TP_MW_IB { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a full registration." + Test objective "Verify that the I-CSCF successfully processes a full registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.3.1.2" Config Id CF_VxLTE_INT @@ -138,13 +138,13 @@ Package TP_MW_IB { the UE_A entity isAttachedTo the EPC_A and the UE_A entity isNotRegisteredTo the IMS_A and the UE_B entity isNotRegisteredTo the IMS_B and - the IMS_S_CSCF_A entity hasAchieveFirstREGISTER + the UE_A entity hasAchieveFirstREGISTER } Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity sends a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -158,7 +158,7 @@ Package TP_MW_IB { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_I_CSCF_A entity + from the IMS_S_CSCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing @@ -203,10 +203,10 @@ Package TP_MW_IB { TP Id TP_MW_ICSCF_REGISTER_03 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a invalid first registration." + Test objective "Verify that the I-CSCF successfully processes a invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.3.1.2" Config Id CF_VxLTE_INT @@ -221,7 +221,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity sends a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -234,7 +234,7 @@ Package TP_MW_IB { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "" ;; - to the IMS_I_CSCF_A entity + from the IMS_I_CSCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing @@ -269,10 +269,10 @@ Package TP_MW_IB { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a first registration." + Test objective "Verify that the I-CSCF successfully processes a first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.3.1.2" Config Id CF_VxLTE_RMI @@ -287,14 +287,14 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_B entity sends a REGISTER containing + the IMS_I_CSCF_B entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, PVisitedNetworkID ; - to the IMS_I_CSCF_B entity + from the IMS_S_CSCF_B entity } then { the IMS_I_CSCF_B entity sends a REGISTER containing @@ -309,7 +309,7 @@ Package TP_MW_IB { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_IBCF_B entity + to the IMS_IBCF_B entity and the IMS_I_CSCF_B entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -337,10 +337,10 @@ Package TP_MW_IB { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a full registration." + Test objective "Verify that the I-CSCF successfully processes a full registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.3.1.2" Config Id CF_VxLTE_RMI @@ -356,7 +356,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_B entity sends a REGISTER containing + the IMS_I_CSCF_B entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -371,7 +371,7 @@ Package TP_MW_IB { qop indicating value "auth", PVisitedNetworkID ;; - to the IMS_I_CSCF_B entity + from the IMS_S_CSCF_B entity } then { the IMS_I_CSCF_B entity sends a REGISTER containing @@ -418,10 +418,10 @@ Package TP_MW_IB { TP Id TP_MW_ICSCF_REGISTER_06 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a invalid first registration." + Test objective "Verify that the I-CSCF successfully processes a invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.3.1.2" Config Id CF_VxLTE_RMI @@ -487,10 +487,10 @@ Package TP_MW_IB { // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a SUBSCRIBE." + Test objective "Verify that the I-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.3" Config Id CF_VxLTE_INT @@ -546,17 +546,17 @@ Package TP_MW_IB { // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a SUBSCRIBE." + Test objective "Verify that the I-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.3" Config Id CF_VxLTE_RMI PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_B } @@ -604,10 +604,10 @@ Package TP_MW_IB { TP Id TP_MW_ICSCF_INVITE_01 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -623,7 +623,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity sends an INVITE containing + the IMS_I_CSCF_A entity receives an INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -636,7 +636,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_I_CSCF_A entity + from the IMS_S_CSCF_A entity } then { the IMS_I_CSCF_A entity sends an INVITE containing @@ -668,7 +668,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -730,7 +730,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -766,7 +766,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -802,7 +802,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -842,7 +842,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -882,7 +882,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -926,7 +926,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -970,7 +970,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -1020,7 +1020,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -1949,7 +1949,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_RMI @@ -1999,7 +1999,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -2049,7 +2049,7 @@ Package TP_MW_IB { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_INT @@ -2099,7 +2099,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_RMI @@ -2149,7 +2149,7 @@ Package TP_MW_IB { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7" Config Id CF_VxLTE_RMI diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 45c291d..74ce23d 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -24,7 +24,7 @@ Package TP_MW_PS { // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 500 bytes" + Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference "TS 124 229 (V15.6.0) [1], clause 4.2A" @@ -41,14 +41,14 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends a MESSAGE containing + the IMS_P_CSCF_A entity receives a MESSAGE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - ContentLength indicating value greater than 1500 bytes + ContentLength indicating value greater than 1300 bytes ; - to the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity forwards the MESSAGE containing @@ -60,7 +60,7 @@ Package TP_MW_PS { icid_value, orig_value, not PAccessNetworkInfo, - ContentLength indicating value greater than 1500 bytes + ContentLength indicating value greater than 1300 bytes ;; to the IMS_S_CSCF_A entity } @@ -125,10 +125,10 @@ Package TP_MW_PS { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a first registration." + Test objective "Verify that the P-CSCF successfully processes a first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -143,13 +143,13 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends a REGISTER containing + the IMS_P_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA ; - to the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends a REGISTER containing @@ -191,10 +191,10 @@ Package TP_MW_PS { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a full registration." + Test objective "Verify that the P-CSCF successfully processes a full registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -210,7 +210,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends a REGISTER containing + the IMS_P_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -224,7 +224,7 @@ Package TP_MW_PS { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends a REGISTER containing @@ -269,10 +269,10 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_REGISTER_03 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a invalid first registration." + Test objective "Verify that the P-CSCF successfully processes a invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -287,7 +287,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends a REGISTER containing + the IMS_P_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -300,7 +300,7 @@ Package TP_MW_PS { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "" ;; - to the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends a REGISTER containing @@ -335,10 +335,10 @@ Package TP_MW_PS { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a first registration." + Test objective "Verify that the P-CSCF successfully processes a first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -353,13 +353,13 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends a REGISTER containing + the IMS_P_CSCF_B entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA ; - to the IMS_P_CSCF_B entity + from the UE_A entity } then { the IMS_P_CSCF_B entity sends a REGISTER containing @@ -374,7 +374,7 @@ Package TP_MW_PS { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_S_CSCF_B entity + to the IMS_S_CSCF_B entity and the IMS_P_CSCF_B entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -401,10 +401,10 @@ Package TP_MW_PS { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a full registration." + Test objective "Verify that the P-CSCF successfully processes a full registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -420,7 +420,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends a REGISTER containing + the IMS_P_CSCF_B entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -434,7 +434,7 @@ Package TP_MW_PS { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_P_CSCF_B entity + from the UE_A entity } then { the IMS_P_CSCF_B entity sends a REGISTER containing @@ -481,10 +481,10 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_REGISTER_06 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a invalid first registration." + Test objective "Verify that the P-CSCF successfully processes a invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -548,10 +548,84 @@ Package TP_MW_PS { // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + Test objective "Verify that the P-CSCF successfully processes a user de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a REGISTER containing + Expire indicating value 0 + ; + from the UE_A entity + } + then { + the IMS_P_CSCF_A entity sends a REGISTER containing + Expire indicating value 0 + ; + to the IMS_S_CSCF_A entity + } + } + } // End of TP_MW_PCSCF_REGISTER_07 + + Test Purpose { + + TP Id TP_MW_PCSCF_REGISTER_08 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity receives a REGISTER containing + Expire indicating value 0 + ; + from the UE_A entity + } + then { + the IMS_P_CSCF_B entity sends a REGISTER containing + Expire indicating value 0 + ; + to the IMS_S_CSCF_B entity + } + } + } // End of TP_MW_PCSCF_REGISTER_08 + + Test Purpose { + + TP Id TP_MW_PCSCF_REGISTER_09 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + Test objective "Verify that the P-CSCF successfully processes a network de-registration." Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" Config Id CF_VxLTE_INT @@ -574,7 +648,7 @@ Package TP_MW_PS { to the IMS_S_CSCF_A entity } } - } // End of TP_MW_PCSCF_REGISTER_07 + } // End of TP_MW_PCSCF_REGISTER_09 Test Purpose { @@ -582,10 +656,10 @@ Package TP_MW_PS { // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a SUBSCRIBE." + Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.3B and 6.2" Config Id CF_VxLTE_INT @@ -641,10 +715,10 @@ Package TP_MW_PS { // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a SUBSCRIBE." + Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.3B and 6.2" Config Id CF_VxLTE_RMI @@ -699,7 +773,7 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_INVITE_01 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" @@ -821,7 +895,7 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_INVITE_03 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" diff --git a/test_purposes/Mw/TP_MW_SS.tplan2 b/test_purposes/Mw/TP_MW_SS.tplan2 index 1b6081e..4218d31 100644 --- a/test_purposes/Mw/TP_MW_SS.tplan2 +++ b/test_purposes/Mw/TP_MW_SS.tplan2 @@ -24,7 +24,7 @@ Package TP_MW_SI { // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1 500 bytes" + Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference "TS 124 229 (V15.6.0) [1], clause 4.2A" @@ -41,10 +41,10 @@ Package TP_MW_SI { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity sends a MESSAGE - containing ContentLength indicating value greater than 1500 bytes + the IMS_S_CSCF_A entity receives a MESSAGE + containing ContentLength indicating value greater than 1300 bytes ; - to the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity forwards the MESSAGE @@ -59,10 +59,10 @@ Package TP_MW_SI { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a first registration." + Test objective "Verify that the S-CSCF successfully processes a first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -77,13 +77,13 @@ Package TP_MW_SI { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity sends a REGISTER containing + the IMS_S_CSCF_A entity receives a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA ; - to the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity sends a REGISTER containing @@ -125,10 +125,10 @@ Package TP_MW_SI { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a full registration." + Test objective "Verify that the S-CSCF successfully processes a full registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -138,13 +138,13 @@ Package TP_MW_SI { the UE_A entity isAttachedTo the EPC_A and the UE_A entity isNotRegisteredTo the IMS_A and the UE_B entity isNotRegisteredTo the IMS_B and - the IMS_P_CSCF_A entity hasAchieveFirstREGISTER + the UE_A entity hasAchieveFirstREGISTER } Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity sends a REGISTER containing + the IMS_S_CSCF_A entity receives a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -158,7 +158,7 @@ Package TP_MW_SI { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity sends a REGISTER containing @@ -203,10 +203,10 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_REGISTER_03 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a invalid first registration." + Test objective "Verify that the S-CSCF successfully processes a invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -269,10 +269,10 @@ Package TP_MW_SI { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a first registration." + Test objective "Verify that the S-CSCF successfully processes a first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -337,10 +337,10 @@ Package TP_MW_SI { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a full registration." + Test objective "Verify that the S-CSCF successfully processes a full registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -415,7 +415,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_REGISTER_06 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a invalid first registration." + Test objective "Verify that the S-CSCF successfully processes a invalid first registration." Reference "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" @@ -481,10 +481,10 @@ Package TP_MW_SI { // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a network de-registration." + Test objective "Verify that the S-CSCF successfully processes a user de-registration." Reference - "ETSI TS 124 229 [2], clauses 5.1.1 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -498,10 +498,10 @@ Package TP_MW_SI { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity sends a REGISTER containing + the IMS_S_CSCF_A entity receives a REGISTER containing Expire indicating value 0 ; - to the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity forwards a REGISTER containing @@ -512,13 +512,50 @@ Package TP_MW_SI { } } // End of TP_MW_SCSCF_REGISTER_07 + Test Purpose { + + TP Id TP_MW_SCSCF_REGISTER_08 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a user de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.1.5 and Clause 6.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a REGISTER containing + Expire indicating value 0 + ; + from the IMS_P_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity forwards a REGISTER containing + Expire indicating value 0 + ; + to the IMS_I_CSCF_B entity + } + } + } // End of TP_MW_SCSCF_REGISTER_08 + Test Purpose { TP Id TP_MW_SCSCF_SUBSCRIBE_01 // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a SUBSCRIBE." + Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" @@ -577,7 +614,7 @@ Package TP_MW_SI { // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes a SUBSCRIBE." + Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" @@ -587,7 +624,7 @@ Package TP_MW_SI { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_B } @@ -635,7 +672,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_INVITE_01 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the SUT successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" -- GitLab From 108b3763ff3cc963b4a7045c6bc2ed2ce189d45f Mon Sep 17 00:00:00 2001 From: pintar Date: Wed, 26 Feb 2020 17:10:59 +0100 Subject: [PATCH 009/176] TPs for Gx, S9 interface added. --- test_purposes/Gx/TP_GX.tplan2 | 103 +++++++++++++++++++++++++++++++--- test_purposes/S9/TP_S9.tplan2 | 69 ++++++++++++++++++++++- 2 files changed, 162 insertions(+), 10 deletions(-) diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2 index 9a89253..416938b 100644 --- a/test_purposes/Gx/TP_GX.tplan2 +++ b/test_purposes/Gx/TP_GX.tplan2 @@ -327,7 +327,7 @@ Package TP_GX { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the IMS_A and + the UE_A entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A } @@ -360,7 +360,7 @@ Package TP_GX { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the IMS_A and + the UE_A entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A and the UE_A entity previouslyEstablishedCallWith the UE_B } @@ -394,7 +394,7 @@ Package TP_GX { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the IMS_A and + the UE_A entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A } @@ -430,7 +430,7 @@ Package TP_GX { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the IMS_A and + the UE_A entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A } @@ -447,7 +447,6 @@ Package TP_GX { Charging_Rule_Name_AVP Flow_Information_AVP containing Flow_Description_AVP - ;, Flow_Status_AVP Flows_AVP containing Media_Component_Number_AVP @@ -465,6 +464,7 @@ Package TP_GX { ; ; ; + ; to the EPC_PGW_A entity } } @@ -483,7 +483,7 @@ Package TP_GX { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the IMS_A and + the UE_A entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A and the UE_A entity previouslyEstablishedCallWith the UE_B } @@ -498,11 +498,100 @@ Package TP_GX { the EPC_PCRF_A entity sends the RAR containing Charging_Rule_Remove_AVP containing Charging_Rule_Name_AVP - ;; + ; + ; to the EPC_PGW_A entity } } } // End of TP_GX_PCRF_RAR_02 + + Test Purpose { + TP Id TP_GX_PCRF_RAR_03 + //TP_EPC_8002_03 from TS 103 029 V5.1.1 + Test objective "When IUT receives AA-Answer from home PCRF then IUT sends an RA-Request due to the Session Bearer procedure" + + Reference + "TS 129 212 (V15.3.0) [9], clause 4.5.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_A entity sends an AAA + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the RAR containing + Charging_Rule_Install_AVP containing + Charging_Rule_Definition_AVP containing + Charging_Rule_Name_AVP + Flow_Information_AVP containing + Flow_Description_AVP + Flow_Status_AVP + Flows_AVP containing + Media_Component_Number_AVP + ;, + QOS_Information_AVP containing + QOS_Class_Identifier_AVP + indicating value + "QCI_1 for voice or + QCI_2 for video" + ;, + Max_Requested_Bandwidth_UL_AVP + Max_Requested_Bandwidth_DL_AVP + Guaranteed_Bitrate_UL_AVP + Guaranteed_Bitrate_DL_AVP + Allocation_Retention_Priority_AVP + ; + ; + ; + ; + to the EPC_PGW_A entity + } + } + } // End of TP_GX_PCRF_RAR_03 + + Test Purpose { + TP Id TP_GX_PCRF_RAR_04 + //TP_EPC_8002_06 from TS 103 029 V5.1.1 + Test objective "When IUT receives ST-Answer from home PCRF then IUT sends an RA-Request." + + Reference + "TS 129 212 (V15.3.0) [9], clause 4.5.2" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_A entity sends an STA + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the RAR containing + Charging_Rule_Remove_AVP containing + Charging_Rule_Name_AVP + ; + ; + to the EPC_PGW_A entity + } + } + } // End of TP_GX_PCRF_RAR_04 } // End of Package TP_GX diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index 8b338f4..8b73385 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -22,7 +22,7 @@ Package TP_S9 { Test Purpose { TP Id TP_S9_PCRF_AAR_01 //TP_EPC_8001_07 from TS 103 029 V5.1.1 - Test objective "Verify that IUT receives AA-Request from home PCSCS and it sends AA-Request towards home PCRF." + Test objective "Verify that IUT receives AA-Request from visited P-CSCS and it sends AA-Request towards home PCRF." Reference "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" @@ -103,7 +103,7 @@ Package TP_S9 { IP_CAN_AVP RAT_Type_AVP ; - to the EPC_PCRF_A entity + to the EPC_PCRF_B entity } } } // End of TP_S9_PCRF_AAA_01 @@ -139,7 +139,7 @@ Package TP_S9 { "one or more" Media_Component_Description_AVP ; ; - to the EPC_PCRF_A entity + to the EPC_PCRF_B entity } } } // End of TP_S9_PCRF_AAA_02 @@ -256,5 +256,68 @@ Package TP_S9 { } } // End of TP_S9_PCRF_CCA_01 + Test Purpose { + TP Id TP_S9_PCRF_STR_01 + //TP_EPC_8002_04 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives ST-Request from visited P-CSCS and it sends ST-Request towards home PCRF." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity sends a STR + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the STR + to the EPC_PCRF_A entity + } + } + } // End of TP_S9_PCRF_STR_01 + + Test Purpose { + TP Id TP_S9_PCRF_STA_01 + //TP_EPC_8002_05 from TS 103 029 V5.1.1 + Test objective "Verify when IUT receives ST-Request from visited PCRF then it sends a ST-Answer." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isNotAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_B entity sends a STR + to the EPC_PCRF_A entity + } + then { + the EPC_PCRF_A entity sends a STA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS + ; + to the EPC_PCRF_B entity + } + } + } // End of TP_S9_PCRF_STA_01 + } // End of Package TP_S9 -- GitLab From 40f600037425277c63fba910de27e610ec7d9811 Mon Sep 17 00:00:00 2001 From: pintar Date: Thu, 27 Feb 2020 04:25:01 +0100 Subject: [PATCH 010/176] TPs for Gx, S9 interface added. Commons uodated. --- test_purposes/Diameter_Common.tplan2 | 24 +++++- test_purposes/Gx/TP_GX.tplan2 | 67 ++++++++++++++++- test_purposes/S9/TP_S9.tplan2 | 107 +++++++++++++++++++++++++++ test_purposes/Sip_Common.tplan2 | 80 +------------------- 4 files changed, 198 insertions(+), 80 deletions(-) diff --git a/test_purposes/Diameter_Common.tplan2 b/test_purposes/Diameter_Common.tplan2 index 222fa90..60e4d11 100644 --- a/test_purposes/Diameter_Common.tplan2 +++ b/test_purposes/Diameter_Common.tplan2 @@ -1,4 +1,24 @@ -Package Diameter_Common { +/* ETSI Software License +* As long as the here under conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchant ability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2019-2020 +*/ + + + Package Diameter_Common { Domain { pics: - NONE @@ -20,6 +40,8 @@ Package Diameter_Common { - detachment - invokes - create_session_request + - delete_session_request + - termination_SIP_signalling_session // CX DIAMETER Requests/Answers - UAA - UAR diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2 index 416938b..8a2632f 100644 --- a/test_purposes/Gx/TP_GX.tplan2 +++ b/test_purposes/Gx/TP_GX.tplan2 @@ -168,7 +168,7 @@ Package TP_GX { Test Purpose { TP Id TP_GX_PCRF_CCA_04 //TP_EPC_8001_06 from TS 103 029 V5.1.1 - Test objective "Verify that IUT receives CC-Answer from home PCRF it sends CC-Answer towards home P-GW." + Test objective "Verify that IUT receives CC-Answer from home PCRF and it sends CC-Answer towards home P-GW." Reference "TS 129 212 (V15.3.0) [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" @@ -211,6 +211,39 @@ Package TP_GX { } } // End of TP_GX_PCRF_CCA_04 + Test Purpose { + TP Id TP_GX_PCRF_CCA_05 + //TP_EPC_8004_04 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives CC-Answer from home PCRF and it sends CC-Answer towards home P-GW." + + Reference + "TS 129 212 (V15.3.0) [9], clauses 4.5.7" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_A entity sends an CCA + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the CCA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS + ; + to the EPC_PGW_B entity + } + } + } // End of TP_GX_PCRF_CCA_05 + Test Purpose { TP Id TP_GX_PGW_CCR_01 //TP_EPC_7001_03 from TS 103 029 V5.1.1 @@ -268,6 +301,38 @@ Package TP_GX { } } // End of TP_GX_PGW_CCR_01 + Test Purpose { + TP Id TP_GX_PGW_CCR_02 + //TP_EPC_8004_01 from TS 103 029 V5.1.1 + Test objective "Verify that when IUT is invoked with a delete session request the CC-Request is sent towards PCRF." + + Reference + "TS 129 212 (V15.3.0) [9], clauses 4.5.7" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PGW_A entity invokes delete_session_request + } + then { + the EPC_PGW_B entity sends an CCR containing + CC_Request_Type_AVP + indicating value TERMINATION_REQUEST + ; + to the EPC_PCRF_B entity + } + } + } // End of TP_GX_PGW_CCR_02 + Test Purpose { TP Id TP_GX_PGW_RAA_01 //TP_EPC_6013_01 and TP_EPC_6014_01 from TS 103 029 V5.1.1 diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index 8b73385..298d8f1 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -143,6 +143,39 @@ Package TP_S9 { } } } // End of TP_S9_PCRF_AAA_02 + + Test Purpose { + TP Id TP_S9_PCRF_ASR_01 + //TP_EPC_8004_05 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards home PCRF." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_A entity triggers termination_SIP_signalling_session + } + then { + the EPC_PCRF_A entity sends the ASR containing + Session_Id_AVP + Abort_Cause_AVP + indicating value BEARER_RELEASED + ; + to the EPC_PCRF_B entity + } + } + } // End of TP_S9_PCRF_ASR_01 Test Purpose { TP Id TP_S9_PCRF_CCR_01 @@ -207,6 +240,44 @@ Package TP_S9 { } } // End of TP_S9_PCRF_CCR_01 + Test Purpose { + TP Id TP_S9_PCRF_CCR_02 + //TP_EPC_8004_02 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives CC-Request from P-GW and it sends CC-Request towards home PCRF." + + Reference + "TS 129 215 (V15.3.0) [11], clauses 4.5.1.2 and 4.5.3.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PGW_B entity sends an CCR + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends an CCR containing + CC_Request_Type_AVP + indicating value TERMINATION_REQUEST + Subsession_Enforcement_Info_AVP containing + Subsession_Id_AVP + Subsession_Operation_AVP + indicating value TERMINATION + ; + ; + to the EPC_PCRF_A entity + } + } + } // End of TP_S9_PCRF_CCR_02 + Test Purpose { TP Id TP_S9_PCRF_CCA_01 //TP_EPC_8001_05 from TS 103 029 V5.1.1 @@ -255,6 +326,42 @@ Package TP_S9 { } } } // End of TP_S9_PCRF_CCA_01 + + Test Purpose { + TP Id TP_S9_PCRF_CCA_02 + //TP_EPC_8004_03 from TS 103 029 V5.1.1 + Test objective "Verify when IUT receives CC-Request from visited PCRF then it sends a CC-Answer." + + Reference + "TS 129 215 (V15.3.0) [11], clauses 4.5.1.2 and 4.5.3.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_B entity sends a CCR + to the EPC_PCRF_A entity + } + then { + the EPC_PCRF_A entity sends a CCA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS + Subsession_Decision_Info_AVP containing + Subsession_Id_AVP + ; + ; + to the EPC_PCRF_B entity + } + } + } // End of TP_S9_PCRF_CCA_02 Test Purpose { TP Id TP_S9_PCRF_STR_01 diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index d88a2b6..41566de 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -1,8 +1,8 @@ /* ETSI Software License -* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* As long as the here under conditions are respected, non-exclusive permission is hereby granted, * free of charge, to use, reproduce and modify this software source code, under the following conditions: * This source code is provided AS IS with no warranties, express or implied, including but not limited to, -* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* the warranties of merchant ability, fitness for a particular purpose and warranties for non-infringement * of intellectual property rights. * ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without * limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary @@ -187,82 +187,6 @@ Package Sip_Common { connection between IMS_A.g and IMS_B.g ; - Test Configuration CFG_CX_HSS_01 - containing - Tester component IMS_S_CSCF_A of type DiameterComponent - Tester component IMS_I_CSCF_A of type DiameterComponent - - SUT component IMS_HSS_A of type DiameterComponent - connection between IMS_S_CSCF_A.g and IMS_HSS_A.g - connection between IMS_I_CSCF_A.g and IMS_HSS_A.g - ; - - Test Configuration CFG_GX_PGW_01 - containing - Tester component EPC_PCRF_A of type DiameterComponent - - SUT component EPC_PGW_A of type DiameterComponent - connection between EPC_PCRF_A.g and EPC_PGW_A.g - ; - - Test Configuration CFG_GX_PCRF_01 - containing - Tester component EPC_PGW_A of type DiameterComponent - Tester component IMS_P_CSCF_A of type DiameterComponent - - SUT component EPC_PCRF_A of type DiameterComponent - connection between EPC_PCRF_A.g and EPC_PGW_A.g - connection between EPC_PCRF_A.g and IMS_P_CSCF_A.g - ; - - Test Configuration CFG_RX_PCRF_01 - containing - Tester component IMS_P_CSCF_A of type DiameterComponent - - SUT component EPC_PCRF_A of type DiameterComponent - connection between IMS_P_CSCF_A.g and EPC_PCRF_A.g - ; - - Test Configuration CFG_RX_PCRF_02 - containing - Tester component IMS_P_CSCF_A of type DiameterComponent - - SUT component EPC_PCRF_A of type DiameterComponent - SUT component EPC_PGW_A of type DiameterComponent - connection between IMS_P_CSCF_A.g and EPC_PCRF_A.g - connection between EPC_PGW_A.g and EPC_PCRF_A.g - ; - - Test Configuration CFG_RX_PCSCF_01 - containing - Tester component IMS_S_CSCF_A of type SipComponent - Tester component EPC_PCRF_A of type DiameterComponent - - SUT component IMS_P_CSCF_A of type SIPComponent - SUT component IMS_P_CSCF_A of type DiameterComponent - connection between IMS_S_CSCF_A.g and IMS_P_CSCF_A.g - connection between IMS_P_CSCF_A.g and EPC_PCRF_A_A.g - ; - - Test Configuration CFG_S6A_MME_01 - containing - Tester component UE_A of type S1APComponent - Tester component IMS_HSS_A of type DiameterComponent - - SUT component EPC_MME_A of type S1APComponent - SUT component EPC_MME_A of type DiameterComponent - connection between UE_A.g and EPC_MME_A.g - connection between EPC_MME_A.g and IMS_HSS_A.g - ; - - Test Configuration CFG_S6A_HSS_01 - containing - Tester component IMS_HSS_A of type DiameterComponent - - SUT component EPC_PGW_A of type DiameterComponent - connection between EPC_MME_A.g and IMS_HSS_A.g - ; - Test Configuration CFG_xxx_02 containing Tester component UE_A of type SipComponent -- GitLab From 553f6bf4f95514b55226ee72232734c4038b4854 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 27 Feb 2020 09:31:45 +0100 Subject: [PATCH 011/176] Review all Subscribe & Invite TPs --- test_purposes/Gm/TP_GM.tplan2 | 60 +++++------ test_purposes/Mw/TP_MW_IB.tplan2 | 134 +++++++++++++++++++++-- test_purposes/Mw/TP_MW_PS.tplan2 | 30 +++--- test_purposes/Mw/TP_MW_SS.tplan2 | 180 ++++++++++++++++++++++++++----- 4 files changed, 324 insertions(+), 80 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 37d1b35..0a7ad75 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -441,7 +441,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a user de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" Config Id CF_VxLTE_INT @@ -475,7 +475,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a user de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -604,7 +604,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 5.4.4.1 and Clause 5.4.4.2 and Clause 6.1" Config Id CF_VxLTE_INT @@ -650,7 +650,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -696,7 +696,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -742,7 +742,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -758,7 +758,7 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend an INVITE + the UE_B entity isRequestedToSend an INVITE } then { the IMS_P_CSCF_A entity sends an INVITE containing @@ -1710,7 +1710,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.2" + "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_INT @@ -1753,7 +1753,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.2" + "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_INT @@ -1796,7 +1796,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Network initiated)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.2" + "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_INT @@ -1839,7 +1839,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.2" + "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_RMI @@ -1882,7 +1882,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.2" + "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_RMI @@ -1925,7 +1925,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Network initiated)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.2" + "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_RMI @@ -1966,7 +1966,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.2" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_INT @@ -2008,7 +2008,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.2" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_INT @@ -2050,7 +2050,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.2" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_INT @@ -2088,7 +2088,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2130,7 +2130,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2172,7 +2172,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2214,7 +2214,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -2257,7 +2257,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2296,7 +2296,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2425,7 +2425,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2467,7 +2467,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2509,7 +2509,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -2551,7 +2551,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -2592,7 +2592,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2633,7 +2633,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2677,7 +2677,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -2718,7 +2718,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI diff --git a/test_purposes/Mw/TP_MW_IB.tplan2 b/test_purposes/Mw/TP_MW_IB.tplan2 index 4c314f3..363f348 100644 --- a/test_purposes/Mw/TP_MW_IB.tplan2 +++ b/test_purposes/Mw/TP_MW_IB.tplan2 @@ -490,7 +490,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3" + "ETSI TS 124 229 [2], Clause 5.3.0" Config Id CF_VxLTE_INT @@ -549,7 +549,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3" + "ETSI TS 124 229 [2], Clause 5.3.0" Config Id CF_VxLTE_RMI @@ -607,7 +607,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" Config Id CF_VxLTE_INT @@ -668,7 +668,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" Config Id CF_VxLTE_INT @@ -715,12 +715,134 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the UE_B entity + to the IMS_IBCF_B entity } } } // End of TP_MW_ICSCF_INVITE_02 + Test Purpose { + + TP Id TP_MW_ICSCF_INVITE_03 + // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + from the IMS_S_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + to the IMS_IBCF_B entity + } + } + + } // End of TP_MW_ICSCF_INVITE_03 + + Test Purpose { + + TP Id TP_MW_ICSCF_INVITE_04 + // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + from the IMS_IBCF_A entity + } + then { + the IMS_I_CSCF_A entity sends an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + to the IMS_S_CSCF_A entity + } + } + + } // End of TP_MW_ICSCF_INVITE_04 + Test Purpose { TP Id TP_MW_ICSCF_100TRY_01 @@ -1430,7 +1552,7 @@ Package TP_MW_IB { } } - } // End of TP_MW_SCSCF_200OK_BYE_01 + } // End of TP_MW_ICSCF_200OK_BYE_01 Test Purpose { diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 74ce23d..641e12d 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -776,7 +776,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.2" Config Id CF_VxLTE_INT @@ -792,7 +792,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends an INVITE containing + the IMS_P_CSCF_A entity receives an INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -805,7 +805,7 @@ Package TP_MW_PS { // TODO To be continued ; ;; - to the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends an INVITE containing @@ -837,7 +837,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -898,7 +898,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -914,7 +914,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends an INVITE containing + the IMS_P_CSCF_B entity receives an INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -927,7 +927,7 @@ Package TP_MW_PS { // TODO To be continued ; ;; - to the IMS_P_CSCF_B entity + from the UE_A entity } then { the IMS_P_CSCF_B entity sends an INVITE containing @@ -959,7 +959,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -967,7 +967,7 @@ Package TP_MW_PS { Initial conditions with { the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_A } @@ -1941,7 +1941,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_INT @@ -1992,7 +1992,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_INT @@ -2043,7 +2043,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Network)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_INT @@ -2086,7 +2086,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_RMI @@ -2137,7 +2137,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_RMI @@ -2188,7 +2188,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Network initiated)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_RMI diff --git a/test_purposes/Mw/TP_MW_SS.tplan2 b/test_purposes/Mw/TP_MW_SS.tplan2 index 4218d31..c70ea6a 100644 --- a/test_purposes/Mw/TP_MW_SS.tplan2 +++ b/test_purposes/Mw/TP_MW_SS.tplan2 @@ -418,7 +418,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a invalid first registration." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.3" Config Id CF_VxLTE_RMI @@ -558,7 +558,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" Config Id CF_VxLTE_INT @@ -617,7 +617,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" Config Id CF_VxLTE_RMI @@ -675,7 +675,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -691,7 +691,7 @@ Package TP_MW_SI { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity sends an INVITE containing + the IMS_S_CSCF_A entity receives an INVITE containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_B_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -704,7 +704,7 @@ Package TP_MW_SI { // TODO To be continued ; ;; - to the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity sends an INVITE containing @@ -736,7 +736,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -789,6 +789,128 @@ Package TP_MW_SI { } // End of TP_MW_SCSCF_INVITE_02 + Test Purpose { + + TP Id TP_MW_SCSCF_INVITE_03 + // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + from the IMS_P_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + to the IMS_I_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_INVITE_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_INVITE_04 + // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.3.2.1 and Clause 5.3.2.1A" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + from the IMS_I_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + to the IMS_P_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_INVITE_04 + Test Purpose { TP Id TP_MW_SCSCF_100TRY_01 @@ -798,7 +920,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -834,7 +956,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -870,7 +992,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -910,7 +1032,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -950,7 +1072,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -994,7 +1116,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1038,7 +1160,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1088,7 +1210,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1758,7 +1880,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1810,7 +1932,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1862,7 +1984,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -1914,7 +2036,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -1959,13 +2081,13 @@ Package TP_MW_SI { Test Purpose { - TP Id TP_MW_PCSCF_486INVITE_01 + TP Id TP_MW_SCSCF_486INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], clauses Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_INT @@ -2009,13 +2131,13 @@ Package TP_MW_SI { Test Purpose { - TP Id TP_MW_PCSCF_486INVITE_02 + TP Id TP_MW_SCSCF_486INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_INT @@ -2065,7 +2187,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -2115,7 +2237,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI @@ -2165,7 +2287,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2215,7 +2337,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2265,7 +2387,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI @@ -2315,7 +2437,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI -- GitLab From a91466a1bace0fbab31d46e01c5627be9d6a1acb Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 27 Feb 2020 10:22:32 +0100 Subject: [PATCH 012/176] Add .gitignore file --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d4fb2c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.project +.settings +.classpath +.metadata + -- GitLab From 15ed7c1b9cd6955a9486b7432a8ee9f2513cb912 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Thu, 27 Feb 2020 10:23:51 +0100 Subject: [PATCH 013/176] Delete .project --- .project | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 .project diff --git a/.project b/.project deleted file mode 100644 index f668e88..0000000 --- a/.project +++ /dev/null @@ -1,40 +0,0 @@ - - - STF574_vxlte-iop - - - Abstract_Socket_CNL113384 - - - - org.eclipse.jdt.core.javabuilder - - - - - com.testingtech.ttworkbench.ttthree.modelBuilder - - - - - org.eclipse.xtext.ui.shared.xtextBuilder - - - - - com.testingtech.ttworkbench.ttthree.todoBuilder - - - - - com.testingtech.ttworkbench.ttthree.tt3pluginbuilder - - - - - - com.testingtech.ttworkbench.core.ttcn3nature - org.eclipse.xtext.ui.shared.xtextNature - org.eclipse.jdt.core.javanature - - -- GitLab From bcd7d456b13dc80cc99ff766af64219360e8def3 Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 28 Feb 2020 08:21:14 +0100 Subject: [PATCH 014/176] Review Invite --- test_purposes/Gm/TP_GM.tplan2 | 86 +++++++- test_purposes/Mw/TP_MW_IB.tplan2 | 164 +++++++++++++-- test_purposes/Mw/TP_MW_PS.tplan2 | 119 ++++++++--- test_purposes/Mw/TP_MW_SS.tplan2 | 345 +++++++++++++++++++++---------- 4 files changed, 548 insertions(+), 166 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 0a7ad75..44135b7 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -595,6 +595,76 @@ Package TP_GM { } } // End of TP_GM_PCSCF_SUBSCRIBE_02 + Test Purpose { + + TP Id TP_GM_PCSCF_NOTIFY_01 + + Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the IMS_P_CSCF_A entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + // TODO To be continued + ; + from the UE_A entity + } + } + } // End of TP_GM_PCSCF_NOTIFY_01 + + Test Purpose { + + TP Id TP_GM_PCSCF_200OK_01 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) NOTIFY (IMS Administrative de-registration)." + + Reference + "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the UE_A entity sends a 200_Ok + to the IMS_P_CSCF_A entity + } + } + + } // End of TP_GM_PCSCF_200OK_01 + Test Purpose { TP Id TP_GM_PCSCF_INVITE_01 @@ -788,7 +858,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -823,7 +893,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -873,7 +943,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -908,7 +978,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -958,7 +1028,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -997,7 +1067,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -1053,7 +1123,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_RMI @@ -1092,7 +1162,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_RMI diff --git a/test_purposes/Mw/TP_MW_IB.tplan2 b/test_purposes/Mw/TP_MW_IB.tplan2 index 363f348..9523aa3 100644 --- a/test_purposes/Mw/TP_MW_IB.tplan2 +++ b/test_purposes/Mw/TP_MW_IB.tplan2 @@ -83,7 +83,7 @@ Package TP_MW_IB { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing @@ -98,7 +98,7 @@ Package TP_MW_IB { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_IBCF_A entity + to the IMS_S_CSCF_A entity and the IMS_I_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -114,7 +114,7 @@ Package TP_MW_IB { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } } // End of TP_MW_ICSCF_REGISTER_01 @@ -158,7 +158,7 @@ Package TP_MW_IB { Nonce indicating value "not empty", qop indicating value "auth" ;; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing @@ -176,7 +176,7 @@ Package TP_MW_IB { qop indicating value "auth", PChargingVector ;; - to the IMS_IBCF_A entity + to the IMS_S_CSCF_A entity and the IMS_I_CSCF_A entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -193,7 +193,7 @@ Package TP_MW_IB { Path, ServiceRoute ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } } // End of TP_MW_ICSCF_REGISTER_02 @@ -726,7 +726,7 @@ Package TP_MW_IB { TP Id TP_MW_ICSCF_INVITE_03 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Originating Leg)." Reference "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" @@ -787,7 +787,7 @@ Package TP_MW_IB { TP Id TP_MW_ICSCF_INVITE_04 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." + Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" @@ -846,13 +846,11 @@ Package TP_MW_IB { Test Purpose { TP Id TP_MW_ICSCF_100TRY_01 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], Clause 5.3.5" Config Id CF_VxLTE_INT @@ -882,13 +880,11 @@ Package TP_MW_IB { Test Purpose { TP Id TP_MW_ICSCF_100TRY_02 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], Clause 5.3.5" Config Id CF_VxLTE_INT @@ -915,6 +911,74 @@ Package TP_MW_IB { } // End of TP_MW_ICSCF_100TRY_02 + Test Purpose { + + TP Id TP_MW_ICSCF_100TRY_03 + + Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.3.5" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives a 100_Trying + from the IMS_IBCF_B entity + } + then { + the IMS_I_CSCF_B entity sends a 100_Trying + to the IMS_S_CSCF_B entity + } + } + + } // End of TP_MW_ICSCF_100TRY_03 + + Test Purpose { + + TP Id TP_MW_ICSCF_100TRY_04 + + Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.3.5" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives a 100_Trying + from the IMS_S_CSCF_A entity + } + then { + the IMS_I_CSCF_A entity sends a 100_Trying + to the IMS_IBCF_A entity + } + } + + } // End of TP_MW_ICSCF_100TRY_04 + Test Purpose { TP Id TP_MW_ICSCF_180RINGING_01 @@ -924,7 +988,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], Clause 5.3.5" Config Id CF_VxLTE_INT @@ -964,7 +1028,7 @@ Package TP_MW_IB { Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], Clause 5.3.5" Config Id CF_VxLTE_INT @@ -995,6 +1059,74 @@ Package TP_MW_IB { } // End of TP_MW_ICSCF_180RINGING_02 + Test Purpose { + + TP Id TP_MW_ICSCF_180RINGING_03 + + Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.3.5" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_B entity receives a 180_Ringing + from the IMS_IBCF_B entity + } + then { + the IMS_I_CSCF_B entity sends a 180_Ringing + to the IMS_S_CSCF_B entity + } + } + + } // End of TP_MW_ICSCF_180RINGING_03 + + Test Purpose { + + TP Id TP_MW_ICSCF_180RINGING_04 + + Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.3.5" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives a 180_Ringing + from the IMS_S_CSCF_A entity + } + then { + the IMS_I_CSCF_A entity sends a 180_Ringing + to the IMS_IBCF_A entity + } + } + + } // End of TP_MW_ICSCF_180RINGING_04 + Test Purpose { TP Id TP_MW_ICSCF_200OK_01 diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 641e12d..6129aa4 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -164,7 +164,7 @@ Package TP_MW_PS { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_S_CSCF_A entity + to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -242,7 +242,7 @@ Package TP_MW_PS { qop indicating value "auth", PChargingVector ;; - to the IMS_S_CSCF_A entity + to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -318,7 +318,7 @@ Package TP_MW_PS { qop indicating value "auth", PChargingVector ;; - to the IMS_S_CSCF_A entity + to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -374,7 +374,7 @@ Package TP_MW_PS { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_S_CSCF_B entity + to the IMS_I_CSCF_B entity and the IMS_P_CSCF_B entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -768,6 +768,77 @@ Package TP_MW_PS { } } // End of TP_MW_PCSCF_SUBSCRIBE_02 + Test Purpose { + + TP Id TP_MW_PCSCF_NOTIFY_01 + + Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the IMS_P_CSCF_A entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + // TODO To be continued + ; + to the UE_A entity + } + } + } // End of TP_MW_PCSCF_NOTIFY_01 + + Test Purpose { + + TP Id TP_MW_PCSCF_200OK_NOTIFY_01 + // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) NOTIFY (IMS Administrative de-registration)." + + Reference + "ETSI TS 124 229 [2], Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a 200_Ok + from the UE_A entity + } + then { + the IMS_P_CSCF_A entity sends a 200_Ok + to the IMS_S_CSCF_A entity + } + } + + } // End of TP_MW_PCSCF_200OK_NOTIFY_01 + Test Purpose { TP Id TP_MW_PCSCF_INVITE_01 @@ -1021,7 +1092,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1057,7 +1128,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1093,7 +1164,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -1129,7 +1200,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -1165,7 +1236,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1185,11 +1256,7 @@ Package TP_MW_PS { from the IMS_S_CSCF_A entity } then { - the IMS_P_CSCF_A entity sends a 180_Ringing containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; + the IMS_P_CSCF_A entity sends a 180_Ringing to the UE_A entity } } @@ -1205,7 +1272,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1225,11 +1292,7 @@ Package TP_MW_PS { from the UE_B entity } then { - the IMS_P_CSCF_B entity sends a 180_Ringing containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; + the IMS_P_CSCF_B entity sends a 180_Ringing to the IMS_S_CSCF_B entity } } @@ -1245,7 +1308,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.1 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -1265,11 +1328,7 @@ Package TP_MW_PS { from the IMS_S_CSCF_B entity } then { - the IMS_P_CSCF_B entity sends a 180_Ringing containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; + the IMS_P_CSCF_B entity sends a 180_Ringing to the UE_A entity } } @@ -1285,7 +1344,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_RMI @@ -1305,11 +1364,7 @@ Package TP_MW_PS { from the UE_B entity } then { - the IMS_P_CSCF_A entity sends a 180_Ringing containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; + the IMS_P_CSCF_A entity sends a 180_Ringing to the IMS_S_CSCF_A entity } } diff --git a/test_purposes/Mw/TP_MW_SS.tplan2 b/test_purposes/Mw/TP_MW_SS.tplan2 index c70ea6a..885ec94 100644 --- a/test_purposes/Mw/TP_MW_SS.tplan2 +++ b/test_purposes/Mw/TP_MW_SS.tplan2 @@ -14,7 +14,7 @@ file and shall not imply any sub-license right. */ /* Mw interface at P-CSCF/S-CSCF */ -Package TP_MW_SI { +Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, not MwSS import all from Sip_Common; @@ -83,23 +83,10 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA ; - from the IMS_P_CSCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_S_CSCF_A entity sends a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Path indicating value PX_P_CSCF_A_SIP_URI, - PChargingVector containing - icid indicating value PX_TO_BE_DEFINED, - PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - Require_HDR indicating value "path", - Supported indicating value "path" - ;; - to the IMS_I_CSCF_A entity - and the IMS_S_CSCF_A entity sends an 401_Unauthorized containing + the IMS_S_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -114,7 +101,7 @@ Package TP_MW_SI { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_P_CSCF_A entity + to the IMS_I_CSCF_A entity } } } // End of TP_MW_SCSCF_REGISTER_01 @@ -158,26 +145,10 @@ Package TP_MW_SI { Nonce indicating value "not empty", qop indicating value "auth" ;; - from the IMS_P_CSCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_S_CSCF_A entity sends a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Authorization containing - Authentication_Scheme indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, - Nonce indicating value "not empty", - qop indicating value "auth", - PChargingVector - ;; - to the IMS_I_CSCF_A entity - and the IMS_S_CSCF_A entity sends an 200_Ok containing + the IMS_S_CSCF_A entity sends an 200_Ok containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -193,75 +164,12 @@ Package TP_MW_SI { Path, ServiceRoute ; - to the IMS_P_CSCF_A entity + to the IMS_I_CSCF_A entity } } } // End of TP_MW_SCSCF_REGISTER_02 - Test Purpose { - - TP Id TP_MW_SCSCF_REGISTER_03 - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a invalid first registration." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_A entity isNotRegisteredTo the IMS_A and - the UE_B entity isNotRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_P_CSCF_A entity sends a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Authorization containing - Authentication_Schema indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_INVALID_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, - Nonce indicating value "" - ;; - to the IMS_S_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Authorization containing - Authentication_Scheme indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_INVALID_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, - Nonce indicating value "not empty", - qop indicating value "auth", - PChargingVector - ;; - to the IMS_I_CSCF_A entity - and the IMS_S_CSCF_A entity sends an 404_NotFound containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID - ; - to the IMS_P_CSCF_A entity - } - } - } // End of TP_MW_SCSCF_REGISTER_03 + // TP_MW_SCSCF_REGISTER_03 not applicable Test Purpose { @@ -667,6 +575,87 @@ Package TP_MW_SI { } } // End of TP_MW_SCSCF_SUBSCRIBE_02 + Test Purpose { + + TP Id TP_MW_SCSCF_NOTIFY_01 + + Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the IMS_S_CSCF_A entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + // TODO To be continued + ; + to the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity receives an 200_Ok + from the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity sends an NOTIFY containing + Event indicating value "de-reg" + // TODO To be continued + ; + to the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity receives an 200_Ok + from the IMS_P_CSCF_A entity + } + } + } // End of TP_MW_SCSCF_NOTIFY_01 + + Test Purpose { + + TP Id TP_MW_SCSCF_NOTIFY_02 + + Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the IMS_S_CSCF_A entity sends an NOTIFY containing + Event indicating value "de-reg" + // TODO To be continued + ; + to the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity receives an 200_Ok + from the IMS_P_CSCF_A entity + } + } + } // End of TP_MW_SCSCF_NOTIFY_02 + Test Purpose { TP Id TP_MW_SCSCF_INVITE_01 @@ -920,7 +909,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -956,7 +945,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -983,16 +972,86 @@ Package TP_MW_SI { } // End of TP_MW_SCSCF_100TRY_02 + Test Purpose { + + TP Id TP_MW_SCSCF_100TRY_03 + // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a 100_Trying + from the IMS_I_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends a 100_Trying + to the IMS_P_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_100TRY_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_100TRY_04 + // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a 100_Trying + from the IMS_P_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a 100_Trying + to the IMS_I_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_100TRY_04 + Test Purpose { TP Id TP_MW_SCSCF_180RINGING_01 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1026,13 +1085,11 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_180RINGING_02 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1063,6 +1120,74 @@ Package TP_MW_SI { } // End of TP_MW_SCSCF_180RINGING_02 + Test Purpose { + + TP Id TP_MW_SCSCF_180RINGING_03 + + Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a 180_Ringing + from the IMS_I_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends a 180_Ringing + to the IMS_P_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_180RINGING_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_180RINGING_04 + + Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a 180_Ringing + from the IMS_P_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a 180_Ringing + to the IMS_I_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_180RINGING_04 + Test Purpose { TP Id TP_MW_SCSCF_200OK_01 @@ -2334,7 +2459,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_487INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -2434,7 +2559,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_487INVITE_04 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" -- GitLab From faf1d06a0edca2a5b4a715e064cdda6414c00686 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Fri, 28 Feb 2020 09:51:12 +0100 Subject: [PATCH 015/176] first test case using diameter test purposes --- ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn | 80 + ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn | 82 + .../AtsImsIot_TestConfiguration.ttcn | 158 +- ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn | 14 + ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn | 505 ++ ttcn/AtsImsIot/DiameterGx_Templates.ttcn | 2081 +++++++ ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn | 248 + ttcn/AtsImsIot/DiameterS6a_Templates.ttcn | 4788 +++++++++++++++++ .../AtsImsIot/DiameterS6a_TypesAndValues.ttcn | 352 ++ 9 files changed, 8306 insertions(+), 2 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn create mode 100644 ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn create mode 100644 ttcn/AtsImsIot/DiameterGx_Templates.ttcn create mode 100644 ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn create mode 100644 ttcn/AtsImsIot/DiameterS6a_Templates.ttcn create mode 100644 ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn index 4e389fa..b90597b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn @@ -38,6 +38,9 @@ module AtsImsIot_Behavior { m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, mw_contentType }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; // LibDiameter import from LibDiameter_Templates all; // import from DiameterRx_Templates all; @@ -3939,6 +3942,83 @@ group checksTC_IMS_SHARE_0009 { }//end group checksTC_IMS_SHARE_0009 + group checksTC_VxLTE_INT_ATT_01 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_S6A_MME_ULR_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( + md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED + ?, //vc_originHost_IUT, // containing an Origin-Host AVP + ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP + ?, //vc_destinationRealm, // containing a Destination-Realm AVP + m_userName(PX_USR_NAME), // containing a User-Name AVP + DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP + ?, // containing a ULR-Flags AVP with S6a-indicator bit set + m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP + )) } , "TP_S6A_MME_ULR_01", true ) + ); + p_monitorCompRef.done; + } + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_S6A_HSS_ULA_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( + mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS + md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED + ?, //vc_originHost_IUT, // containing an Origin-Host AVP + ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP + mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set + mw_subscriptionData_dummy // containing a Subscription-Data AVP + ) + ) } , "TP_S6A_MME_ULA_01", true ) + ); + p_monitorCompRef.done; + } //function*/ + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_GX_PCRF_CCA_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, + ?, //vc_originHost, + ?, //vc_originRealm, + ?, //vc_destinationRealm, + mw_cC_Request_Type(INITIAL_REQUEST_E), + *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) + ); + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) + ); + p_monitorCompRef.done; + + } //function*/ + + }//end group checksTC_VxLTE_INT_ATT_01 + + group messagingChecks { /** * @desc Starts monitor component behavior for TP_IMS_5097_05 diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn new file mode 100644 index 0000000..f3ef9c9 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn @@ -0,0 +1,82 @@ +/** + * @author STF 574 + * @version $Id: $ + * @desc This module provides ATS specific test case definitions for Network Attachment. + * @see ETSI TS 103 653-2 (2020) + */ +module AtsImsIot_TestCases_ATT { + + // LibCommon + // LibSip + // LibIms + import from LibIms_UpperTester { type ImsUserInfo }; + // LibIot + import from LibIot_TestInterface { type IotEquipmentUser }; + import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; + import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + // LibImsIot + import from AtsImsIot_Functions { function f_getImUser }; + // ImsIot + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Functions all; + import from AtsImsIot_Behavior { group epcChecks; function f_mtc_check_response_mx, f_mtc_check_TP_IMS_5011_01_gm; group checksTC_VxLTE_INT_ATT_01 }; + + group networkAttachmentAndDefaultBearer { + /** + * @desc Initial Network Attachment and Establishment of the Default Bearer. + * On successful initial network attachment, the UE should discover the P-CSCF IP address. + * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 + */ + testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + var CF_ATT v_config; + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + v_config.gmA := f_cf_create_monitor ( c_gm_A ); + v_config.gmB := f_cf_create_monitor ( c_gm_B ); + v_config.mxA := f_cf_create_monitor ( c_mx_A ); + v_config.rx := f_cf_create_monitor ( c_rx ); + v_config.s6a := f_cf_create_monitor ( c_s6a ); + v_config.gx := f_cf_create_monitor ( c_gx ); + v_config.mw := f_cf_create_monitor ( c_mw ); + v_config.sgi := f_cf_create_monitor ( c_sgi ); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueA ); + f_cf_epc_call_rel15_up ( v_config ); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check + f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) + f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 + + // postamble + f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_epc_call_rel15_down ( v_config ); + f_cf_adapter_down ( ); + } // End of TC TC_VxLTE_INT_ATT_01 + + } // End of group networkAttachmentAndDefaultBearer + + +} // End of module AtsImsIot_TestCases_ATT \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn index a65d5b4..005f571 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn @@ -20,7 +20,7 @@ module AtsImsIot_TestConfiguration { import from LibIot_Functions { altstep a_receiveIOTVerdict; function f_setConformanceVerdict, f_setE2EVerdict; } import from LibIot_TestConfiguration { function f_cf_oracle_up, f_cf_oracle_down; } import from LibIot_TestInterface {type IotEquipmentUser;} - import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL;} + import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL, CF_ATT;} import from AtsImsIot_Templates { template m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout, @@ -71,6 +71,10 @@ module AtsImsIot_TestConfiguration { const charstring c_mx := "Mx"; //* interface monitor name Sgi const charstring c_sgi := "Sgi"; + //* interface monitor name Rx + const charstring c_s6a := "S6a"; + //* interface monitor name Rx + const charstring c_gx := "Gx"; } group mappingFunctions { @@ -1233,6 +1237,156 @@ module AtsImsIot_TestConfiguration { return v_info; } - + group g_release15 { + + function f_cf_epc_call_rel15_up ( in CF_ATT p_config ) runs on ImsTestCoordinator { + // Initialize the Adapter (including the TrafficCapture process). + timer tc_configureGuard; + var StartTrafficCaptureRsp startResult; + + activate(a_receiveIOTVerdict()); + + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_generalConfigurationReq_offline); + alt { + [] acPort.receive (m_generalConfigurationRsp_success) { + log("General configuration succeed."); + tc_configureGuard.stop; + } + [] acPort.receive (m_generalConfigurationRsp_timeout) { + setverdict(fail); + tc_configureGuard.stop; + stop; + } + [] acPort.receive (m_generalConfigurationRsp_error) { + setverdict(fail); + tc_configureGuard.stop; + stop; + } + [] acPort.receive { + log("Unknown response."); + tc_configureGuard.stop; + setverdict (inconc); + stop; + } + [] tc_configureGuard.timeout { + log("Timeout."); + setverdict (inconc); + stop; + } + } + + f_cf_monitor_up(p_config.gmA); + f_cf_monitor_up(p_config.rx); + f_cf_monitor_up(p_config.s6a); + f_cf_monitor_up(p_config.gx); + f_cf_monitor_up(p_config.mxA); + f_cf_monitor_up(p_config.mw); + f_cf_monitor_up(p_config.sgi); + if(isvalue(p_config.gmB)) { + f_cf_monitor_up(p_config.gmB); + } + + p_config.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.gmA.done; + + p_config.rx.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {f_getInterfaceInfo("Rx", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.rx.done; + + p_config.mxA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.mxA.done; + + p_config.mw.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.mw.done; + + p_config.sgi.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Sgi", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.sgi.done; + + p_config.gmB.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])} + ) + ))); + // Start traffic capture processing. + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_startTrafficCaptureReq); + alt { + [] acPort.receive (m_startTrafficCaptureRsp_any) -> value startResult { + tc_configureGuard.stop; + if (startResult.status.code != e_success) + { + log("**** StartTrafficCaptureReq unsuccessfull! ****"); + setverdict(fail); + stop; + } + } + [] tc_configureGuard.timeout { + log("**** StartTrafficCaptureReq not answered. ****"); + setverdict (inconc); + stop; + } + } + } // end of function f_cf_epc_call_rel15_up + + function f_cf_epc_call_rel15_down( + inout CF_ATT p_config + ) runs on ImsTestCoordinator { + // Stop traffic capture processing. + timer tc_configureGuard; + var StopTrafficCaptureRsp stopResult; + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_stopTrafficCaptureReq); + alt { + [] acPort.receive (m_stopTrafficCaptureRsp_any) -> value stopResult { + tc_configureGuard.stop; + if (stopResult.status.code != e_success) + { + log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq unsuccessfull! ****"); + setverdict(fail); + } + } + [] tc_configureGuard.timeout { + log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq not answered. ****"); + setverdict (inconc); + } + } + + f_cf_monitor_down(p_config.gmA); + f_cf_monitor_down(p_config.rx); + f_cf_monitor_down(p_config.s6a); + f_cf_monitor_down(p_config.gx); + f_cf_monitor_down(p_config.mxA); + f_cf_monitor_down(p_config.mw); + f_cf_monitor_down(p_config.sgi); + f_cf_monitor_down(p_config.gmB); + } // end of function f_cf_epc_call_rel15_down + + } // end group g_release15 } \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn index 96b74a7..da22ab9 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn @@ -89,4 +89,18 @@ module AtsImsIot_TestSystem { ImsInterfaceMonitor sgi, ImsInterfaceMonitor gmB // See ETSI TS 103 029 V3.1.1 clause 5.4.1.1 } + + group g_release15 { + + type record CF_ATT { + ImsInterfaceMonitor gmA, + ImsInterfaceMonitor rx, + ImsInterfaceMonitor s6a, + ImsInterfaceMonitor gx, + ImsInterfaceMonitor mxA, + ImsInterfaceMonitor mw, + ImsInterfaceMonitor sgi, + ImsInterfaceMonitor gmB + } + } // end of g_release15 } \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn b/ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn new file mode 100644 index 0000000..d465a4c --- /dev/null +++ b/ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn @@ -0,0 +1,505 @@ +/** + * @author STF 450 + * @version $Id$ + * @desc This module provides the PIXIT used for the Gx DIAMETER tests. + */ + +module DiameterGx_PIXITS +{ + + import from LibDiameter_TypesAndValues all; + import from LibCommon_BasicTypesAndValues all; + import from LibDiameter_Types_Base_AVPs all; + import from LibDiameter_Types_Gx_AVPs all; + + //const charstring IPV4or6RegExp:= pattern "/^(?:(?>(?>([a-f0-9]{1,4})(?>:(?1)){7})|(?>(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?))|(?>(?>(?>(?1)(?>:(?1)){5}:)|(?>(?!(?:.*[a-f0-9]:){6,})((?1)(?>:(?1)){0,4})?::(?>(?3):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD"; + + group Port_and_addresses{ + + /** @desc charstring, PIXIT item A-7/1 + * IP address of the test system + */ + modulepar charstring PX_DIAMETER_GX_ETS_IPADDR := "1.1.1.1"; + + /** @desc charstring, PIXIT item A-7/2 + * IP address of the system under test + */ + modulepar charstring PX_DIAMETER_GX_SUT_IPADDR := "1.1.1.2"; + + /** @desc charstring, PIXIT item A-7/3 + * Port number of the test system + */ + modulepar integer PX_DIAMETER_GX_ETS_PORT := 3868; + + /** @desc charstring, PIXIT item A-7/4 + * Port number of the system under test + */ + modulepar integer PX_DIAMETER_GX_SUT_PORT := 3868; + + } + +// SUT specific implementation variants + group DiameterCommonGxData{ + + /** @desc UTF8String, PIXIT item A-7/5 + + The Session-Id AVP (AVP Code 263) is of type UTF8String and is used + to identify a specific session (see Section 8); All messages + pertaining to a specific session MUST include only one Session-Id AVP + and the same value MUST be used throughout the life of a session; + When present, the Session-Id SHOULD appear immediately following the + Diameter Header (see Section 3); + + Ref: RFC 3588 section 8-8 + */ + modulepar UTF8String PX_SessionID := "pcscf.etsi.org;1317059245;52;21823490"; + + + /** @desc charstring, PIXIT item A-7/6 + + The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, and + MUST be present in all Diameter messages; This AVP identifies the + endpoint that originated the Diameter message; Relay agents MUST NOT + modify this AVP; + + The value of the Origin-Host AVP is guaranteed to be unique within a + single host; + + Ref: RFC 3588 section 6-3. + NOTE: could be AF or PCRF role: + pcscf.example.com + pcrf.example.com + */ + modulepar charstring PX_OriginHost := "origin.etsi.org"; + + + + /** @desc charstring, PIXIT item A-7/7 + + The Origin-Realm AVP (AVP Code 296) is of type DiameterIdentity; + This AVP contains the Realm of the originator of any Diameter message + and MUST be present in all messages; + + Ref: RFC 3588 section 6-4 + */ + modulepar charstring PX_OriginRealm := "etsi.org"; + + + + /** @desc charstring, PIXIT item A-7/8 + + The Destination-Host AVP (AVP Code 293) is of type DiameterIdentity; + This AVP MUST be present in all unsolicited agent initiated messages, + MAY be present in request messages, and MUST NOT be present in Answer + messages; + + Ref: RFC 3588 section 6-5. + NOTE: could be AF or PCRF role: + pcscf.example.com + pcrf.example.com + */ + modulepar charstring PX_DestinationHost := "destination.etsi.org"; + + + + /** @desc charstring, PIXIT item A-7/9 + + The Destination-Realm AVP (AVP Code 283) is of type DiameterIdentity, + and contains the realm the message is to be routed to; The + Destination-Realm AVP MUST NOT be present in Answer messages. + Diameter Clients insert the realm portion of the User-Name AVP; + Diameter servers initiating a request message use the value of the + Origin-Realm AVP from a previous message received from the intended + target host (unless it is known a priori); When present, the + Destination-Realm AVP is used to perform message routing decisions; + + Ref: RFC 3588 section 6-6 + */ + modulepar charstring PX_DestinationRealm := "myalupcrf.etsi.org"; + + /** @desc octetstring, PIXIT item A-7/10 + + A logical circuit-ID for the Logical-Access-ID AVP in case of xDSL IP CAN type + + */ + modulepar octetstring PX_Logical_Access_ID := '01020304'O; + + + + /** @desc UTF8String, PIXIT item A-7/11 + + A physical access ID for the Physical-Access-ID AVP in case of xDSL IP-CAN type + + */ + modulepar UTF8String PX_Physical_Access_ID := "pcscf.etsi.org;1317059245;52;21823490"; + + + /** @desc octetstring, PIXIT item A-7/12 + + The Framed-IP-Address AVP (AVP Code 8) [RADIUS] is of type + OctetString and contains an IPv4 address of the type specified in the + attribute value to be configured for the user; It MAY be used in an + authorization request as a hint to the server that a specific address + is desired, but the server is not required to honor the hint in the + corresponding response; + + Two values have special significance: 0xFFFFFFFF and 0xFFFFFFFE; The + value 0xFFFFFFFF indicates that the NAS should allow the user to + select an address (ie, negotiated); The value 0xFFFFFFFE indicates + that the NAS should select an address for the user (eg, assigned + from a pool of addresses kept by the NAS); + + + Ref: TS 129 214 5-4, table 5-4-1 + */ + modulepar octetstring PX_UE1_framedIpAddress := '0a0a0a0a'O; + + /** @desc octetstring, PIXIT item A-7/13 + + The Framed-IPv6-Prefix AVP (AVP Code 97) is of type OctetString and + contains the IPv6 prefix to be configured for the user; One or more + AVPs MAY be used in authorization requests as a hint to the server + that specific IPv6 prefixes are desired, but the server is not + required to honor the hint in the corresponding response; + + + Ref: TS 129 214 5-4, table 5-4-1 + */ + modulepar octetstring PX_UE1_framedIp6Address := '0a0a0a0a'O; + + /** @desc enumerated type Subscription_Id_Ty_Type, PIXIT item A-7/14 + * A subscription ID type for the Subscription-Id-Type AVP in Subscription-Id AVPs + Available values: END_USER_E164, END_USER_IMSI, END_USER_SIP_URI, END_USER_NAI + */ + modulepar Subscription_Id_Ty_Type PX_SUBSCRIPTION_ID_TYPE := END_USER_IMSI_E; + + /** @desc UTF8String, PIXIT item A-7/15 + * Subscription data for the Subscription-Id-Data AVP in Subscription-Id AVPs + */ + modulepar UTF8String PX_SUBSCRIPTION_ID_DATA := "SUBS_DATA"; + + /** @desc enumerated type IP_CAN_Type, PIXIT item A-7/16 + * A connectivity access type for the IP-CAN-Type AVP in CCR messages + Available values: 3GPP-GPRS, DCOSIS, xDSL, WiMAX, 3GPP2, 3GPP-EPS, Non-3GPP-EPS + */ + modulepar IP_CAN_Type PX_IP_CAN_TYPE := ThreeGPP_GPRS_E; + + /** @desc enumerated type RAT_Type, PIXIT item A-7/17 + * A radio access technology for the IP-RAT-Type AVP in CCR messages + Available values: WLAN, VIRTUAL, UTRAN, GERAN, GAN, HSPA_EVOLUTION, EUTRAN, CDMA2000, HRPD, UMB, EHRPD + */ + modulepar RAT_Type PX_RAT_TYPE := WLAN_E; + + /** @desc UInt32, PIXIT item A-7/18 + * Maximum aggregate bite rate in bits per second for the uplink direction for the APN-Aggregate-Max-Bitrate-UL AVP + */ + modulepar UInt32 PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA := 100; + + /** @desc octetstring, PIXIT item A-7/19 + * The offset between universal time and local time in steps of 15 minutes for the 3GPP-MS-TimeZone AVP for CCR messages + */ + modulepar octetstring PX_3GPP_MS_TIMEZONE_DATA := '08'O; + + /** @desc UTF8String, PIXIT item A-7/20 + * An Emergency APN for the Called-Station-Id AVP + */ + modulepar UTF8String PX_CALLED_STATION_ID_EMERGENCY_APN := "EmergencyAPN_A"; + + /** @desc UTF8String, PIXIT item A-7/21 + * An Emergency address for the Called-Station-Id AVP + */ + modulepar UTF8String PX_CALLED_STATION_ID_EMERGENCY := "Emergency"; + + /** @desc octetstring, PIXIT item A-7/22 + * An identity for the PDN connection for the PDN-Connection-ID AVP + */ + modulepar octetstring PX_PDN_CONNECTION_ID_DATA := '08'O; + + /** @desc octetstring, PIXIT item A-7/23 + * avp_Data within Bearer_Identifier_AVP is of octetstring type + */ + modulepar octetstring PX_BEARER_IDENTIFIER := '01020304'O; + + /** @desc enumerated type Bearer_Usage, PIXIT item A-7/24 + * A bearer usage value for the Bearer-Usage AVP + Available values: GENERAL, IMS_SIGNALLING + */ + modulepar Bearer_Usage PX_BEARER_USAGE_DATA := IMS_SIGNALLING_E; + + /** @desc + + The ANCA (Access-Network-Charging-Address) in IPv4 format, PIXIT item A-7/25 + + */ + modulepar IPv4Addr PX_ANCA_ipv4 := {1,2,3,4}; + /** @desc + + The ANCA (Access-Network-Charging-Address) in type IPv6 format, PIXIT item A-7/26 + + */ + modulepar IPv6Addr PX_ANCA_ipv6 := {1,2,3,4,5,6,7,8}; + + /** @desc + + The SGW/AGW in IPv4Addr format (3GPP-EPS and 3GPP2 accesses), PIXIT item A-7/27 + + */ + modulepar IPv4Addr PX_SGW_AGW_ipv4 := {1,2,3,4}; + /** @desc + + The SGW/AGW in type IPv6Addr format (3GPP-EPS and 3GPP2 accesses), PIXIT item A-7/28 + + */ + modulepar IPv6Addr PX_SGW_AGW_ipv6 := {1,2,3,4,5,6,7,8}; + + + /** @desc octetstring, PIXIT item A-7/29 + * A charging identifier for the Access-Network-Charging-Identifier-Value AVP in Access-Network-Charging-Identifier AVPs + */ + modulepar octetstring PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE := '08'O; + + /** @desc octetstring, PIXIT item A-7/30 + * An IP flow mobility routing rule for the Routing-Rule-Identifier AVP in Routing-Rule-Definition AVPs + */ + modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O; + + /** @desc UInt32, PIXIT item A-7/31 + * Unknown charging key for the Rating_-Group_ AVP + */ + modulepar UInt32 PX_UNKNOWN_RATING_GROUP := 100; + + /** @desc enumerated type Network_Request_Support, PIXIT item A-7/32 + * Value indicating the access network support for network initiated procedures for the Network_Request-Support AVP + Available values: NETWORK_REQUEST NOT SUPPORTED, NETWORK_REQUEST SUPPORTED + */ + modulepar Network_Request_Support PX_NETWORK_REQUEST_SUPPORT := NETWORK_REQUEST_SUPPORTED_E; + + /** @desc octetstring, PIXIT item A-7/33 + * First charging rule name for the Charging-Rule-Name AVP + */ + modulepar octetstring PX_CHARGING_RULE_NAME_DATA := '08'O; + + /** @desc octetstring, PIXIT item A-7/34 + * Second charging rule name for the Charging-Rule-Name AVP + */ + modulepar octetstring PX_CHARGING_RULE_NAME_DATA2 := '09'O; + + /** @desc octetstring, PIXIT item A-7/35 + * Third charging rule name for the Charging-Rule-Name AVP + * + modulepar octetstring PX_CHARGING_RULE_NAME_DATA3 := '0A'O; + + /** @desc octetstring, PIXIT item A-7/36 + * Non-existant charging rule name for the Charging-Rule-Name AVP + */ + modulepar octetstring PX_CHARGING_RULE_NAME_DATA_NONEXIST := 'FF'O; + + /** @desc octetstring, PIXIT item A-7/37 + * Charging rule base name for the Charging-Rule-Base-Name AVP + */ + modulepar UTF8String PX_CHARGING_RULE_BASE_NAME_DATA := "data"; + + + /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/38 + * A status value of PCC rule(s) for the PCC-Rule-Status AVP + Available values: ACTIVE, INACTIVE, TEMPORARILY INACTIVE + */ + modulepar PCC_Rule_Status PX_PCC_RULE_STATUS := ACTIVE_E; + + /** @desc UInt32, PIXIT item A-7/39 + * A precedence value for a PCC rule for the Precedence AVP in CCR messages + */ + modulepar UInt32 PX_PRECEDENCE_DATA := 100; + + /** @desc octetstring, PIXIT item A-7/40 + * A packet filter identity for the Packet-Filter-Identifier AVP + */ + modulepar octetstring PX_PACKET_FILTER_IDENTIFIER_DATA := '08'O; + + /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/41 + * A reason for a PCC rule to be reported for the Rule-Failure-Code AVP in Charging-Rule-Report AVPs + Available values: UNKNOWN_RULE-NAME, RATING_GROUP_ERROR, SERVICE_IDENTIFIER_ERROR, GW/PCEF_MALFUNCTION, + RESOURCES_LIMITATION, MAX_NR_BEARERS_REACHED, UNKNOWN_BEARER_ID, MISSING_BEARER_ID, MISSING_FLOW_INFORMATION, + RESOURCE_ALLOCATION_FAILURE, UNSUCCESSFUL_QOS_INFORMATION, PS_TO_CS_HANDOVER, NO_BEARER_BOUND + */ + modulepar Rule_Failure_Code PX_RULE_FAILURE_CODE := UNKNOWN_RULE_NAME_E; + + /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/42 + * Status of the offline charging interface for the Offline AVP in Charging-Rule-Definition AVPs + Available values: DISABLE_OFFLINE, ENABLE_OFFLINE + */ + modulepar Offline PX_OFFLINE_DATA := DISABLE_OFFLINE_E; + + + /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/43 + * Status of the online charging interface for the Online AVP in Charging-Rule-Definition AVPs + Available values: DISABLE_ONLINE, ENABLE_ONLINE + */ + modulepar Online PX_ONLINE_DATA := ENABLE_ONLINE_E; + + /** @desc octectstring, PIXIT item A-7/44 + * Name of a national variant of the MPS service name for the MPS-Identifier AVP + * (parameter is part of AAR message) + */ + modulepar octetstring PX_MPS_IDENTIFIER := '01020304050607'O; + + /** @desc octectstring, PIXIT item A-7/45 + * First monitoring key for the Monitoring-Key AVP in RAR and CCR messages + */ + modulepar octetstring PX_MONITORING_KEY := '01020304050607'O; + + /** @desc octectstring, PIXIT item A-7/46 + * Second monitoring key for the Monitoring-Key AVP in RAR and CCR messages + */ + modulepar octetstring PX_MONITORING_KEY2 := '01020304050677'O; + + /** @desc UInt32, PIXIT item A-7/47 + * NTP time before which the PCEF will re-request PPC rules dor the Revalidation-Time AVP in RAR messages + */ + modulepar UInt32 PX_REVALIDATION_TIME := 7; + + /** @desc UInt32, PIXIT item A-7/48 + * NTP time at which a PCC rule will be enforced for Rule-Activation-Time AVP in Charging-Rule-Install AVPs + */ + modulepar UInt32 PX_ACTIVATION_TIME := 0; + + /** @desc UInt32, PIXIT item A-7/49 + * NTP time at which a PCC rule enforcement will be stopped for Rule-Deactivation-Time AVP in Charging-Rule-Install AVPs + */ + modulepar UInt32 PX_DEACTIVATION_TIME := 0; + + /** @desc charstring, PIXIT item A-7/50 + * A sponsor identity for the Sponsor-Identity AVP in Sponsored-Connectivity AVPs + */ + modulepar charstring PX_SPONSOR_ID := "Google"; + + /** @desc charstring, PIXIT item A-7/51 + * An application service provider identity for the Application_Service_Provider AVP in Sponsored-Connectivity AVPs + + */ + modulepar charstring PX_APPLICATION_SERVICE_PROVIDER_ID := "GoogleCall"; + + + /** @desc boolean indicator, PIXIT item A-7/52 + * TRUE if the GTP interface is accessible to triggert Diameter events + */ + modulepar boolean PX_GTPsupport := false; + + /** @desc boolean indicator, PIXIT item A-7/53 + * TRUE if the Rx interface is accessible to trigger Diameter events at the Gx interface + */ + modulepar boolean PX_Rxsupport := false; + + } //end group DiameterCommonGxData + + group Rx_Related_PIXITS { + group Port_and_addresses{ + + /** @desc charstring, PIXIT item A-8/1 + * IP address of the test system + */ + modulepar charstring PX_DIAMETER_RX_ETS_IPADDR := "1.1.1.1"; + + /** @desc charstring, PIXIT item A-18/2 + * IP address of the system under test + */ + modulepar charstring PX_DIAMETER_RX_SUT_IPADDR := "1.1.1.2"; + + /** @desc charstring, PIXIT item A-8/3 + * Port number of the test system + */ + modulepar integer PX_DIAMETER_RX_ETS_PORT := 3868; + + /** @desc charstring, PIXIT item A-8/4 + * Port number of the system under test + */ + modulepar integer PX_DIAMETER_RX_SUT_PORT := 3868; + + } + /** @desc UTF8String, PIXIT item A-8/5 + + The Session-Id AVP (AVP Code 263) is of type UTF8String and is used + to identify a specific session (see Section 8); All messages + pertaining to a specific session MUST include only one Session-Id AVP + and the same value MUST be used throughout the life of a session. + When present, the Session-Id SHOULD appear immediately following the + Diameter Header (see Section 3); + + Ref: RFC 3588 section 8-8 + */ + modulepar UTF8String PX_RX_SessionID := "pcscf.etsi.org;1317059245;52;21823490"; + + + + /** @desc charstring, PIXIT item A-8/6 + + The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, and + MUST be present in all Diameter messages; This AVP identifies the + endpoint that originated the Diameter message; Relay agents MUST NOT + modify this AVP; + + The value of the Origin-Host AVP is guaranteed to be unique within a + single host; + + Ref: RFC 3588 section 6-3. + NOTE: could be AF or PCRF role: + pcscf.example.com + pcrf.example.com + */ + modulepar charstring PX_RX_OriginHost := "origin.etsi.org"; + + + + /** @desc charstring, PIXIT item A-8/7 + + The Origin-Realm AVP (AVP Code 296) is of type DiameterIdentity; + This AVP contains the Realm of the originator of any Diameter message + and MUST be present in all messages; + + Ref: RFC 3588 section 6-4 + */ + modulepar charstring PX_RX_OriginRealm := "etsi.org"; + + + + /** @desc charstring, PIXIT item A-8/8 + + The Destination-Host AVP (AVP Code 293) is of type DiameterIdentity; + This AVP MUST be present in all unsolicited agent initiated messages, + MAY be present in request messages, and MUST NOT be present in Answer + messages; + + Ref: RFC 3588 section 6-5. + NOTE: could be AF or PCRF role: + pcscf.example.com + pcrf.example.com + */ + modulepar charstring PX_RX_DestinationHost := "destination.etsi.org"; + + + + /** @desc charstring, PIXIT item A-8/9 + + The Destination-Realm AVP (AVP Code 283) is of type DiameterIdentity, + and contains the realm the message is to be routed to; The + Destination-Realm AVP MUST NOT be present in Answer messages; + Diameter Clients insert the realm portion of the User-Name AVP; + Diameter servers initiating a request message use the value of the + Origin-Realm AVP from a previous message received from the intended + target host (unless it is known a priori); When present, the + Destination-Realm AVP is used to perform message routing decisions; + + Ref: RFC 3588 section 6-6 + */ + modulepar charstring PX_RX_DestinationRealm := "myalupcrf.etsi.org"; + + + /** @desc UInt32, PIXIT item A-8/10 + + A media component number for the Media-Component AVP in Media-Component-Description AVPs + + */ + modulepar UInt32 PX_RX_MediaComponentNr := 0; + } //end group Rx_Related_PIXITS + +} // end module DiameterGx_PIXITS \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterGx_Templates.ttcn b/ttcn/AtsImsIot/DiameterGx_Templates.ttcn new file mode 100644 index 0000000..e53c625 --- /dev/null +++ b/ttcn/AtsImsIot/DiameterGx_Templates.ttcn @@ -0,0 +1,2081 @@ +/** + * @author STF 443 + * @version $Id$ + * @desc This module defines Gx Diameter Templates for message, header, and + * structured types.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * @remark Any additions to the templates shall follow the design rules + * and always modify base templates only; + */ + +module DiameterGx_Templates { + + //LibCommon + import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all; + import from LibCommon_BasicTypesAndValues {type UInt8, UInt32, UInt64;}; + + //LibDiameter + import from LibDiameter_TypesAndValues all; + import from LibDiameter_Templates all; + import from LibDiameter_Steps all; + import from LibDiameter_Types_Gx_AVPs all; + import from LibDiameter_Types_Base_AVPs all; + import from LibDiameter_Types_Rx_AVPs all; + + //DiameterGx + import from DiameterGx_PIXITS all; + + group SubFields{ + + } //end group SubFields + + group HeaderFieldTemplates { + + group DummyAVPHeaders{ + + template Charging_Rule_Report_AVP m_chargRuleReport_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Report_AVP_Code, 4, c_vendId3gpp), + charging_Rule_Name := omit, + charging_Rule_Base_Name := omit, + bearer_Identifier := omit, + pCC_Rule_Status := omit, + rule_Failure_Code := omit, + final_Unit_Indication := omit, + aVP_Type := omit + } + + template QoS_Information_AVP m_qoS_Information_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, 4, c_vendId3gpp), + qoS_Class_Identifier := omit, + max_Requested_Bandwidth_UL := omit, + max_Requested_Bandwidth_DL := omit, + guaranteed_Bitrate_UL := omit, + guaranteed_Bitrate_DL := omit, + bearer_Identifier := omit, + allocation_Retention_Priority := omit, + aPN_Aggregate_Max_Bitrate_UL := omit, + aPN_Aggregate_Max_Bitrate_DL := omit, + aVP_Type := omit + } + + template Packet_Filter_Information_AVP m_packet_Filter_Information_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, 4, c_vendId3gpp), + packet_Filter_Identifier := omit, + precedence := omit, + packet_Filter_Content := omit, + toS_Traffic_Class := omit, + security_Parameter_Index := omit, + flow_Label := omit, + flow_Direction := omit, + aVP_Type := omit + } + + template Packet_Filter_Information_AVP mw_packet_Filter_Information_dummy := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_packet_Filter_Information_AVP_Code),// + packet_Filter_Identifier := *, + precedence := *, + packet_Filter_Content := *, + toS_Traffic_Class := *, + security_Parameter_Index := *, + flow_Label := *, + flow_Direction := *, + aVP_Type := * + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, 4, c_vendId3gpp), + charging_Rule_Definition := omit, + charging_Rule_Name := omit, + charging_Rule_Base_Name := omit, + bearer_Identifier := omit, + rule_Activation_Time := omit, + rule_DeActivation_Time := omit, + resource_Allocation_Notification := omit, + charging_Correlation_Indicator := omit, + aVP_Type := omit + } + + template Charging_Rule_Install_AVP mw_chrgRuleInstall_dummy := + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Install_AVP_Code), + charging_Rule_Definition := *, + charging_Rule_Name := *, + charging_Rule_Base_Name := *, + bearer_Identifier := *, + rule_Activation_Time := *, + rule_DeActivation_Time := *, + resource_Allocation_Notification := *, + charging_Correlation_Indicator := *, + aVP_Type := * + } + + template Charging_Rule_Remove_AVP mw_chrgRuleRemove_dummy := + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Remove_AVP_Code), + charging_Rule_Name := *, + charging_Rule_Base_Name := *, + aVP_Type := * + } + + template Charging_Rule_Remove_AVP m_chrgRuleRemove_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Remove_AVP_Code, 4, c_vendId3gpp), + charging_Rule_Name := omit, + charging_Rule_Base_Name := omit, + aVP_Type := omit + } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_dummy := + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Definition_AVP_Code), + charging_Rule_Name := ?, + service_Identifier := *, + rating_Group := *, + flow_Information := *, + flow_Status := *, + qoS_Information := *, + reporting_Level := *, + online := *, + offline := *, + metering_Method := *, + precedence := *, + aF_Charging_Identifier := *, + flows := *, + monitoring_Key := *, + aF_Signalling_Protocol := *, + sponsor_Identity := *, + application_Service_Provider_Identity := *, + aVP_Type := * + } + + template Charging_Rule_Definition_AVP m_chrgRuleDefinition_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, 4, c_vendId3gpp), + charging_Rule_Name := m_chargingRuleName(''O), + service_Identifier := omit, + rating_Group := omit, + flow_Information := omit, + flow_Status := omit, + qoS_Information := omit, + reporting_Level := omit, + online := omit, + offline := omit, + metering_Method := omit, + precedence := omit, + aF_Charging_Identifier := omit, + flows := omit, + monitoring_Key := omit, + aF_Signalling_Protocol := omit, + sponsor_Identity := omit, + application_Service_Provider_Identity := omit, + aVP_Type := omit + } + + template QoS_Information_AVP mw_qoS_Information_dummy := + { + aVP_Header := mw_aVP_Header_VMbit1(c_qoS_Information_AVP_Code), + qoS_Class_Identifier := *, + max_Requested_Bandwidth_UL := *, + max_Requested_Bandwidth_DL := *, + guaranteed_Bitrate_UL := *, + guaranteed_Bitrate_DL := *, + bearer_Identifier := *, + allocation_Retention_Priority := *, + aPN_Aggregate_Max_Bitrate_UL := *, + aPN_Aggregate_Max_Bitrate_DL := *, + aVP_Type := * + } + + template Allocation_Retention_Priority_AVP mw_allocRetentionPrio_dummy := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_allocation_Retention_Priority_AVP_Code), + priority_Level := ?, + pre_emption_Capability := *, + pre_emption_Vulnerability := * + } + + template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_dummy := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_usage_Monitoring_Information_AVP_Code), + monitoring_Key := *, + granted_Service_Unit := *, + used_Service_Unit := *, + usage_Monitoring_Level := *, + usage_Monitoring_Report := *, + usage_Monitoring_Support := *, + aVP_Type := * + } + + template Granted_Service_Unit_AVP mw_grantedServiceUnit_dummy := + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_granted_Service_Unit_AVP_Code), + tariff_Time_Change := *, + cC_Time := *, + cC_Money := *, + cC_Total_Octets := *, + cC_Input_Octets := *, + cC_Output_Octets := *, + cC_Service_Specific_Units := *, + aVP_Type := * + } + + template Granted_Service_Unit_AVP m_grantedServiceUnit_dummy := { + // Ref: RFC4006 8.17. Granted-Service-Unit AVP + aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code,0, omit), + tariff_Time_Change := omit, + cC_Time := omit, + cC_Money := omit, + cC_Total_Octets := omit, + cC_Input_Octets := omit, + cC_Output_Octets := omit, + cC_Service_Specific_Units := omit, + aVP_Type := omit + } + + template Flow_Information_AVP mw_flowInformation_dummy := { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_flow_Information_AVP_Code), + flow_Description := *, + packet_Filter_Identifier := *, + packet_Filter_Usage := *, + toS_Traffic_Class := *, + security_Parameter_Index := *, + flow_Label := *, + flow_Direction := *, + aVP_Type := * + } + + template Flow_Information_AVP m_flowInformation_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Information_AVP_Code, 4, c_vendId3gpp), + flow_Description := omit, + packet_Filter_Identifier := omit, + packet_Filter_Usage := omit, + toS_Traffic_Class := omit, + security_Parameter_Index := omit, + flow_Label := omit, + flow_Direction := omit, + aVP_Type := omit + } + + template Charging_Rule_Report_AVP mw_chargRuleReport_dummy := + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Report_AVP_Code),// + charging_Rule_Name := *, + charging_Rule_Base_Name := *, + bearer_Identifier := *, + pCC_Rule_Status := *, + rule_Failure_Code := *, + final_Unit_Indication := *, + aVP_Type := * + } + + } //end group DummyAVPHeaders + + group SpecificAVPHeaders { + group sendingTemplatesForAVPs{ + + template Destination_Host_AVP m_destinationHost(charstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_destination_Host_AVP_Code, lengthof(p_avpData), omit), + aVP_Data := p_avpData + } + + template Destination_Realm_AVP m_destinationRealm(charstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_destination_Realm_AVP_Code, lengthof(p_avpData), omit), + aVP_Data := p_avpData + } + + template Session_Id_AVP m_sessionId(UTF8String p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_session_Id_AVP_Code, lengthof(p_avpData), omit), + aVP_Data := p_avpData + } + + template CC_Request_Type_AVP m_cC_Request_Type(CC_Request_Ty_Type p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Request_Type_AVP_Code, 4, omit), + aVP_Data := p_avpData + } + + template CC_Request_Number_AVP m_cC_Request_Number(UInt32 p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Request_Number_AVP_Code, 4, omit), + aVP_Data := p_avpData + } + + template Subscription_Id_AVP m_subscription_Id(Subscription_Id_Type_AVP p_typeAVP, Subscription_Id_Data_AVP p_dataAVP):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_AVP_Code, + f_getByteAlignedLength(p_typeAVP.aVP_Header.aVP_len) + +f_getByteAlignedLength(p_dataAVP.aVP_Header.aVP_len), + omit), + subscription_Id_Type := p_typeAVP, + subscription_Id_Data := p_dataAVP + } + + template IP_CAN_Type_AVP m_iP_CAN_Type(IP_CAN_Type p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_iP_CAN_Type_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template RAT_Type_AVP m_rAT_Type(RAT_Type p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_rAT_Type_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Subscription_Id_Type_AVP m_subscription_Id_Type(Subscription_Id_Ty_Type p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Type_AVP_Code, 4, omit), + aVP_Data := p_avpData + } + + template Subscription_Id_Data_AVP m_subscription_Id_Data(UTF8String p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Data_AVP_Code, lengthof(p_avpData), omit), + aVP_Data := p_avpData + } + + template Framed_IP_Address_AVP m_framedIpAddress(template (value) octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_framed_IP_Address_AVP_Code, lengthof(p_avpData), omit), + aVP_Data := p_avpData + } + + template Framed_IPv6_Prefix_AVP m_framedIp6Address(template (value) octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_framed_IPv6_Prefix_AVP_Code, 4+lengthof(p_avpData), omit), + aVP_Data := p_avpData + } + + template Network_Request_Support_AVP m_network_Request_Support(Network_Request_Support p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_Network_Request_Support_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template QoS_Information_AVP m_qoS_Information_APN_AMBR_UL modifies m_qoS_Information_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, 16/*length aPN_Aggregate_Max_Bitrate_UL: 12+4 for vendId*/, c_vendId3gpp), + aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL(PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA) + } + + template QoS_Information_AVP m_qoS_Information_ClassIdentifier(QoS_Class_Identifier p_avpData) modifies m_qoS_Information_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, 16/*length qoS_Class_Identifier: 12+4 for vendId*/, c_vendId3gpp), + qoS_Class_Identifier := m_qoS_Class_Identifier(p_avpData) + } + + template QoS_Information_AVP m_qoS_Information_Bearer(template Bearer_Identifier_AVP p_bearerIdentifier) modifies m_qoS_Information_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, lengthof(encvalue(p_bearerIdentifier))/8, c_vendId3gpp), + bearer_Identifier := p_bearerIdentifier + } + + template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL(UInt32 p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_aPN_Aggregate_Max_Bitrate_UL_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template QoS_Class_Identifier_AVP m_qoS_Class_Identifier(QoS_Class_Identifier p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Class_Identifier_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template ThreeGPP_MS_TimeZone_AVP m_threeGPP_MS_TimeZone(octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_threeGPP_MS_TimeZone_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Called_Station_Id_AVP m_called_Station_Id(UTF8String p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_called_Station_Id_AVP_Code, lengthof(p_avpData), omit), + aVP_Data := p_avpData + } + + template PDN_Connection_ID_AVP m_pDN_Connection_ID(octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_pDN_Connection_ID_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Bearer_Usage_AVP m_bearer_Usage(Bearer_Usage p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_bearer_Usage_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Bearer_Identifier_AVP m_bearer_Identifier(octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_bearer_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template (value) Access_Network_Charging_Address_AVP m_accessNetworkChargingAddress(template (value) Address p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Charging_Address_AVP_Code, f_IPAdressLengthUInt24(), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Access_Network_Charging_Identifier_Gx_AVP m_aNCI_Gx(Access_Network_Charging_Identifier_Value_AVP p_nciv) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Charging_Identifier_Gx_AVP_Code, lengthof(encvalue(p_nciv))/8, c_vendId3gpp), + acc_Net_Charging_Id_Val := p_nciv, + charging_Rule_Base_Name := omit, + charging_Rule_Name := omit + } + + template Access_Network_Charging_Identifier_Value_AVP m_aNCI_Value(octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Charging_Identifier_Value_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Routing_Rule_Install_AVP m_routing_Rule_Install(Routing_Rule_Definition_AVP p_rrd) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Install_AVP_Code, lengthof(encvalue(p_rrd))/8, c_vendId3gpp), + routing_Rule_Definition := {p_rrd}, + aVP_Type := omit + } + + template Routing_Rule_Definition_AVP m_routing_Rule_Definition(Routing_Rule_Identifier_AVP p_rri, Routing_Filter_AVP p_rf) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Definition_AVP_Code, (lengthof(encvalue(p_rri))/8+lengthof(encvalue(p_rf))/8), c_vendId3gpp), + routing_Rule_Identifier := p_rri, + routing_Filter := {p_rf}, + precedence := omit, + routing_IP_Address := omit, + aVP_Type := omit + } + + template Routing_Rule_Identifier_AVP m_routing_Rule_Identifier(octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Routing_Filter_AVP m_routing_Filter := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Filter_AVP_Code, 16/*flow_direction: 12+4 for vendId*/+ lengthof(encvalue(m_flow_Description(valueof(m_iPFilterRule))))/8, c_vendId3gpp), + flow_Description := m_flow_Description(valueof(m_iPFilterRule)), + flow_Direction := m_flowDirection_Bidirectional, + toS_Traffic_Class := omit, + security_Parameter_Index := omit, + flow_Label := omit, + aVP_Type := omit + } + + template Flow_Information_AVP m_flowInformation_direction_packetFID (template Packet_Filter_Identifier_AVP p_packetFilterIdentifier, template Flow_Direction_AVP p_flowDirection) modifies m_flowInformation_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Information_AVP_Code, lengthof(encvalue(p_packetFilterIdentifier))/8+lengthof(encvalue(p_flowDirection))/8, c_vendId3gpp), + packet_Filter_Identifier := p_packetFilterIdentifier, + flow_Direction := p_flowDirection + } + + template Flow_Description_AVP m_flow_Description(IPFilterRule_Type p_IPftr) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Description_AVP_Code, lengthof(encvalue(p_IPftr))/8, c_vendId3gpp), + aVP_Data := p_IPftr + } + + template Flow_Direction_AVP m_flowDirection_Bidirectional := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Direction_AVP_Code, 4, c_vendId3gpp), + aVP_Data := BIDIRECTIONAL_E + } + + template IPFilterRule_Type m_iPFilterRule := + { + action_ := "permit", + direction := "out", + proto := "ip", + src := { + addr := "1.1.1.1", + mask := omit, + ports := omit + }, + dst := { + addr := "10.10.10.1", + mask := omit, + ports := omit + }, + options := omit + } + + template Event_Trigger_AVP m_event_Trigger(Event_Trigger p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_event_Trigger_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Charging_Correlation_Indicator_AVP m_correlationIndicator(Charging_Correlation_Indicator p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_charging_Correlation_Indicator_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Charging_Rule_Report_AVP m_chargRuleReport_RNameStatus(Charging_Rule_Name_AVP p_crn, PCC_Rule_Status_AVP p_ccrs) modifies m_chargRuleReport_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Report_AVP_Code, lengthof(encvalue(p_crn))/8+16/*PCC_Rule_Status_AVP length: 12+4 for vendId*/, c_vendId3gpp), + charging_Rule_Name := {p_crn}, + pCC_Rule_Status := p_ccrs + } + + template Charging_Rule_Report_AVP m_chargRuleReport_RNameStatusFailure(Charging_Rule_Name_AVP p_crn, PCC_Rule_Status_AVP p_ccrs, Rule_Failure_Code_AVP p_rfc) modifies m_chargRuleReport_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Report_AVP_Code, lengthof(encvalue(p_crn))/8+16+/*PCC_Rule_Status_AVP length: 12+4 for vendId*/+16/*Rule_Failure_Code_AVP length: 12+4 for vendId*/, c_vendId3gpp), + charging_Rule_Name := {p_crn}, + pCC_Rule_Status := p_ccrs, + rule_Failure_Code := p_rfc + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_Definition(template Charging_Rule_Definition_AVP p_chargingRuleDefinition) modifies m_chrgRuleInstall_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleDefinition))/8, c_vendId3gpp), + charging_Rule_Definition := {p_chargingRuleDefinition} + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_Definition_ActTime(template Charging_Rule_Definition_AVP p_chargingRuleDefinition, template Rule_Activation_Time_AVP p_ruleActivationTime) modifies m_chrgRuleInstall_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleDefinition))/8+lengthof(encvalue(p_ruleActivationTime))/8, c_vendId3gpp), + charging_Rule_Definition := {p_chargingRuleDefinition}, + rule_Activation_Time := p_ruleActivationTime + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_Definition_DeActTime(template Charging_Rule_Definition_AVP p_chargingRuleDefinition, template Rule_DeActivation_Time_AVP p_ruleDeActivationTime) modifies m_chrgRuleInstall_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleDefinition))/8+lengthof(encvalue(p_ruleDeActivationTime))/8, c_vendId3gpp), + charging_Rule_Definition := {p_chargingRuleDefinition}, + rule_DeActivation_Time := p_ruleDeActivationTime + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_CorrelationId(template Charging_Correlation_Indicator_AVP p_chargingCorrelationIndicator) modifies m_chrgRuleInstall_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingCorrelationIndicator))/8, c_vendId3gpp), + charging_Correlation_Indicator := p_chargingCorrelationIndicator + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_Name(template Charging_Rule_Name_AVP p_chargingRuleName) modifies m_chrgRuleInstall_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleName))/8, c_vendId3gpp), + charging_Rule_Name := {p_chargingRuleName} + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_Name_RAN(template Charging_Rule_Name_AVP p_chargingRuleName, template Resource_Allocation_Notification_AVP p_resourceAllocationNotification) modifies m_chrgRuleInstall_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_resourceAllocationNotification))/8+lengthof(encvalue(p_chargingRuleName))/8, c_vendId3gpp), + charging_Rule_Name := {p_chargingRuleName}, + resource_Allocation_Notification := p_resourceAllocationNotification + } + + template Charging_Rule_Install_AVP m_chrgRuleInstall_2Name(template Charging_Rule_Base_Name_AVP p_chargingRuleBName1,template Charging_Rule_Base_Name_AVP p_chargingRuleBName2) modifies m_chrgRuleInstall_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleBName1))/8+lengthof(encvalue(p_chargingRuleBName2))/8, c_vendId3gpp), + charging_Rule_Base_Name := {p_chargingRuleBName1, p_chargingRuleBName2} + } + + template Charging_Rule_Remove_AVP m_chrgRuleRemove_Name(template Charging_Rule_Name_AVP p_chargingRuleName) modifies m_chrgRuleRemove_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Remove_AVP_Code, lengthof(encvalue(p_chargingRuleName))/8, c_vendId3gpp), + charging_Rule_Name := {p_chargingRuleName} + } + + template Charging_Rule_Remove_AVP m_chrgRuleRemove_BName(template Charging_Rule_Base_Name_AVP p_chargingRuleBName) modifies m_chrgRuleRemove_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Remove_AVP_Code, lengthof(encvalue(p_chargingRuleBName))/8, c_vendId3gpp), + charging_Rule_Base_Name := {p_chargingRuleBName} + } + + template Charging_Rule_Name_AVP m_chargingRuleName(octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Name_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Charging_Rule_Definition_AVP m_chrgRuleDefinition (octetstring p_avpData) modifies m_chrgRuleDefinition_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8, c_vendId3gpp), + charging_Rule_Name := m_chargingRuleName(p_avpData) + } + + template Charging_Rule_Definition_AVP m_chrgRuleDefinition_MK (octetstring p_avpData, template Monitoring_Key_AVP p_monitoringKey) modifies m_chrgRuleDefinition_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_monitoringKey))/8, c_vendId3gpp), + charging_Rule_Name := m_chargingRuleName(p_avpData), + monitoring_Key := p_monitoringKey + } + + template Charging_Rule_Definition_AVP m_chrgRuleDefinition_FI_AF (octetstring p_avpData, template Flow_Information_AVP p_flowInformation, template AF_Signalling_Protocol_AVP p_afSignallingProtocol) modifies m_chrgRuleDefinition_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_flowInformation))/8, c_vendId3gpp), + charging_Rule_Name := m_chargingRuleName(p_avpData), + flow_Information := {p_flowInformation}, + aF_Signalling_Protocol := p_afSignallingProtocol + } + + template Charging_Rule_Definition_AVP m_chrgRuleDefinition_FI (octetstring p_avpData, template Flow_Information_AVP p_flowInformation) modifies m_chrgRuleDefinition_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_flowInformation))/8, c_vendId3gpp), + charging_Rule_Name := m_chargingRuleName(p_avpData), + flow_Information := {p_flowInformation} + } + + template Charging_Rule_Definition_AVP m_chrgRuleDefinition_QoS (octetstring p_avpData, template QoS_Information_AVP p_qoSInformation) modifies m_chrgRuleDefinition_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_qoSInformation))/8, c_vendId3gpp), + charging_Rule_Name := m_chargingRuleName(p_avpData), + qoS_Information := p_qoSInformation + } + + template Charging_Rule_Definition_AVP m_chrgRuleDefinition_RG (octetstring p_avpData, template Rating_Group_AVP p_ratingGroup) modifies m_chrgRuleDefinition_dummy:= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_ratingGroup))/8, c_vendId3gpp), + charging_Rule_Name := m_chargingRuleName(p_avpData), + rating_Group := p_ratingGroup + } + + template Charging_Rule_Base_Name_AVP m_chrgRuleBaseName(UTF8String p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Base_Name_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData //or PX_CHARGING_RULE_BASE_NAME_DATA + } + + template PCC_Rule_Status_AVP m_pCC_Rule_Status(PCC_Rule_Status p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_pCC_Rule_Status_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Rule_Failure_Code_AVP m_rule_Failure_Code(Rule_Failure_Code p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_rule_Failure_Code_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId(Packet_Filter_Identifier_AVP p_pfId) modifies m_packet_Filter_Information_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, lengthof(encvalue(p_pfId))/8, c_vendId3gpp), + packet_Filter_Identifier := p_pfId + } + + template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId_FlowDirection(Packet_Filter_Identifier_AVP p_pfId) modifies m_packet_Filter_Information_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, lengthof(encvalue(p_pfId))/8+16/*flow_direction: 12+4 for vendId*/, c_vendId3gpp), + packet_Filter_Identifier := p_pfId, + flow_Direction := m_flowDirection_Bidirectional + } + + template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId_Precedence_pFContent(Packet_Filter_Identifier_AVP p_pfId, Precedence_AVP p_precedence, Packet_Filter_Content_AVP p_pfc) modifies m_packet_Filter_Information_dummy := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, lengthof(encvalue(p_pfId))/8 +lengthof(encvalue(p_precedence))/8 +lengthof(encvalue(p_pfc))/8, c_vendId3gpp), + packet_Filter_Identifier := p_pfId, + precedence := p_precedence, + packet_Filter_Content := p_pfc + } + + template Packet_Filter_Content_AVP m_packet_Filter_Content(IPFilterRule_Type p_IPftr) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Content_AVP_Code, lengthof(encvalue(p_IPftr))/8, c_vendId3gpp), + aVP_Data := p_IPftr + } + + template Packet_Filter_Identifier_AVP m_packet_Filter_Identifier(octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Precedence_AVP m_precedence(UInt32 p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_precedence_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Packet_Filter_Operation_AVP m_packet_Filter_Operation(Packet_Filter_Operation p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Operation_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Experimental_Result_AVP m_experimentalResult(template Vendor_Id_AVP p_vendorId, template Experimental_Result_Code_AVP p_expResultCode) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_experimental_Result_AVP_Code, 12/*12-Vendor_Id_AVP*/+12/*12-experimental_Result_Code*/, omit), + vendor_Id := p_vendorId, + experimental_Result_Code := p_expResultCode + } + + template Vendor_Id_AVP m_vendorId(UInt32 p_avpData):= + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_vendor_Id_AVP_Code, 4, omit), + aVP_Data := p_avpData + } + + template Experimental_Result_Code_AVP m_expResultCode(Experimental_Result_Type p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_experimental_Result_Code_AVP_Code, 4, omit), + aVP_Data := p_avpData + } + + template Offline_AVP m_offline(Offline p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_offline_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Online_AVP m_online(Online p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_online_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Session_Release_Cause_AVP m_sessReleaseCause(template (present) Session_Release_Cause p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_session_Release_Cause_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Resource_Allocation_Notification_AVP m_resourceAllocNotif:= + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_resource_Allocation_Notification_AVP_Code, 4, c_vendId3gpp), + aVP_Data := ENABLE_NOTIFICATION_E + } + + template Monitoring_Key_AVP m_monitoringKey (octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_monitoring_Key_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Rating_Group_AVP m_ratingGroup (UInt32 p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_rating_Group_AVP_Code, 4, omit), + aVP_Data := p_avpData + } + + template Revalidation_Time_AVP m_revalidationTime (Time p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_revalidation_Time_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Rule_Activation_Time_AVP m_activationTime (Time p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_rule_Activation_Time_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Rule_DeActivation_Time_AVP m_deactivationTime (Time p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_rule_DeActivation_Time_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template AF_Signalling_Protocol_AVP m_afSignallingProtocol (AF_Signalling_Protocol_Type p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_aF_Signalling_Protocol_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Usage_Monitoring_Report_AVP m_usageMonitoringReport (Usage_Monitoring_Report p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Report_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Usage_Monitoring_Support_AVP m_usageMonitoringSupport (Usage_Monitoring_Support p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Support_AVP_Code, 8, c_vendId3gpp), + aVP_Data := p_avpData + } + + template Usage_Monitoring_Information_AVP m_usageMonitoringInformation + (template Monitoring_Key_AVP p_monitoringKey, + template Granted_Service_Unit_AVP p_grantedServiceUnit) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Information_AVP_Code, lengthof(encvalue(p_monitoringKey))/8+lengthof(encvalue(p_grantedServiceUnit))/8, c_vendId3gpp), + monitoring_Key := p_monitoringKey, + granted_Service_Unit := p_grantedServiceUnit, + used_Service_Unit := omit, + usage_Monitoring_Level := omit, + usage_Monitoring_Report := omit, + usage_Monitoring_Support := omit, + aVP_Type := omit + }; + + template Usage_Monitoring_Information_AVP m_usageMonitoringInformationRequestReport + (template Usage_Monitoring_Report_AVP p_usageMonitoringReport) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Information_AVP_Code, lengthof(encvalue(p_usageMonitoringReport))/8, c_vendId3gpp), + monitoring_Key := omit, + granted_Service_Unit := omit, + used_Service_Unit := omit, + usage_Monitoring_Level := omit, + usage_Monitoring_Report := p_usageMonitoringReport, + usage_Monitoring_Support := omit, + aVP_Type := omit + }; + + template Usage_Monitoring_Information_AVP m_usageMonitoringInformationRequestSupport + (template Usage_Monitoring_Support_AVP p_usageMonitoringSupport) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Information_AVP_Code, lengthof(encvalue(m_monitoringKey(PX_MONITORING_KEY)))/8+lengthof(encvalue(p_usageMonitoringSupport))/8, c_vendId3gpp), + monitoring_Key := m_monitoringKey(PX_MONITORING_KEY), + granted_Service_Unit := omit, + used_Service_Unit := omit, + usage_Monitoring_Level := omit, + usage_Monitoring_Report := omit, + usage_Monitoring_Support := p_usageMonitoringSupport, + aVP_Type := omit + }; + + template Default_EPS_Bearer_QoS_AVP m_DefaultEpsBearerQoS + (template QoS_Class_Identifier_AVP p_qoSClassIdentifier, + template Allocation_Retention_Priority_AVP p_allocationRetentionPriority) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_default_EPS_Bearer_QoS_AVP_Code, lengthof(encvalue(p_qoSClassIdentifier))/8+lengthof(encvalue(p_allocationRetentionPriority))/8, c_vendId3gpp), + qoS_Class_Identifier := p_qoSClassIdentifier, + allocation_Retention_Priority := p_allocationRetentionPriority, + aVP_Type := omit + }; + + template Priority_Level_AVP m_priorityLevel (UInt32 p_data) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_priority_Level_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_data + } + + template Allocation_Retention_Priority_AVP m_allocRetentionPrio (template Priority_Level_AVP p_priorityLevel):= + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_allocation_Retention_Priority_AVP_Code, lengthof(encvalue(p_priorityLevel))/8, c_vendId3gpp), + priority_Level := p_priorityLevel, + pre_emption_Capability := omit, + pre_emption_Vulnerability := omit + } + + template AN_GW_Address_AVP m_anGwAddress(template (value) Address p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_aN_GW_Address_AVP_Code, f_IPAdressLengthUInt24(), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Logical_Access_ID_AVP m_logicalAccessID(template (value) octetstring p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_logical_Access_ID_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Physical_Access_ID_AVP m_physicalAccessID(template (value) UTF8String p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_physical_Access_ID_AVP_Code, lengthof(p_avpData), c_vendId3gpp), + aVP_Data := p_avpData + } + + template Granted_Service_Unit_AVP m_grantedServiceUnit_cCs(template CC_Total_Octets_AVP p_cC_Total_Octets, + template CC_Input_Octets_AVP p_cC_Input_Octets, + template CC_Output_Octets_AVP p_cC_Output_Octets) modifies m_grantedServiceUnit_dummy:= { + // Ref: RFC4006 8.17. Granted-Service-Unit AVP + aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code, + (lengthof(encvalue(p_cC_Total_Octets))/8+ + lengthof(encvalue(p_cC_Input_Octets))/8+ + lengthof(encvalue(p_cC_Output_Octets))/8), + omit), + cC_Total_Octets := p_cC_Total_Octets, + cC_Input_Octets := p_cC_Input_Octets, + cC_Output_Octets := p_cC_Output_Octets + } + + template CC_Total_Octets_AVP m_cC_Total_Octets(template (value) UInt64 p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Total_Octets_AVP_Code, 8, omit), + aVP_Data := p_avpData + } + + template CC_Input_Octets_AVP m_cC_Input_Octets(template (value) UInt64 p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Input_Octets_AVP_Code, 8, omit), + aVP_Data := p_avpData + } + + template CC_Output_Octets_AVP m_cC_Output_Octets(template (value) UInt64 p_avpData) := + { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Output_Octets_AVP_Code, 8, omit), + aVP_Data := p_avpData + } + + }//end group sendingTemplatesForAVPs + group awaitingTemplatesForAVPs{ + + template Framed_IP_Address_AVP mw_framedIpAddress(template (present) octetstring p_avpData) := + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_framed_IP_Address_AVP_Code), + aVP_Data := p_avpData + } + + template Framed_IPv6_Prefix_AVP mw_framedIp6Address(template (present) octetstring p_avpData) := + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_framed_IPv6_Prefix_AVP_Code), + aVP_Data := p_avpData + } + + template Subscription_Id_AVP mw_subscription_Id(template Subscription_Id_Type_AVP p_typeAVP, template Subscription_Id_Data_AVP p_dataAVP):= + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_AVP_Code), + subscription_Id_Type := p_typeAVP, + subscription_Id_Data := p_dataAVP + } + + template Subscription_Id_Type_AVP mw_subscription_Id_Type(template Subscription_Id_Ty_Type p_avpData):= + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_Type_AVP_Code), + aVP_Data := p_avpData + } + + template Subscription_Id_Data_AVP mw_subscription_Id_Data(template UTF8String p_avpData):= + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_Data_AVP_Code), + aVP_Data := p_avpData + } + + template IP_CAN_Type_AVP mw_iP_CAN_Type(IP_CAN_Type p_avpData):= + { + aVP_Header := mw_aVP_Header_VMbit1(c_iP_CAN_Type_AVP_Code), + aVP_Data := p_avpData + } + + template RAT_Type_AVP mw_rAT_Type(RAT_Type p_avpData):= + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_rAT_Type_AVP_Code), + aVP_Data := p_avpData + } + + template CC_Request_Type_AVP mw_cC_Request_Type(CC_Request_Ty_Type p_avpData):= + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Request_Type_AVP_Code), + aVP_Data := p_avpData + } + + template Routing_Rule_Install_AVP mw_routing_Rule_Install := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_routing_Rule_Install_AVP_Code), + routing_Rule_Definition := {mw_routing_Rule_Definition}, + aVP_Type := * + } + + template Routing_Rule_Install_AVP mw_routing_Rule_Installs := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_routing_Rule_Install_AVP_Code), + routing_Rule_Definition := {mw_routing_Rule_Definition,*}, + aVP_Type := * + } + + template Routing_Rule_Definition_AVP mw_routing_Rule_Definition := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_routing_Rule_Definition_AVP_Code), + routing_Rule_Identifier := ?, + routing_Filter := ?, + precedence := *, + routing_IP_Address := *, + aVP_Type := * + } + + template Session_Release_Cause_AVP mw_sessReleaseCause(template (present) Session_Release_Cause p_avpData) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_session_Release_Cause_AVP_Code), + aVP_Data := p_avpData + } + + template Charging_Rule_Install_AVP mw_chrgRuleInstall_Name modifies mw_chrgRuleInstall_dummy:= + { + charging_Rule_Name := {mw_chrgRuleName} + } + + template Charging_Rule_Install_AVP mw_chrgRuleInstall_Name_resAllocNotif modifies mw_chrgRuleInstall_dummy := + { + charging_Rule_Name := {mw_chrgRuleName}, + resource_Allocation_Notification := mw_resourceAllocNotif + } + + template Charging_Rule_Install_AVP mw_chrgRuleInstall_Definition(template Charging_Rule_Definition_AVP p_chrgRuleDefinition) modifies mw_chrgRuleInstall_dummy := + { + charging_Rule_Definition := {p_chrgRuleDefinition} + } + + template Charging_Rule_Install_AVP mw_chrgRuleInstall_BaseName modifies mw_chrgRuleInstall_dummy:= + { + charging_Rule_Base_Name := {mw_chrgRuleBaseName} + } + + template Charging_Rule_Remove_AVP mw_chrgRuleRemove_Name modifies mw_chrgRuleRemove_dummy:= + { + charging_Rule_Name := {mw_chrgRuleName} + } + + template Charging_Rule_Remove_AVP mw_chrgRuleRemove_BaseName modifies mw_chrgRuleRemove_dummy:= + { + charging_Rule_Base_Name := {mw_chrgRuleBaseName} + } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition modifies mw_chrgRuleDefinition_dummy:= + { + charging_Rule_Name := mw_chrgRuleName + } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_flowInfoAfSigProt(template Flow_Information_AVP p_flowInfo, template AF_Signalling_Protocol_AVP p_AfSigProt) modifies mw_chrgRuleDefinition_dummy:= + { + flow_Information := {p_flowInfo,*}, + aF_Signalling_Protocol := p_AfSigProt + } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_qosInfoNoBearerID modifies mw_chrgRuleDefinition_dummy:= + { + charging_Rule_Name := mw_chrgRuleName, + qoS_Information := mw_qoSInfo_noBearerID + } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_sponConn (template Sponsor_Identity_AVP p_sponsorIdentity, + template Application_Service_Provider_Identity_AVP p_applicationServiceProviderId, + template Reporting_Level_AVP p_reportingLevel) modifies mw_chrgRuleDefinition_dummy:= + { + charging_Rule_Name := mw_chrgRuleName, + sponsor_Identity := p_sponsorIdentity, + application_Service_Provider_Identity := p_applicationServiceProviderId, + reporting_Level := p_reportingLevel + } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_qosInfo_AllocRetPrio modifies mw_chrgRuleDefinition_dummy:= + { + qoS_Information := mw_qoSInfo_allocRetPriority + } + + template QoS_Information_AVP mw_qoSInfo_noBearerID modifies mw_qoS_Information_dummy := + { + bearer_Identifier := omit + } + + template QoS_Information_AVP mw_qoSInfo_allocRetPriority modifies mw_qoS_Information_dummy := + { + allocation_Retention_Priority := mw_allocRetentionPrio_dummy + } + + template Charging_Rule_Name_AVP mw_chrgRuleName:= + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Name_AVP_Code), + aVP_Data := ? //or PX_CHARGING_RULE_NAME_DATA + } + + template Charging_Rule_Base_Name_AVP mw_chrgRuleBaseName:= + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Base_Name_AVP_Code), + aVP_Data := ? //or PX_CHARGING_RULE_BASE_NAME_DATA + } + + template Resource_Allocation_Notification_AVP mw_resourceAllocNotif:= + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_resource_Allocation_Notification_AVP_Code), + aVP_Data := ENABLE_NOTIFICATION_E + } + + template Offline_AVP mw_offline_any := + { + aVP_Header := mw_aVP_Header_VMbit1(c_offline_AVP_Code), + aVP_Data := ? + } + + template Online_AVP mw_online_any := + { + aVP_Header := mw_aVP_Header_VMbit1(c_online_AVP_Code), + aVP_Data := ? + } + + template Bearer_Control_Mode_AVP mw_bearerControlMode(template Bearer_Control_Mode p_aVP_Data) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_bearer_Control_Mode_AVP_Code), + aVP_Data := p_aVP_Data + } + + template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key_GrantedServiceUnit modifies mw_usageMonitoringInfo_dummy := + { + monitoring_Key := mw_monitoringKey_any, + granted_Service_Unit := mw_grantedServiceUnit_dummy + } + + template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key_UsedServiceUnit (template Used_Service_Unit_AVP p_usedServiceUnit) modifies mw_usageMonitoringInfo_dummy := + { + monitoring_Key := mw_monitoringKey_predefined, + used_Service_Unit := p_usedServiceUnit + } + + template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key2_UsedServiceUnit (template Used_Service_Unit_AVP p_usedServiceUnit) modifies mw_usageMonitoringInfo_dummy := + { + monitoring_Key := mw_monitoringKey_predefined2, + used_Service_Unit := p_usedServiceUnit + } + + template Monitoring_Key_AVP mw_monitoringKey_any := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_monitoring_Key_AVP_Code), + aVP_Data := ? + } + + template Monitoring_Key_AVP mw_monitoringKey_predefined modifies mw_monitoringKey_any := + { + aVP_Data := PX_MONITORING_KEY + } + + template Monitoring_Key_AVP mw_monitoringKey_predefined2 modifies mw_monitoringKey_any := + { + aVP_Data := PX_MONITORING_KEY2 + } + + template Event_Trigger_AVP mw_eventTrigger(template Event_Trigger p_aVP_Data) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_event_Trigger_AVP_Code), + aVP_Data := p_aVP_Data + } + + template Flow_Information_AVP mw_flowInformation_direction modifies mw_flowInformation_dummy := { + flow_Direction := ? + } + + template Reporting_Level_AVP mw_reportingLevel (template Reporting_Level p_avpData) := { + //Ref: ETSI TS 129 212 Reporting_Levele_AVP + aVP_Header := mw_aVP_Header_VMbit1(c_reporting_Level_AVP_Code),// + aVP_Data := p_avpData + }; + + template Charging_Rule_Report_AVP mw_chargRuleReport_Status modifies mw_chargRuleReport_dummy := + { + pCC_Rule_Status := ? + } + + template Charging_Rule_Report_AVP mw_chargRuleReport_Name_Code_Status (template Rule_Failure_Code_AVP p_ruleFailureCode, template PCC_Rule_Status_AVP p_pCcRuleStatus) modifies mw_chargRuleReport_dummy := + { + charging_Rule_Name := ?, + rule_Failure_Code := p_ruleFailureCode, + pCC_Rule_Status := p_pCcRuleStatus + } + + template Packet_Filter_Information_AVP mw_packet_Filter_Information + (template Packet_Filter_Identifier_AVP p_packetFilterIdentifier, + template Precedence_AVP p_precedence, + template Packet_Filter_Content_AVP p_packetFilterContent) + modifies mw_packet_Filter_Information_dummy := + { + packet_Filter_Identifier := p_packetFilterIdentifier, + precedence := p_precedence, + packet_Filter_Content := p_packetFilterContent + } + + template Packet_Filter_Operation_AVP mw_packet_Filter_Operation(Packet_Filter_Operation p_avpData) := + { + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_packet_Filter_Operation_AVP_Code), + aVP_Data := p_avpData + } + + template Access_Network_Charging_Identifier_Gx_AVP mw_aNCI_Gx(template Access_Network_Charging_Identifier_Value_AVP p_nciv) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_access_Network_Charging_Identifier_Gx_AVP_Code), + acc_Net_Charging_Id_Val := p_nciv, + charging_Rule_Base_Name := *, + charging_Rule_Name := * + } + + template PCC_Rule_Status_AVP mw_pCC_Rule_Status(PCC_Rule_Status p_avpData) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_pCC_Rule_Status_AVP_Code), + aVP_Data := p_avpData + } + + template Rule_Failure_Code_AVP mw_rule_Failure_Code(Rule_Failure_Code p_avpData) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_rule_Failure_Code_AVP_Code), + aVP_Data := p_avpData + } + + template User_Equipment_Info_AVP mw_UserEquipmentInfo + (template User_Equipment_Info_Type_AVP p_userEquipmentInfoType, + template User_Equipment_Info_Value_AVP p_userEquipmentInfoValue) := + { + aVP_Header := mw_aVP_Header_Vbit0(c_user_Equipment_Info_AVP_Code), + user_Equipment_Info_Type := p_userEquipmentInfoType, + user_Equipment_Info_Value := p_userEquipmentInfoValue + } + + template User_Equipment_Info_Type_AVP mw_UserEquipmentInfoType(User_Equipment_Info_Ty_Type p_avpData) := + { + aVP_Header := mw_aVP_Header_Vbit0(c_user_Equipment_Info_Type_AVP_Code), + aVP_Data := p_avpData + } + + template Called_Station_Id_AVP mw_CalledStationId(template UTF8String p_avpData) := + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_called_Station_Id_AVP_Code), + aVP_Data := p_avpData + } + +// template Used_Service_Unit_AVP mw_usedServiceUnit(template CC_Input_Octets_AVP p_CCInputOctets, template CC_Output_Octets_AVP p_CCOutputOctets) := +// { +// aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_used_Service_Unit_AVP_Code), +// tariff_Change_Usage := *, +// cC_Time := *, +// cC_Money := *, +// cC_Total_Octets := ?, +// cC_Input_Octets := *, +// cC_Output_Octets := *, +// cC_Service_Specific_Units := *, +// aVP_Type := * +// } + + }//end group awaitingTemplatesForAVPs + } //end group SpecificAVPHeaders + } //end group HeaderFieldTemplates + + /** Message templates for RAR, RAA, CCR, CCA.... methods */ + group GxMessageTemplates { + group Gxbase_templates { + + group Gxbasic_request_templates_send { + +// template CCR_MSG m_CCR_basic(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_dummy := +// { +// header := m_diameterHeaderReq_dummy(CCR_E, c_applIdGx), +// session_Id := p_sessionId, +// origin_Host := p_originHost, +// origin_Realm := p_originRealm, +// destination_Realm := p_destinationRealm, +// auth_Application_Id := m_authApplicationId(c_applIdGx), +// cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E), +// cC_Request_Number := m_cC_Request_Number(0) +// } +// +// template RAR_MSG m_RAR_basic(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost) +// modifies m_RAR_dummy := +// { +// header := m_diameterHeaderReq_dummy(RAR_E, c_applIdGx), +// session_Id := p_sessionId, +// origin_Host := p_originHost, +// origin_Realm := p_originRealm, +// destination_Realm := p_destinationRealm, +// destination_Host := p_destinationHost, +// auth_Application_Id := m_authApplicationId(c_applIdGx) +// } + + } // end group Gxbasic_request_templates_send + + group Gxbasic_request_templates_receive { + + template CCR_MSG mw_CCR_basic(template Session_Id_AVP p_sessionId, + template Origin_Host_AVP p_originHost, + template Origin_Realm_AVP p_originRealm, + template Destination_Realm_AVP p_destinationRealm, + template CC_Request_Type_AVP p_cCRequestType) + modifies mw_CCR_dummy := + { + header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdGx), + session_Id := p_sessionId, + cCR_Body := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + cC_Request_Type := p_cCRequestType + } + } + +// template RAR_MSG mw_RAR_basic(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost) +// modifies mw_RAR_dummy := +// { +// header := mw_diameterHeaderReq_dummy(RAR_E, c_applIdGx), +// session_Id := p_sessionId, +// origin_Host := p_originHost, +// origin_Realm := p_originRealm, +// destination_Realm := p_destinationRealm, +// destination_Host := p_destinationHost +// } + + }//end group Gxbasic_request_templates_receive + + group Gxbasic_answer_templates_send { +// template CCA_MSG m_CCA_basic(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template CC_Request_Type_AVP p_cCRequestType) +// modifies m_CCA_dummy := +// { +// header := m_diameterHeaderAns_dummy(CCA_E, c_applIdGx), +// session_Id := p_sessionId, +// origin_Host := p_originHost, +// origin_Realm := p_originRealm, +// auth_Application_Id := m_authApplicationId(c_applIdGx), +// cC_Request_Type := p_cCRequestType, +// cC_Request_Number := m_cC_Request_Number(0) +// } +// +// template RAA_MSG m_RAA_basic(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm) +// modifies m_RAA_dummy := +// { +// header := m_diameterHeaderAns_dummy(RAA_E, c_applIdGx), +// session_Id := p_sessionId, +// origin_Host := p_originHost, +// origin_Realm := p_originRealm +// } + + } + group Gxbasic_answer_templates_receive { + + template CCA_MSG mw_CCA_basic(template Session_Id_AVP p_sessionId, + template Origin_Host_AVP p_originHost, + template Origin_Realm_AVP p_originRealm) + modifies mw_CCA_dummy := + { + header := mw_diameterHeaderAns_dummy(CCA_E, c_applIdGx), + session_Id := p_sessionId, + cCA_Body := { + origin_Host := p_originHost, + origin_Realm := p_originRealm + } + } + +// template RAA_MSG mw_RAA_basic(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm) +// modifies mw_RAA_dummy := +// { +// header := mw_diameterHeaderAns_dummy(RAA_E, c_applIdGx), +// session_Id := p_sessionId, +// origin_Host := p_originHost, +// origin_Realm := p_originRealm +// } + + } + + } //end group Gxbase_templates + group Gxmodified_templates { + + group Gxmodified_request_templates_send { + +// template CCR_MSG m_CCR_InitialRequest(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Framed_IP_Address_AVP p_framedIpAddress, +// template Framed_IPv6_Prefix_AVP p_framedIp6Address) +// modifies m_CCR_basic := +// { +// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, +// framed_IP_Address := p_framedIpAddress, +// framed_IPv6_Prefix := p_framedIp6Address, +// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := m_rAT_Type(PX_RAT_TYPE) +// } +// +// template CCR_MSG m_CCR_InitialRequest_allReqAVPs(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Framed_IP_Address_AVP p_framedIpAddress, +// template Framed_IPv6_Prefix_AVP p_framedIp6Address) +// modifies m_CCR_InitialRequest := +// { +// network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT), +// qoS_Information := m_qoS_Information_APN_AMBR_UL, +// threeGPP_MS_TimeZone := m_threeGPP_MS_TimeZone(PX_3GPP_MS_TIMEZONE_DATA), +// called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_EMERGENCY_APN), +// pDN_Connection_ID := m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA), +// bearer_Usage := m_bearer_Usage(PX_BEARER_USAGE_DATA), +// access_Network_Charging_Address := m_accessNetworkChargingAddress(f_IPAdress(PX_ANCA_ipv4, PX_ANCA_ipv6)), +// access_Network_Charging_Identifier_Gx := {m_aNCI_Gx(valueof(m_aNCI_Value(PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE)))}, +// routing_Rule_Install := m_routing_Rule_Install(valueof(m_routing_Rule_Definition(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)),valueof(m_routing_Filter)))) +// } +// +// template CCR_MSG m_CCR_InitialRequest_NetworkRequestSupport(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_basic := +// { +// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, +// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := m_rAT_Type(PX_RAT_TYPE), +// network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT) +// } +// +// template CCR_MSG m_CCR_InitialRequest_defaultEPS(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Default_EPS_Bearer_QoS_AVP p_defaultEpsBearerQoS) +// modifies m_CCR_basic := +// { +// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, +// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := m_rAT_Type(PX_RAT_TYPE), +// default_EPS_Bearer_QoS := p_defaultEpsBearerQoS +// } +// +// template CCR_MSG m_CCR_InitialRequest_ANGWaddress(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CCR_MSG.aN_GW_Address p_anGwAddress) +// modifies m_CCR_basic := +// { +// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, +// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := m_rAT_Type(PX_RAT_TYPE), +// aN_GW_Address := p_anGwAddress +// } +// +// template CCR_MSG m_CCR_InitialRequest_SubID_LogID_PhyID(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CCR_MSG.subscription_Id p_subscriptionId, +// template Logical_Access_ID_AVP p_logicalAccessID, +// template Physical_Access_ID_AVP p_physicalAccessID) +// modifies m_CCR_basic := +// { +// subscription_Id := p_subscriptionId, +// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := m_rAT_Type(PX_RAT_TYPE), +// logical_Access_ID := p_logicalAccessID, +// physical_Access_ID := p_physicalAccessID +// } +// +// template CCR_MSG m_CCR_UpdateRequest(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_basic := +// { +// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), +// cC_Request_Number := m_cC_Request_Number(1), +// charging_Rule_Report := {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}, +// event_Trigger := {m_event_Trigger(IP_CAN_CHANGE_E)} +// } +// +// template CCR_MSG m_CCR_InitialRequest_CalledStationId(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Framed_IP_Address_AVP p_framedIpAddress, +// template Framed_IPv6_Prefix_AVP p_framedIp6Address) +// modifies m_CCR_InitialRequest := +// { +// called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_EMERGENCY_APN) +// } +// +// template CCR_MSG m_CCR_UpdateRequest_allReqAVPs(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_UpdateRequest := +// { +// access_Network_Charging_Address := m_accessNetworkChargingAddress(f_IPAdress(PX_ANCA_ipv4, PX_ANCA_ipv6)), +// access_Network_Charging_Identifier_Gx := {m_aNCI_Gx(valueof(m_aNCI_Value(PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE)))}, +// routing_Rule_Install := m_routing_Rule_Install(valueof(m_routing_Rule_Definition(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)),valueof(m_routing_Filter)))) +// } +// +// template CCR_MSG m_CCR_UpdateRequest_UERequestForAllocResources(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Packet_Filter_Information_AVP p_packetFilterInfo, +// template Packet_Filter_Operation_AVP p_packetFilterOperation, +// template QoS_Information_AVP p_qosInformation) +// modifies m_CCR_UpdateRequest := +// { +// packet_Filter_Information := {p_packetFilterInfo}, +// packet_Filter_Operation := p_packetFilterOperation, +// qoS_Information := p_qosInformation, +// event_Trigger := {m_event_Trigger(RESOURCE_MODIFICATION_REQUEST_E)} +// } +// +// template CCR_MSG m_CCR_UpdateRequest_NetworkRequestSupport(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_basic := +// { +// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), +// cC_Request_Number := m_cC_Request_Number(1), +// network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT) +// } +// +// template CCR_MSG m_CCR_UpdateRequest_Invalid(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_basic := +// { +// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), +// cC_Request_Number := m_cC_Request_Number(1), +// charging_Rule_Report := {m_chargRuleReport_RNameStatusFailure(valueof(m_chargingRuleName('111111'O)),//failed PCC rule +// valueof(m_pCC_Rule_Status(ACTIVE_E)), +// valueof(m_rule_Failure_Code(PX_RULE_FAILURE_CODE)))}, +// event_Trigger := {m_event_Trigger(IP_CAN_CHANGE_E)} +// } +// +// template CCR_MSG m_CCR_InitialRequest_Invalid(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Framed_IP_Address_AVP p_framedIpAddress, +// template Framed_IPv6_Prefix_AVP p_framedIp6Address) +// modifies m_CCR_basic := +// { +// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, +// framed_IP_Address := p_framedIpAddress, +// framed_IPv6_Prefix := p_framedIp6Address, +// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := m_rAT_Type(PX_RAT_TYPE), +// called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_EMERGENCY), +// event_Trigger := {m_event_Trigger(RESOURCE_MODIFICATION_REQUEST_E)} +// } +// +// template CCR_MSG m_CCR_UpdateRequest_IPcanTermination(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_basic := +// { +// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), +// cC_Request_Number := m_cC_Request_Number(1), +// charging_Rule_Report := {m_chargRuleReport_RNameStatusFailure(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)), +// valueof(m_pCC_Rule_Status(INACTIVE_E)), +// valueof(m_rule_Failure_Code(RESOURCE_ALLOCATION_FAILURE_E)))} +// } +// +// template CCR_MSG m_CCR_TerminationRequest(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm) +// modifies m_CCR_basic := +// { +// cC_Request_Type := m_cC_Request_Type(TERMINATION_REQUEST_E), +// cC_Request_Number := m_cC_Request_Number(1) +// } +// +// template CCR_MSG m_CCR_InitialRequest_OnlineOffline(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Framed_IP_Address_AVP p_framedIpAddress, +// template Framed_IPv6_Prefix_AVP p_framedIp6Address) +// modifies m_CCR_InitialRequest := +// { +// online := m_online(PX_ONLINE_DATA), +// offline := m_offline(PX_OFFLINE_DATA) +// } +// +// template RAR_MSG m_RAR_SessionEnd(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Session_Release_Cause_AVP p_sessionReleaseCause) +// modifies m_RAR_basic := +// { +// session_Release_Cause := p_sessionReleaseCause +// } +// +// template RAR_MSG m_RAR_CharRuleInst(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Charging_Rule_Install_AVP p_chargingRuleInstall) +// modifies m_RAR_basic := +// { +// charging_Rule_Install := {p_chargingRuleInstall} +// } +// +// template RAR_MSG m_RAR_CharRuleInst_EvTrigger(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Event_Trigger_AVP p_eventTrigger, +// template Charging_Rule_Install_AVP p_chargingRuleInstall) +// modifies m_RAR_basic := +// { +// event_Trigger := {p_eventTrigger}, +// charging_Rule_Install := {p_chargingRuleInstall} +// } +// +// template RAR_MSG m_RAR_CharRuleInst_RevalTime(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Revalidation_Time_AVP p_revalidationTime, +// template Charging_Rule_Install_AVP p_chargingRuleInstall) +// modifies m_RAR_basic := +// { +// revalidation_Time := p_revalidationTime, +// charging_Rule_Install := {p_chargingRuleInstall} +// } +// +// template RAR_MSG m_RAR_EvTrigger(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Event_Trigger_AVP p_eventTrigger) +// modifies m_RAR_basic := +// { +// event_Trigger := {p_eventTrigger} +// } +// +// template RAR_MSG m_RAR_EvTriggers(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template RAR_MSG.event_Trigger p_eventTrigger) +// modifies m_RAR_basic := +// { +// event_Trigger := p_eventTrigger +// } +// +// template RAR_MSG m_RAR_EvTrigger_UMI(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Event_Trigger_AVP p_eventTrigger, +// template Usage_Monitoring_Information_AVP p_usageMonitoringInformation) +// modifies m_RAR_basic := +// { +// event_Trigger := {p_eventTrigger}, +// usage_Monitoring_Information := {p_usageMonitoringInformation} +// } +// +// template RAR_MSG m_RAR_UMI(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Usage_Monitoring_Information_AVP p_usageMonitoringInformation) +// modifies m_RAR_basic := +// { +// usage_Monitoring_Information := {p_usageMonitoringInformation} +// } +// +// template RAR_MSG m_RAR_CharRuleRemove(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Charging_Rule_Remove_AVP p_chargingRuleRemove) +// modifies m_RAR_basic := +// { +// charging_Rule_Remove := {p_chargingRuleRemove} +// } +// +// template RAR_MSG m_RAR_CharRuleRemoveInstall(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Charging_Rule_Remove_AVP p_chargingRuleRemove, +// template Charging_Rule_Install_AVP p_chargingRuleInstall) +// +// modifies m_RAR_basic := +// { +// charging_Rule_Remove := {p_chargingRuleRemove}, +// charging_Rule_Install := {p_chargingRuleInstall} +// } +// +// template RAR_MSG m_RAR_QoS(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template RAR_MSG.qoS_Information p_qoSInformation) +// modifies m_RAR_basic := +// { +// qoS_Information := p_qoSInformation +// } + + } // end group Gxmodified_request_templates_send + + group Gxmodified_request_templates_receive { + + template CCR_MSG mw_CCR_Request(template Session_Id_AVP p_sessionId, + template Origin_Host_AVP p_originHost, + template Origin_Realm_AVP p_originRealm, + template Destination_Realm_AVP p_destinationRealm, + template CC_Request_Type_AVP p_cCRequestType, + template Framed_IP_Address_AVP p_framedIpAddress, + template Framed_IPv6_Prefix_AVP p_framedIp6Address, + template Routing_Rule_Install_AVP p_routing_Rule_Install) + modifies mw_CCR_basic := + { + cCR_Body := { + subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, + framed_IP_Address := p_framedIpAddress, + framed_IPv6_Prefix := p_framedIp6Address, + iP_CAN_Type := mw_iP_CAN_Type(PX_IP_CAN_TYPE), + rat_Type := mw_rAT_Type(PX_RAT_TYPE), + routing_Rule_Install := p_routing_Rule_Install + } + } + +// template CCR_MSG mw_CCR_Request_ChrgRuleRep_EvtTrig(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Charging_Rule_Report_AVP p_chargingRuleReport, +// template Event_Trigger_AVP p_eventTrigger, +// template Routing_Rule_Install_AVP p_routing_Rule_Install) +// modifies mw_CCR_basic := +// { +// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, +// charging_Rule_Report := superset(p_chargingRuleReport), +// event_Trigger := superset(p_eventTrigger), +// routing_Rule_Install := p_routing_Rule_Install +// } +// +// template CCR_MSG mw_CCR_Request_ChrgRuleRep_EvtTrig_PackFilt(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Charging_Rule_Report_AVP p_chargingRuleReport, +// template Event_Trigger_AVP p_eventTrigger, +// template Packet_Filter_Operation_AVP p_packetFilterOperation, +// template Packet_Filter_Information_AVP p_packetFilterInformation, +// template QoS_Information_AVP p_qoSInformation) +// modifies mw_CCR_basic := +// { +// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, +// charging_Rule_Report := superset(p_chargingRuleReport), +// event_Trigger := superset(p_eventTrigger), +// packet_Filter_Operation := p_packetFilterOperation, +// packet_Filter_Information := superset(p_packetFilterInformation), +// qoS_Information := p_qoSInformation +// } +// +// template CCR_MSG mw_CCR_Request_EvtTrig_UMI(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Usage_Monitoring_Information_AVP p_usageMonitoringInformation, +// template Event_Trigger_AVP p_eventTrigger) +// modifies mw_CCR_basic := +// { +// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, +// usage_Monitoring_Information := superset(p_usageMonitoringInformation), +// event_Trigger := superset(p_eventTrigger) +// } +// +// template CCR_MSG mw_CCR_AccessNetChargId(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Access_Network_Charging_Identifier_Gx_AVP p_accessNetworkChargingIdentifierGx) +// modifies mw_CCR_dummy := +// { +// header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdGx), +// session_Id := p_sessionId, +// origin_Host := p_originHost, +// origin_Realm := p_originRealm, +// destination_Realm := p_destinationRealm, +// cC_Request_Type := p_cCRequestType, +// access_Network_Charging_Identifier_Gx := superset(p_accessNetworkChargingIdentifierGx) +// } +// +// template CCR_MSG mw_CCR_Request_EMS1(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Framed_IP_Address_AVP p_framedIpAddress, +// template Framed_IPv6_Prefix_AVP p_framedIp6Address, +// template Routing_Rule_Install_AVP p_routing_Rule_Install, +// template Called_Station_Id_AVP p_calledStationId) +// modifies mw_CCR_basic := +// { +// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E),mw_subscription_Id_Data(?))}, +// framed_IP_Address := p_framedIpAddress, +// framed_IPv6_Prefix := p_framedIp6Address, +// iP_CAN_Type := mw_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := mw_rAT_Type(PX_RAT_TYPE), +// routing_Rule_Install := p_routing_Rule_Install, +// called_Station_Id := p_calledStationId +// } +// +// template CCR_MSG mw_CCR_Request_EMS2(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Framed_IP_Address_AVP p_framedIpAddress, +// template Framed_IPv6_Prefix_AVP p_framedIp6Address, +// template Routing_Rule_Install_AVP p_routing_Rule_Install, +// template Called_Station_Id_AVP p_calledStationId) +// modifies mw_CCR_basic := +// { +// framed_IP_Address := p_framedIpAddress, +// framed_IPv6_Prefix := p_framedIp6Address, +// iP_CAN_Type := mw_iP_CAN_Type(PX_IP_CAN_TYPE), +// rAT_Type := mw_rAT_Type(PX_RAT_TYPE), +// routing_Rule_Install := p_routing_Rule_Install, +// called_Station_Id := p_calledStationId, +// user_Equipment_Info := mw_UserEquipmentInfo(mw_UserEquipmentInfoType(IMEISV_E),?) +// } +// +// template RAR_MSG mw_RAR_sessReleaseCause(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost) +// modifies mw_RAR_basic := +// { +// session_Release_Cause := mw_sessReleaseCause(?) +// } +// +// template RAR_MSG mw_RAR_PCCrules_ChrgRuleInstall(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Charging_Rule_Install_AVP p_chrgRuleInstall) +// modifies mw_RAR_basic := +// { +// charging_Rule_Install := {p_chrgRuleInstall} +// } +// +// template RAR_MSG mw_RAR_PCCrules_ChrgRuleInstall_EventTrigger(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Charging_Rule_Install_AVP p_chrgRuleInstall) +// modifies mw_RAR_basic := +// { +// charging_Rule_Install := {p_chrgRuleInstall}, +// event_Trigger := {m_event_Trigger(SUCCESSFUL_RESOURCE_ALLOCATION_E)} +// } +// +// template RAR_MSG mw_RAR_PCCrules_ChrgRuleRemove(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template Charging_Rule_Remove_AVP p_chrgRuleRemove) +// modifies mw_RAR_basic := +// { +// charging_Rule_Remove := {p_chrgRuleRemove} +// } +// +// template RAR_MSG mw_RAR_QosInfo(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Destination_Realm_AVP p_destinationRealm, +// template Destination_Host_AVP p_destinationHost, +// template RAR_MSG.qoS_Information p_qosInformation) +// modifies mw_RAR_basic := +// { +// qoS_Information := p_qosInformation +// } + + } // end group Gxmodified_request_templates_receive + + group Gxmodified_answer_templates_send { + +// template RAA_MSG m_RAA_ResultCode(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Result_Code_AVP p_resultCode) +// modifies m_RAA_basic := +// { +// result_Code := p_resultCode +// } +// +// template CCA_MSG m_CCA_Result(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Result_Code_AVP p_resultCode) +// modifies m_CCA_basic := +// { +// result_Code := p_resultCode +// } +// +// template CCA_MSG m_CCA_ExperimentalResult(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Experimental_Result_AVP p_experimentalResult) +// modifies m_CCA_basic := +// { +// experimental_Result := p_experimentalResult +// } +// +// template CCA_MSG m_CCA_RuleRemove(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Charging_Rule_Remove_AVP p_chargingRuleRemove) +// modifies m_CCA_basic := +// { +// charging_Rule_Remove := {p_chargingRuleRemove} +// } +// +// template CCA_MSG m_CCA_defaultCharging(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template CC_Request_Type_AVP p_cCRequestType, +// template Online_AVP p_online, +// template Offline_AVP p_offline) +// modifies m_CCA_basic := +// { +// online := p_online, +// offline := p_offline +// } + + } // end group Gxmodified_answer_templates_send + + group Gxmodified_answer_templates_receive { + + template CCA_MSG mw_CCA_ResultCode( template Session_Id_AVP p_sessionId, + template Origin_Host_AVP p_originHost, + template Origin_Realm_AVP p_originRealm, + template Result_Code_AVP p_resultCode) + modifies mw_CCA_basic := + { + cCA_Body := { + result_Code := p_resultCode + } + } + +// template CCA_MSG mw_CCA_ResultCode_BearerControlMode( template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Result_Code_AVP p_resultCode, +// template Bearer_Control_Mode_AVP p_bearerControleMode ) +// modifies mw_CCA_basic := +// { +// result_Code := p_resultCode, +// bearer_Control_Mode := p_bearerControleMode +// } +// +// template CCA_MSG mw_CCA_PCCrules_ChrgRuleInstall( template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Charging_Rule_Install_AVP p_chargingRuleInstall) +// modifies mw_CCA_basic := +// { +// charging_Rule_Install := {p_chargingRuleInstall} +// } +// +// template CCA_MSG mw_CCA_PCCrules_ChrgRuleRemove( template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Charging_Rule_Remove_AVP p_chargingRuleRemove) +// modifies mw_CCA_basic := +// { +// charging_Rule_Remove := {p_chargingRuleRemove} +// } +// +// template CCA_MSG mw_CCA_ExperimentalResult( template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Experimental_Result_AVP p_experimentalResult) +// modifies mw_CCA_basic := +// { +// experimental_Result := p_experimentalResult +// } +// +// template CCA_MSG mw_CCA_ResultCode_OnlineOffline( template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Result_Code_AVP p_resultCode) +// modifies mw_CCA_basic := +// { +// result_Code := p_resultCode, +// online := mw_online_any ifpresent, +// offline := mw_offline_any ifpresent +// } +// +// template CCA_MSG mw_CCA_EventTriger_UsageMonitorInfo( template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Result_Code_AVP p_resultCode) +// modifies mw_CCA_basic := +// { +// event_Trigger := {mw_eventTrigger(USAGE_REPORT_E)}, +// usage_Monitoring_Information := {mw_usageMonitoringInfo_Key_GrantedServiceUnit,*,*} +// } +// +// template CCA_MSG mw_CCA_QosInfo( template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template CCA_MSG.qoS_Information p_qosInformation) +// modifies mw_CCA_basic := +// { +// qoS_Information := p_qosInformation +// } +// +// template RAA_MSG mw_RAA_MediaComponent(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Media_Component_Description_AVP p_mediaComponentDescription) +// modifies mw_RAA_basic := +// { +// media_Component_Description := superset(p_mediaComponentDescription) +// } +// +// template RAA_MSG mw_RAA_AccessNetCharg(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Media_Component_Description_AVP p_mediaComponentDescription) +// modifies mw_RAA_basic := +// { +// media_Component_Description := superset(p_mediaComponentDescription) +// } +// +// template RAA_MSG mw_RAA_RuleReport(template Session_Id_AVP p_sessionId, +// template Origin_Host_AVP p_originHost, +// template Origin_Realm_AVP p_originRealm, +// template Charging_Rule_Report_AVP p_chargingRuleReport) +// modifies mw_RAA_basic := +// { +// charging_Rule_Report := superset(p_chargingRuleReport) +// } + + } // end group Gxmodified_answer_templates_receive + + } //end group Gxmodified_templates + } //end group GxMessageTemplates + +}//end module LibDiameter_Templates \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn b/ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn new file mode 100644 index 0000000..c0dd514 --- /dev/null +++ b/ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn @@ -0,0 +1,248 @@ +/** + * @author STF 466 + * @version $Id$ + * @desc This module provides the PIXIT used for the IMS-DIAMETER S6a tests.. + */ + +module DiameterS6a_PIXITS { + + // LibCommon + import from LibCommon_DataStrings { + type Oct3 + }; + import from LibCommon_BasicTypesAndValues { + type UInt32 + }; + + // LibDiameter + import from LibDiameter_Types_Base_AVPs { + type + IpAddress, Diameter_Identity, UTF8String, IPv4Addr, IPv6Addr + }; + import from LibDiameter_Types_Gx_AVPs { + type RAT_Type + }; + + // DiameterS6a + import from LibDiameter_Types_S6a_AVPs { + type Cancellation_Type_Code + }; + + /** + * @desc IP addresses and port numbers + */ + group ipSettings { + + /** + * @desc IP address of the test system + * @see ETSI TS/INT-103261-3 A.7/1 + */ + modulepar charstring PX_DIAMETER_S6a_ETS_IPADDR := "192.168.42.1"; + + /** + * @desc second IP address of the test system + * @see ETSI TS/INT-103261-3 A.7/2 + */ + modulepar charstring PX_DIAMETER_S6a2_ETS_IPADDR := "192.168.42.3"; + + /** + * @desc IP address of the system under test + * @see ETSI TS/INT-103261-3 A.8/1 + */ + modulepar charstring PX_DIAMETER_S6a_SUT_IPADDR := "192.168.42.2"; + + /** + * @desc Port number of the test system + * @see ETSI TS/INT-103261-3 A.7/3 + */ + modulepar integer PX_DIAMETER_S6a_ETS_PORT := 1300; + + /** + * @desc Second Port number of the test system + * @see ETSI TS/INT-103261-3 A.7/4 + */ + modulepar integer PX_DIAMETER_S6a2_ETS_PORT := 1302; + + /** + * @desc Port number of the system under test + * @see ETSI TS/INT-103261-3 A.8/2 + */ + modulepar integer PX_DIAMETER_S6a_SUT_PORT := 1301; + + } //end group ipSettings + + group S6a_Interface { + /** + * @desc The Session-Id identifying a specific session + * @see ETSI TS/INT-103261-3 A.9/1 + */ + modulepar UTF8String PX_SESSION_ID := "etsi.org;77482455;19732;0"; + + /** + * @desc The Session-Id identifying the second specific session + * @see ETSI TS/INT-103261-3 A.9/2 + */ + modulepar UTF8String PX_SESSION_ID2 := "etsi.org;77482455;19733;0"; + + /** + * @desc The Origin-Host identifying the endpoint that originates the Diameter messages + * @see ETSI TS/INT-103261-3 A.9/3 + */ + modulepar Diameter_Identity PX_ORIGIN_HOST := "mme.etsi.org"; + + /** + * @desc The Origin-Host identifying the second endpoint that originates the Diameter messages + * @see ETSI TS/INT-103261-3 A.9/4 + */ + modulepar Diameter_Identity PX_ORIGIN_HOST2 := "mme2.etsi.org"; + + /** + * @desc The Origin-Host identifying the endpoint that originates the Diameter messages + * @see ETSI TS/INT-103261-3 A.9/5 + */ + modulepar Diameter_Identity PX_ORIGIN_HOST_SGSN := "sgsn.etsi.org"; + + /** + * @desc The Origin-Realm identifying the Realm of the originator of any Diameter messages + * @see ETSI TS/INT-103261-3 A.9/6 + */ + modulepar Diameter_Identity PX_ORIGIN_REALM := "realm"; + + /** + * @desc The Destination-Host identifying the endpoint to which the Diameter messages are destined + * @see ETSI TS/INT-103261-3 A.9/7 + */ + modulepar Diameter_Identity PX_DESTINATION_HOST := "destination.host.etsi.org"; + + /** + * @desc The Destination-Realm identifying the Realm of the destination of any Diameter messages + * @see ETSI TS/INT-103261-3 A.9/8 + */ + modulepar Diameter_Identity PX_DESTINATION_REALM := "destination.realm.etsi.org"; + + /** @desc The MIP6_Agent in IPv4 format, + * @see ETSI TS/INT-103261-3 A.9/9 + */ + modulepar IPv4Addr PX_MIP6_AGENT_ipv4 := {1,2,3,4}; + + /** @desc The MIP6_Agent) in type IPv6 format, + * @see ETSI TS/INT-103261-3 A.9/10 + */ + modulepar IPv6Addr PX_MIP6_AGENT_ipv6 := {1,2,3,4,5,6,7,8}; + + /** + * @desc The MIP6 agent destination realm + * @see ETSI TS/INT-103261-3 A.9/11 + */ + modulepar Diameter_Identity PX_MIP6_AGENT_DEST_REALM := "mipv6.agent.etsi.org"; + + /** + * @desc The MIP6 agent destination host + * @see ETSI TS/INT-103261-3 A.9/12 + */ + modulepar Diameter_Identity PX_MIP6_AGENT_DEST_HOST := "mipv6.host.etsi.org"; + + } // End of group S6a_Interface + + /** + * @desc Field values + */ + group fieldValues { + + /** + * @desc The user name + * @see ETSI TS/INT-103261-3 A.10/1 + */ + modulepar UTF8String PX_USR_NAME := "userName"; + + /** + * @desc An invalid user name + * @see ETSI TS/INT-103261-3 A.10/2 + */ + modulepar UTF8String PX_INVALID_USR_NAME := "unknown"; + + /** + * @desc A user name with no APN configure + * @see ETSI TS/INT-103261-3 A.10/3 + */ + modulepar UTF8String PX_NO_APN_USR_NAME := "userNoAPN"; + + /** + * @desc A user name with no APN configure + * @see ETSI TS/INT-103261-3 A.10/4 + */ + modulepar UTF8String PX_NO_EPSGPRS_USR_NAME := "userNoEpsGprs"; + + /** + * @desc The user name + * @see ETSI TS/INT-103261-3 A.10/5 + */ + modulepar UInt32 PX_CONTEXT_ID := 1; + + /** + * @desc The user name + * @see ETSI TS/INT-103261-3 A.10/6 + */ + modulepar charstring PX_SERVICE_SEL := "serviceSel"; + + /** + * @desc A visited network identifier + * @see ETSI TS/INT-103261-3 A.10/7 + */ + modulepar octetstring PX_VISITED_NTW_ID := 'CAFEDECA'O; + + /** + * @desc A visited PLMN identifier + * @see ETSI TS/INT-103261-3 A.10/8 + */ + modulepar Oct3 PX_VISITED_PLMN_ID := '000000'O; + + /** + * @desc Other visited PLMN identifier + * @see ETSI TS/INT-103261-3 A.10/9 + */ + modulepar Oct3 PX_NEW_VISITED_PLMN_ID := '000001'O; + + /** + * @desc Not allowed visited PLMN identifier + * @see ETSI TS/INT-103261-3 A.10/10 + */ + modulepar Oct3 PX_NOT_ALLOWED_VISITED_PLMN_ID := 'ffffff'O; + + /** + * @desc Indicates the type of cancellation + * @see ETSI TS/INT-103261-3 A.10/11 + */ + modulepar Cancellation_Type_Code PX_CANCELLATION_TYPE := MME_UPDATE_PROCEDURE_E; + + /** + * @desc The SGSN number + * @see ETSI TS/INT-103261-3 A.10/12 + */ + modulepar octetstring PX_SGSN_NUMBER := 'DEADBEEF'O; + + /** + * @desc Contains the concatenation of RAND and AUTS. + * @see ETSI TS/INT-103261-3 A.10/13 + * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.15 Re-Synchronization-Info + */ + modulepar octetstring PX_ReSYNCHRONISATION_INFO := 'CAFEDECA'O; + + } // End of group fieldValues + + + /** + * @desc SUT specific implementation variants + */ + group DiameterCommonS6aData{ + + /** + * @desc Radio access technology for the IP-RAT-Type AVP in CCR messages + * Available values: WLAN, VIRTUAL, UTRAN, GERAN, GAN, HSPA_EVOLUTION, EUTRAN, CDMA2000, HRPD, UMB, EHRPD + * @see ETSI TS/INT-103261-3 A.10/14 + */ + modulepar RAT_Type PX_RAT_TYPE := GERAN_E; + + } //end group DiameterCommonS6aData + +} // End of module DiameterS6a_PIXITS diff --git a/ttcn/AtsImsIot/DiameterS6a_Templates.ttcn b/ttcn/AtsImsIot/DiameterS6a_Templates.ttcn new file mode 100644 index 0000000..7254e9e --- /dev/null +++ b/ttcn/AtsImsIot/DiameterS6a_Templates.ttcn @@ -0,0 +1,4788 @@ +/** + * @author STF 466 + * @version $Id$ + * @desc This module defines S6a Diameter Templates for message, header, and + * structured types.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions. + * Note that usage of encvalue command (codec function) returns bitstring + * length of the message or AVP with padding bytes. Therefore this function + * is not used on the first level where length of one single AVP can be + * calculated with lengthof function. It shall be used only on message level + * or in case where one AVP is group of other AVPs. + * @remark Any additions to the templates shall follow the design rules + * and always modify base templates only; + */ + +module DiameterS6a_Templates { + + // LibCommon + import from LibCommon_BasicTypesAndValues { + type UInt8, UInt16, UInt32 + }; + import from LibCommon_DataStrings { + type Oct3 + }; + + // LibDiameter + import from LibDiameter_TypesAndValues { + type all; + const c_versionId, c_vendId3gpp, c_destination_Host_AVP_Code, c_destination_Realm_AVP_Code,c_applIdCommonMsg, + c_origin_Host_AVP_Code, c_origin_Realm_AVP_Code, c_session_Id_AVP_Code, c_rAT_Type_AVP_Code, + c_result_Code_AVP_Code, c_experimental_Result_AVP_Code, c_experimental_Result_Code_AVP_Code + }; + import from LibDiameter_Templates { + function f_aVPvBit, f_IPAdressLengthUInt24, f_getDiameterIdentityAvpLength, f_getUTF8StringLength, f_getCharStringLength, f_getOctetStringLength, f_getEncvalueLength + template m_diameterHeaderReq_dummy, mw_diameterHeaderReq_dummy, mw_diameterHeaderAns_dummy, m_diameterHeaderAns_dummy, + m_sessionId_dummy, m_auth_Session_State_dummy, m_originHost_dummy, m_originRealm_dummy, mw_supportedFeatures_dummy, + m_destinationRealm_dummy, m_destinationHost_dummy, m_user_Name_dummy, m_aVP_HeaderVid_Mbit1, m_cmdFlagsReq, + m_vendor_Specific_Appl_Id_dummy, m_auth_Session_State_dummy, m_destinationRealm_dummy, m_user_Identity_dummy, m_data_Reference_dummy, m_user_Data_dummy, + mw_cmdFlags, m_cmdFlagsAns, + m_aVP_Header_Mbit1, mw_aVP_HeaderVid_Mbit1, mw_aVP_Header_Vbit0Mbit1, mw_aVP_Header_Vbit1Mbit0, + m_aVP_HeaderVid_Mbit0, + m_originHost, m_originRealm, m_sessionId, m_destinationHost, m_destinationRealm, m_resultCode, m_vendor_Specific_Appl_Id, + m_auth_Session_State_no_maintained + }; + import from LibDiameter_Types_Base_AVPs { + type all + }; + import from LibDiameter_Types_S6a_AVPs { + type all + }; + import from LibDiameter_Types_CxDx_AVPs { + type Visited_Network_Identifier_AVP + } + import from LibDiameter_Types_Gx_AVPs { + type RAT_Type, RAT_Type_AVP // Could be moved these types to LibDiameter_Types_Base_AVPs + }; + + import from LibDiameter_Types_RfRo_AVPs all; + + // DiameterS6a + import from DiameterS6a_TypesAndValues all; + import from DiameterS6a_PIXITS all; + + group SubFields{ + + } // End of group SubFields + + /** AVPs templates */ + group HeaderFieldTemplates { + + /** + * @desc Received generic command flag template + */ + template (present) Command_Flags mw_cmdFlagsAns := { + r_bit := '0'B, //Answer message + p_bit := ?, + e_bit := ?, + t_bit := ?, + reserved_bits := '0000'B + } // End of template mw_diameterHeaderAns_dummy + + /** + * @desc complete AVP header field receive template + * @param p_avpCode specific Code of the AVP parameter + * @param p_avpVid vendor id if needed + */ + template (present) AVP_Header mw_aVP_S6a_HeaderVid_Mbit1( in AVP_Code p_avpCode, in template (present) AVP_Vendor_ID p_avpVid) := { + aVP_Code := p_avpCode, + aVP_flags := {v_bit := f_aVPvBit(p_avpVid), + m_bit := '1'B, + p_bit := ?, + reserved_bits := '00000'B}, + aVP_len := ?, + aVP_vid := p_avpVid + } + + /** AVPs basic templates for send and receive */ + group DummyAVPHeaders{ + + /** + * @desc Received generic RAT-Type AVP template + */ + template (value) RAT_Type_AVP m_rATType_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_rAT_Type_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := PX_RAT_TYPE + } // End of template m_rATType_dummy + + /** + * @desc Received generic ULR Flags AVP template + */ + template (value) ULR_Flags_AVP m_ulrFlags_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_ulr_Flags_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := 2 //S6a-indicator bit set + } // End of template m_ulrFlags_dummy + + /** + * @desc Received generic Visited-PLMN-Id AVP template + */ + template (value) Visited_PLMN_Id_AVP m_visitedPLMNId_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_PLMN_Id_AVP_Code, f_getOctetStringLength(PX_VISITED_PLMN_ID), c_vendId3gpp ), + aVP_Data := PX_VISITED_PLMN_ID + } // End of template m_visitedPLMNId_dummy + + /** + * @desc Received generic Requested-EUTRAN-Authentication-Info AVP template + */ + template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, 4, c_vendId3gpp ), + number_Of_Requested_Vectors := omit, + immediate_Response_Preferred := omit, + re_synchronization_Info := omit, + aVP_Type := omit + } // End of template m_reqEUTRANAuthInfo_dummy + + /** + * @desc Received generic Requested-EUTRAN-GERAN-Authentication-Info AVP template + */ + template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, 4, c_vendId3gpp ), + number_Of_Requested_Vectors := omit, + immediate_Response_Preferred := omit, + re_synchronization_Info := omit, + aVP_Type := omit + } // End of template m_reqUTRANGERANAuthInfo_dummy + + /** + * @desc Received generic Cancellation-Type AVP template + */ + template (value) Cancellation_Type_AVP m_cancellationType_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_cancellation_Type_AVP_Code, 4, c_vendId3gpp ), + cancellation_Type := PX_CANCELLATION_TYPE + } // End of template m_cancellationType_dummy + + /** + * @desc Received generic Subscription-Data AVP template + */ + template (value) Subscription_Data_AVP m_subscriptionData_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_subscription_Data_AVP_Code, 4, c_vendId3gpp ), + subscriber_Status := omit, + mSISDN := omit, + sTN_SR := omit, + iCS_Indicator := omit, + network_Access_Mode := omit, + operator_Determined_Barring := omit, + hPLMN_ODB := omit, + zone_Code := omit, + access_Restriction_Data := omit, + aPN_OI_Replacement := omit, + lCS_Info := omit, + teleservice_List := omit, + call_Barring_Info := omit, + threeGPP_Charging_Char := omit, + aMBR := omit, + aPN_Configuration_Profile := omit, + rAT_Freq_Sel_Priority_ID := omit, + trace_Data := omit, + gPRS_Subscription_Data := omit, + cSG_Subscription_Data := omit, + roaming_Rest_Unsupp_Feature := omit, + subscribed_Perio_RAUTAU_Timer := omit, + mPS_Priority := omit, + vPLMN_LIPA_Allowed := omit, + relay_Node_Indicator := omit, + mDT_User_Consent := omit, + aVP_Type := omit + } // End of template m_subscriptionData_dummy + + /** + * @desc Received generic DSR Flags AVP template + */ + template (value) DSR_Flags_AVP m_dSRFlags_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_dsr_Flags_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := 0 //flags are not set + } // End of template m_dSRFlags_dummy + + /** + * @desc Received generic xxx AVP template + */ + template (value) IDR_Flags_AVP m_iDRFlags_dummy ( in UInt32 p_iDRFlags ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_idr_Flags_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_iDRFlags + } // End of template m_iSRFlags_dummy + + /** + * @desc Indicates if there is homogeneous support of IMS Voice Over PS Sessions on all the TA/RAs of the serving node, or if the homogeneity of this support is kown to the serving node + * Default: NOT_SUPPORTED_E + */ + template (value) Homogeneous_Support_AVP m_homogeneous_Support_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_homogeneous_Support_of_IMS_Voice_Over_PS_Sessions_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := NOT_SUPPORTED_E + } // End of template m_homogeneous_Support_dummy + + /** + * @desc Identifies the per subscriber"s default APN configuration + */ + template (value) Context_Identifier_AVP m_contextIdentifier_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_context_Identifier_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := 0 + } // End of template m_contextIdentifier_dummy + + template (value) PDN_Type_AVP m_pdn_Type_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_pdn_Type_AVP_Code, + 4, + c_vendId3gpp ), + pDN_Type_Code := IPv4_OR_IPv6_E + } // End of template m_pdn_Type_dummy + + /** + * @desc Contain information about a dynamically established APN on a serving node + */ + template (value) Active_APN_AVP m_active_APN_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_active_APN_AVP_Code, 4, c_vendId3gpp ), + context_Identifier := m_contextIdentifier_dummy, + service_Selection := omit, + mip6_Agent_Info := omit, + visited_Network_Identifier := omit, + specific_APN_Info := omit, + aVP_Type := omit + } // End of template m_active_APN_AVP_dummy + + /** + * @desc APN for the selected and dynamically allocated PDN GW + */ + template (value) Service_Selection_AVP m_service_Selection_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_service_Type_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := "" + } // End of template m_service_Selection_AVP_dummy + + /** + * @desc Contains the IPv6 or the IPv4 address information of the HA + * @see RFC5778-DiameterMobileIPv6 + */ + template (value) MIP6_Agent_Info_AVP m_mip6_Agent_Info_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_mIP6_Agent_Info_AVP_Code, 4, c_vendId3gpp ), + mip_Home_Agent_Address1 := omit, + mip_Home_Agent_Address2 := omit, + mip_Home_Agent_Host := omit, + mip6_Home_Link_Prefix := omit, + aVP_Type := omit + } // End of template m_mip6_Agent_Info_AVP_dummy + + /** + * @desc HA IP address + * Default: localhost + * @see RFC4004 + */ + template (value) MIP_Home_Agent_Address_AVP m_mip_Home_Agent_Address_AVP_dummy( in Address p_Address ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_mIP_Home_Agent_Address_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_Address // End of 'aVP_Data' field + } // End of template m_mip_Home_Agent_Address_AVP_dummy + + /** + * @desc HA FQDN of the PDN-GW + */ + template (value) MIP_Home_Agent_Host_AVP m_mip_Home_Agent_Host_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_mIP_Home_Agent_Host_AVP_Code, 4, c_vendId3gpp ), + destination_Realm := m_destinationRealm_dummy, + destination_Host := m_destinationHost_dummy, + aVP_Type := omit + } // End of template m_mip_Home_Agent_Host_AVP_dummy + + /** + * @desc Identity of the network where the PDN-GW was allocated, in the case of dynamic PDN-GW assignment + */ + template (value) Visited_Network_Identifier_AVP m_visited_Network_Identifier_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_Network_Identifier_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := ''O + } // End of template m_visited_Network_Identifier_AVP_dummy + + /** + * @desc Information related to the Subscription-Data AVP + */ + template (present) Subscription_Data_AVP mw_subscriptionData_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_subscription_Data_AVP_Code, ?, c_vendId3gpp ), + subscriber_Status := *, + mSISDN := *, + sTN_SR := *, + iCS_Indicator := *, + network_Access_Mode := *, + operator_Determined_Barring := *, + hPLMN_ODB := *, + zone_Code := *, + access_Restriction_Data := *, + aPN_OI_Replacement := *, + lCS_Info := *, + teleservice_List := *, + call_Barring_Info := *, + threeGPP_Charging_Char := *, + aMBR := *, + aPN_Configuration_Profile := *, + rAT_Freq_Sel_Priority_ID := *, + trace_Data := *, + gPRS_Subscription_Data := *, + cSG_Subscription_Data := *, + roaming_Rest_Unsupp_Feature := *, + subscribed_Perio_RAUTAU_Timer := *, + mPS_Priority := *, + vPLMN_LIPA_Allowed := *, + relay_Node_Indicator := *, + mDT_User_Consent := *, + aVP_Type := * + } // End of template mw_subscriptionData_dummy + + /** + * @desc Information related to the user’s subscribed APN configurations + */ + template APN_Configuration_AVP m_PN_Configuration_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_Configuration_AVP_Code, 4, c_vendId3gpp ), + context_Identifier := m_contextIdentifier_dummy, + served_Party := omit, + pDN_Type := m_pdn_Type_dummy, + service_Selection := m_service_Selection_AVP_dummy, + ePS_Subscribed_QoS_Profile := omit, + vPLMN_Dynamic_Address_Allowed := omit, + mIP6_Agent_Info := omit, + visited_Network_Identifier := omit, + pDN_GW_Allocation_Type := omit, + threeGPP_Charging_Char := omit, + aMBR := omit, + specific_APN_Info := omit, + aPN_OI_Replacement := omit, + sIPTO_Permission := omit, + lIPA_Permission := omit, + aVP_Type := omit + } // End of template m_PN_Configuration_dummy + + /** + * @desc Generic received template for Cancellation-Type AVP + */ + template (present) Cancellation_Type_AVP mw_cancellationType_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_cancellation_Type_AVP_Code, + ?, + c_vendId3gpp + ), + cancellation_Type := PX_CANCELLATION_TYPE + } // End of template mw_cancellationType_dummy + + /** + * @desc Generic received template for SGSN-Number AVP + */ + template (present) SGSN_Number_AVP mw_sGSN_Number_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_sgsn_Number_AVP_Code, + ?, + c_vendId3gpp + ), + aVP_Data := ? + } // End of template mw_sGSN_Number_dummy + + /** + * @desc Generic received template for Subscriber-Status AVP + */ + template (present) Subscriber_Status_AVP mw_subscriber_Status_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_subscriber_Status_AVP_Code, + ?, + c_vendId3gpp + ), + subscriber_Status_Code := ? + } // End of template mw_subscriber_Status_dummy + + /** + * @desc Identifies the per subscriber"s default APN configuration + */ + template (present) Context_Identifier_AVP mw_contextIdentifier_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_context_Identifier_AVP_Code, ?, c_vendId3gpp ), + aVP_Data := ? + } // End of tempate mw_contextIdentifier_dummy + + /** + * @desc Generic received template for APN-Configuration-Profile AVP + */ + template (present) APN_Configuration_Profile_AVP mw_apnConfigurationProfile_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_apn_Configuration_Profile_AVP_Code, + ?, + c_vendId3gpp + ), + context_Identifier := ?, + all_APN_Conf_Included_Id := ?, + aPN_Configuration := ?, + aVP_Type := * + } // End of template mw_apnConfigurationProfile_dummy + + /** + * @desc Generic received template for APN-Configuration AVP + */ + template (present) APN_Configuration_AVP mw_aPN_Configuration_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_apn_Configuration_AVP_Code, + ?, + c_vendId3gpp + ), + context_Identifier := ?, + served_Party := *, + pDN_Type := ?, + service_Selection := ?, + ePS_Subscribed_QoS_Profile := *, + vPLMN_Dynamic_Address_Allowed := *, + mIP6_Agent_Info := *, + visited_Network_Identifier := *, + pDN_GW_Allocation_Type := *, + threeGPP_Charging_Char := *, + aMBR := *, + specific_APN_Info := *, + aPN_OI_Replacement :=*, + sIPTO_Permission := *, + lIPA_Permission := *, + aVP_Type := * + } // End of template mw_aPN_Configuration_dummy + + /** + * @desc Generic received ULA_Flags_AVP message + * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.8 ULA-Flags + */ + template (present) ULA_Flags_AVP mw_ulaFlags_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_ula_Flags_AVP_Code, + ?, + c_vendId3gpp + ), + aVP_Data := 0 + } // End of template m_ulaFlags_dummy + + /** + * @desc LCS_Info_AVP + * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.32 + */ + template (value) LCS_Info_AVP m_lcsInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_lcs_Info_AVP_Code, 4, c_vendId3gpp ), + gMLC_Number := omit, + lCS_PrivacyException := omit, + mO_LR := omit, + aVP_Type := omit + } // End of template m_lcsInfo_dummy + + /** + * @desc Access_Restriction_Data_AVP + * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.31 + */ + template (present) Access_Restriction_Data_AVP mw_access_Restriction_Data_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_access_Restriction_Data_AVP_Code, ?, c_vendId3gpp ), + aVP_Data := ? + } // End of template m_accessRestrictionData + + /** + * @desc APN_OI_Replacement_AVP + */ + template (present) APN_OI_Replacement_AVP mw_aPN_OI_Replacement_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_apn_OI_Replacement_AVP_Code, ?, c_vendId3gpp ), + aVP_Data := ? + } // End of template mw_aPN_OI_Replacement_dummy + + /** + * @desc GPRS_Subscription_Data_AVP + */ + template (present) GPRS_Subscription_Data_AVP mw_gprsSubscriptionData_dummy := { + aVP_Header:= mw_aVP_HeaderVid_Mbit1 ( + c_gprs_Subscription_Data_AVP_Code, + ?, + c_vendId3gpp), + complete_Data_List_Included_Indicator := ?, + pDP_Context := ?, + aVP_Type := * + } // End of template mw_gprsSubscriptionData_dummy + + /** + * @desc IDR_Flags_AVP + */ + template (present) IDR_Flags_AVP mw_iDRFlags_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_idr_Flags_AVP_Code, ?, c_vendId3gpp ), + aVP_Data := ? + } // End of template mw_iDRFlags_dummy + + /** + * @desc DSR_Flags_AVP + */ + template (present) DSR_Flags_AVP mw_dSRFlags_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_dsr_Flags_AVP_Code, ?, c_vendId3gpp ), + aVP_Data := ? + } // End of template mw_dSRFlags_dummy + + /** + * @desc PUER_Flags_AVP + */ + template (present) PUER_Flags_AVP mw_pUERFlags_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 (c_puer_Flags_AVP_Code, ?, c_vendId3gpp ), + aVP_Data := ? + } // End of template mw_pURFlags_dummy + + /** + * @desc Authentication_Info_AVP + */ + template (present) Authentication_Info_AVP mw_authentication_Info_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_authentication_Info_AVP_Code, + ?, + c_vendId3gpp + ), + e_UTRAN_Vector := omit, + uTRAN_Vector := omit, + gERAN_Vector := omit, + aVP_Type := * + } // End of template mw_authentication_Info_dummy + + /** + * @desc E_UTRAN_Vector_AVP + */ + template (present) E_UTRAN_Vector_AVP mw_e_UTRAN_Vector_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_e_UTRAN_Vector_AVP_Code, ?, c_vendId3gpp ), + item_Number := *, + rAND := ?, + xRES := ?, + aUTN := ?, + kASME := ?, + aVP_Type := * + } // End of template mw_e_UTRAN_Vector_dummy + + /** + * @desc UTRAN_Vector_AVP + */ + template (present) UTRAN_Vector_AVP mw_UTRAN_Vector_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_utran_Vector_AVP_Code, ?, c_vendId3gpp ), + item_Number := *, + rAND := ?, + xRES := ?, + aUTN := ?, + confidentiality_Key := ?, + integrity_Key := ?, + aVP_Type := * + } // End of template mw_UTRAN_Vector_dummy + + /** + * @desc Re_synchronization_Info_AVP + */ + template (value) Re_synchronization_Info_AVP m_re_synchronization_Info_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_re_Synchronization_Info_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := ''O + } // End of template Re_synchronization_Info_AVP_dummy + + /** + * @desc Number_Of_Requested_Vectors_AVP + */ + template (value) Number_Of_Requested_Vectors_AVP m_numberOfRequestedVectorsAVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_number_Of_Requested_Vectors_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := 0 + } // End of template m_numberOfRequestedVectorsAVP_dummy + + /** + * @desc Req-UTRAN-GERAN-Auth-Info AVP basic receive message + */ + template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, ?, c_vendId3gpp ), + number_Of_Requested_Vectors := *, + immediate_Response_Preferred := *, + re_synchronization_Info := *, + aVP_Type := * + } // End of template mw_reqUTRANGERANAuthInfo_dummy + + /** + * @desc Immediate-Response-Preferred AVP basic receive message + */ + template (value) Immediate_Response_Preferred_AVP m_immediateResponsePreferredAVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_immediate_Response_Preferred_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := 0 + } // End of template m_immediateResponsePreferredAVP_dummy + + template (present) GERAN_Vector_AVP mw_GERAN_Vector_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_geran_Vector_AVP_Code, ?, c_vendId3gpp ), + item_Number := *, + rAND := ?, + sRES := ?, + kc := ?, + aVP_Type := * + } // End of template mw_GERAN_Vector_dummy + + template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_dummy := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, ?, c_vendId3gpp ), + number_Of_Requested_Vectors := *, + immediate_Response_Preferred := *, + re_synchronization_Info := *, + aVP_Type := * + } // End of template mw_reqEUTRANAuthInfo_dummy + + } // End of group DummyAVPHeaders + + /** AVPs templates */ + group SpecificAVPHeaders { + + /** AVPs templates for send */ + group sendingTemplatesForAVPs{ + + /** + * @desc Contain information about a dynamically established APN on a serving node + * @param p_context_Identifier TODO + * @param p_service_Selection TODO + * @param p_mip6_Agent_Info Contains the IPv6 or the IPv4 address information of the HA + * @param p_visited_Network_Identifier Identity of the network where the PDN-GW was allocated, in the case of dynamic PDN-GW assignment + */ + template (value) Active_APN_AVP md_active_APN( + in template (value) Context_Identifier_AVP p_context_Identifier, + in template (value) Service_Selection_AVP p_service_Selection, + in template (value) MIP6_Agent_Info_AVP p_mip6_Agent_Info, + in template (value) Visited_Network_Identifier_AVP p_visited_Network_Identifier + ) modifies m_active_APN_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_active_APN_AVP_Code, + f_getEncvalueLength ( encvalue ( p_context_Identifier ) )+ + f_getEncvalueLength ( encvalue ( p_service_Selection ) )+ + f_getEncvalueLength ( encvalue ( p_mip6_Agent_Info ) )+ + f_getEncvalueLength ( encvalue ( p_visited_Network_Identifier ) ), + c_vendId3gpp ), + context_Identifier := p_context_Identifier, + service_Selection := p_service_Selection, + mip6_Agent_Info := p_mip6_Agent_Info, + visited_Network_Identifier := p_visited_Network_Identifier + } // End of template m_active_APN_AVP + + /** + * @desc Received template for Subscription-Data AVP for APN + * @param p_apnConfigurationProfile APN subscription value + */ + template (value) Subscription_Data_AVP m_subscriptionDataApnProfile ( + in template (value) APN_Configuration_Profile_AVP p_apnConfigurationProfile + ) modifies m_subscriptionData_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_subscription_Data_AVP_Code, + f_getEncvalueLength ( encvalue ( p_apnConfigurationProfile ) ), + c_vendId3gpp ), + aPN_Configuration_Profile := p_apnConfigurationProfile + } // End of template m_subscriptionDataApnProfile + + /** + * @desc Received template for Subscription-Data AVP for Subscriber_Status_AVP + * @param p_apnConfigurationProfile APN subscription value + */ + template (value) Subscription_Data_AVP m_subscriptionData_SubsStatus ( + in template (value) Subscriber_Status_AVP p_subscriber_Status + ) modifies m_subscriptionData_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_subscription_Data_AVP_Code, + 16,//length for Subscriber_Status_AVP + c_vendId3gpp ), + subscriber_Status := p_subscriber_Status + } // End of template m_subscriptionData_SubsStatus + + /** + * @desc Received template for Subscription-Data AVP for GPRS + * @param p_gprsSubscriptionData GPRS subscription value + */ + template (value) Subscription_Data_AVP m_subscriptionDataGprs ( + in template (value) GPRS_Subscription_Data_AVP p_gprsSubscriptionData + ) modifies m_subscriptionData_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_subscription_Data_AVP_Code, + f_getEncvalueLength ( encvalue ( p_gprsSubscriptionData ) ), + c_vendId3gpp ), + gPRS_Subscription_Data := p_gprsSubscriptionData + } // End of template m_subscriptionDataGprs + + /** + * @desc Received template for Subscription-Data AVP for GPRS + * @param p_operatorDeterminedBarring TODO + * @param p_regionalZoneCode TODO + * @param p_accessRestrictionData TODO + * @param p_apnOIReplacement TODO + * @param p_lcsInfo TODO + * @param p_teleserviceList TODO + * @param p_callBarringInfo TODO + * @param p_csgSubscriptionData CGS subscription value + */ + template (value) Subscription_Data_AVP m_subscriptionDataAll ( + in template (value) Operator_Determined_Barring_AVP p_operatorDeterminedBarring, + in template (value) Regional_Subscription_Zone_Code_AVP p_regionalZoneCode, + in template (value) Access_Restriction_Data_AVP p_accessRestrictionData, + in template (value) APN_OI_Replacement_AVP p_apnOIReplacement, + in template (value) LCS_Info_AVP p_lcsInfo, + in template (value) Teleservice_List_AVP p_teleserviceList, + in template (value) Call_Barring_Info_AVP p_callBarringInfo, + in template (value) CSG_Subscription_Data_AVP p_csgSubscriptionData + ) modifies m_subscriptionData_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_subscription_Data_AVP_Code, + f_getEncvalueLength ( encvalue ( p_operatorDeterminedBarring ) ) + + 10 * f_getEncvalueLength ( encvalue ( p_regionalZoneCode ) ) + + f_getEncvalueLength ( encvalue ( p_accessRestrictionData ) ) + + f_getEncvalueLength ( encvalue ( p_apnOIReplacement ) ) + + f_getEncvalueLength ( encvalue ( p_lcsInfo ) ) + + f_getEncvalueLength ( encvalue ( p_teleserviceList ) ) + + f_getEncvalueLength ( encvalue ( p_callBarringInfo ) ) + + f_getEncvalueLength ( encvalue ( p_csgSubscriptionData ) ), + c_vendId3gpp ), + operator_Determined_Barring := p_operatorDeterminedBarring, + zone_Code := { p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode, + p_regionalZoneCode }, + access_Restriction_Data := p_accessRestrictionData, + aPN_OI_Replacement := p_apnOIReplacement, + lCS_Info := p_lcsInfo, + teleservice_List := p_teleserviceList, + call_Barring_Info := { p_callBarringInfo }, + cSG_Subscription_Data := p_csgSubscriptionData + } // End of template m_subscriptionDataAll + + /** + * @desc Received template for APN-Configuration-Profile AVP + * @param p_contextIdentifier Context-Identifier AVP that identifies the per subscriber’s default APN configuration + * @param p_allAPNConfIncludedId All-APN-Configurations-Included-Indicator AVP + * @param p_aPNConfiguration Describes the configuration for a single APN + */ + template (value) APN_Configuration_Profile_AVP m_apnConfigurationProfile ( + in template (value) Context_Identifier_AVP p_contextIdentifier, + in template (value) All_APN_Conf_Included_Id_AVP p_allAPNConfIncludedId, + in template (value) APN_Configuration_AVP p_aPNConfiguration + ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_Configuration_Profile_AVP_Code, + f_getEncvalueLength ( encvalue (p_contextIdentifier) ) + + f_getEncvalueLength ( encvalue ( p_allAPNConfIncludedId ) ) + + f_getEncvalueLength ( encvalue ( p_aPNConfiguration ) ), + c_vendId3gpp ), + context_Identifier := p_contextIdentifier, + all_APN_Conf_Included_Id := p_allAPNConfIncludedId, + aPN_Configuration := { p_aPNConfiguration }, + aVP_Type := omit + } // End of template m_apnConfigurationProfile + + /** + * @desc All-APN-Configurations-Included-Indicator AVP description + * @param p_code TODO + */ + template (value) All_APN_Conf_Included_Id_AVP m_allAPNConfIncludedId ( + in template (value) All_APN_Conf_Included_Id_Code p_code + ) := { + aVP_Header:= m_aVP_HeaderVid_Mbit1 ( c_all_APN_Configurations_Included_Indicator_AVP_Code, + /*f_getEncvalueLength ( encvalue (p_code) )*/4, c_vendId3gpp ), + all_APN_Conf_Included_Indicator := p_code + } // End of template m_allAPNConfIncludedId + + /** + * @desc + * @param p_contextIdentifier TODO + * @param p_pdnType TODO + * @param p_serviceSelection TODO + * @param p_mIP6AgentInfo TODO + */ + template (value) APN_Configuration_AVP m_apnConfiguration ( + in template (value) Context_Identifier_AVP p_contextIdentifier, + in template (value) PDN_Type_AVP p_pdnType, + in template (value) Service_Selection_AVP p_serviceSelection, + in template (value) MIP6_Agent_Info_AVP p_mIP6AgentInfo ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_Configuration_AVP_Code, + f_getEncvalueLength ( encvalue (p_contextIdentifier ))+ + f_getEncvalueLength ( encvalue (p_pdnType ))+ + f_getEncvalueLength ( encvalue (p_serviceSelection ))+ + f_getEncvalueLength ( encvalue (p_mIP6AgentInfo ) ), + c_vendId3gpp ), + context_Identifier := p_contextIdentifier, + served_Party := omit, + pDN_Type := p_pdnType, + service_Selection := p_serviceSelection, + ePS_Subscribed_QoS_Profile := omit, + vPLMN_Dynamic_Address_Allowed := omit, + mIP6_Agent_Info := p_mIP6AgentInfo, + visited_Network_Identifier := omit, + pDN_GW_Allocation_Type := omit, + threeGPP_Charging_Char := omit, + aMBR := omit, + specific_APN_Info := omit, + aPN_OI_Replacement := omit, + sIPTO_Permission := omit, + lIPA_Permission := omit, + aVP_Type := omit + } // End of template m_apnConfiguration + + /** + * @desc + */ + template (value) QoS_Subscribed_AVP m_qosSubscribed_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_qos_Subscribed_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := ''O + } // End of template m_qosSubscribed_dummy + + /** + * @desc + */ + template (value) QoS_Subscribed_AVP m_qosSubscribed(in template (value) octetstring p_avpData) modifies m_qosSubscribed_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_qos_Subscribed_AVP_Code, f_getOctetStringLength ( p_avpData ), c_vendId3gpp ), + aVP_Data := p_avpData + } // End of template m_qosSubscribed + + /** + * @desc + */ + template (value) PDP_Type_AVP m_pdpType_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Type_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := ''O + } // End of template m_pdpType_dummy + + /** + * @desc + */ + template (value) PDP_Type_AVP m_pdpType(in template (value) octetstring p_avpData) modifies m_pdpType_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Type_AVP_Code, f_getOctetStringLength ( p_avpData ), c_vendId3gpp ), + aVP_Data := p_avpData + } // End of template m_pdpType + + /** + * @desc + * @param p_code TODO + */ + template (value) PDN_Type_AVP m_pdnType ( in template (value) PDN_Type_Code p_code ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdn_Type_AVP_Code, /*f_getEncvalueLength( encvalue (p_code) )*/4, c_vendId3gpp ), + pDN_Type_Code := p_code + } // End of template m_pdnType + + /** + * @desc + * @param p_avpData TODO + */ + template (value) Service_Selection_AVP m_serviceSelection ( in template (value) UTF8String p_avpData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_service_Selection_AVP_Code, f_getUTF8StringLength ( p_avpData ), c_vendId3gpp ), + aVP_Data := p_avpData + } // End of template m_serviceSelection + + /** + * @desc + * @param p_avpData TODO + */ + template (value) Operator_Determined_Barring_AVP m_operatorDeterminedBarring ( in template (value) UInt32 p_avpData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_operator_Determined_Barring_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_avpData + } // End of template m_operatorDeterminedBarring + + /** + * @desc + * @param p_avpData TODO + */ + template (value) Regional_Subscription_Zone_Code_AVP m_regionalSubscriptionZoneCode ( in template (value) octetstring p_avpData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_regional_Subscription_Zone_Code_AVP_Code, f_getOctetStringLength ( p_avpData ), c_vendId3gpp ), + aVP_Data := p_avpData + } // End of template m_regionalSubscriptionZoneCode + + /** + * @desc + * @param p_avpData TODO + */ + template (value) Access_Restriction_Data_AVP m_accessRestrictionData ( in template (value) UInt32 p_avpData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_access_Restriction_Data_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_avpData + } // End of template m_accessRestrictionData + + /** + * @desc + * @param p_avpData TODO + */ + template (value) APN_OI_Replacement_AVP m_aPNOIReplacement ( in template (value) UTF8String p_avpData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_OI_Replacement_AVP_Code, f_getUTF8StringLength ( p_avpData ), c_vendId3gpp ), + aVP_Data := p_avpData + } // End of template m_aPNOIReplacement + + template (value) Teleservice_List_AVP m_teleserviceListTsCode ( in template (value) TS_Code_AVP p_tSCode ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_teleservice_List_AVP_Code, + f_getEncvalueLength ( encvalue ( p_tSCode ) ), + c_vendId3gpp ), + tS_Code := { p_tSCode }, + aVP_Type := omit + } // End of template m_teleserviceListTsCode + + template (value) TS_Code_AVP m_tSCode ( in template (value) octetstring p_aVPData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_ts_Code_AVP_Code, + f_getOctetStringLength ( p_aVPData ), + c_vendId3gpp ), + aVP_Data := p_aVPData + } // End of template m_tSCode + + template (value) SS_Code_AVP m_sSCode ( in template (value) octetstring p_aVPData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_ss_Code_AVP_Code, + f_getOctetStringLength(p_aVPData ), + c_vendId3gpp ), + aVP_Data := p_aVPData + } // End of template m_sSCode + + template (value) SS_Status_AVP m_sSStatus ( in template (value) octetstring p_aVPData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_ss_Status_AVP_Code, + f_getOctetStringLength(p_aVPData ), + c_vendId3gpp ), + aVP_Data := p_aVPData + } // End of template m_sSStatus + + template (value) CSG_Subscription_Data_AVP m_cSGSubscriptionData ( in template (value) CSG_Id_AVP p_cSGId ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_csg_Subscription_Data_AVP_Code, + p_cSGId.aVP_Header.aVP_len ,//16, + c_vendId3gpp ), + cSG_Id := p_cSGId, + expiration_Date := omit, + service_Selection := omit, + aVP_Type := omit + } // End of template m_cSGSubscriptionData + + template (value) CSG_Id_AVP m_cSGId ( in template (value) UInt32 p_aVPData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_csg_Id_AVP_Code, + 4, + c_vendId3gpp ), + aVP_Data := p_aVPData + } // End of template m_cSGId + + template (value) Call_Barring_Info_AVP m_callBarringInfo ( in template (value) SS_Code_AVP p_sSCode, + in template (value) SS_Status_AVP p_sSStatus ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_call_Barring_Info_AVP_Code, + f_getEncvalueLength ( encvalue ( p_sSCode )) + + f_getEncvalueLength ( encvalue ( p_sSStatus )), + c_vendId3gpp ), + sS_Code := p_sSCode, + sS_Status := p_sSStatus, + aVP_Type := omit + } // End of template m_callBarringInfo + + template (value) PDP_Context_AVP m_pdpContext_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Context_AVP_Code, 4, c_vendId3gpp ), + context_Identifier := m_contextIdentifier_dummy, + pDP_Type := m_pdpType_dummy, + pDP_Address := omit, + qoS_Subscribed := m_qosSubscribed_dummy, + vPLMN_Dynamic_Address_Allowed := omit, + service_Selection := m_service_Selection_AVP_dummy, + threeGPP_Charging_Char := omit, + ext_PDP_Type := omit, + ext_PDP_Address := omit, + aMBR := omit, + sIPTO_Permission := omit, + lIPA_Permission := omit, + aVP_Type := omit + } // End of template m_pdpContext_dummy + + template (value) PDP_Context_AVP m_pdpContext(in template (value) Context_Identifier_AVP p_context_Identifier, + in template (value) PDP_Type_AVP p_pDP_Type, + in template (value) QoS_Subscribed_AVP p_qoS_Subscribed, + in template (value) Service_Selection_AVP p_service_Selection) + modifies m_pdpContext_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Context_AVP_Code, + f_getEncvalueLength (encvalue ( p_context_Identifier )) + + f_getEncvalueLength (encvalue ( p_pDP_Type )) + + f_getEncvalueLength (encvalue ( p_qoS_Subscribed )) + + f_getEncvalueLength (encvalue ( p_service_Selection )), + c_vendId3gpp ), + context_Identifier := p_context_Identifier,//m_contextIdentifier_dummy, + pDP_Type := p_pDP_Type,//m_pdpType_dummy, + qoS_Subscribed := p_qoS_Subscribed,//m_qosSubscribed_dummy, + service_Selection := p_service_Selection//m_service_Selection_AVP_dummy + } // End of template m_pdpContext + + /** + * @desc Send Complete-DL-Included-Indicator AVP message + * @param p_code + */ + template (value) Complete_DL_Included_Indicator_AVP m_completeDLIncludedIndicator ( in template (value) + Complete_DL_Included_Indicator_Code + p_code ) := { + aVP_Header:= m_aVP_HeaderVid_Mbit1 ( + c_complete_Data_List_Included_Indicator_AVP_Code, + f_getEncvalueLength ( encvalue ( p_code ) ), + c_vendId3gpp ), + complete_DL_Included_Indicator := p_code + } // End of template m_completeDLIncludedIndicator + + /** + * @desc Send GPRS-Subscription-Data AVP message + * @param p_completeDLIncludedIndicator TODO + * @param p_pDPContext TODO + */ + template (value) GPRS_Subscription_Data_AVP m_gprsSubscriptionData ( in template (value) Complete_DL_Included_Indicator_AVP p_completeDLIncludedIndicator, + in template (value) PDP_Context_AVP p_pDPContext ) := { + aVP_Header:= m_aVP_HeaderVid_Mbit1 ( + c_gprs_Subscription_Data_AVP_Code, + f_getEncvalueLength ( encvalue ( p_completeDLIncludedIndicator ) ) + + f_getEncvalueLength ( encvalue ( p_pDPContext ) ), + c_vendId3gpp ), + complete_Data_List_Included_Indicator := p_completeDLIncludedIndicator, + pDP_Context := { p_pDPContext }, + aVP_Type := omit + } // End of template m_gprsSubscriptionData + + /** + * @desc Send PUER_Flags AVP message + * @param p_aVP_Data The PUER_Flags value + */ + template (value) PUER_Flags_AVP m_puerFlags_AVP( + in UInt32 p_aVP_Data + ):= { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_puer_Flags_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_aVP_Data + } // End of template m_puerFlags_AVP + + /** + * @desc Send PUEA_Flags AVP message + * @param p_aVP_Data The PUEA_Flags value + */ + template (value) PUEA_Flags_AVP m_pueaFlags( + in template (value) UInt32 p_aVP_Data + ):= { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pua_Flags_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_aVP_Data + } // End of template m_pueaFlags + + /** + * @desc Send DSR_Flags AVP message + * @param p_aVP_Data The DSR_Flags value + */ + template (value) DSR_Flags_AVP m_dsrFlags( + in UInt32 p_aVP_Data + ):= { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_dsr_Flags_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_aVP_Data + } // End of template m_dsrFlags + + /** + * @desc Send template specifying no state maintained + */ + template (value) Auth_Session_State_AVP md_auth_Session_State_noStateMaintained + modifies m_auth_Session_State_dummy := { + aVP_Data := NO_STATE_MAINTAINED_E + } // End of template m_auth_Session_State_noStateMaintained + + /** + * @desc Send ULR_Flags_AVP message with bits configuration + * @param p_aVP_Data ULR-Flags + * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.7/1: ULR-Flags + */ + template (value) ULR_Flags_AVP md_ulr_Flags_AVP( in UInt32 p_aVP_Data ) + modifies m_ulrFlags_dummy := { + aVP_Data := p_aVP_Data + } // End of template m_ulr_Flags_AVP + + /** + * @desc + * @param p_aVP_Data + */ + template (value) Homogeneous_Support_AVP md_homogeneous_Support_AVP( in Homogeneous_Support_Type p_aVP_Data ) + modifies m_homogeneous_Support_dummy := { + aVP_Data := p_aVP_Data + } // End of template m_homogeneous_Support_AVP + + /** + * @desc Identifies the per subscriber"s default APN configuration + * @param p_aVP_Data Per subscriber"s default APN configuration + */ + template (value) Context_Identifier_AVP md_contextIdentifier( in UInt32 p_aVP_Data ) + modifies m_contextIdentifier_dummy := { + aVP_Data := p_aVP_Data + } // End of template m_contextIdentifier + + /** + * @desc APN for the selected and dynamically allocated PDN GW + * @param p_aVP_Data The APN value + */ + template (value) Service_Selection_AVP md_service_Selection_AVP( in charstring p_aVP_Data ) + modifies m_service_Selection_AVP_dummy := { + aVP_Header := m_aVP_Header_Mbit1 ( c_service_Selection_AVP_Code, f_getCharStringLength(p_aVP_Data)), + aVP_Data := p_aVP_Data + } // End of template m_service_Selection_AVP + + /** + * @desc HA IP address + * @param The HA IP address + * @see RFC4004 + */ + template (value) MIP_Home_Agent_Address_AVP md_mip_Home_Agent_Address_AVP( in Address p_Address ) + modifies m_mip_Home_Agent_Address_AVP_dummy := { + aVP_Header := m_aVP_Header_Mbit1 ( c_mIP_Home_Agent_Address_AVP_Code, f_IPAdressLengthUInt24()), + aVP_Data := p_Address + } // End of template m_mip_Home_Agent_Address_AVP + template (value) MIP_Home_Agent_Address_AVP md_mipHomeAgentAddress( in Address p_Address ) := md_mip_Home_Agent_Address_AVP(p_Address); //Alias + + /** + * @desc HA FQDN + * @param p_destinationRealm Realm of the PDN-GW + * @param p_destinationHost Hostname of the PDN-GW + */ + template (value) MIP_Home_Agent_Host_AVP md_mip_Home_Agent_Host_AVP( + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) Destination_Host_AVP p_destinationHost) + modifies m_mip_Home_Agent_Host_AVP_dummy := { + + aVP_Header := m_aVP_Header_Mbit1 ( c_mIP_Home_Agent_Host_AVP_Code, + f_getEncvalueLength ( encvalue (p_destinationRealm))+ + f_getEncvalueLength ( encvalue (p_destinationHost))), + destination_Realm := p_destinationRealm, + destination_Host := p_destinationHost + } // End of template m_mip_Home_Agent_Host_AVP + + /** + * @desc HA FQDN + * @param p_destinationRealm Realm of the PDN-GW + * @param p_destinationHost Hostname of the PDN-GW + * @remark This is an alias on template md_mip_Home_Agent_Host_AVP + */ + template (value) MIP_Home_Agent_Host_AVP md_mipHomeAgentHost( + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) Destination_Host_AVP p_destinationHost + ) := md_mip_Home_Agent_Host_AVP(p_destinationRealm, p_destinationHost); //Alias + + /** + * @desc Contains the IPv6 or the IPv4 address information of the HA + * @param p_mip_Home_Agent_Address1 HA IP address + * @param p_mip_Home_Agent_Host HA FQDN of the PDN-GW + */ + template (value) MIP6_Agent_Info_AVP md_mip6_Agent_Info_AVP( + in template (value) MIP_Home_Agent_Address_AVP p_mip_Home_Agent_Address1, + in template (value) MIP_Home_Agent_Host_AVP p_mip_Home_Agent_Host + ) modifies m_mip6_Agent_Info_AVP_dummy := { + aVP_Header := m_aVP_Header_Mbit1 ( c_mIP6_Agent_Info_AVP_Code, + f_getEncvalueLength ( encvalue (p_mip_Home_Agent_Address1 ))+ + f_getEncvalueLength ( encvalue (p_mip_Home_Agent_Host ))), + mip_Home_Agent_Address1 := p_mip_Home_Agent_Address1, + mip_Home_Agent_Host := p_mip_Home_Agent_Host + } // End of template m_mip6_Agent_Info_AVP + + /** + * @desc Identity of the network where the PDN-GW was allocated, in the case of dynamic PDN-GW assignment + * @param p_aVP_Data Identity value + */ + template (value) Visited_Network_Identifier_AVP md_visited_Network_Identifier_AVP( in octetstring p_aVP_Data ) + modifies m_visited_Network_Identifier_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_Network_Identifier_AVP_Code, + f_getOctetStringLength(p_aVP_Data), + c_vendId3gpp ), + aVP_Data := p_aVP_Data + } // End of template m_visited_Network_Identifier_AVP + + /** + * @desc Send template for radio access technology that is serving the UE + * @param p_avpData Radio access technology value + */ + template (value) RAT_Type_AVP m_rAT_Type(in RAT_Type p_avpData ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1(c_rAT_Type_AVP_Code, 4, c_vendId3gpp), + aVP_Data := p_avpData + } // End of template m_rAT_Type + + /** + * @desc Cancellation_Type_AVP + * @param p_cancellation_Type + */ + template (value) Cancellation_Type_AVP m_cancellationTypeParam ( + in template (value) Cancellation_Type_Code p_cancellation_Type + ) modifies m_cancellationType_dummy := { + cancellation_Type := p_cancellation_Type + } // End of template m_cancellationTypeParam + + /** + * @desc Visited_PLMN_Id_AVP + * @param p_aVP_Data + */ + template (value) Visited_PLMN_Id_AVP md_visitedPLMNId( + in template (value) Oct3 p_aVP_Data + ) modifies m_visitedPLMNId_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_PLMN_Id_AVP_Code, 4, c_vendId3gpp ), + aVP_Data := p_aVP_Data + } // End of template m_visitedPLMNId_dummy + + /** + * @desc Req_EUTRAN_Auth_Info_AVP + * @param p_re_synchronization_Info + */ + template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo( + in template (value) Re_synchronization_Info_AVP p_re_synchronization_Info + ) modifies m_reqEUTRANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue ( p_re_synchronization_Info)), + c_vendId3gpp ), + re_synchronization_Info := p_re_synchronization_Info + } // End of template m_reqEUTRANAuthInfo + + /** + * @desc Req_EUTRAN_Auth_Info_AVP + * @param p_number_Of_Requested_Vectors + */ + template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_NumReqVec( + in template (value) Number_Of_Requested_Vectors_AVP p_number_Of_Requested_Vectors + ) modifies m_reqEUTRANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue (p_number_Of_Requested_Vectors )), + c_vendId3gpp ), + number_Of_Requested_Vectors := p_number_Of_Requested_Vectors + } // End of template m_reqEUTRANAuthInfo + + /** + * @desc Req_EUTRAN_Auth_Info_AVP + * @param p_immediate_Response_Preferred + */ + template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_ImResPre( + in template (value) Immediate_Response_Preferred_AVP p_immediate_Response_Preferred + ) modifies m_reqEUTRANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue (p_immediate_Response_Preferred )), + c_vendId3gpp ), + immediate_Response_Preferred := p_immediate_Response_Preferred + } // End of template m_reqEUTRANAuthInfo_ImResPre + + /** + * @desc Req_EUTRAN_Auth_Info_AVP + * @param p_re_synchronization_Info + */ + template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_ReSynInf( + in template (value) Re_synchronization_Info_AVP p_re_synchronization_Info + ) modifies m_reqEUTRANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue (p_re_synchronization_Info )), + c_vendId3gpp ), + re_synchronization_Info := p_re_synchronization_Info + } // End of template m_reqEUTRANAuthInfo_ImResPre + + /** + * @desc Req_EUTRAN_Auth_Info_AVP + * @param p_number_Of_Requested_Vectors + * @param p_immediate_Response_Preferred + */ + template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_NumReqVec_ImResPre( + in template (value) Number_Of_Requested_Vectors_AVP p_number_Of_Requested_Vectors, + in template (value) Immediate_Response_Preferred_AVP p_immediate_Response_Preferred + ) modifies m_reqEUTRANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue (p_number_Of_Requested_Vectors ))+ + f_getEncvalueLength ( encvalue (p_immediate_Response_Preferred )), + c_vendId3gpp ), + number_Of_Requested_Vectors := p_number_Of_Requested_Vectors, + immediate_Response_Preferred := p_immediate_Response_Preferred + } // End of template m_reqEUTRANAuthInfo_NumReqVec_ImResPre + + /** + * @desc Re_synchronization_Info_AVP + * @param p_aVP_Data + */ + template (value) Re_synchronization_Info_AVP m_re_synchronization_Info_AVP( + in template (value) octetstring p_aVP_Data + ) modifies m_re_synchronization_Info_AVP_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_re_Synchronization_Info_AVP_Code, f_getOctetStringLength(p_aVP_Data), c_vendId3gpp ), + aVP_Data := p_aVP_Data + } // End of template m_re_synchronization_Info_AVP + + /** + * @desc Number_Of_Requested_Vectors_AVP + * @param p_aVP_Data + */ + template (value) Number_Of_Requested_Vectors_AVP m_numberOfRequestedVectorsAVP( + in template (value) UInt32 p_aVP_Data + ) modifies m_numberOfRequestedVectorsAVP_dummy := { + aVP_Data := p_aVP_Data + } // End of template m_numberOfRequestedVectorsAVP + + /** + * @desc Immediate_Response_Preferred_AVP + * @param p_aVP_Data + */ + template (value) Immediate_Response_Preferred_AVP m_immediateResponsePreferredAVP( + in template (value) UInt32 p_aVP_Data + ) modifies m_immediateResponsePreferredAVP_dummy := { + aVP_Data := p_aVP_Data + } // End of template m_immediateResponsePreferredAVP + + /** + * @desc Req_UTRAN_GERAN_Auth_Info_AVP + * @param p_re_synchronization_Info + */ + template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo( + in template (value) Re_synchronization_Info_AVP p_re_synchronization_Info + ) modifies m_reqUTRANGERANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue( p_re_synchronization_Info) ), + c_vendId3gpp ), + re_synchronization_Info := p_re_synchronization_Info + } // End of template m_reqUTRANGERANAuthInfo + + /** + * @desc Req_UTRAN_GERAN_Auth_Info_AVP + * @param p_number_Of_Requested_Vectors + */ + template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfoNumReq( + in template (present) Number_Of_Requested_Vectors_AVP p_number_Of_Requested_Vectors + ) modifies m_reqUTRANGERANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue( p_number_Of_Requested_Vectors) ), + c_vendId3gpp ), + number_Of_Requested_Vectors := p_number_Of_Requested_Vectors + } // End of template m_reqUTRANGERANAuthInfoNumReq + + /** + * @desc Req_UTRAN_GERAN_Auth_Info_AVP + * @param p_immediate_Response_Preferred + * @param p_re_synchronization_Info + */ + template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_ImResPre_ReSynInf( + in template Immediate_Response_Preferred_AVP p_immediate_Response_Preferred, + in template Re_synchronization_Info_AVP p_re_synchronization_Info + ) modifies m_reqUTRANGERANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue( p_immediate_Response_Preferred)) + + f_getEncvalueLength ( encvalue( p_re_synchronization_Info)), + c_vendId3gpp ), + immediate_Response_Preferred := p_immediate_Response_Preferred, + re_synchronization_Info := p_re_synchronization_Info + } // End of template m_reqUTRANGERANAuthInfo_ImResPre_ReSynInf + + /** + * @desc Req_UTRAN_GERAN_Auth_Info_AVP + * @param p_immediate_Response_Preferred + */ + template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_ImResPre( + in template (value) Immediate_Response_Preferred_AVP p_immediate_Response_Preferred + ) modifies m_reqUTRANGERANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue (p_immediate_Response_Preferred )), + c_vendId3gpp ), + immediate_Response_Preferred := p_immediate_Response_Preferred + } // End of template m_reqUTRANGERANAuthInfo_ImResPre_ReSynInf + + /** + * @desc Req_UTRAN_GERAN_Auth_Info_AVP + * @param p_re_synchronization_Info + */ + template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_ReSynInf( + in template Re_synchronization_Info_AVP p_re_synchronization_Info + ) modifies m_reqUTRANGERANAuthInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, + f_getEncvalueLength ( encvalue( p_re_synchronization_Info)), + c_vendId3gpp ), + re_synchronization_Info := p_re_synchronization_Info + } // End of template m_reqUTRANGERANAuthInfo_ReSynInf + + /** + * @desc Subscriber_Status_AVP + * @param p_subscriber_Status_Code + */ + template (value) Subscriber_Status_AVP m_subscriber_Status( + in template (value) Subscriber_Status_Code p_subscriber_Status_Code + ) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_subscriber_Status_AVP_Code, 4, c_vendId3gpp ), + subscriber_Status_Code := p_subscriber_Status_Code + } // End of template m_subscriber_Status + + template User_Id_AVP m_userId(template (value) UTF8String p_avpData) := { + aVP_Header := m_aVP_HeaderVid_Mbit0(c_user_Id_AVP_Code, f_getUTF8StringLength(p_avpData), omit), + aVP_Data := p_avpData + } + + /** + * @desc TODO + */ + template (value) LCS_Info_AVP m_lcsInfo_GMLCNumber(template (value) GMLC_Number_AVP p_gMLC_Number) modifies m_lcsInfo_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 (c_lcs_Info_AVP_Code, + f_getEncvalueLength ( encvalue ( p_gMLC_Number ) ), + c_vendId3gpp ), + gMLC_Number := {p_gMLC_Number} + } // End of template m_lcsInfo_dummy + + + template (value) GMLC_Number_AVP m_GMLC_Number(template (value) octetstring p_avp_Data) := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_gmlc_Number_AVP_Code, f_getOctetStringLength(p_avp_Data), c_vendId3gpp ), + aVP_Data := p_avp_Data + } + + } // End of group sendingTemplatesForAVPs + + /** AVPs basic templates for receive */ + group awaitingTemplatesForAVPs{ + + /** + * @desc Experimental-Code AVP receive message + * @param p_experimental_Result_Code Expected sExperimental-Result-Code AVP + */ + template (present) Experimental_Result_AVP mw_experimentalResult(template (present) Experimental_Result_Code_AVP p_experimental_Result_Code) := { + aVP_Header := mw_aVP_Header_Vbit0Mbit1 (c_experimental_Result_AVP_Code), + vendor_Id := ?, + experimental_Result_Code := p_experimental_Result_Code + } // End of template mw_experimentalResult + + /** + * @desc Experimental-Result-Code AVP receive message + * @param p_avpData Expected status code + */ + template (present) Experimental_Result_Code_AVP mw_experimentalResultCode(template (present) Experimental_Result_Type p_avpData) := { + aVP_Header := mw_aVP_Header_Vbit0Mbit1 (c_experimental_Result_Code_AVP_Code), + aVP_Data := p_avpData + } // End of template mw_experimentalResultCode + + /** + * @desc Error-Diagnostic AVP receive message + * @param p_error_Diagnostic_Code Expected status code + */ + template (present) Error_Diagnostic_AVP mw_errorDiagnostic( + in template (present) Error_Diagnostic_Code_Type p_error_Diagnostic_Code + ) := { + aVP_Header := mw_aVP_Header_Vbit1Mbit0 (c_error_Diagnostic_AVP_Code), + error_Diagnostic_Code := p_error_Diagnostic_Code + } // End of template mw_errorDiagnostic + + /** + * @desc Operator-Determined-Barring AVP receive message + * @param p_aVP_Data Services of a subscriber that are barred by the operator + */ + template (present) Operator_Determined_Barring_AVP mw_operator_Determined_Barring( + in template (present) UInt32 p_aVP_Data + ) := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_operator_Determined_Barring_AVP_Code, + ?, + c_vendId3gpp + ), + aVP_Data := p_aVP_Data + } // End of template mw_operator_Determined_Barring + + /** + * @desc HPLMN-ODB AVP receive message + * @param p_aVP_Data HPLMN specific services of a subscriber that are barred by the operator + */ + template (present) HPLMN_ODB_AVP mw_hplmn_ODB( + in template (present) UInt32 p_aVP_Data + ) := { + aVP_Header := mw_aVP_HeaderVid_Mbit1 ( + c_hplmn_ODB_AVP_Code, + ?, + c_vendId3gpp + ), + aVP_Data := p_aVP_Data + } // End of template mw_hplmn_ODB + + /** + * @desc APN-Configuration AVP receive message with expected ePS-Subscribed-QoS-Profile/AMBR AVPs + */ + template (present) APN_Configuration_AVP mdw_aPN_Configuration_ePS_aMBR + modifies mw_aPN_Configuration_dummy := { + ePS_Subscribed_QoS_Profile := ?, + aMBR := ? + } // End of template mw_aPN_Configuration_ePS_aMBR + + /** + * @desc APN-Configuration AVP receive message with expected APN-Configuration AVP + * @param p_context_Identifier TODO + * @param p_all_APN_Conf_Included_Id TODO + */ + template (present) APN_Configuration_Profile_AVP mdw_apnConfigurationProfile( + in template (present) Context_Identifier_AVP p_context_Identifier, + in template (present) All_APN_Conf_Included_Id_AVP p_all_APN_Conf_Included_Id + ) modifies mw_apnConfigurationProfile_dummy := { + context_Identifier := p_context_Identifier, + all_APN_Conf_Included_Id := p_all_APN_Conf_Included_Id, + aPN_Configuration := superset(mdw_aPN_Configuration_ePS_aMBR), + aVP_Type := * + } // End of template mw_apnConfigurationProfile + + /** + * @desc APN-Configuration AVP receive message with expected Context-Identifier/All-APN-Conf-Included-Id/APN-Configuration AVPs + * @param p_context_Identifier TODO + * @param p_all_APN_Conf_Included_Id TODO + * @param p_aPN_Configuration TODO + */ + template (present) APN_Configuration_Profile_AVP mdw_apnConfigurationProfile_e( + in template (present) Context_Identifier_AVP p_context_Identifier, + in template (present) All_APN_Conf_Included_Id_AVP p_all_APN_Conf_Included_Id, + in template (present) APN_Configuration_AVP p_aPN_Configuration + ) modifies mdw_apnConfigurationProfile := { + context_Identifier := p_context_Identifier, + all_APN_Conf_Included_Id := p_all_APN_Conf_Included_Id, + aPN_Configuration := { p_aPN_Configuration } + } // End of template mw_apnConfigurationProfile_e + + /** + * @desc APN-Configuration AVP receive message with expected Service-Selection/EPS-Subscribed-QoS-Profile/AMBR AVPs + */ + template (present) APN_Configuration_AVP mdw_aPN_Configuration + modifies mw_aPN_Configuration_dummy := { + service_Selection := ?, + ePS_Subscribed_QoS_Profile := ?, + aMBR := ?, + specific_APN_Info := omit + } // End of template mw_aPN_Configurations + + template Supported_Features_AVP mw_supportedFeatures + modifies mw_supportedFeatures_dummy := { + feature_list_Id := ? + } // End of template mw_supportedFeatures + + /** + * @desc Subscription-Data AVP receive message with an expected Operator-Determined-Barring AVP field + * @param p_operator_Determined_Barring TODO + * @param p_hPLMN_ODB TODO + */ + template (present) Subscription_Data_AVP mdw_subscriptionData_operator_Determined_Barring( + in template (present) Operator_Determined_Barring_AVP p_operator_Determined_Barring, + in template (present) HPLMN_ODB_AVP p_hPLMN_ODB + ) modifies mw_subscriptionData_dummy := { + subscriber_Status := mdw_subscriber_Status(OPERATOR_DETERMINED_BARRING_E), + operator_Determined_Barring := p_operator_Determined_Barring ifpresent, + hPLMN_ODB := p_hPLMN_ODB ifpresent + } // End of template mdw_subscriptionData_aPN_Configuration_Profile + + /** + * @desc Subscription-Data AVP receive message with an expected APN-Configuration-Profile AVP field + * @param p_aPN_Configuration_Profile + */ + template (present) Subscription_Data_AVP mdw_subscriptionData_aPN_Configuration_Profile( + in template (present) APN_Configuration_Profile_AVP p_aPN_Configuration_Profile + ) modifies mw_subscriptionData_dummy := { + aPN_Configuration_Profile := p_aPN_Configuration_Profile + } // End of template mdw_subscriptionData_operator_Determined_Barring + + /** + * @desc Subscription-Data AVP receive message with an expected Subscriber-Status AVP field + * @param p_subscriber_Status TODO + */ + template (present) Subscription_Data_AVP mdw_subscriptionData_subscriptionStatus( + in template (present) Subscriber_Status_AVP p_subscriber_Status + ) modifies mw_subscriptionData_dummy := { + subscriber_Status := p_subscriber_Status + } // End of template mw_subscriptionData_subscriptionStatus + + /** + * @desc Subscription-Data AVP receive message with an expected Access-Restriction-Data AVP field + * @param p_access_Restriction_Data TODO + */ + template (present) Subscription_Data_AVP mdw_subscriptionData_accessRestrictionData ( + in template (present) Access_Restriction_Data_AVP p_access_Restriction_Data + ) modifies mw_subscriptionData_dummy := { + access_Restriction_Data := p_access_Restriction_Data + } // End of template mw_subscriptionData_accessRestrictionData + + /** + * @desc Subscription-Data AVP receive message with an expected APN-OI-Replacement AVP field + * @param p_aPN_OI_Replacement TODO + */ + template (present) Subscription_Data_AVP mdw_subscriptionData_apnOiReplacement ( + in template (present) APN_OI_Replacement_AVP p_aPN_OI_Replacement + ) modifies mw_subscriptionData_dummy := { + aPN_OI_Replacement := p_aPN_OI_Replacement + } // End of template mw_subscriptionData_apnOiReplacement + + /** + * @desc Subscription-Data AVP receive message with an expected APN-Configuration-Profile AVP field + * @param p_aPN_Configuration_Profile TODO + */ + template (present) Subscription_Data_AVP mdw_subscriptionData_apnConfigurationProfile ( + in template (present) APN_Configuration_Profile_AVP p_aPN_Configuration_Profile + ) modifies mw_subscriptionData_dummy := { + aPN_Configuration_Profile := p_aPN_Configuration_Profile + } // End of template mw_subscriptionData_apnConfigurationProfile + + /** + * @desc Subscription-Data AVP receive message with an expected GPRS-Subscription-Data AVP field + * @param p_gPRS_Subscription_Data TODO + */ + template (present) Subscription_Data_AVP mdw_subscriptionData_gprs_Subscription_Data ( + in template (present) GPRS_Subscription_Data_AVP p_gPRS_Subscription_Data + ) modifies mw_subscriptionData_dummy := { + gPRS_Subscription_Data := p_gPRS_Subscription_Data + } // End of template mw_subscriptionData_gprs_Subscription_Data + + /** + * @desc GPRS-Subscription-Data AVP receive message + * @param p_completeDLIncludedIndicator Expected Complete-DL-Included-Indicator AVP + * @param p_pDPContext Expected PDP-Context AVP + */ + template (present) GPRS_Subscription_Data_AVP mdw_gprsSubscriptionData( + in template (present) Complete_DL_Included_Indicator_AVP p_completeDLIncludedIndicator, + in template (present) PDP_Context_AVP p_pDPContext ) + modifies mw_gprsSubscriptionData_dummy := { + } // End of template mdw_gprsSubscriptionData + + /** + * @desc SGSN-Number AVP receive message + * @param p_cancellation_Type Expected type of cancellation + */ + template (present) Cancellation_Type_AVP mdw_cancellationType( + in template (present) Cancellation_Type_Code p_cancellation_Type + ) modifies mw_cancellationType_dummy := { + cancellation_Type := p_cancellation_Type + } // End of template mw_cancellationType + + /** + * @desc SGSN-Number AVP receive message + * @param p_avpData Roaming/outbound subscriber's SGSN number + */ + template (value) SGSN_Number_AVP mdw_sGSN_Number(in template (value) octetstring p_aVP_Data) + modifies mw_sGSN_Number_dummy := { + aVP_Header := m_aVP_HeaderVid_Mbit1 ( + c_sgsn_Number_AVP_Code, + f_getOctetStringLength(p_aVP_Data), + c_vendId3gpp + ), + aVP_Data := p_aVP_Data + } // End of template mdw_sGSN_Number + + /** + * @desc Subscriber_Status AVP receive message + * @param p_subscriber_Status_Code TODO + */ + template (present) Subscriber_Status_AVP mdw_subscriber_Status(in template (present) Subscriber_Status_Code p_subscriber_Status_Code) + modifies mw_subscriber_Status_dummy := { + subscriber_Status_Code := p_subscriber_Status_Code + } // End of template mw_subscriber_Status_dummy + + /** + * @desc Access-Restriction-Data AVP receive message + * @param p_avpData TODO + */ + template (present) Access_Restriction_Data_AVP mdw_accessRestrictionData(in template (present) UInt32 p_avpData) + modifies mw_access_Restriction_Data_dummy := { + aVP_Data := p_avpData + } // End of template mw_accessRestrictionData + + /** + * @desc APN-OI-Replacement AVP receive message + * @param p_avpData TODO + */ + template (present) APN_OI_Replacement_AVP mdw_aPN_OI_Replacement(in template (present) UTF8String p_avpData) + modifies mw_aPN_OI_Replacement_dummy := { + aVP_Data := p_avpData + } // End of template mw_aPN_OI_Replacement + + /** + * @desc Received ULA_Flags_AVP message with Separation-indicator bit set + * @param p_aVP_Data ULA-Flags + * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.8/1: ULA-Flags + */ + template (present) ULA_Flags_AVP mdw_ula_Flags_AVP( in UInt32 p_aVP_Data ) + modifies mw_ulaFlags_dummy := { + aVP_Data := p_aVP_Data + } // End of template mw_ula_Flags + + /** + * @desc IDR-Flags AVP receive message + */ + template (present) IDR_Flags_AVP mdw_iDRFlags( + in template (present) UInt32 p_aVP_Data + ) modifies mw_iDRFlags_dummy := { + aVP_Data := p_aVP_Data + } // End of template mdw_iDRFlags + + /** + * @desc DSR-Flags AVP receive message + */ + template (present) DSR_Flags_AVP mdw_dSRFlags( + in template (present) UInt32 p_aVP_Data + ) modifies mw_dSRFlags_dummy := { + aVP_Data := p_aVP_Data + } // End of template mdw_dSRFlags + + /** + * @desc PUER-Flags AVP receive message + */ + template (present) PUER_Flags_AVP mdw_pUERFlags( + in template (present) UInt32 p_aVP_Data + ) modifies mw_pUERFlags_dummy := { + aVP_Data := p_aVP_Data + } // End of template mdw_pURFlags + + + /** + * @desc Await PUEA_Flags AVP message + * @param p_aVP_Data The PUEA_Flags value + */ + template (present) PUEA_Flags_AVP mw_pueaFlags ( in template UInt32 p_aVP_Data ):= { + aVP_Header := mw_aVP_S6a_HeaderVid_Mbit1 (c_pua_Flags_AVP_Code, c_vendId3gpp ), + aVP_Data := p_aVP_Data + } // End of template m_pueaFlags + + /** + * @desc Received generic CLR Flags AVP template + */ + template (present) CLR_Flags_AVP mw_clrFlags := { + aVP_Header := mw_aVP_S6a_HeaderVid_Mbit1 ( c_clr_Flags_AVP_Code, c_vendId3gpp ), + aVP_Data := 1 + } // End of template m_clrFlags_dummy + + /** + * @desc Authentication-Info AVP receive message with an expected specific E-UTRAN authentication vector + * @param p_e_UTRAN_Vector E-UTRAN authentication vector + */ + template (present) Authentication_Info_AVP mdw_authentication_Info_e_UTRAN_Vector( + in template (present) E_UTRAN_Vector_AVP p_e_UTRAN_Vector + ) modifies mw_authentication_Info_dummy := { + e_UTRAN_Vector := subset(p_e_UTRAN_Vector) + } // End of template mdw_authentication_Info_e_UTRAN_Vector + + /** + * @desc Authentication-Info AVP receive message with an expected E-UTRAN authentication vectors + * @param p_e_UTRAN_Vectors E-UTRAN authentication vectors + */ + template (present) Authentication_Info_AVP mdw_authentication_Info_e_UTRAN_Vectors( + in template (present) Authentication_Info_AVP.e_UTRAN_Vector p_e_UTRAN_Vectors + ) modifies mw_authentication_Info_dummy := { + e_UTRAN_Vector := p_e_UTRAN_Vectors + } // End of template mdw_authentication_Info_e_UTRAN_Vectors + + /** + * @desc Authentication-Info AVP receive message with an expected UTRAN authentication vectors + * @param p_gERAN_Vector UTRAN authentication vectors + */ + template (present) Authentication_Info_AVP mdw_authentication_Info_UTRAN_Vectors( + in template (present) Authentication_Info_AVP.uTRAN_Vector p_uTRAN_Vector + ) modifies mw_authentication_Info_dummy := { + uTRAN_Vector := p_uTRAN_Vector + } // End of template mdw_authentication_Info_UTRAN_Vectors + + /** + * @desc Authentication-Info AVP receive message with an expected GERAN authentication vectors + * @param p_gERAN_Vector GERAN authentication vectors + */ + template (present) Authentication_Info_AVP mdw_authentication_Info_GERAN_Vectors( + in template (present) Authentication_Info_AVP.gERAN_Vector p_gERAN_Vector + ) modifies mw_authentication_Info_dummy := { + gERAN_Vector := p_gERAN_Vector + } // End of template mdw_authentication_Info_GERAN_Vectors + + /** + * @desc Authentication-Info AVP receive message with an expected authentication vectors fields + * @param p_uTRAN_Vectors UTRAN authentication vectors + * @param p_gERAN_Vectors GERAN authentication vectors + */ + template (present) Authentication_Info_AVP mdw_authentication_Info_UTRAN_GERAN_Vectors( + in template (present) Authentication_Info_AVP.uTRAN_Vector p_uTRAN_Vectors, + in template (present) Authentication_Info_AVP.gERAN_Vector p_gERAN_Vectors + ) modifies mw_authentication_Info_dummy := { + uTRAN_Vector := p_uTRAN_Vectors, + gERAN_Vector := p_gERAN_Vectors + } // End of template mdw_authentication_Info_UTRAN_GERAN_Vectors + + /** + * @desc E-UTRAN-Vector AVP receive message with an expected item_Number field + */ + template (present) E_UTRAN_Vector_AVP mw_e_UTRAN_Vector_itemNumber modifies mw_e_UTRAN_Vector_dummy := { + item_Number := ? + } // End of template mw_e_UTRAN_Vector_itemNumber + + /** + * @desc UTRAN-Vector AVP receive message with an expected item_Number field + */ + template (present) UTRAN_Vector_AVP mw_UTRAN_Vector_itemNumber modifies mw_UTRAN_Vector_dummy := { + item_Number := ? + } // End of template mw_UTRAN_Vector_itemNumber + + /** + * @desc GERAN-Vector AVP receive message with an expected item_Number field + */ + template (present) GERAN_Vector_AVP mw_GERAN_Vector_itemNumber modifies mw_GERAN_Vector_dummy := { + item_Number := ? + } // End of template mw_GERAN_Vector_itemNumber + + /** + * @desc Req-UTRAN-Auth-Info AVP receive message with an expected immediate_Response_Preferred field + */ + template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_ImRespPre + (template Immediate_Response_Preferred_AVP p_immediateResponsePreferred) + modifies mw_reqEUTRANAuthInfo_dummy := { + immediate_Response_Preferred := p_immediateResponsePreferred + } // End of template mw_reqEUTRANAuthInfo_ImRespPre + + /** + * @desc Req-UTRAN-Auth-Info AVP receive message with an unexpected re_synchronization_Info field + */ + template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_noReSynInfo + modifies mw_reqEUTRANAuthInfo_dummy := { + re_synchronization_Info := omit + } // End of template mw_reqEUTRANAuthInfo_noReSynInfo + + /** + * @desc Req-UTRAN-Auth-Info AVP receive message with an expected re_synchronization_Info field + */ + template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_withReSynInfo + modifies mw_reqEUTRANAuthInfo_dummy := { + re_synchronization_Info := ? + } // End of template mw_reqEUTRANAuthInfo_withReSynInfo + + /** + * @desc Req-UTRAN-GERAN-Auth-Info AVP receive message with an expected immediate_Response_Preferred field + */ + template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_ImRespPre + (template Immediate_Response_Preferred_AVP p_immediateResponsePreferred) + modifies mw_reqUTRANGERANAuthInfo_dummy := { + immediate_Response_Preferred := p_immediateResponsePreferred + } // End of template mw_reqUTRANGERANAuthInfo_ImRespPre + + /** + * @desc Req-UTRAN-GERAN-Auth-Info AVP receive message with an unexpected re_synchronization_Info field + */ + template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_noReSynInfo := + modifies mw_reqUTRANGERANAuthInfo_dummy:= { + re_synchronization_Info := omit + } // End of template mw_reqUTRANGERANAuthInfo_noReSynInfo + + /** + * @desc Req-UTRAN-GERAN-Auth-Info AVP receive message with an expected re_synchronization_Info field + */ + template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_withReSynInfo + modifies mw_reqUTRANGERANAuthInfo_dummy:= { + re_synchronization_Info := ? + } // End of template mw_reqUTRANGERANAuthInfo_withReSynInfo + + } // End of group awaitingTemplatesForAVPs + + } // End of group SpecificAVPHeaders + + } // End of group HeaderFieldTemplates + + /** Message templates for ULR, ULA, AIR, AIA.... methods */ + group S6aMessageTemplates { + + /** Basic templates for ULR, ULA, AIR, AIA.... methods */ + group S6aDummy_templates { + + /** Send basic templates for Request methods */ + group S6aDummy_request_templates_send { + + /** + * @desc Generic send message for UL-Request message + */ + template (value) ULR_MSG m_S6a_ULR_dummy := { + header := m_diameterHeaderReq_dummy ( ULR_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + uLR_Body := m_S6a_ULR_Body_dummy + } // End of template m_S6a_ULR_dummy + + /** + * @desc Generic send message for UL-Request message body + */ + template (value) ULR_Body_AVP m_S6a_ULR_Body_dummy := { + vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id(c_applId_S6a), + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := omit, + destination_Realm := m_destinationRealm_dummy, + user_Name := m_user_Name_dummy, + supported_Features := omit, + terminal_Information := omit, + rat_Type := m_rATType_dummy, + ulr_Flags := m_ulrFlags_dummy, + ue_SRVCC_Capability := omit, + visited_PLMN_Id := m_visitedPLMNId_dummy, + sgsn_Number := omit, + homogeneous_Support := omit, + gmlc_Address := omit, + active_APN := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_ULR_Body_dummy + + /** + * @desc Generic send message for CL-Request message + */ + template (value) AIR_MSG m_S6a_AIR_dummy := { + header := m_diameterHeaderReq_dummy ( AIR_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + aIR_Body := m_S6a_AIR_Body_dummy + } // End of template m_S6a_AIR_dummy + template (value) AIR_Body_AVP m_S6a_AIR_Body_dummy := { + vendor_Specific_Application_Id := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := omit, + destination_Realm := m_destinationRealm_dummy, + user_Name := m_user_Name_dummy, + supported_Features := omit, + req_EUTRAN_Auth_Info := m_reqEUTRANAuthInfo_dummy, + req_UTRAN_GERAN_Auth_Info := m_reqUTRANGERANAuthInfo_dummy, + visited_PLMN_Id := m_visitedPLMNId_dummy, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_AIR_Body_dummy + + /** + * @desc Generic send message for CL-Request message body + */ + template (value) CLR_MSG m_S6a_CLR_dummy := { + header := m_diameterHeaderReq_dummy ( CLR_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + cLR_Body := m_S6a_CLR_Body_dummy + } // End of template m_S6a_CLR_dummy + + /** + * @desc Generic send message for ID-Request message + */ + template (value) CLR_Body_AVP m_S6a_CLR_Body_dummy := { + vendor_Specific_Application_Id := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := m_destinationHost_dummy, + destination_Realm := m_destinationRealm_dummy, + user_Name := m_user_Name_dummy, + supported_Features := omit, + cancellation_Type := m_cancellationType_dummy, + cLR_Flags := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_CLR_dummy + + /** + * @desc Generic send message for ID-Request message body + */ + template (value) IDR_MSG m_S6a_IDR_dummy := { + header := m_diameterHeaderReq_dummy ( IDR_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + iDR_Body := m_S6a_IDR_Body_dummy + } // End of template m_S6a_IDR_dummy + + template (value) IDR_Body_AVP m_S6a_IDR_Body_dummy := { + vendor_Specific_Application_Id := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := m_destinationHost_dummy, + destination_Realm := m_destinationRealm_dummy, + user_Name := m_user_Name_dummy, + supported_Features := omit, + subscription_Data := m_subscriptionData_dummy, + iDR_Flags := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_IDR_Body_dummy + + /** + * @desc Generic send message for DS-Request message + */ + template (value) DSR_MSG m_S6a_DSR_dummy := { + header := m_diameterHeaderReq_dummy ( DSR_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + dSR_Body := m_S6a_DSR_Body_dummy + } // End of template m_S6a_DSR_dummy + + /** + * @desc Generic send message for DS-Request message body + */ + template (value) DSR_Body_AVP m_S6a_DSR_Body_dummy := { + vendor_Specific_Application_Id := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := m_destinationHost_dummy, + destination_Realm := m_destinationRealm_dummy, + user_Name := m_user_Name_dummy, + supported_Features := omit, + dSR_Flags := m_dSRFlags_dummy, + context_Identifier := omit, + trace_Reference := omit, + tS_Code := omit, + sS_Code := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_DSR_Body_dummy + + /** + * @desc Generic send message for PUER-Request message + */ + template (value) PUER_MSG m_S6a_PUER_dummy := { + header := m_diameterHeaderReq_dummy ( PUER_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + pUER_Body := m_S6a_PUER_Body_dummy + } // End of template m_S6a_PUR_dummy + + /** + * @desc Generic send message for PUER-Request message body + */ + template (value) PUER_Body_AVP m_S6a_PUER_Body_dummy := { + vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id(c_applId_S6a), + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := omit, + destination_Realm := m_destinationRealm_dummy, + supported_Features := omit, + user_Name := m_user_Name_dummy, + pUER_Flags := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_PUER_Body_dummy + + /** + * @desc Generic send message for RS-Request message + */ + template (value) RSR_MSG m_S6a_RSR_dummy := { + header := m_diameterHeaderReq_dummy ( RSR_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + rSR_Body := m_S6a_RSR_Body_dummy + } // End of template m_S6a_RSR_dummy + + /** + * @desc Generic send message for RS-Request message body + */ + template (value) RSR_Body_AVP m_S6a_RSR_Body_dummy := { + vendor_Specific_Application_Id := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := m_destinationHost_dummy, + destination_Realm := m_destinationRealm_dummy, + supported_Features := omit, + user_Id := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_RSR_Body_dummy + + /** + * @desc Generic send message for NO-Request message + */ + template (value) NOR_MSG m_S6a_NOR_dummy := { + header := m_diameterHeaderReq_dummy ( NOR_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + nOR_Body := m_S6a_NOR_Body_dummy + } // End of template m_S6a_NOR_dummy + + /** + * @desc Generic send message for NO-Request message body + */ + template (value) NOR_Body_AVP m_S6a_NOR_Body_dummy := { + vendor_Specific_Application_Id := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + destination_Host := omit, + destination_Realm := m_destinationRealm_dummy, + user_Name := m_user_Name_dummy, + supported_Features := omit, + terminal_Information := omit, + mIP6_Agent_Info := omit, + visited_Network_Identifier := omit, + context_Identifier := omit, + service_Selection := omit, + alert_Reason := omit, + uE_SRVCC_Capability := omit, + nOR_Flags := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_NOR_Body_dummy + + } // End of group S6aDummy_request_templates_send + + /** Receive basic templates for Request methods */ + group S6aDummy_request_templates_receive { + + /** + * @desc Generic receive message for UL-Request message + */ + template (present) ULR_MSG mw_S6a_uLR_dummy := { + header := mw_diameterHeaderReq_dummy ( ULR_E, c_applId_S6a ), + session_Id := ?, + uLR_Body := mw_S6a_ULR_Body_dummy + } // End of template mw_S6a_uLR_dummy + + /** + * @desc Generic receive message for UL-Request message body + */ + template (present) ULR_Body_AVP mw_S6a_ULR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := *, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + terminal_Information := *, + rat_Type := ?, + ulr_Flags := ?, + ue_SRVCC_Capability := *, + visited_PLMN_Id := ?, + sgsn_Number := *, + homogeneous_Support := *, + gmlc_Address := *, + active_APN := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_ULR_Body_dummy + + /** + * @desc Generic receive message for AI-Request message + */ + template (present) AIR_MSG mw_S6a_AIR_dummy := { + header := mw_diameterHeaderReq_dummy ( AIR_E, c_applId_S6a ), + session_Id := ?, + aIR_Body := mw_S6a_AIR_Body_dummy + } // End of template mw_S6a_AIR_dummy + + /** + * @desc Generic receive message for AI-Request message body + */ + template (present) AIR_Body_AVP mw_S6a_AIR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := *, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + req_EUTRAN_Auth_Info := ?, + req_UTRAN_GERAN_Auth_Info := ?, + visited_PLMN_Id := ?, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_AIR_Body_dummy + + /** + * @desc Generic receive message for CL-Request message + */ + template (present) CLR_MSG mw_S6a_CLR_dummy := { + header := mw_diameterHeaderReq_dummy ( CLR_E, c_applId_S6a ), + session_Id := ?, + cLR_Body := mw_S6a_CLR_Body_dummy + } // End of template mw_S6a_CLR_dummy + + /** + * @desc Generic receive message for CL-Request message body + */ + template (present) CLR_Body_AVP mw_S6a_CLR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := ?, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + cancellation_Type := ?, + cLR_Flags := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_CLR_Body_dummy + + /** + * @desc Generic receive message for ID-Request message + */ + template (present) IDR_MSG mw_S6a_IDR_dummy := { + header := mw_diameterHeaderReq_dummy ( IDR_E, c_applId_S6a ), + session_Id := ?, + iDR_Body := mw_S6a_IDR_Body_dummy + } // End of template mw_S6a_IDR_dummy + + + /** + * @desc Generic receive message for ID-Request message body + */ + template (present) IDR_Body_AVP mw_S6a_IDR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := ?, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + subscription_Data := ?, + iDR_Flags := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_IDR_Body_dummy + + /** + * @desc Generic receive message for DS-Request message + */ + template(present) DSR_MSG mw_S6a_DSR_dummy := { + header := mw_diameterHeaderReq_dummy ( DSR_E, c_applId_S6a ), + session_Id := ?, + dSR_Body := mw_S6a_DSR_Body_dummy + } // End of template mw_S6a_DSR_dummy + + /** + * @desc Generic receive message for DS-Request message body + */ + template (present) DSR_Body_AVP mw_S6a_DSR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := ?, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + dSR_Flags := ?, + context_Identifier := *, + trace_Reference := *, + tS_Code := *, + sS_Code := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_DSR_Body_dummy + + /** + * @desc Generic receive message for PUE-Request message + */ + template (present) PUER_MSG mw_S6a_PUER_dummy := { + header := mw_diameterHeaderReq_dummy ( PUER_E, c_applId_S6a ), + session_Id := ?, + pUER_Body := mw_S6a_PUER_Body_dummy + } // End of template mw_S6a_PUR_dummy + + /** + * @desc Generic receive message for PUE-Request message body + */ + template (present) PUER_Body_AVP mw_S6a_PUER_Body_dummy := { + vendor_Specific_Application_Id := ?, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := *, + destination_Realm := ?, + supported_Features := *, + user_Name := ?, + pUER_Flags := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_PUER_Body_dummy + + /** + * @desc Generic receive message for RS-Request message + */ + template (present) RSR_MSG mw_S6a_RSR_dummy := { + header := mw_diameterHeaderReq_dummy ( RSR_E, c_applId_S6a ), + session_Id := ?, + rSR_Body := mw_S6a_RSR_Body_dummy + } // End of template mw_S6a_RSR_dummy + + /** + * @desc Generic receive message for RS-Request message body + */ + template (present) RSR_Body_AVP mw_S6a_RSR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := ?, + destination_Realm := ?, + supported_Features := *, + user_Id := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_RSR_Body_dummy + + /** + * @desc Generic receive message for NO-Request message + */ + template (present) NOR_MSG mw_S6a_NOR_dummy := { + header := mw_diameterHeaderReq_dummy ( NOR_E, c_applId_S6a ), + session_Id := ?, + nOR_Body := mw_S6a_NOR_Body_dummy + } // End of template mw_S6a_NOR_dummy + + /** + * @desc Generic receive message for NO-Request message body + */ + template (present) NOR_Body_AVP mw_S6a_NOR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := *, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + terminal_Information := *, + mIP6_Agent_Info := *, + visited_Network_Identifier := *, + context_Identifier := *, + service_Selection := *, + alert_Reason := *, + uE_SRVCC_Capability := *, + nOR_Flags := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_NOR_Body_dummy + + } // End of group S6aDummy_request_templates_receive + + /** Receive basic templates for Answer methods */ + group S6aDummy_answer_templates_send { + + /** + * @desc Generic send message for UL-Answer message + */ + template (value) ULA_MSG m_S6a_ULA_dummy := { + header := m_diameterHeaderAns_dummy ( ULA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + uLA_Body := m_S6a_ULA_Body_dummy + } // End of template m_S6a_ULA_dummy + + /** + * @desc Generic send message for UL-Answer message body + */ + template (value) ULA_Body_AVP m_S6a_ULA_Body_dummy := { + vendor_Specific_Application_Id := omit, + result_Code := omit, + experimental_Result := omit, + error_Diagnostic := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + supported_Features := omit, + ula_Flags := omit, + subscription_Data := omit, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_ULA_Body_dummy + + /** + * @desc Generic send message forAI-Answer message + */ + template (value) AIA_MSG m_S6a_AIA_dummy := { + header := m_diameterHeaderAns_dummy ( AIA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + aIA_Body := m_S6a_AIA_Body_dummy + } // End of template m_S6a_AIA_dummy + + /** + * @desc Generic send message for AI-Answer message body + */ + template (value) AIA_Body_AVP m_S6a_AIA_Body_dummy := { + vendor_Specific_Application_Id := omit, + result_Code := omit, + experimental_Result := omit, + error_Diagnostic := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + supported_Features := omit, + authentication_Info := omit, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_AIA_Body_dummy + + /** + * @desc Generic send message for CL-Answer message + */ + template (value) CLA_MSG m_S6a_CLA_dummy := { + header := m_diameterHeaderAns_dummy ( CLA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + cLA_Body := m_S6a_CLA_Body_dummy + } // End of template m_S6a_CLA_dummy + + /** + * @desc Generic send message for CL-Answer message body + */ + template (value) CLA_Body_AVP m_S6a_CLA_Body_dummy := { + vendor_Specific_Application_Id := omit, + supported_Features := omit, + result_Code := omit, + experimental_Result := omit, + auth_Session_State := m_auth_Session_State_no_maintained, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_CLA_Body_dummy + + /** + * @desc Generic send message for ID-Answer message + */ + template (value) IDA_MSG m_S6a_IDA_dummy := { + header := m_diameterHeaderAns_dummy ( IDA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + iDA_Body := m_S6a_IDA_Body_dummy + } // End of template m_S6a_IDA_dummy + + /** + * @desc Generic send message for ID-Answer message body + */ + template (value) IDA_Body_AVP m_S6a_IDA_Body_dummy := { + vendor_Specific_Application_Id := omit, + supported_Features := omit, + result_Code := omit, + experimental_Result := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + iMS_Voice_PS_Sessions_Support := omit, + last_UE_Activity_Time_AVP := omit, + rat_Type := omit, + iDA_Flags := omit, + ePS_User_State := omit, + ePS_Location_Information := omit, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_IDA_Body_dummy + + /** + * @desc Generic send message for DS-Answer message + */ + template (value) DSA_MSG m_S6a_DSA_dummy := { + header := m_diameterHeaderAns_dummy ( DSA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + dSA_Body := m_S6a_DSA_Body_dummy + } // End of template m_S6a_DSA_dummy + + /** + * @desc Generic send message for DS-Answer message body + */ + template (value) DSA_Body_AVP m_S6a_DSA_Body_dummy := { + vendor_Specific_Application_Id := omit, + supported_Features := omit, + result_Code := omit, + experimental_Result := omit, + error_Diagnostic := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + dSA_Flags := omit, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_DSA_Body_dummy + + /** + * @desc Generic send message for PUE-Answer message + */ + template (value) PUEA_MSG m_S6a_PUEA_dummy := { + header := m_diameterHeaderAns_dummy ( PUEA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + pUEA_Body := m_S6a_PUEA_Body_dummy + } // End of template m_S6a_PUEA_dummy + + /** + * @desc Generic send message for PUE-Answer message body + */ + template (value) PUEA_Body_AVP m_S6a_PUEA_Body_dummy := { + vendor_Specific_Application_Id := omit, + result_Code := omit, + experimental_Result := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + pUEA_Flags := omit, + supported_Features := omit, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_PUEA_Body_dummy + + /** + * @desc Generic send message for RS-Answer message + */ + template (value) RSA_MSG m_S6a_RSA_dummy := { + header := m_diameterHeaderAns_dummy ( RSA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + rSA_Body := m_S6a_RSA_Body_dummy + } // End of template m_S6a_RSA_dummy + + /** + * @desc Generic send message for RS-Answer message body + */ + template (value) RSA_Body_AVP m_S6a_RSA_Body_dummy := { + vendor_Specific_Application_Id := omit, + supported_Features := omit, + result_Code := omit, + experimental_Result := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_RSA_Body_dummy + + /** + * @desc Generic send message for NO-Answer message + */ + template (value) NOA_MSG m_S6a_NOA_dummy := { + header := m_diameterHeaderAns_dummy ( NOA_E, c_applId_S6a ), + session_Id := m_sessionId_dummy, + nOA_Body := m_S6a_NOA_Body_dummy + } // End of template m_S6a_NOA_dummy + + /** + * @desc Generic send message for NO-Answer message body + */ + template (value) NOA_Body_AVP m_S6a_NOA_Body_dummy := { + vendor_Specific_Application_Id := omit, + result_Code := omit, + experimental_Result := omit, + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + supported_Features := omit, + failed := omit, + proxy_Info := omit, + route_Record := omit, + aVP_Type := omit + } // End of template m_S6a_NOA_Body_dummy + + } + + group S6aDummy_answer_templates_receive { + + /** + * @desc Generic receive message for UL-Answer message + */ + template (present) ULA_MSG mw_S6a_ULA_dummy := { + header := mw_diameterHeaderAns_dummy ( ULA_E, c_applId_S6a ), + session_Id := ?, + uLA_Body := mw_S6a_ULA_Body_dummy + } // End of template mw_S6a_ULA_dummy + + /** + * @desc Generic receive message for UL-Answer message body + */ + template (present) ULA_Body_AVP mw_S6a_ULA_Body_dummy := { + vendor_Specific_Application_Id := *, + result_Code := *, + experimental_Result := *, + error_Diagnostic := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + supported_Features := *, + ula_Flags := *, + subscription_Data := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_S6a_ULA_Body_dummy + + /** + * @desc Generic receive message for AI-Answer message + */ + template (present) AIA_MSG mw_S6a_AIA_dummy := { + header := mw_diameterHeaderAns_dummy ( AIA_E, c_applId_S6a ), + session_Id := ?, + aIA_Body := mw_S6a_AIA_Body_dummy + } // End of template mw_S6a_AIA_dummy + + /** + * @desc Generic receive message for AI-Answer message body + */ + template (present) AIA_Body_AVP mw_S6a_AIA_Body_dummy := { + vendor_Specific_Application_Id := *, + result_Code := *, + experimental_Result := *, + error_Diagnostic := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + supported_Features := *, + authentication_Info := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + /** + * @desc Generic receive message for CL-Answer message + */ + template (present) CLA_MSG mw_S6a_CLA_dummy := { + header := mw_diameterHeaderAns_dummy ( CLA_E, c_applId_S6a ), + session_Id := ?, + cLA_Body := mw_S6a_CLA_Body_dummy + } + + /** + * @desc Generic receive message for CL-Answer message body + */ + template (present) CLA_Body_AVP mw_S6a_CLA_Body_dummy := { + vendor_Specific_Application_Id := *, + supported_Features := *, + result_Code := *, + experimental_Result := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + /** + * @desc Generic receive message for ID-Answer message + */ + template (present) IDA_MSG mw_S6a_IDA_dummy := { + header := mw_diameterHeaderAns_dummy ( IDA_E, c_applId_S6a ), + session_Id := ?, + iDA_Body := mw_S6a_IDA_Body_dummy + } + + /** + * @desc Generic receive message for ID-Answer message body + */ + template (present) IDA_Body_AVP mw_S6a_IDA_Body_dummy := { + vendor_Specific_Application_Id := *, + supported_Features := *, + result_Code := *, + experimental_Result := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + iMS_Voice_PS_Sessions_Support := *, + last_UE_Activity_Time_AVP := *, + rat_Type := *, + iDA_Flags := *, + ePS_User_State := *, + ePS_Location_Information := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + /** + * @desc Generic receive message for DS-Answer message + */ + template (present) DSA_MSG mw_S6a_DSA_dummy := { + header := mw_diameterHeaderAns_dummy ( DSA_E, c_applId_S6a ), + session_Id := ?, + dSA_Body := mw_S6a_DSA_Body_dummy + } + + /** + * @desc Generic receive message for DS-Answer message body + */ + template (present) DSA_Body_AVP mw_S6a_DSA_Body_dummy := { + vendor_Specific_Application_Id := *, + supported_Features := *, + result_Code := *, + experimental_Result := *, + error_Diagnostic := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + dSA_Flags := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + /** + * @desc Generic receive message for PUE-Answer message + */ + template (present) PUEA_MSG mw_S6a_PUEA_dummy := { + header := mw_diameterHeaderAns_dummy ( PUEA_E, c_applId_S6a ), + session_Id := ?, + pUEA_Body := mw_S6a_PUEA_Body_dummy + } + + /** + * @desc Generic receive message for PUE-Answer message body + */ + template (present) PUEA_Body_AVP mw_S6a_PUEA_Body_dummy := { + vendor_Specific_Application_Id := ?, + supported_Features := *, + result_Code := *, + experimental_Result := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + pUEA_Flags := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + /** + * @desc Generic receive message for RS-Answer message + */ + template (present) RSA_MSG mw_S6a_RSA_dummy := { + header := mw_diameterHeaderAns_dummy ( RSA_E, c_applId_S6a ), + session_Id := ?, + rSA_Body := mw_S6a_RSA_Body_dummy + } + + /** + * @desc Generic receive message for RS-Answer message body + */ + template (present) RSA_Body_AVP mw_S6a_RSA_Body_dummy := { + vendor_Specific_Application_Id := *, + supported_Features := *, + result_Code := *, + experimental_Result := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + /** + * @desc Generic receive message for NO-Answer message + */ + template (present) NOA_MSG mw_S6a_NOA_dummy := { + header := mw_diameterHeaderAns_dummy ( NOA_E, c_applId_S6a ), + session_Id := ?, + nOA_Body := mw_S6a_NOA_Body_dummy + } + + /** + * @desc Generic receive message for NO-Answer message body + */ + template (present) NOA_Body_AVP mw_S6a_NOA_Body_dummy := { + vendor_Specific_Application_Id := *, + result_Code := *, + experimental_Result := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + supported_Features := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + } // End of group S6aDummy_answer_templates_receive + + } // End of group S6aDummy_templates + + group S6aBase_templates { + + group S6aBasic_request_templates_send { + + /** + * @desc Main send message for MME_S6a port + * @param p_CLR_MSG CL-Request send message message + */ + template (value) DIAMETER_MSG m_mmeCancelLocationRequest ( in template (value) CLR_MSG p_CLR_MSG) := { + cLR_MSG := p_CLR_MSG + } // End of template m_mmeCancelLocationRequest + + /** + * @desc Main send message for MME_S6a port + * @param p_IDR_MSG ID-Request send message message + */ + template (value) DIAMETER_MSG m_mmeInsertSubscriberDataRequest ( in template (value) IDR_MSG p_IDR_MSG) := { + iDR_MSG := p_IDR_MSG + } // End of template m_mmeInsertSubscriberDataRequest + + /** + * @desc Main send message for MME_S6a port + * @param p_DSR_MSG SD-Request send message message + */ + template (value) DIAMETER_MSG m_mmeDeleteSubscriberDataRequest ( in template (value) DSR_MSG p_DSR_MSG) := { + dSR_MSG := p_DSR_MSG + } // End of template m_mmeDeleteSubscriberDataRequest + + /** + * @desc Main send message for MME_S6a port + * @param p_RSR_MSG RS-Request send message message + */ + template (value) DIAMETER_MSG m_mmeResetRequest ( in template (value) RSR_MSG p_RSR_MSG) := { + rSR_MSG := p_RSR_MSG + } // End of template m_mmeResetRequest + + /** + * @desc Main send message for MME_S6a port + * @param p_NOR_MSG NO-Request send message message + */ + template (value) DIAMETER_MSG m_mmeNotificationRequest ( in template (value) NOR_MSG p_NOR_MSG) := { + nOR_MSG := p_NOR_MSG + } // End of template m_mmeNotificationRequest + + /** + * @desc Main send message for MME_S6a port + * @param p_PUER_MSG PU-Request send message message + */ + template (value) DIAMETER_MSG m_mmePurgeUeRequest ( in template (value) PUER_MSG p_PUER_MSG) := { + pUER_MSG := p_PUER_MSG + } // End of template m_mmePurgeUeRequest + + } // End of group S6aBasic_request_templates_send + + group S6basic_request_templates_receive { + + /** + * @desc Main receive message for MME_S6a port + * @param p_uLR_MSG UL-Request receive message message + */ + template (present) DIAMETER_MSG mw_hssUpdateLocationRequest(in template (present) ULR_MSG p_uLR_MSG) := { + uLR_MSG := p_uLR_MSG + } // End of template mw_hssUpdateLocationRequest + + /** + * @desc Main receive message for MME_S6a port + * @param p_iDR_MSG ID-Request receive message message + */ + template (present) DIAMETER_MSG mw_hssInsertSubscriberDataRequest(in template (present) IDR_MSG p_iDR_MSG) := { + iDR_MSG := p_iDR_MSG + } // End of template mw_hssInsertSubscriberDataRequest + + /** + * @desc Main receive message for MME_S6a port + * @param p_cLR_MSG CL-Request receive message message + */ + template (present) DIAMETER_MSG mw_mmeCancelLocationRequest(in template (present) CLR_MSG p_cLR_MSG) := { + cLR_MSG := p_cLR_MSG + } // End of template mw_mmeCancelLocationRequest + + /** + * @desc Main receive message for MME_S6a port + * @param p_iDR_MSG ID-request receive message message + */ + template (present) DIAMETER_MSG mw_mmeInsertSubscriberDataRequest(in template (present) IDR_MSG p_iDR_MSG) := { + iDR_MSG := p_iDR_MSG + } // End of template mw_mmeInsertSubscriberDataRequest + + /** + * @desc Main receive message for MME_S6a port + * @param p_dSR_MSG DS-Request receive message message + */ + template (present) DIAMETER_MSG mw_mmeDeleteSubscriberDataRequest(in template (present) DSR_MSG p_dSR_MSG) := { + dSR_MSG := p_dSR_MSG + } // End of template mw_mmeDeleteSubscriberDataRequest + + /** + * @desc Main receive message for MME_S6a port + * @param p_s6a_CCA_MSG UL-Answer receive message message + */ + template (present) DIAMETER_MSG mw_mmeAuthenticationInformationAnswer(in template (present) AIA_MSG p_aIA_MSG) := { + aIA_MSG := p_aIA_MSG + } // End of template mw_mmeAuthenticationInformationAnswer + + /** + * @desc Main receive message for MME_S6a port + * @param p_s6a_AIR_MSG Request receive message message + */ + template (present) DIAMETER_MSG mw_mmeAuthenticationInformationRequest(in template (present) AIR_MSG p_aIR_MSG) := { + aIR_MSG := p_aIR_MSG + } // End of template mw_mmeAuthenticationInformationRequest + + /** + * @desc Main receive message for MME_S6a port + * @param p_rSR_MSG RS-Request receive message message + */ + template (present) DIAMETER_MSG mw_mmeResetRequest(in template (present) RSR_MSG p_rSR_MSG) := { + rSR_MSG := p_rSR_MSG + } // End of template mw_mmeResetRequest + + /** + * @desc Main receive message for MME_S6a port + * @param p_rSA_MSG RS-Answer receive message message + */ + template (present) DIAMETER_MSG mw_hssResetAnswer(in template (present) RSA_MSG p_rSA_MSG) := { + rSA_MSG := p_rSA_MSG + } // End of template mw_hssResetAnswer + + /** + * @desc Main receive message for MME_S6a port + * @param p_nOR_MSG NO-Request receive message message + */ + template (present) DIAMETER_MSG mw_hssNotificationRequest(in template (present) NOR_MSG p_nOR_MSG) := { + nOR_MSG := p_nOR_MSG + } // End of template mw_hssNotificationRequest + + /** + * @desc Main receive message for HSS_S6a port + * @param p_pUER_MSG PU-Request receive message message + */ + template (present) DIAMETER_MSG mw_mmePurgeUeRequest ( in template (present) PUER_MSG p_pUER_MSG) := { + pUER_MSG := p_pUER_MSG + } // End of template mw_mmePurgeUeRequest + + } // End of group S6basic_request_templates_receive + + group S6aBasic_answer_templates_send { + + /** + * @desc Main send message for MME_S6a port + * @param p_uLA_MSG UL-Answer send message message + */ + template (present) DIAMETER_MSG m_hssUpdateLocationAnswer(in template (value) ULA_MSG p_uLA_MSG) := { + uLA_MSG := p_uLA_MSG + } // End of tempate m_hssUpdateLocationAnswer + + /** + * @desc ULA message send message + * @param p_ulaBody UL-Answer message body template + */ + template (value) ULA_MSG m_S6a_ULA (in template (value) ULA_Body_AVP p_ulaBody) modifies m_S6a_ULA_dummy := { + uLA_Body := p_ulaBody + } // End of template m_S6a_ULA + + /** + * @desc ULA message body send message + * @param p_supportedFeatures Features to be sent + */ + template (value) ULA_Body_AVP m_S6a_ULA_Body (template ULA_Body_AVP.supported_Features p_supportedFeatures) modifies m_S6a_ULA_Body_dummy:= { + auth_Session_State := m_auth_Session_State_dummy, + origin_Host := m_originHost_dummy, + origin_Realm := m_originRealm_dummy, + supported_Features := p_supportedFeatures + } // End of template m_S6a_ULA_Body + + } // end of group S6aBasic_answer_templates_send + + group S6aBasic_answer_templates_receive { + + /** + * @desc Main receive message for MME_S6a port + * @param p_uLA_MSG UL-Answer receive message message + */ + template (present) DIAMETER_MSG mw_hssUpdateLocationAnswer(in template (present) ULA_MSG p_uLA_MSG) := { + uLA_MSG := p_uLA_MSG + } // End of tempate mw_hssUpdateLocationAnswer + + /** + * @desc Main receive message for HSS_S6a port + * @param p_CLA_MSG CL-Answer receive message message + */ + template (present) DIAMETER_MSG mw_hssCancelLocationAnswer ( in template (present) CLA_MSG p_CLA_MSG) := { + cLA_MSG := p_CLA_MSG + } // End of template mw_hssCancelLocationAnswer + + /** + * @desc Main receive message for HSS_S6a port + * @param p_IDA_MSG ID-Answer receive message message + */ + template (present) DIAMETER_MSG mw_hssInsertSubscriberDataAnswer ( in template (present) IDA_MSG p_IDA_MSG) := { + iDA_MSG := p_IDA_MSG + } // End of template mw_hssInsertSubscriberDataAnswer + + /** + * @desc Main receive message for HSS_S6a port + * @param p_DSA_MSG DS-Answer receive message message + */ + template (present) DIAMETER_MSG mw_hssDeleteSubscriberDataAnswer ( in template (present) DSA_MSG p_DSA_MSG) := { + dSA_MSG := p_DSA_MSG + } // End of template mw_hssDeleteSubscriberDataAnswer + + /** + * @desc Main receive message for MME_S6a port + * @param p_uLA_MSG UL-Answer receive message message + */ + template (present) DIAMETER_MSG mw_mmeUpdateLocationAnswer(in template (present) ULA_MSG p_uLA_MSG) := { + uLA_MSG := p_uLA_MSG + } // End of template mw_mmeUpdateLocationAnswer + + /** + * @desc Main receive message for MME_S6a port + * @param p_cLA_MSG CL-Answer receive message message + */ + template (present) DIAMETER_MSG mw_mmeCancelLocationAnswer(in template (present) CLA_MSG p_cLA_MSG) := { + cLA_MSG := p_cLA_MSG + } // End of template mw_mmeCancelLocationAnswer + + /** + * @desc Main receive message for MME_S6a port + * @param p_pUEA_MSG PUE-Answer receive message message + */ + template (present) DIAMETER_MSG mw_mmePurgeLocationAnswer(in template (present) PUEA_MSG p_pUEA_MSG) := { + pUEA_MSG := p_pUEA_MSG + } // End of template mw_mmePurgeLocationAnswer + + /** + * @desc Main receive message for MME_S6a port + * @param p_nOA_MSG NO-Answer receive message message + */ + template (present) DIAMETER_MSG mw_mmeNotifyAnswer(in template (present) NOA_MSG p_nOA_MSG) := { + nOA_MSG := p_nOA_MSG + } // End of template mw_mmeNotifyAnswer + + } // End of group S6aBasic_answer_templates_receive + + } // End of group S6aBase_templates + + group S6aModified_templates { + + group S6aModified_request_templates_send { + + /** + * @desc Send template for ULR + * @param p_sessionId Session identifier + * @param p_ulrBody ULR message body + */ + template (value) ULR_MSG md_ULR( + in template (value) Session_Id_AVP p_sessionId, + in template (value) ULR_Body_AVP p_ulrBody + ) modifies m_S6a_ULR_dummy := { + session_Id := p_sessionId, + uLR_Body := p_ulrBody + } // End of template md_ULR + + /** + * @desc Send template for CLR + * @param p_sessionId Session identifier + * @param p_clrBody CLR message body + */ + template (value) CLR_MSG md_CLR ( + in template (value) Session_Id_AVP p_sessionId, + in template (value) CLR_Body_AVP p_clrBody + ) modifies m_S6a_CLR_dummy := { + session_Id := p_sessionId, + cLR_Body := p_clrBody + } // End of template md_CLR + + /** + * @desc Send template for IDR + * @param p_sessionId Session identifier + * @param p_idrBody IDR message body + */ + template (value) IDR_MSG md_IDR ( + in template (value) Session_Id_AVP p_sessionId, + in template (value) IDR_Body_AVP p_idrBody + ) modifies m_S6a_IDR_dummy := { + session_Id := p_sessionId, + iDR_Body := p_idrBody + } // End of template md_IDR + + /** + * @desc Send template for DSR + * @param p_sessionId Session identifier + * @param p_dsrBody DSR message body + */ + template (value) DSR_MSG md_DSR ( + in template (value) Session_Id_AVP p_sessionId, + in template (value) DSR_Body_AVP p_dsrBody + ) modifies m_S6a_DSR_dummy := { + session_Id := p_sessionId, + dSR_Body := p_dsrBody + } // End of template md_DSR + + /** + * @desc Send template for CLA + * @param p_sessionId Session identifier + * @param p_claBody CLA message body + */ + template (value) PUER_MSG md_PUER( + in template (value) Session_Id_AVP p_sessionId, + in template (value) PUER_Body_AVP p_purBody + ) modifies m_S6a_PUER_dummy := { + session_Id := p_sessionId, + pUER_Body := p_purBody + } // End of template md_PUR + + /** + * @desc Send template for AIR + * @param p_sessionId Session identifier + * @param p_airBody AIR message body + */ + template (value) AIR_MSG md_AIR( + in template (value) Session_Id_AVP p_sessionId, + in template (value) AIR_Body_AVP p_airBody + ) modifies m_S6a_AIR_dummy := { + session_Id := p_sessionId, + aIR_Body := p_airBody + } // End of template md_AIR + + /** + * @desc Send template for RSR + * @param p_sessionId Session identifier + * @param p_rsrBody RSR message body + */ + template (value) RSR_MSG md_RSR ( + in template (value) Session_Id_AVP p_sessionId, + in template (value) RSR_Body_AVP p_rsrBody + ) modifies m_S6a_RSR_dummy := { + session_Id := p_sessionId, + rSR_Body := p_rsrBody + } // End of template md_RSR + + /** + * @desc Send template for NOR + * @param p_sessionId Session identifier + * @param p_norBody NOR message body + */ + template (value) NOR_MSG md_NOR( + in template (value) Session_Id_AVP p_sessionId, + in template (value) NOR_Body_AVP p_norBody + ) modifies m_S6a_NOR_dummy := { + session_Id := p_sessionId, + nOR_Body := p_norBody + } // End of template md_NOR + + /** + * @desc Send template for RSR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_cancellation_Type The cancellation type + */ + template (value) RSR_Body_AVP md_rsrBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm//, + //in template (value) User_Id_AVP p_user_Id + ) modifies m_S6a_RSR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Host := p_destinationHost, + destination_Realm := p_destinationRealm//, + //user_Id := {p_user_Id} + } // End of template md_rsrBodyAvps + + /** + * @desc Send template for CLR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_cancellation_Type The cancellation type + */ + template (value) CLR_Body_AVP md_clrBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Cancellation_Type_AVP p_cancellation_Type + ) modifies m_S6a_CLR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Host := p_destinationHost, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + cancellation_Type := p_cancellation_Type + } // End of template md_clrBodyAvps + + /** + * @desc Send template for IDR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (value) IDR_Body_AVP md_idrBodyAvps_WithoutFlags( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Subscription_Data_AVP p_subscription_Data + ) modifies m_S6a_IDR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Host := p_destinationHost, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + subscription_Data := p_subscription_Data + } // End of template md_idrBodyAvps_WithoutFlags + + /** + * @desc Send template for IDR message body with IDR-Flags AVP with T-ADS Data Request bit set, + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (value) IDR_Body_AVP md_idrBodyAvps_FlagTADS( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Subscription_Data_AVP p_subscription_Data + ) modifies md_idrBodyAvps_WithoutFlags := { + iDR_Flags := m_iDRFlags_dummy ( 2 ) + } // End of template md_idrBodyAvps_FlagTADS + + /** + * @desc Send template for IDR message body with IDR-Flags AVP with EPS User State Request bit set, + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_State( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Subscription_Data_AVP p_subscription_Data + ) modifies md_idrBodyAvps_WithoutFlags := { + iDR_Flags := m_iDRFlags_dummy ( 4 ) + } // End of template md_idrBodyAvps_FlagEPS_State + + /** + * @desc Send template for IDR message body with IDR-Flags AVP with EPS Location Information Request bit set, + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_Location( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Subscription_Data_AVP p_subscription_Data + ) modifies md_idrBodyAvps_WithoutFlags := { + iDR_Flags := m_iDRFlags_dummy ( 8 ) + } // End of template md_idrBodyAvps_FlagEPS_Location + + /** + * @desc Send template for IDR message body with IDR-Flags AVP with EPS Location Information Request and EPS User State + * Request bits set, + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_StateAndLocation( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Subscription_Data_AVP p_subscription_Data + ) modifies md_idrBodyAvps_WithoutFlags := { + iDR_Flags := m_iDRFlags_dummy ( 12 ) + } // End of template md_idrBodyAvps_FlagEPS_StateAndLocation + + /** + * @desc Send template for IDR message body with IDR-Flags AVP with EPS Location Information Request and EPS User State + * Request and Current Location Request bits set, + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_StateAndCurrentLocation( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Subscription_Data_AVP p_subscription_Data + ) modifies md_idrBodyAvps_WithoutFlags := { + iDR_Flags := m_iDRFlags_dummy ( 28 ) + } // End of template md_idrBodyAvps_FlagEPS_StateAndCurrentLocation + + /** + * @desc Send template for IDR message body with IDR-Flags AVP with Current Location Request bit set, + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (value) IDR_Body_AVP md_idrBodyAvps_FlagCurrentLocation( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Subscription_Data_AVP p_subscription_Data + ) modifies md_idrBodyAvps_WithoutFlags := { + iDR_Flags := m_iDRFlags_dummy ( 16 ) + } // End of template md_idrBodyAvps_FlagCurrentLocation + + /** + * @desc Send template for DSR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_dSRFlags DSR-Flags AVP + */ + template (value) DSR_Body_AVP md_dsrBodyAvps_Flags( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) DSR_Flags_AVP p_dSR_Flags + ) modifies m_S6a_DSR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Host := p_destinationHost, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + dSR_Flags := p_dSR_Flags + } // End of template md_dsrBodyAvps_Flags + + /** + * @desc Send template for DSR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_dSRFlags DSR-Flags AVP + */ + template (value) DSR_Body_AVP md_dsrBodyAvps_Flags_ContextId( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Host_AVP p_destinationHost, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) DSR_Flags_AVP p_dSR_Flags, + in template DSR_Body_AVP.context_Identifier p_contextIdentifier + ) modifies md_dsrBodyAvps_Flags := { + context_Identifier := p_contextIdentifier + } // End of template md_dsrBodyAvps_Flags_ContextId + + /** + * @desc Send template for ULR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_rat_Type Radio access type the UE is using + * @param p_ulr_Flags ULR Bit mask + * @param p_visited_PLMN_Id Concatenation of MCC and MNC + */ + template (value) ULR_Body_AVP md_ulrBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) RAT_Type_AVP p_rat_Type, + in template (value) ULR_Flags_AVP p_ulr_Flags, + in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id + ) modifies m_S6a_ULR_Body_dummy := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name, + rat_Type := p_rat_Type, + ulr_Flags := p_ulr_Flags, + visited_PLMN_Id := p_visited_PLMN_Id + } // End of template md_ulrBodyAvps + + /** + * @desc Send template for ULR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name + * @param p_rat_Type Radio access type the UE is using + * @param p_ulr_Flags ULR Bit mask + * @param p_visited_PLMN_Id Concatenation of MCC and MNC + * @param p_homogeneous_Support Indicates if there is homogeneous support of IMS Voice Over PS Sessions on all the TA/RAs of the serving node, or if the homogeneity of this support is kown to the serving node + * @param p_active_APN Contains information about a dynamically established APN on a serving node + */ + template (value) ULR_Body_AVP md_ulrBodyAvps_active_APN( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) RAT_Type_AVP p_rat_Type, + in template (value) ULR_Flags_AVP p_ulr_Flags, + in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id, + in template (value) Homogeneous_Support_AVP p_homogeneous_Support, + in template (value) Active_APN_AVP p_active_APN + ) modifies md_ulrBodyAvps := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name, + rat_Type := p_rat_Type, + ulr_Flags := p_ulr_Flags, + visited_PLMN_Id := p_visited_PLMN_Id, + homogeneous_Support := p_homogeneous_Support, + active_APN := p_active_APN + } // End of template md_ulrBodyAvps_active_APN + + /** + * @desc Send template for ULR message body + * @param p_user_Name User-Name AVP + */ + template (value) ULR_Body_AVP md_ulrBodyAvps_user_Name( + in template (value) User_Name_AVP p_user_Name + ) modifies m_S6a_ULR_Body_dummy := { + origin_Host := valueof(m_originHost(PX_ORIGIN_HOST)), + origin_Realm := valueof(m_originRealm(PX_ORIGIN_REALM)), + destination_Realm := valueof(m_destinationRealm(PX_DESTINATION_REALM)), + user_Name := p_user_Name + } // End of template md_ulrBodyAvps_user_Name + + /** + * @desc Send template for CLR message body + */ + template (value) CLA_Body_AVP md_claBodyAvps + modifies m_S6a_CLA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + origin_Host := valueof(m_originHost(PX_ORIGIN_HOST)), + origin_Realm := valueof(m_originRealm(PX_ORIGIN_REALM)) + } // End of template md_claBodyAvps + + /** + * @desc Send template for CLR message body + */ + template (value) CLA_Body_AVP md_claBodyAvps_OrigHost(in template (value) Origin_Host_AVP p_originHost) + modifies m_S6a_CLA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + origin_Host := p_originHost, + origin_Realm := valueof(m_originRealm(PX_ORIGIN_REALM)) + } // End of template md_claBodyAvps_OrigHost + + /** + * @desc Send template for PUER message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + */ + template PUER_Body_AVP md_puerBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name + ) modifies m_S6a_PUER_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name + } // End of template md_puerBodyAvps + + /** + * @desc Send template for PUER message body with PUER-Flags AVP + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_user_Name User-Name AVP + * @param p_puer_Flags_AVP PUER Bit mask + */ + template PUER_Body_AVP md_purBodyAvps_puer_Flags( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) PUER_Flags_AVP p_puer_Flags_AVP + ) modifies m_S6a_PUER_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + pUER_Flags := p_puer_Flags_AVP + } // End of template md_purBodyAvps_puer_Flags + + /** + * @desc Send template for AIR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_visited_PLMN_Id Concatenation of MCC and MNC + * @param p_req_EUTRAN_Auth_Info Information related to the to authentication requests for UTRAN or GERAN + */ + template (value) AIR_Body_AVP md_airBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id, + in template (omit) Req_EUTRAN_Auth_Info_AVP p_req_EUTRAN_Auth_Info + ) modifies m_S6a_AIR_Body_dummy := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name, + visited_PLMN_Id := p_visited_PLMN_Id, + req_EUTRAN_Auth_Info := p_req_EUTRAN_Auth_Info, + req_UTRAN_GERAN_Auth_Info:= omit + } // End of template md_airBodyAvps + + /** + * @desc Send template for AIR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_visited_PLMN_Id Concatenation of MCC and MNC + * @param p_req_EUTRAN_Auth_Info Information related to the to authentication requests for UTRAN or GERAN + * @param p_req_UTRAN_GERAN_Auth_Info Information related to the to authentication requests for UTRAN or GERAN + */ + template (value) AIR_Body_AVP md_airBodyAvps_req_UTRAN_GERAN_Auth_Info( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name, + in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id, + in template (omit) Req_EUTRAN_Auth_Info_AVP p_req_EUTRAN_Auth_Info, + in template (omit) Req_UTRAN_GERAN_Auth_Info_AVP p_req_UTRAN_GERAN_Auth_Info + ) modifies md_airBodyAvps := { + req_UTRAN_GERAN_Auth_Info := p_req_UTRAN_GERAN_Auth_Info + } // End of template md_airBodyAvps_req_UTRAN_GERAN_Auth_Info + + /** + * @desc Send template for NOR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + */ + template (value) NOR_Body_AVP md_norBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Destination_Realm_AVP p_destinationRealm, + in template (value) User_Name_AVP p_user_Name + ) modifies m_S6a_NOR_Body_dummy := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name + } // End of template md_norBodyAvps + + } // End of group S6aModified_request_templates_send + + group S6aModified_request_templates_receive { + + /** + * @desc Send template for ULR + * @param p_sessionId Session identifier + * @param p_ulrBody ULR message body + */ + template (present) ULR_MSG mdw_ULR( + in template (present) Session_Id_AVP p_sessionId, + in template (present) ULR_Body_AVP p_ulrBody + ) modifies mw_S6a_uLR_dummy := { + session_Id := p_sessionId, + uLR_Body := p_ulrBody + } // End of template mdw_ULR + + /** + * @desc Send template for IDR + * @param p_sessionId Session identifier + * @param p_idrBody IDR message body + */ + template (present) IDR_MSG mdw_IDR ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) IDR_Body_AVP p_idrBody + ) modifies mw_S6a_IDR_dummy := { + session_Id := p_sessionId, + iDR_Body := p_idrBody + } // End of template mdw_IDR + + /** + * @desc Send template for DSR + * @param p_sessionId Session identifier + * @param p_dsrBody DSR message body + */ + template (present) DSR_MSG mdw_DSR ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) DSR_Body_AVP p_dsrBody + ) modifies mw_S6a_DSR_dummy := { + session_Id := p_sessionId, + dSR_Body := p_dsrBody + } // End of template mdw_DSR + + /** + * @desc Send template for PUER + * @param p_sessionId Session identifier + * @param p_purBody PUER message body + */ + template (present) PUER_MSG mdw_PUER ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) PUER_Body_AVP p_puerBody + ) modifies mw_S6a_PUER_dummy := { + session_Id := p_sessionId, + pUER_Body := p_puerBody + } // End of template mdw_PUR + + template (present) NOR_MSG mdw_NOR( + in template (present) Session_Id_AVP p_sessionId, + in template (present) NOR_Body_AVP p_norBody + ) modifies mw_S6a_NOR_dummy := { + session_Id := p_sessionId, + nOR_Body := p_norBody + } // End of template mdw_NOR + + /** + * @desc Send template for AIR + * @param p_sessionId Session identifier + * @param p_airBody AIR message body + */ + template (present) AIR_MSG mdw_AIR ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) AIR_Body_AVP p_airBody + ) modifies mw_S6a_AIR_dummy := { + session_Id := p_sessionId, + aIR_Body := p_airBody + } // End of template mdw_AIR + + /** + * @desc Receive template for RSR + * @param p_sessionId Session identifier + * @param p_rsrBody RSR message body + */ + template (present) RSR_MSG mdw_RSR( + in template (present) Session_Id_AVP p_sessionId, + in template (present) RSR_Body_AVP p_rsrBody + ) modifies mw_S6a_RSR_dummy := { + session_Id := p_sessionId, + rSR_Body := p_rsrBody + } // End of template mdw_RSR + + /** + * @desc Receive template for ULR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name + * @param p_rat_Type Radio access type the UE is using + * @param p_ulr_Flags ULR Bit mask + * @param p_visited_PLMN_Id Concatenation of MCC and MNC + */ + template (present) ULR_Body_AVP mdw_ulrBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template (present) RAT_Type_AVP p_rat_Type, + in template (present) ULR_Flags_AVP p_ulr_Flags, + in template (present) Visited_PLMN_Id_AVP p_visited_PLMN_Id + ) modifies mw_S6a_ULR_Body_dummy := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name, + rat_Type := p_rat_Type, + ulr_Flags := p_ulr_Flags, + visited_PLMN_Id := p_visited_PLMN_Id + } // End of template mdw_ulrBodyAvps + + /** + * @desc Receive template for ULR message body with specific flags AVP + * @param p_ulr_Flags ULR-Flags AVP + */ + template (present) ULR_Body_AVP mdw_ulrBodyAvps_uLR_Flags( + in template (present) ULR_Flags_AVP p_ulr_Flags + ) modifies mw_S6a_ULR_Body_dummy := { + ulr_Flags := p_ulr_Flags + } // End of tempate mdw_ulrBodyAvps_uLR_Flags + + template (present) ULR_Body_AVP mdw_ulrBodyAvps_uLR_Flags_supported_Features( + in template (present) ULR_Flags_AVP p_ulr_Flags, + in template (present) Supported_Features_AVPs p_supported_Features + ) modifies mdw_ulrBodyAvps_uLR_Flags := { + supported_Features := p_supported_Features + } // End of tempate mdw_ulrBodyAvps_uLR_Flags_supported_Features + + /** + * @desc Receive template for ULA message body with specific Subscription Data AVP + * @param p_subscription_Data Subscription-Data AVP + */ + template (present) ULA_Body_AVP mdw_hssUlaBodyAvps_subscription_Data( + in template (present) Subscription_Data_AVP p_subscription_Data + ) modifies mw_S6a_ULA_Body_dummy := { + subscription_Data := p_subscription_Data + } // End of tempate mdw_hssUlaBodyAvps_subscription_Data + + /** + * @desc Receive template for ULR message body with specific Subscription Data AVP + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name + * @param p_rat_Type Radio access type the UE is using + * @param p_ulr_Flags ULR Bit mask + * @param p_visited_PLMN_Id Concatenation of MCC and MNC + * @param p_sgsn_Number SGSN-Number AVP + */ + template (present) ULR_Body_AVP mdw_hssUlrBodyAvps_sGSN_Number( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template (present) RAT_Type_AVP p_rat_Type, + in template (present) ULR_Flags_AVP p_ulr_Flags, + in template (present) Visited_PLMN_Id_AVP p_visited_PLMN_Id, + in template (present) SGSN_Number_AVP p_sgsn_Number + ) modifies mdw_ulrBodyAvps := { + sgsn_Number := p_sgsn_Number + } // End of tempate mdw_hssUlrBodyAvps_sGSN_Number + + /** + * @desc Receive template for RSA message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_rat_Type Radio access type the UE is using + * @param p_ulr_Flags ULR Bit mask + * @param p_visited_PLMN_Id Concatenation of MCC and MNC + */ + template (present) RSA_Body_AVP mdw_rsaBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Result_Code_AVP p_result + ) modifies mw_S6a_RSA_Body_dummy := { + result_Code := p_result, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + auth_Session_State := p_auth_Session_State + } // End of template mdw_rsaBodyAvps + + /** + * @desc Receive template for ULR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + */ + template (present) NOR_Body_AVP mdw_norBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name + ) modifies mw_S6a_NOR_Body_dummy := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name + } // End of template mdw_norBodyAvps + + /** + * @desc Receive template for AIR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + */ + template (present) AIR_Body_AVP mdw_airBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template (present) Visited_PLMN_Id_AVP p_visitedPlmnId, + in template Req_EUTRAN_Auth_Info_AVP p_reqEutranAuthInfo, + in template Req_UTRAN_GERAN_Auth_Info_AVP p_reqUtranGeranAuthInfo + ) modifies mw_S6a_AIR_Body_dummy := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name, + visited_PLMN_Id := p_visitedPlmnId, + req_EUTRAN_Auth_Info := p_reqEutranAuthInfo, + req_UTRAN_GERAN_Auth_Info := p_reqUtranGeranAuthInfo + } // End of template mdw_airBodyAvps + + /** + * @desc Receive template for PUR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + */ + template (present) PUER_Body_AVP mdw_purBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template PUER_Flags_AVP p_puerFlags + ) modifies mw_S6a_PUER_Body_dummy := { + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + auth_Session_State := p_auth_Session_State, + user_Name := p_user_Name, + pUER_Flags := p_puerFlags + } // End of template mdw_purBodyAvps + + } // End of group S6aModified_request_templates_receive + + group S6aModified_answer_templates_send { + + /** + * @desc Send template for CLA + * @param p_sessionId Session identifier + * @param p_claBody CLA message body + */ + template (value) CLA_MSG md_CLA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) CLA_Body_AVP p_claBody + ) modifies m_S6a_CLA_dummy := { + session_Id := p_sessionId, + cLA_Body := p_claBody + } // End of template md_CLA + + /** + * @desc Send template for ULA + * @param p_sessionId Session identifier + * @param p_ulaBody ULA message body + */ + template (value) ULA_MSG md_ULA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) ULA_Body_AVP p_ulaBody + ) modifies m_S6a_ULA_dummy := { + session_Id := p_sessionId, + uLA_Body := p_ulaBody + } // End of template md_ULA + + /** + * @desc Send template for ULA message body + */ + template (value) ULA_Body_AVP md_ulaBodyAvps( + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Auth_Session_State_AVP p_auth_Session_State + ) modifies m_S6a_ULA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + origin_Host := p_originHost, + origin_Realm := p_originRealm, + auth_Session_State := p_auth_Session_State + } // End of template md_ulaBodyAvps + + /** + * @desc Send template for PUEA + * @param p_sessionId Session identifier + * @param p_pueaBody PUEA message body + */ + template (value) PUEA_MSG md_PUEA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) PUEA_Body_AVP p_pueaBody + ) modifies m_S6a_PUEA_dummy := { + session_Id := p_sessionId, + pUEA_Body := p_pueaBody + } // End of template md_PUEA + + /** + * @desc Send template for PUEA message body + */ + template (value) PUEA_Body_AVP md_pueaBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm + ) modifies m_S6a_PUEA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template md_pueaBodyAvps + + /** + * @desc Send template for AIA + * @param p_sessionId Session identifier + * @param p_aiaBody AIA message body + */ + template (value) AIA_MSG md_AIA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) AIA_Body_AVP p_aiaBody + ) modifies m_S6a_AIA_dummy := { + session_Id := p_sessionId, + aIA_Body := p_aiaBody + } // End of template md_AIA + + /** + * @desc Send template for AIA message body + */ + template (value) AIA_Body_AVP md_aiaBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm + ) modifies m_S6a_AIA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template md_aiaBodyAvps + + /** + * @desc Send template for NOA + * @param p_sessionId Session identifier + * @param p_noaBody NOA message body + */ + template (value) NOA_MSG md_NOA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) NOA_Body_AVP p_noaBody + ) modifies m_S6a_NOA_dummy := { + session_Id := p_sessionId, + nOA_Body := p_noaBody + } // End of template md_NOA + + /** + * @desc Send template for NOA message body + */ + template (value) NOA_Body_AVP md_noaBodyAvps( + in template (value) Auth_Session_State_AVP p_auth_Session_State, + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm + ) modifies m_S6a_NOA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template md_noaBodyAvps + + /** + * @desc Send template for IDA + * @param p_sessionId Session identifier + * @param p_idaBody IDA message body + */ + template (value) IDA_MSG md_IDA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) IDA_Body_AVP p_idaBody + ) modifies m_S6a_IDA_dummy := { + session_Id := p_sessionId, + iDA_Body := p_idaBody + } // End of template md_IDA + + /** + * @desc Send template for IDA message body + */ + template (value) IDA_Body_AVP md_idaBodyAvps( + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Auth_Session_State_AVP p_auth_Session_State + ) modifies m_S6a_IDA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + origin_Host := p_originHost, + origin_Realm := p_originRealm, + auth_Session_State := p_auth_Session_State + } // End of template md_idaBodyAvps + + /** + * @desc Send template for DSA + * @param p_sessionId Session identifier + * @param p_dsaBody DSA message body + */ + template (value) DSA_MSG md_DSA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) DSA_Body_AVP p_dsaBody + ) modifies m_S6a_DSA_dummy := { + session_Id := p_sessionId, + dSA_Body := p_dsaBody + } // End of template md_DSA + + /** + * @desc Send template for DSA message body + */ + template (value) DSA_Body_AVP md_dsaBodyAvps( + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Auth_Session_State_AVP p_auth_Session_State + ) modifies m_S6a_DSA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + origin_Host := p_originHost, + origin_Realm := p_originRealm, + auth_Session_State := p_auth_Session_State + } // End of template md_dsaBodyAvps + + /** + * @desc Send template for RSA + * @param p_sessionId Session identifier + * @param p_rsaBody RSA message body + */ + template (value) RSA_MSG md_RSA( + in template (value) Session_Id_AVP p_sessionId, + in template (value) RSA_Body_AVP p_rsaBody + ) modifies m_S6a_RSA_dummy := { + session_Id := p_sessionId, + rSA_Body := p_rsaBody + } // End of template md_RSA + + /** + * @desc Send template for RSA message body + */ + template (value) RSA_Body_AVP md_rsaBodyAvps( + in template (value) Origin_Host_AVP p_originHost, + in template (value) Origin_Realm_AVP p_originRealm, + in template (value) Auth_Session_State_AVP p_auth_Session_State + ) modifies m_S6a_RSA_Body_dummy := { + result_Code := m_resultCode(DIAMETER_SUCCESS_E), + origin_Host := p_originHost, + origin_Realm := p_originRealm, + auth_Session_State := p_auth_Session_State + } // End of template md_rsaBodyAvps + + } // End of group S6aModified_answer_templates_send + + group S6aModified_answer_templates_receive { + + /** + * @desc Receive template for ULA + * @param p_sessionId Session identifier + * @param p_ulaBody ULA message body + */ + template (present) ULA_MSG mdw_ULA( + in template (present) Session_Id_AVP p_sessionId, + in template (present) ULA_Body_AVP p_ulaBody + ) modifies mw_S6a_ULA_dummy := { + session_Id := p_sessionId, + uLA_Body := p_ulaBody + } // End of template mdw_ULA + + /** + * @desc Receive template for CLR + * @param p_sessionId Session identifier + * @param p_clrBody CLR message body + */ + template (present) CLR_MSG mdw_CLR( + in template (present) Session_Id_AVP p_sessionId, + in template (present) CLR_Body_AVP p_clrBody + ) modifies mw_S6a_CLR_dummy := { + session_Id := p_sessionId, + cLR_Body := p_clrBody + } // End of template mdw_CLR + + /** + * @desc Receive template for CLA + * @param p_sessionId Session identifier + * @param p_claBody CLA message body + */ + template (present) CLA_MSG mdw_CLA ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) CLA_Body_AVP p_claBody + ) modifies mw_S6a_CLA_dummy := { + session_Id := p_sessionId, + cLA_Body := p_claBody + } // End of template mdw_CLA + + /** + * @desc Receive template for PUEA + * @param p_sessionId Session identifier + * @param p_ulaBody PUA message body + */ + template (present) PUEA_MSG mdw_PUEA( + in template (present) Session_Id_AVP p_sessionId, + in template (present) PUEA_Body_AVP p_pueaBody + ) modifies mw_S6a_PUEA_dummy := { + session_Id := p_sessionId, + pUEA_Body := p_pueaBody + } // End of template mdw_PUEA + + /** + * @desc Receive template for AIA + * @param p_sessionId Session identifier + * @param p_aiaBody AIA message body + */ + template (present) AIA_MSG mdw_AIA( + in template (present) Session_Id_AVP p_sessionId, + in template (present) AIA_Body_AVP p_aiaBody + ) modifies mw_S6a_AIA_dummy := { + session_Id := p_sessionId, + aIA_Body := p_aiaBody + } // End of template mdw_AIA + + /** + * @desc Receive template for NOA + * @param p_sessionId Session identifier + * @param p_noaBody NOA message body + */ + template (present) NOA_MSG mdw_NOA( + in template (present) Session_Id_AVP p_sessionId, + in template (present) NOA_Body_AVP p_noaBody + ) modifies mw_S6a_NOA_dummy := { + session_Id := p_sessionId, + nOA_Body := p_noaBody + } // End of template mdw_NOA + + /** + * @desc Send template for DSA + * @param p_sessionId Session identifier + * @param p_dsaBody DSA message body + */ + template (present) DSA_MSG mdw_DSA ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) DSA_Body_AVP p_dsaBody + ) modifies mw_S6a_DSA_dummy := { + session_Id := p_sessionId, + dSA_Body := p_dsaBody + } // End of template mdw_DSA + + /** + * @desc Send template for IDA + * @param p_sessionId Session identifier + * @param p_idaBody IDA message body + */ + template (present) IDA_MSG mdw_IDA ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) IDA_Body_AVP p_idaBody + ) modifies mw_S6a_IDA_dummy := { + session_Id := p_sessionId, + iDA_Body := p_idaBody + } // End of template mdw_IDA + + /** + * @desc Send template for RSA + * @param p_sessionId Session identifier + * @param p_rsaBody RSA message body + */ + template (present) RSA_MSG mdw_RSA ( + in template (present) Session_Id_AVP p_sessionId, + in template (present) RSA_Body_AVP p_rsaBody + ) modifies mw_S6a_RSA_dummy := { + session_Id := p_sessionId, + rSA_Body := p_rsaBody + } // End of template mdw_RSA + + /** + * @desc Receive template for ULA message body + * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_ula_Flags ULA Bit mask + */ + template (present) ULA_Body_AVP mdw_ulaBodyAvps( + in template (present) Result_Code_AVP p_resultCode, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) ULA_Flags_AVP p_ula_Flags, + in template (present) Subscription_Data_AVP p_subscription_Data + ) modifies mw_S6a_ULA_Body_dummy := { + result_Code := p_resultCode, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + ula_Flags := p_ula_Flags, + subscription_Data := p_subscription_Data + } // End of template mdw_ulaBodyAvps + + /** + * @desc Receive template for ULA message body with specific Expected Experimantal Result AVP + * @param p_experimental_Result Expected Experimantal Result Code value + */ + template (present) ULA_Body_AVP mdw_ulaBodyAvps_experimental_Result( + in template (present) Experimental_Result_AVP p_experimental_Result + ) modifies mw_S6a_ULA_Body_dummy := { + experimental_Result := p_experimental_Result + } // End of template mdw_ulaBodyAvps_experimental_Result + + /** + * @desc Receive template for ULA message body with specific supported_Features AVP + * @param p_supportedFeatures Expected Features + */ + template (present) ULA_Body_AVP mdw_ulaBodyAvps_supportedFeatures( + in template (present) Supported_Features_AVP p_supportedFeatures + ) modifies mw_S6a_ULA_Body_dummy := { + supported_Features := {p_supportedFeatures} + } // End of template mdw_ulaBodyAvps_supportedFeatures + + /** + * @desc Receive template for ULA message body with specific Expected Experimantal Result and Error Diagnostic AVPs + * @param p_experimental_Result Expected Experimantal Result Code value + * @param p_error_Diagnostic Expected error diagnostic value + */ + template (present) ULA_Body_AVP mdw_ulaBodyAvps_experimental_Result_error_Diagnostic( + in template (present) Experimental_Result_AVP p_experimental_Result, + in template (present) Error_Diagnostic_AVP p_error_Diagnostic + ) modifies mdw_ulaBodyAvps_experimental_Result := { + error_Diagnostic := p_error_Diagnostic + } // End of template mdw_ulaBodyAvps_experimental_Result_error_Diagnostic + + /** + * @desc Receive template for CLR message body with Cancellation-Type AVP + * @param p_cancellation_Type Cancellation type code value + */ + template (present) CLR_Body_AVP mdw_clrBodyAvps_cancellation_Type( + in template (present) Cancellation_Type_AVP p_cancellation_Type + ) modifies mw_S6a_CLR_Body_dummy := { + cancellation_Type := p_cancellation_Type + } // End of template mdw_clrBodyAvps_cancellation_Type + + /** + * @desc Receive template for ULA message body with specific Subscription-Data AVP + * @param p_subscription_Data The Subscription-Data AVP + */ + template (present) ULA_Body_AVP mdw_ulaBodyAvps_subscription_Data( + in template (present) Subscription_Data_AVP p_subscription_Data + ) modifies mw_S6a_ULA_Body_dummy := { + subscription_Data := p_subscription_Data + } // End of template mdw_ulaBodyAvps_subscription_Data + + /** + * @desc Receive template for CLR message body + * @param p_cancellation_Type Cancellation type code value + */ + template (present) CLR_Body_AVP mdw_clrBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template (present) Cancellation_Type_AVP p_cancellation_Type + ) modifies mw_S6a_CLR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + cancellation_Type := p_cancellation_Type + } // End of template mdw_clrBodyAvps + + /** + * @desc Receive template for CLR message body + * @param p_cancellation_Type Cancellation type code value + */ + template (present) CLR_Body_AVP mdw_clrBodyAvps_flags( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template (present) Cancellation_Type_AVP p_cancellation_Type, + in template (present) CLR_Flags_AVP p_cLR_Flags + ) modifies mdw_clrBodyAvps := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + cancellation_Type := p_cancellation_Type, + cLR_Flags := p_cLR_Flags + } // End of template mdw_clrBodyAvps_flags + + /** + * @desc Receive template for PUEA message body + * @param p_cancellation_Type Cancellation type code value + */ + template (present) PUEA_Body_AVP mdw_pueaBodyAvps( + in template (present) Result_Code_AVP p_resultCode, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_PUEA_Body_dummy := { + result_Code := p_resultCode, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template mdw_pueaBodyAvps + + /** + * @desc Receive template for PUEA message body with Experimental-Result AVP + * @param p_experimental_Result Experimental-Result AVP value + */ + template (present) PUEA_Body_AVP mdw_pueaBodyAvps_experimental_Result( + in template (present) Experimental_Result_AVP p_experimental_Result + ) modifies mw_S6a_PUEA_Body_dummy := { + experimental_Result := p_experimental_Result + } // End of template mdw_pueaBodyAvps_experimental_Result + + + /** + * @desc Receive template for PUEA message body with Experimental-Result AVP + * @param p_experimental_Result Experimental-Result AVP value + * @param p_pur_Flags + */ + template (present) PUEA_Body_AVP mdw_pueaBodyAvps_experimental_Result_Flags( + in template (present) Result_Code_AVP p_result_Code, + in template (present) PUEA_Flags_AVP p_puea_Flags + ) modifies mw_S6a_PUEA_Body_dummy := { + result_Code := p_result_Code, + pUEA_Flags := p_puea_Flags + } // End of template mdw_pueaBodyAvps_experimental_Result_Flags + + /** + * @desc Receive template for IDR message body + * @param p_auth_Session_State + * @param p_originHost + * @param p_originRealm + * @param p_destinationRealm + * @param p_user_Name + * @param p_subscription_Data Subscription-Data AVP + */ + template (present) IDR_Body_AVP mdw_idrBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template (present) Subscription_Data_AVP p_subscription_Data + ) modifies mw_S6a_IDR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + subscription_Data := p_subscription_Data + } // End of template mdw_idrBodyAvps + + /** + * @desc Receive template for IDR message body with specific Subscription-Data AVP + * @param p_cancellation_Type Cancellation type code value + */ + template (present) IDR_Body_AVP mdw_idrBodyAvps_subscription_Data( + in template (present) Subscription_Data_AVP p_subscription_Data + ) modifies mw_S6a_IDR_Body_dummy := { + subscription_Data := p_subscription_Data + } // End of template mdw_idrBodyAvps_subscription_Data + + /** + * @desc Receive template for IDR message body with specific values + * @param p_subscription_Data Subscription-Data AVP value + * @param p_iDR_Flags + */ + template (present) IDR_Body_AVP mdw_idrBodyAvps_subscription_Data_iDR_Flags( + in template (present) Subscription_Data_AVP p_subscription_Data, + in template (present) IDR_Flags_AVP p_iDR_Flags + ) modifies mdw_idrBodyAvps_subscription_Data := { + iDR_Flags := p_iDR_Flags + } // End of template mdw_idrBodyAvps_subscription_Data_iDR_Flags + + /** + * @desc Receive template for IDR message body with general values + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + * @param p_user_Name User-Name AVP + * @param p_dsr_Flags + */ + template (present) DSR_Body_AVP mdw_dsrBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Host_AVP p_destinationHost, + in template (present) Destination_Realm_AVP p_destinationRealm, + in template (present) User_Name_AVP p_user_Name, + in template (present) DSR_Flags_AVP p_dsr_Flags + ) modifies mw_S6a_DSR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Host := p_destinationHost, + destination_Realm := p_destinationRealm, + user_Name := p_user_Name, + dSR_Flags := p_dsr_Flags + } // End of template mdw_dsrBodyAvps + + /** + * @desc Receive template for DSR message body with specific DSR flags value + * @param p_dsr_Flags DSR flags value + */ + template (present) DSR_Body_AVP mdw_dsrBodyAvps_dSRFlags( + in template (present) DSR_Flags_AVP p_dsr_Flags + ) modifies mw_S6a_DSR_Body_dummy := { + dSR_Flags := p_dsr_Flags + } // End of template mdw_dsrBodyAvps_dSRFlags + + /** + * @desc Receive template for AIA message body + * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + */ + template (present) AIA_Body_AVP mdw_aiaBodyAvps( + in template (present) Result_Code_AVP p_resultCode, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_AIA_Body_dummy := { + result_Code := p_resultCode, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template mdw_aiaBodyAvps + + /** + * @desc Receive template for AIA message body with Experimental-Result AVP + * @param p_experimental_Result Expected Experimantal Result Code value + */ + template (present) AIA_Body_AVP mdw_aiaBodyAvps_experimental_Result( + in template (present) Experimental_Result_AVP p_experimental_Result + ) modifies mw_S6a_AIA_Body_dummy := { + experimental_Result := p_experimental_Result + } // End of template mdw_aiaBodyAvps_experimental_Result + + /** + * @desc Receive template for AIA message body with Experimental-Result AVP + * @param p_experimental_Result Expected Experimantal Result Code value + * @param p_errorDiagnostic Error-Diagnostic AVP value + */ + template (present) AIA_Body_AVP mdw_aiaBodyAvps_experimental_Result_errorDiagnostic( + in template (present) Experimental_Result_AVP p_experimental_Result, + in template (present) Error_Diagnostic_AVP p_errorDiagnostic + ) modifies mdw_aiaBodyAvps_experimental_Result := { + experimental_Result := p_experimental_Result, + error_Diagnostic := p_errorDiagnostic + } // End of template mdw_aiaBodyAvps_experimental_Result_errorDiagnostic + + /** + * @desc Receive template for AIA message body + * @param p_result_Code Result Code value + * @param p_authentication_Info Contains Authentication Vectors + */ + template (present) AIA_Body_AVP mdw_aiaBodyAvps_result_Code( + in template (present) Result_Code_AVP p_result_Code + ) modifies mw_S6a_AIA_Body_dummy := { + result_Code := p_result_Code + } // End of template mdw_aiaBodyAvps_result_Code + + /** + * @desc Receive template for AIA message body + * @param p_result_Code Result Code value + * @param p_authentication_Info Contains Authentication Vectors + */ + template (present) AIA_Body_AVP mdw_aiaBodyAvps_result_Code_authentication_Info( + in template (present) Result_Code_AVP p_result_Code, + in template Authentication_Info_AVP p_authentication_Info + ) modifies mdw_aiaBodyAvps_result_Code := { + authentication_Info := p_authentication_Info + } // End of template mdw_aiaBodyAvps_result_Code_authentication_Info + + /** + * @desc Receive template for CLA message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_result Result of CLR execution + */ + template (present) CLA_Body_AVP mdw_claBodyAvps ( + in template (present) Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_CLA_Body_dummy := { + result_Code := p_result, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template mdw_claBodyAvps + + /** + * @desc Receive template for IDA message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_result Result of IDR execution + */ + template (present) IDA_Body_AVP mdw_idaBodyAvps_Result ( + in template (present) Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_IDA_Body_dummy := { + result_Code := p_result, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template mdw_idaBodyAvps_Result + + /** + * @desc Receive template for IDA message body with Experimental-Result AVP + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_experimentalResult Result of IDR execution + */ + template (present) IDA_Body_AVP mdw_idaBodyAvps_ExperimentalResult ( + in template (present) Experimental_Result_Type p_experimentalResult, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_IDA_Body_dummy := { + experimental_Result := mw_experimentalResult ( mw_experimentalResultCode ( p_experimentalResult )), + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + result_Code := omit + } // End of template mdw_idaBodyAvps_ExperimentalResult + + /** + * @desc Receive template for IDA message body with IMS-Voice-Over-PS-Sessions-Supported AVP, Last-UE-Activity-Time AVP and RAT-Type AVP + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_result Result of IDR execution + */ + template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_TADS ( + in template (present) Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_IDA_Body_dummy := { + result_Code := p_result, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + iMS_Voice_PS_Sessions_Support := ?, + last_UE_Activity_Time_AVP := ?, + rat_Type := ? + } // End of template mdw_idaBodyAvps_Result_TADS + + /** + * @desc Receive template for IDA message body with IMS-Voice-Over-PS-Sessions-Supported AVP, Last-UE-Activity-Time AVP and RAT-Type AVP + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_result Result of IDR execution + */ + template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_noTADS ( + in template (present) Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_IDA_Body_dummy := { + result_Code := p_result, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + iMS_Voice_PS_Sessions_Support := omit, + last_UE_Activity_Time_AVP := omit, + rat_Type := omit + } // End of template mdw_idaBodyAvps_Result_noTADS + + /** + * @desc Receive template for IDA message body with EPS-User-State AVP + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_result Result of IDR execution + */ + template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_EPS_State ( + in template (present) Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_IDA_Body_dummy := { + result_Code := p_result, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + ePS_User_State := ? + } // End of template mdw_idaBodyAvps_Result_EPS_State + + /** + * @desc Receive template for IDA message body with EPS-Location-Information AVP + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_result Result of IDR execution + */ + template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_EPS_Location ( + in template (present) Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_IDA_Body_dummy := { + result_Code := p_result, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + ePS_Location_Information := ? + } // End of template mdw_idaBodyAvps_Result_EPS_Location + + /** + * @desc Receive template for IDA message body with EPS-User-State AVP and EPS-Location-Information AVP + * @param p_result Result of IDR execution + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + */ + template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_EPS_StateAndLocation ( + in template (present) Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mdw_idaBodyAvps_Result_EPS_Location := { + ePS_User_State := ? + } // End of template mdw_idaBodyAvps_Result_EPS_StateAndLocation + + /** + * @desc Receive template for DSA message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_result Result of DSR execution + */ + template (present) DSA_Body_AVP mdw_dsaBodyAvps_Result ( + in template Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_DSA_Body_dummy := { + result_Code := p_result, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template mdw_dsaBodyAvps_Result + + /** + * @desc Receive template for DSA message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_experimentalResult Experimental result of DSR execution + */ + template (present) DSA_Body_AVP mdw_dsaBodyAvps_ExperimentalResult ( + in template Result_Code_AVP p_result, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Experimental_Result_Type p_experimentalResult + ) modifies mdw_dsaBodyAvps_Result := { + experimental_Result := mw_experimentalResult ( mw_experimentalResultCode ( p_experimentalResult )) + } // End of template mdw_dsaBodyAvps_ExperimentalResult + + /** + * @desc Receive template for RSR message body + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_destinationHost The Host to which the message is to be routed + * @param p_destinationRealm The realm to which the message is to be routed + */ + template (present) RSR_Body_AVP mdw_rsrBodyAvps( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Destination_Host_AVP p_destinationHost, + in template (present) Destination_Realm_AVP p_destinationRealm + ) modifies mw_S6a_RSR_Body_dummy := { + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm, + destination_Host := p_destinationHost, + destination_Realm := p_destinationRealm + } // End of template mdw_rsrBodyAvps + + /** + * @desc Receive template for NOA message body + * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + */ + template (present) NOA_Body_AVP mdw_noaBodyAvps( + in template (present) Result_Code_AVP p_resultCode, + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm + ) modifies mw_S6a_NOA_Body_dummy := { + result_Code := p_resultCode, + auth_Session_State := p_auth_Session_State, + origin_Host := p_originHost, + origin_Realm := p_originRealm + } // End of template mdw_noaBodyAvps + + /** + * @desc Receive template for NOA message body + * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred + * @param p_auth_Session_State Specifies if the state is maintained for a particular session + * @param p_originHost Identifies the endpoint that originated the Diameter message + * @param p_originRealm Realm of the originator + * @param p_experimentalResult Experimental result of NOR execution + */ + template (present) NOA_Body_AVP mdw_noaBodyAvps_ExperimentalResult( + in template (present) Auth_Session_State_AVP p_auth_Session_State, + in template (present) Origin_Host_AVP p_originHost, + in template (present) Origin_Realm_AVP p_originRealm, + in template (present) Experimental_Result_Type p_experimentalResult + ) modifies mw_S6a_NOA_Body_dummy := { + experimental_Result := mw_experimentalResult ( mw_experimentalResultCode ( p_experimentalResult )) + } // End of template mdw_noaBodyAvps_ExperimentalResult + + } // End of group S6aModified_answer_templates_receive + + } // End of group S6aModified_templates + + } // End of group S6aMessageTemplates + +} // End of module DiameterS6a_Templates \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn b/ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn new file mode 100644 index 0000000..90bfa65 --- /dev/null +++ b/ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn @@ -0,0 +1,352 @@ +/** + * @author STF 466 + * @version $Id: $ + * @desc + * This module defines message, header, structured and simple Diameter + * S6a types as well constants used by DiameterS6a constructs.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * @remark Adding of new message and header types is ok; Existing message or header types shall not be changed or removed + */ +module DiameterS6a_TypesAndValues { + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; + + // LibDiameter + import from LibDiameter_Types_Base_AVPs { + type all + }; + import from LibDiameter_Types_S6a_AVPs all; + import from LibDiameter_TypesAndValues all; + import from LibDiameter_Types_Gx_AVPs { + type RAT_Type_AVP + }; + + group BasicTypesAndConstants { + + group DiameterS6aConstants { + + group S6aApplicationIdConstants { + + const UInt32 c_applId_S6a := 16777251; + + } // End of group S6aApplicationIdConstants + + group S6aAVPCodeConstants { + + group AVPCodeConstantsTS129_722 { + + const integer c_subscription_Data_AVP_Code := 1400; + // Ref: table 7.3.1/1 + const integer c_terminal_Information_AVP_Code := 1401; + // Ref: table 7.3.1/1 + const integer c_imei_AVP_Code := 1402; + // Ref: table 7.3.1/1 + const integer c_software_Version_AVP_Code := 1403; + // Ref: table 7.3.1/1 + const integer c_qos_Subscribed_AVP_Code := 1404; + // Ref: table 7.3.1/1 + const integer c_ulr_Flags_AVP_Code := 1405; + // Ref: table 7.3.1/1 + const integer c_ula_Flags_AVP_Code := 1406; + // Ref: table 7.3.1/1 + const integer c_visited_PLMN_Id_AVP_Code := 1407; + // Ref: table 7.3.1/1 + const integer c_requested_EUTRAN_Authentication_Info_AVP_Code := 1408; + // Ref: table 7.3.1/1 + const integer c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code := 1409; + // Ref: table 7.3.1/1 + const integer c_number_Of_Requested_Vectors_AVP_Code := 1410; + // Ref: table 7.3.1/1 + const integer c_re_Synchronization_Info_AVP_Code := 1411; + // Ref: table 7.3.1/1 + const integer c_immediate_Response_Preferred_AVP_Code := 1412; + // Ref: table 7.3.1/1 + const integer c_authentication_Info_AVP_Code := 1413; + // Ref: table 7.3.1/1 + const integer c_e_UTRAN_Vector_AVP_Code := 1414; + // Ref: table 7.3.1/1 + const integer c_utran_Vector_AVP_Code := 1415; + // Ref: table 7.3.1/1 + const integer c_geran_Vector_AVP_Code := 1416; + // Ref: table 7.3.1/1 + const integer c_network_Access_Mode_AVP_Code := 1417; + // Ref: table 7.3.1/1 + const integer c_hplmn_ODB_AVP_Code := 1418; + // Ref: table 7.3.1/1 + const integer c_item_Number_AVP_Code := 1419; + // Ref: table 7.3.1/1 + const integer c_cancellation_Type_AVP_Code := 1420; + // Ref: table 7.3.1/1 + const integer c_dsr_Flags_AVP_Code := 1421; + // Ref: table 7.3.1/1 + const integer c_dsa_Flags_AVP_Code := 1422; + // Ref: table 7.3.1/1 + const integer c_context_Identifier_AVP_Code := 1423; + // Ref: table 7.3.1/1 + const integer c_subscriber_Status_AVP_Code := 1424; + // Ref: table 7.3.1/1 + const integer c_operator_Determined_Barring_AVP_Code := 1425; + // Ref: table 7.3.1/1 + const integer c_access_Restriction_Data_AVP_Code := 1426; + // Ref: table 7.3.1/1 + const integer c_apn_OI_Replacement_AVP_Code := 1427; + // Ref: table 7.3.1/1 + const integer c_all_APN_Configurations_Included_Indicator_AVP_Code := 1428; + // Ref: table 7.3.1/1 + const integer c_apn_Configuration_Profile_AVP_Code := 1429; + // Ref: table 7.3.1/1 + const integer c_apn_Configuration_AVP_Code := 1430; + // Ref: table 7.3.1/1 + const integer c_eps_Subscribed_QoS_Profile_AVP_Code := 1431; + // Ref: table 7.3.1/1 + const integer c_vplmn_Dynamic_Address_Allowed_AVP_Code := 1432; + // Ref: table 7.3.1/1 + const integer c_stn_SR_AVP_Code := 1433; + // Ref: table 7.3.1/1 + const integer c_alert_Reason_AVP_Code := 1434; + // Ref: table 7.3.1/1 + const integer c_ambr_AVP_Code := 1435; + // Ref: table 7.3.1/1 + const integer c_csg_Subscription_Data_AVP_Code := 1436; + // Ref: table 7.3.1/1 + const integer c_csg_Id_AVP_Code := 1437; + // Ref: table 7.3.1/1 + const integer c_pdn_GW_Allocation_Type_AVP_Code := 1438; + // Ref: table 7.3.1/1 + const integer c_expiration_Date_AVP_Code := 1439; + // Ref: table 7.3.1/1 + const integer c_rat_Frequency_Selection_Priority_ID_AVP_Code := 1440; + // Ref: table 7.3.1/1 + const integer c_ida_Flags_AVP_Code := 1441; + // Ref: table 7.3.1/1 + const integer c_pua_Flags_AVP_Code := 1442; + // Ref: table 7.3.1/1 + const integer c_nor_Flags_AVP_Code := 1443; + // Ref: table 7.3.1/1 + const integer c_user_Id_AVP_Code := 1444; + // Ref: table 7.3.1/1 + const integer c_equipment_Status_AVP_Code := 1445; + // Ref: table 7.3.1/1 + const integer c_regional_Subscription_Zone_Code_AVP_Code := 1446; + // Ref: table 7.3.1/1 + const integer c_rand_AVP_Code := 1447; + // Ref: table 7.3.1/1 + const integer c_xres_AVP_Code := 1448; + // Ref: table 7.3.1/1 + const integer c_autn_AVP_Code := 1449; + // Ref: table 7.3.1/1 + const integer c_kasme_AVP_Code := 1450; + // Ref: table 7.3.1/1 + const integer c_trace_Collection_Entity_AVP_Code := 1452; + // Ref: table 7.3.1/1 + const integer c_kc_AVP_Code := 1453; + // Ref: table 7.3.1/1 + const integer c_sres_AVP_Code := 1454; + // Ref: table 7.3.1/1 + const integer c_pdn_Type_AVP_Code := 1456; + // Ref: table 7.3.1/1 + const integer c_roaming_Restricted_Due_To_Unsupported_Feature_AVP_Code := 1457; + // Ref: table 7.3.1/1 + const integer c_trace_Data_AVP_Code := 1458; + // Ref: table 7.3.1/1 + const integer c_trace_Reference_AVP_Code := 1459; + // Ref: table 7.3.1/1 + const integer c_trace_Depth_AVP_Code := 1462; + // Ref: table 7.3.1/1 + const integer c_trace_NE_Type_List_AVP_Code := 1463; + // Ref: table 7.3.1/1 + const integer c_trace_Interface_List_AVP_Code := 1464; + // Ref: table 7.3.1/1 + const integer c_trace_Event_List_AVP_Code := 1465; + // Ref: table 7.3.1/1 + const integer c_omc_Id_AVP_Code := 1466; + // Ref: table 7.3.1/1 + const integer c_gprs_Subscription_Data_AVP_Code := 1467; + // Ref: table 7.3.1/1 + const integer c_complete_Data_List_Included_Indicator_AVP_Code := 1468; + // Ref: table 7.3.1/1 + const integer c_pdp_Context_AVP_Code := 1469; + // Ref: table 7.3.1/1 + const integer c_pdp_Type_AVP_Code := 1470; + // Ref: table 7.3.1/1 + const integer c_3gpp2_MEID_AVP_Code := 1471; + // Ref: table 7.3.1/1 + const integer c_specific_APN_Info_AVP_Code := 1472; + // Ref: table 7.3.1/1 + const integer c_lcs_Info_AVP_Code := 1473; + // Ref: table 7.3.1/1 + const integer c_gmlc_Number_AVP_Code := 1474; + // Ref: table 7.3.1/1 + const integer c_lcs_PrivacyException_AVP_Code := 1475; + // Ref: table 7.3.1/1 + const integer c_ss_Code_AVP_Code := 1476; + // Ref: table 7.3.1/1 + const integer c_ss_Status_AVP_Code := 1477; + // Ref: table 7.3.1/1 + const integer c_notification_To_UE_User_AVP_Code := 1478; + // Ref: table 7.3.1/1 + const integer c_external_Client_AVP_Code := 1479; + // Ref: table 7.3.1/1 + const integer c_client_Identity_AVP_Code := 1480; + // Ref: table 7.3.1/1 + const integer c_gmlc_Restriction_AVP_Code := 1481; + // Ref: table 7.3.1/1 + const integer c_plmn_Client_AVP_Code := 1482; + // Ref: table 7.3.1/1 + const integer c_service_Type_AVP_Code := 1483; + // Ref: table 7.3.1/1 + const integer c_serviceTypeIdentity_AVP_Code := 1484; + // Ref: table 7.3.1/1 + const integer c_mo_LR_AVP_Code := 1485; + // Ref: table 7.3.1/1 + const integer c_teleservice_List_AVP_Code := 1486; + // Ref: table 7.3.1/1 + const integer c_ts_Code_AVP_Code := 1487; + // Ref: table 7.3.1/1 + const integer c_call_Barring_Info_AVP_Code := 1488; + // Ref: table 7.3.1/1 + const integer c_sgsn_Number_AVP_Code := 1489; + // Ref: table 7.3.1/1 + const integer c_idr_Flags_AVP_Code := 1490; + // Ref: table 7.3.1/1 + const integer c_ics_Indicator_AVP_Code := 1491; + // Ref: table 7.3.1/1 + const integer c_ims_Voice_Over_PS_Sessions_Supported_AVP_Code := 1492; + // Ref: table 7.3.1/1 + const integer c_homogeneous_Support_of_IMS_Voice_Over_PS_Sessions_AVP_Code := 1493; + // Ref: table 7.3.1/1 + const integer c_last_UE_Activity_Time_AVP_Code := 1494; + // Ref: table 7.3.1/1 + const integer c_eps_User_State_AVP_Code := 1495; + // Ref: table 7.3.1/1 + const integer c_eps_Location_Information_AVP_Code := 1496; + // Ref: table 7.3.1/1 + const integer c_mme_User_State_AVP_Code := 1497; + // Ref: table 7.3.1/1 + const integer c_sgsn_User_State_AVP_Code := 1498; + // Ref: table 7.3.1/1 + const integer c_user_State_AVP_Code := 1499; + // Ref: table 7.3.1/1 + const integer c_mme_Location_Information_AVP_Code := 1600; + // Ref: table 7.3.1/1 + const integer c_sgsn_Location_Information_AVP_Code := 1601; + // Ref: table 7.3.1/1 + const integer c_e_UTRAN_Cell_Global_Identity_AVP_Code := 1602; + // Ref: table 7.3.1/1 + const integer c_tracking_Area_Identity_AVP_Code := 1603; + // Ref: table 7.3.1/1 + const integer c_cell_Global_Identity_AVP_Code := 1604; + // Ref: table 7.3.1/1 + const integer c_routing_Area_Identity_AVP_Code := 1605; + // Ref: table 7.3.1/1 + const integer c_location_Area_Identity_AVP_Code := 1606; + // Ref: table 7.3.1/1 + const integer c_service_Area_Identity_AVP_Code := 1607; + // Ref: table 7.3.1/1 + const integer c_geographical_Information_AVP_Code := 1608; + // Ref: table 7.3.1/1 + const integer c_geodetic_Information_AVP_Code := 1609; + // Ref: table 7.3.1/1 + const integer c_current_Location_Retrieved_AVP_Code := 1610; + // Ref: table 7.3.1/1 + const integer c_age_Of_Location_Information_AVP_Code := 1611; + // Ref: table 7.3.1/1 + const integer c_active_APN_AVP_Code := 1612; + // Ref: table 7.3.1/1 + const integer c_error_Diagnostic_AVP_Code := 1614; + // Ref: table 7.3.1/1 + const integer c_ext_PDP_Address_AVP_Code := 1621; + // Ref: table 7.3.1/1 + const integer c_ue_SRVCC_Capability_AVP_Code := 1615; + // Ref: table 7.3.1/1 + const integer c_mps_Priority_AVP_Code := 1616; + // Ref: table 7.3.1/1 + const integer c_vplmn_LIPA_Allowed_AVP_Code := 1617; + // Ref: table 7.3.1/1 + const integer c_lipa_Permission_AVP_Code := 1618; + // Ref: table 7.3.1/1 + const integer c_subscribed_Periodic_RAU_TAU_Timer_AVP_Code := 1619; + // Ref: table 7.3.1/1 + const integer c_ext_PDP_Type_AVP_Code := 1620; + // Ref: table 7.3.1/1 + const integer c_sipto_Permission_AVP_Code := 1613; + // Ref: table 7.3.1/1 + const integer c_mdt_Configuration_AVP_Code := 1622; + // Ref: table 7.3.1/1 + const integer c_job_Type_AVP_Code := 1623; + // Ref: table 7.3.1/1 + const integer c_area_Scope_AVP_Code := 1624; + // Ref: table 7.3.1/1 + const integer c_list_Of_Measurements_AVP_Code := 1625; + // Ref: table 7.3.1/1 + const integer c_reporting_Trigger_AVP_Code := 1626; + // Ref: table 7.3.1/1 + const integer c_report_Interval_AVP_Code := 1627; + // Ref: table 7.3.1/1 + const integer c_report_Amount_AVP_Code := 1628; + // Ref: table 7.3.1/1 + const integer c_event_Threshold_RSRP_AVP_Code := 1629; + // Ref: table 7.3.1/1 + const integer c_event_Threshold_RSRQ_AVP_Code := 1630; + // Ref: table 7.3.1/1 + const integer c_logging_Interval_AVP_Code := 1631; + // Ref: table 7.3.1/1 + const integer c_logging_Duration_AVP_Code := 1632; + // Ref: table 7.3.1/1 + const integer c_relay_Node_Indicator_AVP_Code := 1633; + // Ref: table 7.3.1/1 + const integer c_mdt_User_Consent_AVP_Code := 1634; + // Ref: table 7.3.1/1 + const integer c_puer_Flags_AVP_Code := 1635; + // Ref: table 7.3.1/1 + const integer c_clr_Flags_AVP_Code := 1638; + // Ref: table 7.3.1/1 + } + group AVPCodeConstantsOther { + const integer c_gMLC_Address_AVP_Code := 2405; + // Ref: TS 129 173 6.4.7 + const integer c_service_Selection_AVP_Code := 493; + // Ref: IETF RFC 5778 6.2 + const integer c_mIP_Home_Agent_Address_AVP_Code := 334; + // Ref: IETF RFC 4004 7.40 + const integer c_mIP_Home_Agent_Host_AVP_Code := 348; + // Ref: IETF RFC 4004 7.11 + const integer c_mIP6_Home_Link_Prefix_AVP_Code := 125; + // Ref: IETF RFC 5447 4.2.4 + const integer c_mIP6_Agent_Info_AVP_Code := 486; + // Ref: 7.3.45 - IETF RFC 5447 + const integer c_visited_Network_Identifier_AVP_Code := 600; + // Ref: TS 129 229 6.3.1 + const integer c_max_Requested_Bandwidth_DL_AVP_Code := 515; + // Ref: TS 129 214 5.3.14 + const integer c_max_Requested_Bandwidth_UL_AVP_Code := 516; + // Ref: TS 129 214 5.3.15 + const integer c_threeGPP_Charging_Characteristics_AVP_Code := 13; + // Ref: TS 129 601 + const integer c_served_Party_IP_Address_AVP_Code := 848; + // Ref: TS 132 299 7.2.187 + const integer c_qoS_Class_Identifier_AVP_Code := 1028; + // Ref: TS 129 212 5.3.17 + const integer c_pDP_Address_AVP_Code := 1227; + // Ref: TS 132 299 7.2.137 + const integer c_confidentiality_Key_AVP_Code := 625; + // Ref: TS 129 229 + const integer c_integrity_Key_AVP_Code := 626; + // Ref: TS 129 229 + const integer c_cSG_Access_Mode_AVP_Code := 2317; + // Ref: TS 132 299 7.2.46A + const integer c_cSG_Membership_Indication_AVP_Code := 2318; + // Ref: TS 132 299 7.2.46B + const integer c_user_CSG_Information_AVP_Code := 2319; + // Ref: TS 132 299 7.2.240A + } + } + } + + } // End of group BasicTypes + +} // End of module DiameterS6a_TypesAndValues \ No newline at end of file -- GitLab From 249aff1b8a4ae6dba3ee7cfc70488c4d7e580476 Mon Sep 17 00:00:00 2001 From: pintar Date: Tue, 3 Mar 2020 15:53:56 +0100 Subject: [PATCH 016/176] TPs for Rx, S9 interface added. --- test_purposes/Rx/TP_RX.tplan2 | 34 ++++++++++++++++++ test_purposes/S9/TP_S9.tplan2 | 67 +++++++++++++++++++++++++++++++++-- 2 files changed, 99 insertions(+), 2 deletions(-) diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index 4d66ad7..c4bdc5e 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -656,6 +656,40 @@ Package TP_RX { } } } // End of TP_RX_PCRF_ASA_01 + + Test Purpose { + TP Id TP_RX_PCSCF_ASR_01 + //TP_EPC_8004_06 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards visited P-CSCF." + + Reference + "TS 129 214 (V15.6.0) [8], clause 4.4.6.1" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_A entity sends a ASR + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the ASR containing + Session_Id_AVP + Abort_Cause_AVP + indicating value BEARER_RELEASED + ; + to the IMS_P_CSCF_B entity + } + } + } // End of TP_RX_PCSCF_ASR_01 Test Purpose { TP Id TP_RX_PCRF_STA_01 diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index 298d8f1..5d32b0b 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -147,7 +147,7 @@ Package TP_S9 { Test Purpose { TP Id TP_S9_PCRF_ASR_01 //TP_EPC_8004_05 from TS 103 029 V5.1.1 - Test objective "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards home PCRF." + Test objective "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards visited PCRF." Reference "TS 129 215 (V15.3.0) [11], clause 4.5.3.3" @@ -176,6 +176,36 @@ Package TP_S9 { } } } // End of TP_S9_PCRF_ASR_01 + + Test Purpose { + TP Id TP_S9_PCRF_ASA_01 + //TP_EPC_8004_07 from TS 103 029 V5.1.1 + Test objective "Verify that IUT receives AS-Answer from visited P-CSCF and it sends AS-Answer towards home PCRF." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.3" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity sends a ASA + to the EPC_PCRF_B entity + } + then { + the EPC_PCRF_B entity sends the ASA + to the EPC_PCRF_A entity + } + } + } // End of TP_S9_PCRF_ASA_01 Test Purpose { TP Id TP_S9_PCRF_CCR_01 @@ -365,7 +395,7 @@ Package TP_S9 { Test Purpose { TP Id TP_S9_PCRF_STR_01 - //TP_EPC_8002_04 from TS 103 029 V5.1.1 + //TP_EPC_8002_04 and 8004_08 from TS 103 029 V5.1.1 Test objective "Verify that IUT receives ST-Request from visited P-CSCS and it sends ST-Request towards home PCRF." Reference @@ -425,6 +455,39 @@ Package TP_S9 { } } } // End of TP_S9_PCRF_STA_01 + + Test Purpose { + TP Id TP_S9_PCRF_STA_02 + //TP_EPC_8002_09 from TS 103 029 V5.1.1 + Test objective "Verify when IUT receives ST-Request from visited PCRF then it sends a ST-Answer." + + Reference + "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PCRF_B entity sends a STR + to the EPC_PCRF_A entity + } + then { + the EPC_PCRF_A entity sends a STA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS + ; + to the EPC_PCRF_B entity + } + } + } // End of TP_S9_PCRF_STA_02 } // End of Package TP_S9 -- GitLab From f2a9be20580446185530768230d04dfda8f3bb4e Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 27 Mar 2020 00:58:47 +0100 Subject: [PATCH 017/176] TPs for Rx, S9 minor fixes. Rtp TPs added. --- test_purposes/Rtp/TP_Rtp.tplan2 | 261 ++++++++++++++++++++++++++++++++ test_purposes/Rtp_Common.tplan2 | 76 ++++++++++ test_purposes/Rx/TP_RX.tplan2 | 18 +-- test_purposes/S9/TP_S9.tplan2 | 2 +- 4 files changed, 347 insertions(+), 10 deletions(-) create mode 100644 test_purposes/Rtp/TP_Rtp.tplan2 create mode 100644 test_purposes/Rtp_Common.tplan2 diff --git a/test_purposes/Rtp/TP_Rtp.tplan2 b/test_purposes/Rtp/TP_Rtp.tplan2 new file mode 100644 index 0000000..68eba4a --- /dev/null +++ b/test_purposes/Rtp/TP_Rtp.tplan2 @@ -0,0 +1,261 @@ +/* +Copyright (c) ETSI 2019. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + + +Package TP_RTP { + + import all from Sip_Common; + //import all from Diameter_Common; + import all from Rtp_Common; + + Test Purpose { + TP Id TP_RTP_UE_01 + // TP_EPC_6003_01 from TS 103 029 V5.1.1 + Test objective "Verify that media between UE_A and UE_B is not delivered in any direction before call establishment." + + Reference + "TS 124 229 (V15.6.0) [1], clause 6" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends packets to the UE_B entity and + the UE_B entity sends packets to the UE_A entity + } + then { + the UE_B entity not receive media from the UE_A entity and + the UE_A entity not receive media from the UE_B entity + } + + } + } // End of TP_RTP_UE_01 + + Test Purpose { + TP Id TP_RTP_UE_02 + // TP_EPC_6032_01 from TS 103 029 V5.1.1 + Test objective "Verify that early media is delivered from UE_B to UE_A. " + + Reference + "TS 124 229 (V15.6.0) [1], clause 6" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends packets to the UE_B entity and + the UE_B entity sends packets to the UE_A entity + } + then { + the UE_B entity not receive media from the UE_A entity and + the UE_A entity receives media from the UE_B entity + } + + } + } // End of TP_RTP_UE_02 + + Test Purpose { + TP Id TP_RTP_UE_03 + // TP_EPC_6030_01 from TS 103 029 V5.1.1 + Test objective "Verify that media between UE_A and UE_B is successfully routed." + + Reference + "TS 124 229 (V15.6.0) [1], clause 6" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends packets to the UE_B entity and + the UE_B entity sends packets to the UE_A entity + } + then { + the UE_B entity receives media from the UE_A entity and + the UE_A entity receives media from the UE_B entity + } + + } + } // End of TP_RTP_UE_03 + + Test Purpose { + TP Id TP_RTP_UE_04 + // TP_EPC_6003_01 from TS 103 029 V5.1.1 + Test objective "Verify that media between UE_A and UE_B is not delivered in any direction before call establishment." + + Reference + "TS 124 229 (V15.6.0) [1], clause 6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends packets to the UE_B entity and + the UE_B entity sends packets to the UE_A entity + } + then { + the UE_B entity not receive media from the UE_A entity and + the UE_A entity not receive media from the UE_B entity + } + + } + } // End of TP_RTP_UE_04 + + Test Purpose { + TP Id TP_RTP_UE_05 + // TP_EPC_6032_01 from TS 103 029 V5.1.1 + Test objective "Verify that early media is delivered from UE_B to UE_A. " + + Reference + "TS 124 229 (V15.6.0) [1], clause 6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends packets to the UE_B entity and + the UE_B entity sends packets to the UE_A entity + } + then { + the UE_B entity not receive media from the UE_A entity and + the UE_A entity receives media from the UE_B entity + } + + } + } // End of TP_RTP_UE_05 + + Test Purpose { + TP Id TP_RTP_UE_06 + // TP_EPC_6030_01 from TS 103 029 V5.1.1 + Test objective "Verify that media between UE_A and UE_B is successfully routed." + + Reference + "TS 124 229 (V15.6.0) [1], clause 6" + + Config Id CF_VxLTE_RMI + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends packets to the UE_B entity and + the UE_B entity sends packets to the UE_A entity + } + then { + the UE_B entity receives media from the UE_A entity and + the UE_A entity receives media from the UE_B entity + } + + } + } // End of TP_RTP_UE_06 + + + Test Purpose { + TP Id TP_SIG_UE_01 + // TP_EPC_6001_01 from TS 103 029 V5.1.1 + Test objective "Verify that IMS registration is possible over default bearer." + + Reference + "TS 129 328 (V15.3.0) [12], clause 6.1.1.1" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity completes initial_network_attachment + to the EPC_PGW_A entity + } + then { + the UE_A entity sends the data containing + "IPv4_address of UE_A or + IPv6_address of UE_A or + (IPv4_address and IPv6_address) of UE_A" + DNS_information + P_CSCF_information + "indicating value P-CSCF-IP_address or + indicating value P-CSCF-FQDN_address" + ; + to the EPC_PGW_A entity + } + } + } // End of TP_SIG_UE_01 + + +} // End of Package TP_RTP diff --git a/test_purposes/Rtp_Common.tplan2 b/test_purposes/Rtp_Common.tplan2 new file mode 100644 index 0000000..7da1861 --- /dev/null +++ b/test_purposes/Rtp_Common.tplan2 @@ -0,0 +1,76 @@ +/* ETSI Software License +* As long as the here under conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchant ability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2019-2020 +*/ + + + Package Rtp_Common { + Domain { + pics: + - NONE + ; + entities: + - EPC_PCRF_A + - EPC_PCRF_B + - EPC_PGW_A + - EPC_PGW_B + - EPC_MME_A + - EPC_MME_B + - IMS_HSS_A + - IMS_HSS_B + ; + events: + - initial_network_attachment + - packets + - media + - filters + - data + - uses_correct_bearers + - service_data_flows + ; + } // End of Domain section + + Data { + type RtpMessage; + } // End of Data section + + Configuration { + Interface Type defaultGT accepts RtpMessage; + Component Type RtpComp with gate g of type defaultGT; + + Test Configuration CF_VxLTE_INT + containing + Tester component EPC_PGW_A of type RtpComp + Tester component EPC_PCRF_A of type RtpComp + + SUT component IMS_A of type RtpComp + connection between EPC_PGW_A.g and EPC_PCRF_A.g + ; + + Test Configuration CF_VxLTE_RMI + containing + Tester component EPC_PCRF_A of type RtpComp + Tester component EPC_PCRF_B of type RtpComp + + SUT component IMS_A of type RtpComp + connection between EPC_PCRF_A.g and EPC_PCRF_A.g + ; + + } // End of Configuration section + +} // End of Package Diameter_Common + diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index c4bdc5e..88b86fe 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -53,7 +53,7 @@ Package TP_RX { Media_Sub_Component_AVP containing Flow_Description_AVP indicating value - "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or + "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number)", Flow_Description_AVP @@ -164,7 +164,7 @@ Package TP_RX { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity sends an 200_Response_REGISTER + the IMS_S_CSCF_A entity sends a 200_Response_REGISTER to the IMS_P_CSCF_A entity } then { @@ -183,7 +183,7 @@ Package TP_RX { indicating value "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number))", + permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number))", Flow_Description_AVP indicating value "permit_out_ip from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or @@ -300,7 +300,7 @@ Package TP_RX { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an 180_Response_INVITE_with_SDP_offer + the IMS_P_CSCF_A entity receives a 180_Response_INVITE_with_SDP_offer from the IMS_S_CSCF_A entity } then { @@ -349,7 +349,7 @@ Package TP_RX { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an 200_Response_INVITE_with_SDP_offer + the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer from the IMS_S_CSCF_A entity } then { @@ -445,7 +445,7 @@ Package TP_RX { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an 180_Response_INVITE_with_SDP_offer + the IMS_P_CSCF_A entity receives a 180_Response_INVITE_with_SDP_offer from the UE_B entity } then { @@ -494,7 +494,7 @@ Package TP_RX { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an 200_Response_INVITE_with_SDP_offer + the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer from the UE_B entity } then { @@ -543,7 +543,7 @@ Package TP_RX { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an 200_Response_INVITE_with_SDP_offer + the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer from the IMS_S_CSCF_A entity } then { @@ -592,7 +592,7 @@ Package TP_RX { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an 200_Response_INVITE_with_SDP_offer + the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer from the UE_B entity } then { diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index 5d32b0b..c2d6785 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -83,7 +83,7 @@ Package TP_S9 { Media_Sub_Component_AVP containing Flow_Description_AVP indicating value - "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or + "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number)", Flow_Description_AVP -- GitLab From 213b7adff425a28f7549f7f28dd3473fc34d3c0d Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 1 Apr 2020 10:03:42 +0200 Subject: [PATCH 018/176] Add new configurations; Review all Interworking TPs --- test_purposes/Gm/TP_GM.tplan2 | 103 +++-- test_purposes/Mw/TP_MW_IB.tplan2 | 672 +++++++++++++++++++++---------- test_purposes/Mw/TP_MW_PS.tplan2 | 192 +++++++-- test_purposes/Mw/TP_MW_SS.tplan2 | 225 +++++++---- test_purposes/Sip_Common.tplan2 | 20 +- 5 files changed, 855 insertions(+), 357 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 1706551..55295cb 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -102,7 +102,7 @@ Package TP_GM { the UE_A entity isTriggeredToStart } then { - the IMS_P_CSCF_A entity receives a REGISTER containing + the UE_A entity sends a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -117,8 +117,8 @@ Package TP_GM { not term_ioi, not SecurityClient ;; - from the UE_A entity - and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing + to the IMS_P_CSCF_A entity + and the UE_A entity receives an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -133,7 +133,7 @@ Package TP_GM { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the UE_A entity + from the IMS_P_CSCF_A entity } } @@ -282,7 +282,7 @@ Package TP_GM { the UE_A entity isTriggeredToStart } then { - the IMS_P_CSCF_B entity receives a REGISTER containing + the UE_A entity sends a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -297,8 +297,8 @@ Package TP_GM { not term_ioi, not SecurityClient ;; - from the UE_A entity - and the IMS_P_CSCF_B entity sends an 401_Unauthorized containing + to the IMS_P_CSCF_B entity + and the UE_A entity receives an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -314,7 +314,7 @@ Package TP_GM { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the UE_A entity + from the IMS_P_CSCF_B entity } } @@ -461,10 +461,10 @@ Package TP_GM { the UE_A entity isTriggeredToDetachUser } then { - the IMS_P_CSCF_A entity receives a REGISTER containing + the UE_A entity sends a REGISTER containing Expire indicating value 0 ; - from the UE_A entity + to the IMS_P_CSCF_A entity } } } // End of TP_GM_PCSCF_REGISTER_07 @@ -505,6 +505,45 @@ Package TP_GM { // TP_GM_PCSCF_REGISTER_09 Not applicable + Test Purpose { + + TP Id TP_GM_PCSCF_REGISTER_10 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity previouslyEstablishedCallWith the UE_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity isTriggeredToDetachUser + } + then { + the UE_A entity sends a REGISTER containing + Expire indicating value 0 + ; + to the IMS_P_CSCF_A entity and + the UE_A entity receives a BYE + from the IMS_P_CSCF_A entity + } + } + } // End of TP_GM_PCSCF_REGISTER_10 + Test Purpose { TP Id TP_GM_PCSCF_SUBSCRIBE_01 @@ -578,7 +617,7 @@ Package TP_GM { the UE_A entity isRequestedToSend a SUBSCRIBE } then { - the IMS_P_CSCF_B entity receives an SUBSCRIBE containing + the UE_A entity sends an SUBSCRIBE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -586,8 +625,8 @@ Package TP_GM { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the UE_A entity - and the IMS_P_CSCF_B entity sends a 200_Ok containing + to the IMS_P_CSCF_B entity + and the UE_A entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -595,7 +634,7 @@ Package TP_GM { PVisitedNetwork // TODO To be continued ; - to the UE_A entity + to the IMS_P_CSCF_B entity } } } // End of TP_GM_PCSCF_SUBSCRIBE_02 @@ -630,7 +669,7 @@ Package TP_GM { Event indicating value "reg,de-reg" // TODO To be continued ; - from the UE_A entity + to the UE_A entity } } } // End of TP_GM_PCSCF_NOTIFY_01 @@ -773,7 +812,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -819,7 +858,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -985,7 +1024,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1130,7 +1169,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1169,7 +1208,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1320,7 +1359,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1359,7 +1398,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1549,7 +1588,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1693,7 +1732,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1740,7 +1779,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1916,7 +1955,7 @@ Package TP_GM { Reference "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2002,7 +2041,7 @@ Package TP_GM { Reference "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2440,7 +2479,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2567,7 +2606,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2606,7 +2645,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2903,7 +2942,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2944,7 +2983,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE diff --git a/test_purposes/Mw/TP_MW_IB.tplan2 b/test_purposes/Mw/TP_MW_IB.tplan2 index c6bf71b..b6368ca 100644 --- a/test_purposes/Mw/TP_MW_IB.tplan2 +++ b/test_purposes/Mw/TP_MW_IB.tplan2 @@ -14,17 +14,17 @@ file and shall not imply any sub-license right. */ /* Mw interface at S-CSCF/IBCF */ -Package TP_MW_IB { +Package TP_MW_SI { import all from Sip_Common; Test Purpose { - TP Id TP_MW_ICSCF_MESSAGE_01 + TP Id TP_MW_SCSCF_MESSAGE_01 // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes" + Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference "TS 124 229 (V15.6.0) [1], clause 4.2A" @@ -41,25 +41,25 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a MESSAGE + the IMS_S_CSCF_A entity receives a MESSAGE containing ContentLength indicating value greater than 1300 bytes ; - from the IMS_S_CSCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity forwards the MESSAGE + the IMS_S_CSCF_A entity forwards the MESSAGE to the IMS_IBCF_A entity } } - } // End of TP_MW_ICSCF_MESSAGE_01 + } // End of TP_MW_SCSCF_MESSAGE_01 Test Purpose { - TP Id TP_MW_ICSCF_REGISTER_01 + TP Id TP_MW_SCSCF_REGISTER_01 // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." + Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" @@ -77,29 +77,16 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a REGISTER containing + the IMS_S_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA ; - from the IMS_P_CSCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a REGISTER containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Path indicating value PX_P_CSCF_A_SIP_URI, - PChargingVector containing - icid indicating value PX_TO_BE_DEFINED, - PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - Require_HDR indicating value "path", - Supported indicating value "path" - ;; - to the IMS_S_CSCF_A entity - and the IMS_I_CSCF_A entity sends an 401_Unauthorized containing + the IMS_S_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -114,18 +101,18 @@ Package TP_MW_IB { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_P_CSCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_REGISTER_01 + } // End of TP_MW_SCSCF_REGISTER_01 Test Purpose { - TP Id TP_MW_ICSCF_REGISTER_02 + TP Id TP_MW_SCSCF_REGISTER_02 // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." + Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" @@ -144,7 +131,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a REGISTER containing + the IMS_S_CSCF_A entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -158,26 +145,10 @@ Package TP_MW_IB { Nonce indicating value "not empty", qop indicating value "auth" ;; - from the IMS_P_CSCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a REGISTER containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Authorization containing - Authentication_Scheme indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UE_A_USERNAME, - Realm indicating value PX_UE_A_REALM, - Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "not empty", - qop indicating value "auth", - PChargingVector - ;; - to the IMS_S_CSCF_A entity - and the IMS_I_CSCF_A entity sends an 200_Ok containing + the IMS_S_CSCF_A entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -193,20 +164,20 @@ Package TP_MW_IB { Path, ServiceRoute ; - to the IMS_P_CSCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_REGISTER_02 + } // End of TP_MW_SCSCF_REGISTER_02 - // TP_MW_ICSCF_REGISTER_03 not applicable + // TP_MW_SCSCF_REGISTER_03 not applicable Test Purpose { - TP Id TP_MW_ICSCF_REGISTER_04 + TP Id TP_MW_SCSCF_REGISTER_04 // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." + Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" @@ -224,17 +195,17 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a REGISTER containing + the IMS_S_CSCF_B entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, PVisitedNetworkID ; - from the IMS_S_CSCF_B entity + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a REGISTER containing + the IMS_S_CSCF_B entity sends a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -247,7 +218,7 @@ Package TP_MW_IB { Supported indicating value "path" ;; to the IMS_IBCF_B entity - and the IMS_I_CSCF_B entity sends an 401_Unauthorized containing + and the IMS_S_CSCF_B entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -263,18 +234,18 @@ Package TP_MW_IB { Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_S_CSCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_REGISTER_04 + } // End of TP_MW_SCSCF_REGISTER_04 Test Purpose { - TP Id TP_MW_ICSCF_REGISTER_05 + TP Id TP_MW_SCSCF_REGISTER_05 // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." + Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" @@ -293,7 +264,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a REGISTER containing + the IMS_S_CSCF_B entity receives a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -308,10 +279,10 @@ Package TP_MW_IB { qop indicating value "auth", PVisitedNetworkID ;; - from the IMS_S_CSCF_B entity + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a REGISTER containing + the IMS_S_CSCF_B entity sends a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -328,7 +299,7 @@ Package TP_MW_IB { PChargingVector ;; to the IMS_IBCF_B entity - and the IMS_I_CSCF_B entity sends an 200_Ok containing + and the IMS_S_CSCF_B entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -345,84 +316,51 @@ Package TP_MW_IB { Path, ServiceRoute ; - to the IMS_S_CSCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_REGISTER_05 + } // End of TP_MW_SCSCF_REGISTER_05 + + // TP_MW_SCSCF_REGISTER_06 not applicable Test Purpose { - TP Id TP_MW_ICSCF_REGISTER_06 - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) + TP Id TP_MW_SCSCF_REGISTER_07 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." + Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.3.1.2" + "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" - Config Id CF_VxLTE_RMI_B + Config Id CF_VxLTE_INT PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_A entity isNotRegisteredTo the IMS_B and - the UE_B entity isNotRegisteredTo the IMS_B + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A } Expected behaviour ensure that { when { - the IMS_S_CSCF_B entity sends a REGISTER containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Authorization containing - Authentication_Schema indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UE_A_INVALID_USERNAME, - Realm indicating value PX_UE_A_REALM, - Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "", - PVisitedNetworkID - ;; - to the IMS_I_CSCF_B entity + the IMS_S_CSCF_A entity receives a REGISTER containing + Expire indicating value 0 + ; + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_B entity sends a REGISTER containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Authorization containing - Authentication_Scheme indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UE_A_INVALID_USERNAME, - Realm indicating value PX_UE_A_REALM, - Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "not empty", - qop indicating value "auth", - PVisitedNetworkID, - PChargingVector - ;; - to the IMS_IBCF_A entity - and the IMS_I_CSCF_A entity sends an 404_NotFound containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - PVisitedNetworkID - ; - to the IMS_S_CSCF_B entity + the IMS_S_CSCF_A entity sends a 200 OK + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_REGISTER_06 - - // TP_MW_ICSCF_REGISTER_07 not applicable + } // End of TP_MW_SCSCF_REGISTER_07 Test Purpose { - TP Id TP_MW_ICSCF_REGISTER_08 + TP Id TP_MW_SCSCF_REGISTER_08 // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) @@ -459,7 +397,49 @@ Package TP_MW_IB { to the IMS_S_CSCF_A entity } } - } // End of TP_MW_ICSCF_REGISTER_08 + } // End of TP_MW_SCSCF_REGISTER_08 + + Test Purpose { + + TP Id TP_MW_SCSCF_REGISTER_10 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a user de-registration (with SIP session active)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity previouslyEstablishedCallWith the UE_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a REGISTER containing + Expire indicating value 0 + ; + from the IMS_I_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a BYE + to the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity sends a BYE + to the IMS_IBCF_A entity and + the IMS_S_CSCF_A entity sends a 200 OK + to the IMS_P_CSCF_A entity + } + } + } // End of TP_MW_SCSCF_REGISTER_10 Test Purpose { @@ -484,7 +464,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity sends an SUBSCRIBE containing + the IMS_S_CSCF_A entity receives an SUBSCRIBE containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_B_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -494,21 +474,10 @@ Package TP_MW_IB { Expires // TODO To be continued ; - to the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_S_CSCF_A entity sends an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - Event, - Expires - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - and the IMS_S_CSCF_A entity sends a 200_Ok containing + the IMS_S_CSCF_A entity sends a 200_Ok containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_B_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -543,7 +512,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_P_CSCF_B entity sends an SUBSCRIBE containing + the IMS_S_CSCF_A entity receives an SUBSCRIBE containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_B_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -553,28 +522,17 @@ Package TP_MW_IB { Expires // TODO To be continued ; - to the IMS_S_CSCF_B entity + to the IMS_IBCF_A entity } then { - the IMS_S_CSCF_B entity sends an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - Event, - Expires - // TODO To be continued - ; - to the IMS_I_CSCF_B entity - and the IMS_S_CSCF_B entity sends a 200_Ok containing + the IMS_S_CSCF_B entity sends a 200_Ok containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_B_SIP_URI, CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA // TODO To be continued ; - to the IMS_P_CSCF_B entity + to the IMS_IBCF_A entity } } } // End of TP_MW_SCSCF_SUBSCRIBE_02 @@ -600,9 +558,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing - Event indicating value "reg,de-reg" - ; + the IMS_S_CSCF_A entity isRequestedToDeregisterUser } then { the IMS_S_CSCF_A entity sends an NOTIFY containing @@ -616,9 +572,7 @@ Package TP_MW_IB { Event indicating value "de-reg" // TODO To be continued ; - to the IMS_P_CSCF_A entity and - the IMS_S_CSCF_A entity receives an 200_Ok - from the IMS_P_CSCF_A entity + to the IMS_P_CSCF_A entity } } } // End of TP_MW_SCSCF_NOTIFY_01 @@ -715,7 +669,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -758,7 +712,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the IMS_I_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends an INVITE containing @@ -792,7 +746,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -837,7 +791,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -853,7 +807,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.3.2.1 and Clause 5.3.2.1A" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -880,7 +834,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends an INVITE containing @@ -930,7 +884,7 @@ Package TP_MW_IB { ensure that { when { the IMS_S_CSCF_A entity receives a 100_Trying - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 100_Trying @@ -970,7 +924,7 @@ Package TP_MW_IB { } then { the IMS_S_CSCF_B entity sends a 100_Trying - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -987,7 +941,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1002,7 +956,7 @@ Package TP_MW_IB { ensure that { when { the IMS_S_CSCF_B entity receives a 100_Trying - from the IMS_I_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends a 100_Trying @@ -1023,7 +977,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1042,7 +996,7 @@ Package TP_MW_IB { } then { the IMS_S_CSCF_A entity sends a 100_Trying - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -1072,7 +1026,7 @@ Package TP_MW_IB { ensure that { when { the IMS_S_CSCF_A entity receives a 180_Ringing - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 180_Ringing containing @@ -1118,7 +1072,7 @@ Package TP_MW_IB { PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -1133,7 +1087,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1148,7 +1102,7 @@ Package TP_MW_IB { ensure that { when { the IMS_S_CSCF_B entity receives a 180_Ringing - from the IMS_I_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends a 180_Ringing @@ -1167,7 +1121,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1186,7 +1140,7 @@ Package TP_MW_IB { } then { the IMS_S_CSCF_A entity sends a 180_Ringing - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -1230,7 +1184,7 @@ Package TP_MW_IB { PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -1266,7 +1220,7 @@ Package TP_MW_IB { not PChargingFunctionAddresses, not PPreferredIdentity ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 200_Ok containing @@ -1280,6 +1234,94 @@ Package TP_MW_IB { } // End of TP_MW_SCSCF_200OK_02 + Test Purpose { + + TP Id TP_MW_SCSCF_200OK_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a 200_Ok containing + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity + ; + from the IMS_IBCF_B entity + } + then { + the IMS_S_CSCF_B entity sends a 200_Ok containing + PChargingVector, + PChargingFunctionAddresses, + PPreferredIdentity + ; + to the IMS_P_CSCF_B entity + } + } + + } // End of TP_MW_SCSCF_200OK_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_200OK_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a 200_Ok containing + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity + ; + from the IMS_P_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a 200_Ok containing + PChargingVector, + PChargingFunctionAddresses, + PPreferredIdentity + ; + to the IMS_IBCF_A entity + } + } + + } // End of TP_MW_SCSCF_200OK_04 + Test Purpose { TP Id TP_MW_SCSCF_ACK_01 @@ -1324,7 +1366,7 @@ Package TP_MW_IB { Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } } @@ -1363,7 +1405,7 @@ Package TP_MW_IB { Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends an ACK containing @@ -1380,6 +1422,106 @@ Package TP_MW_IB { } // End of TP_MW_SCSCF_ACK_02 + Test Purpose { + + TP Id TP_MW_SCSCF_ACK_03 + // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives an ACK containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_P_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends an ACK containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_IBCF_B entity + } + } + + } // End of TP_MW_SCSCF_ACK_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_ACK_04 + // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives an ACK containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_IBCF_A entity + } + then { + the IMS_S_CSCF_A entity sends an ACK containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + // TODO To be continued + ; + from the IMS_P_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_ACK_04 + Test Purpose { TP Id TP_MW_SCSCF_RE_INVITE_01 @@ -1435,7 +1577,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } } } // End of TP_MW_SCSCF_RE_INVITE_01 @@ -1479,7 +1621,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity receives an ReINVITE containing @@ -1500,6 +1642,126 @@ Package TP_MW_IB { } } // End of TP_MW_SCSCF_RE_INVITE_02 + Test Purpose { + + TP Id TP_MW_SCSCF_RE_INVITE_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity previouslyEstablishedCallWith the UE_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives an ReINVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + from the IMS_P_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity sends an ReINVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + from the IMS_IBCF_B entity + } + } + } // End of TP_MW_SCSCF_RE_INVITE_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_RE_INVITE_04 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and + the UE_B entity previouslyEstablishedCallWith the UE_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives an ReINVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + to the IMS_IBCF_A entity + } + then { + the IMS_S_CSCF_A entity receives an ReINVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + MessageBody containing + SDP containing + Version indicating value "0" + // TODO To be continued + ; + ;; + from the IMS_P_CSCF_A entity + } + } + } // End of TP_MW_SCSCF_RE_INVITE_04 + Test Purpose { TP Id TP_MW_SCSCF_BYE_01 @@ -1835,7 +2097,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 200_Ok containing @@ -1883,7 +2145,7 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends a 200_Ok containing @@ -1911,7 +2173,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1933,7 +2195,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends a 200_Ok containing @@ -1959,7 +2221,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1981,7 +2243,7 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 200_Ok containing @@ -2046,7 +2308,7 @@ Package TP_MW_IB { Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -2098,7 +2360,7 @@ Package TP_MW_IB { Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -2115,7 +2377,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2150,7 +2412,7 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -2167,15 +2429,15 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and the UE_B entity hasAchieveInitialINVITE and the UE_A entity isRequestedToSend a CANCEL } @@ -2191,7 +2453,7 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends an CANCEL containing @@ -2241,7 +2503,7 @@ Package TP_MW_IB { Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 486_INVITE containing @@ -2302,7 +2564,7 @@ Package TP_MW_IB { Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -2341,7 +2603,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends a 486_INVITE containing @@ -2402,7 +2664,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -2441,7 +2703,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 487_INVITE containing @@ -2502,7 +2764,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -2518,7 +2780,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2541,7 +2803,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends a 487_INVITE containing @@ -2568,7 +2830,7 @@ Package TP_MW_IB { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2602,11 +2864,11 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } } // End of TP_MW_SCSCF_487INVITE_04 -} // End of Package TP_MW_IB +} // End of Package TP_MW_SI diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 6e21f1b..9850d26 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -112,7 +112,7 @@ Package TP_MW_PS { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_S_CSCF_A entity + to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -190,7 +190,7 @@ Package TP_MW_PS { qop indicating value "auth", PChargingVector ;; - to the IMS_S_CSCF_A entity + to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -401,7 +401,7 @@ Package TP_MW_PS { PChargingVector, PVisitedNetwork ;; - to the IMS_S_CSCF_B entity + to the IMS_I_CSCF_B entity and the IMS_P_CSCF_B entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -447,7 +447,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends a REGISTER containing + the IMS_P_CSCF_B entity sends a REGISTER containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -460,7 +460,7 @@ Package TP_MW_PS { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "" ;; - to the IMS_P_CSCF_B entity + to the UE_A entity } then { the IMS_P_CSCF_B entity sends a REGISTER containing @@ -597,6 +597,88 @@ Package TP_MW_PS { } } // End of TP_MW_PCSCF_REGISTER_09 + Test Purpose { + + TP Id TP_MW_PCSCF_REGISTER_10 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity previouslyEstablishedCallWith the UE_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a REGISTER containing + Expire indicating value 0 + ; + from the UE_A entity + } + then { + the IMS_P_CSCF_A entity sends a REGISTER containing + Expire indicating value 0 + ; + to the IMS_I_CSCF_A entity and + the IMS_P_CSCF_A entity sends a BYE + to the UE_A entity + } + } + } // End of TP_MW_PCSCF_REGISTER_10 + + Test Purpose { + + TP Id TP_MW_PCSCF_REGISTER_11 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user network detachment." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToDetachfromNetwork + } + then { + the IMS_P_CSCF_A entity sends a BYE + to the IMS_S_CSCF_A entity and + the IMS_P_CSCF_A entity receives a 200_Ok + from the IMS_S_CSCF_A entity and + the IMS_P_CSCF_A entity sends a REGISTER containing + Expire indicating value 0 + ; + to the IMS_I_CSCF_A entity and + the IMS_P_CSCF_A entity receives a 200_Ok + from the IMS_I_CSCF_A entity + } + } + } // End of TP_MW_PCSCF_REGISTER_11 + Test Purpose { TP Id TP_MW_PCSCF_SUBSCRIBE_01 @@ -620,7 +702,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends an SUBSCRIBE containing + the IMS_P_CSCF_A entity receives an SUBSCRIBE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -630,7 +712,7 @@ Package TP_MW_PS { Expires // TODO To be continued ; - to the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends an SUBSCRIBE containing @@ -644,14 +726,14 @@ Package TP_MW_PS { // TODO To be continued ; to the IMS_S_CSCF_A entity - and the IMS_P_CSCF_A entity sends a 200_Ok containing + and the IMS_P_CSCF_A entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA // TODO To be continued ; - to the UE_A entity + from the IMS_S_CSCF_A entity } } } // End of TP_MW_PCSCF_SUBSCRIBE_01 @@ -679,7 +761,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends an SUBSCRIBE containing + the IMS_P_CSCF_B entity receives an SUBSCRIBE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -689,7 +771,7 @@ Package TP_MW_PS { Expires // TODO To be continued ; - to the IMS_P_CSCF_B entity + from the UE_A entity } then { the IMS_P_CSCF_B entity sends an SUBSCRIBE containing @@ -703,14 +785,14 @@ Package TP_MW_PS { // TODO To be continued ; to the IMS_S_CSCF_B entity - and the IMS_P_CSCF_B entity sends a 200_Ok containing + and the IMS_P_CSCF_B entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA // TODO To be continued ; - to the UE_A entity + to the IMS_S_CSCF_B entity } } } // End of TP_MW_PCSCF_SUBSCRIBE_02 @@ -736,9 +818,12 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + the IMS_P_CSCF_A entity receives a NOTIFY containing + From indicating value PX_S_CSCF_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, Event indicating value "reg,de-reg" ; + from the IMS_S_CSCF_A entity } then { the IMS_P_CSCF_A entity sends an NOTIFY containing @@ -750,6 +835,41 @@ Package TP_MW_PS { } } // End of TP_MW_PCSCF_NOTIFY_01 + Test Purpose { + + TP Id TP_MW_PCSCF_NOTIFY_02 + + Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a NOTIFY containing + From indicating value PX_S_CSCF_A_SIP_URI, + To indicating value PX_P_CSCF_A_SIP_URI, + Event indicating value "reg,de-reg" + ; + from the IMS_S_CSCF_A entity + } + then { + the IMS_P_CSCF_A entity sends a 200_Ok + to the IMS_S_CSCF_A entity + } + } + } // End of TP_MW_PCSCF_NOTIFY_02 + Test Purpose { TP Id TP_MW_PCSCF_200OK_NOTIFY_01 @@ -918,7 +1038,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -979,7 +1099,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1113,7 +1233,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1149,7 +1269,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1257,7 +1377,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clauses 5.2.9.1 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1293,7 +1413,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1417,7 +1537,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1461,7 +1581,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1605,7 +1725,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1655,7 +1775,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1825,7 +1945,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1885,7 +2005,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2090,7 +2210,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2192,7 +2312,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2609,7 +2729,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2661,15 +2781,15 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and the UE_B entity hasAchieveInitialINVITE and the UE_A entity isRequestedToSend a CANCEL } @@ -3012,7 +3132,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -3062,7 +3182,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_INT + Config Id CF_VxLTE_RMI_B PICS Selection NONE diff --git a/test_purposes/Mw/TP_MW_SS.tplan2 b/test_purposes/Mw/TP_MW_SS.tplan2 index 09a82d9..7dc9559 100644 --- a/test_purposes/Mw/TP_MW_SS.tplan2 +++ b/test_purposes/Mw/TP_MW_SS.tplan2 @@ -14,17 +14,17 @@ file and shall not imply any sub-license right. */ /* Mw interface at I-CSCF/S-CSCF */ -Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, not MwSS +Package TP_MW_IS { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, not MwSS import all from Sip_Common; Test Purpose { - TP Id TP_MW_SCSCF_MESSAGE_01 + TP Id TP_MW_ICSCF_MESSAGE_01 // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes" + Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference "TS 124 229 (V15.6.0) [1], clause 4.2A" @@ -41,25 +41,25 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives a MESSAGE + the IMS_I_CSCF_A entity receives a MESSAGE containing ContentLength indicating value greater than 1300 bytes ; from the IMS_P_CSCF_A entity } then { - the IMS_S_CSCF_A entity forwards the MESSAGE - to the IMS_I_CSCF_A entity + the IMS_I_CSCF_A entity forwards the MESSAGE + to the IMS_S_CSCF_A entity } } - } // End of TP_MW_SCSCF_MESSAGE_01 + } // End of TP_MW_ICSCF_MESSAGE_01 Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_01 + TP Id TP_MW_ICSCF_REGISTER_01 // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." + Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" @@ -77,16 +77,16 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA ; - from the IMS_I_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_S_CSCF_A entity sends an 401_Unauthorized containing + the IMS_I_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -101,18 +101,18 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_I_CSCF_A entity + to the IMS_S_CSCF_A entity } } - } // End of TP_MW_SCSCF_REGISTER_01 + } // End of TP_MW_ICSCF_REGISTER_01 Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_02 + TP Id TP_MW_ICSCF_REGISTER_02 // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." + Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" @@ -131,7 +131,7 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -145,10 +145,10 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Nonce indicating value "not empty", qop indicating value "auth" ;; - from the IMS_I_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_S_CSCF_A entity sends an 200_Ok containing + the IMS_I_CSCF_A entity sends an 200_Ok containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -164,20 +164,69 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Path, ServiceRoute ; - to the IMS_I_CSCF_A entity + to the IMS_S_CSCF_A entity } } - } // End of TP_MW_SCSCF_REGISTER_02 + } // End of TP_MW_ICSCF_REGISTER_02 - // TP_MW_SCSCF_REGISTER_03 not applicable + Test Purpose { + + TP Id TP_MW_ICSCF_REGISTER_03 + // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isNotRegisteredTo the IMS_A and + the UE_B entity isNotRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives a REGISTER containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Authorization containing + Authentication_Schema indicating value PX_TO_BE_DEFINED, + Authentication_URI indicating value PX_TO_BE_DEFINED, + Username indicating value PX_UE_A_INVALID_USERNAME, + Realm indicating value PX_UE_A_REALM, + Algorithm indicating value PX_UE_A_AUTH_ALG, + Nonce indicating value "" + ;; + from the IMS_P_CSCF_A entity + } + then { + the IMS_I_CSCF_A entity sends an 404_NotFound containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID + ; + to the IMS_P_CSCF_A entity + } + } + } // End of TP_MW_ICSCF_REGISTER_03 + + // TP_MW_ICSCF_REGISTER_03 not applicable Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_04 + TP Id TP_MW_ICSCF_REGISTER_04 // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." + Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" @@ -195,17 +244,17 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_S_CSCF_B entity recieves a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, PVisitedNetworkID ; - from the IMS_P_CSCF_B entity + from the IMS_IBCF_A entity } then { - the IMS_S_CSCF_B entity sends a REGISTER containing + the IMS_I_CSCF_A entity sends a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -217,8 +266,8 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_I_CSCF_B entity - and the IMS_S_CSCF_B entity sends an 401_Unauthorized containing + to the IMS_S_CSCF_A entity + and the IMS_I_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -234,18 +283,18 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_P_CSCF_B entity + to the IMS_IBCF_A entity } } - } // End of TP_MW_SCSCF_REGISTER_04 + } // End of TP_MW_ICSCF_REGISTER_04 Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_05 + TP Id TP_MW_ICSCF_REGISTER_05 // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." + Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" @@ -264,7 +313,7 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_S_CSCF_B entity recieves a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -278,10 +327,10 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Nonce indicating value "not empty", qop indicating value "auth" ;; - from the IMS_P_CSCF_B entity + from the IMS_IBCF_A entity } then { - the IMS_S_CSCF_B entity sends a REGISTER containing + the IMS_I_CSCF_B entity sends a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -296,8 +345,8 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, qop indicating value "auth", PChargingVector ;; - to the IMS_I_CSCF_B entity - and the IMS_S_CSCF_B entity sends an 200_Ok containing + to the IMS_S_CSCF_A entity + and the IMS_I_CSCF_A entity sends an 200_Ok containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -313,17 +362,17 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Path, ServiceRoute ; - to the IMS_P_CSCF_B entity + to the IMS_IBCF_A entity } } - } // End of TP_MW_SCSCF_REGISTER_05 + } // End of TP_MW_ICSCF_REGISTER_05 Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_06 + TP Id TP_MW_ICSCF_REGISTER_06 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a invalid first registration (Unsuccessful)." + Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.3" @@ -341,7 +390,7 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_P_CSCF_B entity sends a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -354,42 +403,26 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Algorithm indicating value PX_UA_A_AUTH_ALG, Nonce indicating value "" ;; - to the IMS_S_CSCF_B entity + to the IMS_IBCF_A entity } then { - the IMS_S_CSCF_B entity sends a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Authorization containing - Authentication_Scheme indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_INVALID_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, - Nonce indicating value "not empty", - qop indicating value "auth", - PChargingVector - ;; - to the IMS_I_CSCF_B entity - and the IMS_S_CSCF_B entity sends an 404_NotFound containing + the IMS_I_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID ; - to the IMS_P_CSCF_B entity + to the IMS_IBCF_A entity } } - } // End of TP_MW_SCSCF_REGISTER_06 + } // End of TP_MW_ICSCF_REGISTER_06 Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_07 + TP Id TP_MW_ICSCF_REGISTER_07 // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." + Test objective "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" @@ -406,27 +439,27 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives a REGISTER containing + the IMS_I_CSCF_A entity receives a REGISTER containing Expire indicating value 0 ; - from the IMS_I_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_S_CSCF_A entity sends a 200 OK containing + the IMS_I_CSCF_A entity sends a REGISTER containing Expire indicating value 0 ; - to the IMS_I_CSCF_A entity + to the IMS_S_CSCF_A entity } } - } // End of TP_MW_SCSCF_REGISTER_07 + } // End of TP_MW_ICSCF_REGISTER_07 Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_08 + TP Id TP_MW_ICSCF_REGISTER_08 // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." + Test objective "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.5 and Clause 6.3" @@ -455,11 +488,11 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, to the IMS_I_CSCF_B entity } } - } // End of TP_MW_SCSCF_REGISTER_08 + } // End of TP_MW_ICSCF_REGISTER_08 Test Purpose { - TP Id TP_MW_SCSCF_REGISTER_09 + TP Id TP_MW_ICSCF_REGISTER_09 // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) @@ -488,7 +521,47 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, to the IMS_S_CSCF_B entity } } - } // End of TP_MW_SCSCF_REGISTER_09 + } // End of TP_MW_ICSCF_REGISTER_09 + + Test Purpose { + + TP Id TP_MW_ICSCF_REGISTER_10 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the I-CSCF successfully processes a user de-registration (with SIP session active)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity previouslyEstablishedCallWith the UE_B + } + + Expected behaviour + ensure that { + when { + the IMS_I_CSCF_A entity receives a REGISTER containing + Expire indicating value 0 + ; + from the IMS_P_CSCF_A entity + } + then { + the IMS_I_CSCF_A entity sends a REGISTER containing + Expire indicating value 0 + ; + to the IMS_S_CSCF_A entity + } + } + } // End of TP_MW_ICSCF_REGISTER_10 -} // End of Package TP_MW_SI +} // End of Package TP_MW_IS diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 0da7702..5864466 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -78,9 +78,11 @@ Package Sip_Common { - hasReceivedSubsequentOrTargetRefreshRequestInDialog - previouslyEstablishedCallWith - isRequestedToSend + - isRequestedToDeregisterUser - isBusy - isNoLongerAvailable - isTriggeredToDetachUser + - isRequestedToDetachfromNetwork // SIP Requests - hasAchieveFirstREGISTER - REGISTER @@ -112,19 +114,21 @@ Package Sip_Common { // PX_UE_A_REALM, // PX_UE_A_USERNAME, // PX_UE_A_INVALID_USERNAME, -// PX_UE_A_VIA -// PX_UE_A_AUTH_ALG -// PX_OPERATOR_ID_A +// PX_UE_A_VIA, +// PX_UE_A_AUTH_ALG, +// PX_OPERATOR_ID_A, // PX_UE_B_SIP_URI, -// PX_UE_B_TEL_URI,, +// PX_UE_B_TEL_URI, // PX_UE_B_USERNAME, // PX_UE_B_INVALID_USERNAME, -// PX_UE_B_VIA -// PX_UE_B_AUTH_ALG -// PX_OPERATOR_ID_B +// PX_UE_B_VIA, +// PX_UE_B_AUTH_ALG, +// PX_OPERATOR_ID_B, // PX_P_CSCF_A_SIP_URI, // PX_IMS_A_ICID, -// PX_IMS_A_ORIG_IOI +// PX_IMS_A_ORIG_IOI, +// PX_S_CSCF_A_SIP_URI, +// PX_P_CSCF_A_SIP_URI, // PX_TO_BE_DEFINED // ; // } // End of Const section -- GitLab From b93b9398137e5c4e0cc79c59cda7d37903f38616 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 1 Apr 2020 10:07:33 +0200 Subject: [PATCH 019/176] Rename Mw files: MwIS for I-CSCF <-> S-CSCF and MwSI for S-CSCF <-> IBCF/P-CSCF --- test_purposes/Mw/{TP_MW_SS.tplan2 => TP_MW_IS.tplan2} | 0 test_purposes/Mw/{TP_MW_IB.tplan2 => TP_MW_SI.tplan2} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename test_purposes/Mw/{TP_MW_SS.tplan2 => TP_MW_IS.tplan2} (100%) rename test_purposes/Mw/{TP_MW_IB.tplan2 => TP_MW_SI.tplan2} (100%) diff --git a/test_purposes/Mw/TP_MW_SS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2 similarity index 100% rename from test_purposes/Mw/TP_MW_SS.tplan2 rename to test_purposes/Mw/TP_MW_IS.tplan2 diff --git a/test_purposes/Mw/TP_MW_IB.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 similarity index 100% rename from test_purposes/Mw/TP_MW_IB.tplan2 rename to test_purposes/Mw/TP_MW_SI.tplan2 -- GitLab From 6f2d83e31efc375816c8c8da9ac1fdcca537cc15 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 30 Mar 2020 10:37:29 +0200 Subject: [PATCH 020/176] Add new configurations --- test_purposes/Gm/TP_GM.tplan2 | 200 ++- test_purposes/Mw/TP_MW_IB.tplan2 | 1281 ++++++++++-------- test_purposes/Mw/TP_MW_PS.tplan2 | 109 +- test_purposes/Mw/TP_MW_SS.tplan2 | 2176 +----------------------------- test_purposes/Sip_Common.tplan2 | 8 +- 5 files changed, 965 insertions(+), 2809 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 44135b7..1706551 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -13,6 +13,7 @@ copyright notice shall be included in all copies of whole or part of this file and shall not imply any sub-license right. */ +/* Gm interface at UE/P-CSCF */ Package TP_GM { import all from Sip_Common; @@ -78,7 +79,7 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_01 - Test objective "Verify that the P-CSCF successfully processes a first registration." + Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) @@ -142,7 +143,7 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_02 - Test objective "Verify that the P-CSCF successfully processes a full registration." + Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_GM_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) @@ -209,7 +210,7 @@ Package TP_GM { // TD_IMS_REG_0003 from ETSI TS 186 011-2 V5.1.1 (2013-10) // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes an invalid first registration." + Test objective "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)." Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" @@ -243,11 +244,13 @@ Package TP_GM { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "" ;; + from the UE_A entity and the IMS_P_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID ; + to the UE_A entity } } } // End of TP_GM_PCSCF_REGISTER_03 @@ -256,14 +259,14 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_04 - Test objective "Verify that the P-CSCF successfully processes a first registration." + Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -321,14 +324,14 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_05 - Test objective "Verify that the P-CSCF successfully processes a full registration." + Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_GM_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.13" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -389,12 +392,12 @@ Package TP_GM { // TD_IMS_REG_0003 from ETSI TS 186 011-2 V5.1.1 (2013-10) // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes an invalid first registration." + Test objective "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.1" + "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -438,7 +441,7 @@ Package TP_GM { // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a user de-registration." + Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" @@ -472,12 +475,12 @@ Package TP_GM { // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a user de-registration." + Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -500,6 +503,8 @@ Package TP_GM { } } // End of TP_GM_PCSCF_REGISTER_08 + // TP_GM_PCSCF_REGISTER_09 Not applicable + Test Purpose { TP Id TP_GM_PCSCF_SUBSCRIBE_01 @@ -558,7 +563,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1954,7 +1959,7 @@ Package TP_GM { Reference "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2052,7 +2057,14 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend a BYE + the IMS_P_CSCF_A entity sends a 200_Ok containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + ; + from the IMS_S_CSCF_A entity } then { the IMS_P_CSCF_A entity sends a 200_Ok containing @@ -2060,7 +2072,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE + Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity @@ -2094,7 +2106,14 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_B entity isRequestedToSend a BYE + the IMS_P_CSCF_B entity receives a 200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + ; + from the IMS_S_CSCF_B entity } then { the IMS_P_CSCF_B entity sends a 200_Ok containing @@ -2117,7 +2136,7 @@ Package TP_GM { TP Id TP_GM_PCSCF_200OK_BYE_03 - Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Network initiated)." Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" @@ -2144,12 +2163,147 @@ Package TP_GM { not PChargingFunctionAddresses, not PPreferredIdentity ; - to the UE_A entity + to the IMS_S_CSCF_A entity } } } // End of TP_GM_PCSCF_200OK_03 + Test Purpose { + + TP Id TP_GM_PCSCF_200OK_BYE_04 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." + + Reference + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity receives a 200_Ok containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + ; + from the IMS_S_CSCF_B entity + } + then { + the IMS_P_CSCF_B entity sends a 200_Ok containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity + ; + to the UE_A entity + } + } + + } // End of TP_GM_PCSCF_200OK_04 + + Test Purpose { + + TP Id TP_GM_PCSCF_200OK_BYE_05 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." + + Reference + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a 200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE + ; + from the IMS_S_CSCF_A entity + } + then { + the IMS_P_CSCF_A entity sends a 200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity + ; + to the UE_B entity + } + } + + } // End of TP_GM_PCSCF_200OK_05 + + Test Purpose { + + TP Id TP_GM_PCSCF_200OK_BYE_06 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Network initiated)." + + Reference + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a 200_Ok + } + then { + the IMS_P_CSCF_A entity sends a 200_Ok containing + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity + ; + to the IMS_S_CSCF_A entity + } + } + + } // End of TP_GM_PCSCF_200OK_06 + Test Purpose { TP Id TP_GM_PCSCF_CANCEL_01 @@ -2351,7 +2505,7 @@ Package TP_GM { not PChargingFunctionAddresses, not PPreferredIdentity ; - from the UE_A entity + from the IMS_S_CSCF_A entity } } @@ -2581,7 +2735,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2623,7 +2777,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE diff --git a/test_purposes/Mw/TP_MW_IB.tplan2 b/test_purposes/Mw/TP_MW_IB.tplan2 index 9523aa3..c6bf71b 100644 --- a/test_purposes/Mw/TP_MW_IB.tplan2 +++ b/test_purposes/Mw/TP_MW_IB.tplan2 @@ -13,7 +13,7 @@ copyright notice shall be included in all copies of whole or part of this file and shall not imply any sub-license right. */ -/* Mw interface at I-CSCF/IBCF */ +/* Mw interface at S-CSCF/IBCF */ Package TP_MW_IB { import all from Sip_Common; @@ -59,7 +59,7 @@ Package TP_MW_IB { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a first registration." + Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" @@ -125,7 +125,7 @@ Package TP_MW_IB { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a full registration." + Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" @@ -198,70 +198,7 @@ Package TP_MW_IB { } } // End of TP_MW_ICSCF_REGISTER_02 - Test Purpose { - - TP Id TP_MW_ICSCF_REGISTER_03 - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the I-CSCF successfully processes a invalid first registration." - - Reference - "ETSI TS 124 229 [2], Clause 5.3.1.2" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_A entity isNotRegisteredTo the IMS_A and - the UE_B entity isNotRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_I_CSCF_A entity receives a REGISTER containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Authorization containing - Authentication_Schema indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UE_A_INVALID_USERNAME, - Realm indicating value PX_UE_A_REALM, - Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "" - ;; - from the IMS_I_CSCF_A entity - } - then { - the IMS_I_CSCF_A entity sends a REGISTER containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Authorization containing - Authentication_Scheme indicating value PX_TO_BE_DEFINED, - Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UE_A_INVALID_USERNAME, - Realm indicating value PX_UE_A_REALM, - Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "not empty", - qop indicating value "auth", - PChargingVector - ;; - to the IMS_IBCF_A entity - and the IMS_I_CSCF_A entity sends an 404_NotFound containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID - ; - to the IMS_S_CSCF_A entity - } - } - } // End of TP_MW_ICSCF_REGISTER_03 + // TP_MW_ICSCF_REGISTER_03 not applicable Test Purpose { @@ -269,12 +206,12 @@ Package TP_MW_IB { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a first registration." + Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -337,20 +274,20 @@ Package TP_MW_IB { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a full registration." + Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_A entity isNotRegisteredTo the IMS_B and the UE_B entity isNotRegisteredTo the IMS_B and - the IMS_S_CSCF_A entity hasAchieveFirstREGISTER + the UE_A entity hasAchieveFirstREGISTER } Expected behaviour @@ -418,17 +355,17 @@ Package TP_MW_IB { TP Id TP_MW_ICSCF_REGISTER_06 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a invalid first registration." + Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference "ETSI TS 124 229 [2], Clause 5.3.1.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_A entity isNotRegisteredTo the IMS_B and the UE_B entity isNotRegisteredTo the IMS_B } @@ -481,16 +418,59 @@ Package TP_MW_IB { } } // End of TP_MW_ICSCF_REGISTER_06 + // TP_MW_ICSCF_REGISTER_07 not applicable + Test Purpose { - TP Id TP_MW_ICSCF_SUBSCRIBE_01 + TP Id TP_MW_ICSCF_REGISTER_08 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.1.5 and Clause 6.3" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_IBCF_A entity receives a REGISTER containing + Expire indicating value 0 + ; + from the IMS_IBCF_B entity + } + then { + the IMS_IBCF_A entity forwards a REGISTER containing + Expire indicating value 0 + ; + to the IMS_I_CSCF_A entity + and the IMS_I_CSCF_A entity forwards a REGISTER containing + Expire indicating value 0 + ; + to the IMS_S_CSCF_A entity + } + } + } // End of TP_MW_ICSCF_REGISTER_08 + + Test Purpose { + + TP Id TP_MW_SCSCF_SUBSCRIBE_01 // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a SUBSCRIBE." + Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], Clause 5.3.0" + "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" Config Id CF_VxLTE_INT @@ -504,54 +484,54 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity sends an SUBSCRIBE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_P_CSCF_A entity sends an SUBSCRIBE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, Event, Expires // TODO To be continued ; - to the IMS_I_CSCF_A entity + to the IMS_S_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an SUBSCRIBE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_A entity sends an SUBSCRIBE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, Event, Expires // TODO To be continued ; - to the IMS_IBCF_A entity - and the IMS_I_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA + to the IMS_I_CSCF_A entity + and the IMS_S_CSCF_A entity sends a 200_Ok containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA // TODO To be continued ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_SUBSCRIBE_01 + } // End of TP_MW_SCSCF_SUBSCRIBE_01 Test Purpose { - TP Id TP_MW_ICSCF_SUBSCRIBE_02 + TP Id TP_MW_SCSCF_SUBSCRIBE_02 // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a SUBSCRIBE." + Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], Clause 5.3.0" + "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -563,51 +543,132 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_B entity sends an SUBSCRIBE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_P_CSCF_B entity sends an SUBSCRIBE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, Event, Expires // TODO To be continued ; - to the IMS_I_CSCF_B entity + to the IMS_S_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends an SUBSCRIBE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_B entity sends an SUBSCRIBE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, Event, Expires // TODO To be continued ; - to the IMS_IBCF_B entity - and the IMS_I_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA + to the IMS_I_CSCF_B entity + and the IMS_S_CSCF_B entity sends a 200_Ok containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA // TODO To be continued ; - to the IMS_S_CSCF_B entity + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_SUBSCRIBE_02 + } // End of TP_MW_SCSCF_SUBSCRIBE_02 Test Purpose { - TP Id TP_MW_ICSCF_INVITE_01 + TP Id TP_MW_SCSCF_NOTIFY_01 + + Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the IMS_S_CSCF_A entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + // TODO To be continued + ; + to the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity receives an 200_Ok + from the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity sends an NOTIFY containing + Event indicating value "de-reg" + // TODO To be continued + ; + to the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity receives an 200_Ok + from the IMS_P_CSCF_A entity + } + } + } // End of TP_MW_SCSCF_NOTIFY_01 + + Test Purpose { + + TP Id TP_MW_SCSCF_NOTIFY_02 + + Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the IMS_S_CSCF_A entity sends an NOTIFY containing + Event indicating value "de-reg" + // TODO To be continued + ; + to the IMS_P_CSCF_A entity and + the IMS_S_CSCF_A entity receives an 200_Ok + from the IMS_P_CSCF_A entity + } + } + } // End of TP_MW_SCSCF_NOTIFY_02 + + Test Purpose { + + TP Id TP_MW_SCSCF_INVITE_01 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" + "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -623,12 +684,12 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_A entity receives an INVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -636,15 +697,15 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_A entity sends an INVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, ContentType indicating value "application/sdp", ContentLength, @@ -654,21 +715,21 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_IBCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_INVITE_01 + } // End of TP_MW_SCSCF_INVITE_01 Test Purpose { - TP Id TP_MW_ICSCF_INVITE_02 + TP Id TP_MW_SCSCF_INVITE_02 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" + "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -684,12 +745,12 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_B entity receives an INVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -700,12 +761,12 @@ Package TP_MW_IB { from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_B entity sends an INVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, ContentType indicating value "application/sdp", ContentLength, @@ -715,21 +776,21 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_IBCF_B entity + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_INVITE_02 + } // End of TP_MW_SCSCF_INVITE_02 Test Purpose { - TP Id TP_MW_ICSCF_INVITE_03 + TP Id TP_MW_SCSCF_INVITE_03 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" + "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -745,7 +806,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives an INVITE containing + the IMS_S_CSCF_B entity receives an INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -758,7 +819,7 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { the IMS_S_CSCF_B entity sends an INVITE containing @@ -776,21 +837,21 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_IBCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_INVITE_03 + } // End of TP_MW_SCSCF_INVITE_03 Test Purpose { - TP Id TP_MW_ICSCF_INVITE_04 + TP Id TP_MW_SCSCF_INVITE_04 // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes an initial INVITE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.3.2.1 and Clause 5.3.2.1A" + "ETSI TS 124 229 [2], Clause 5.3.2.1 and Clause 5.3.2.1A" Config Id CF_VxLTE_RMI @@ -806,7 +867,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives an INVITE containing + the IMS_S_CSCF_A entity receives an INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -819,10 +880,10 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an INVITE containing + the IMS_S_CSCF_A entity sends an INVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -837,20 +898,22 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_INVITE_04 + } // End of TP_MW_SCSCF_INVITE_04 Test Purpose { - TP Id TP_MW_ICSCF_100TRY_01 + TP Id TP_MW_SCSCF_100TRY_01 + // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -866,25 +929,27 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 100_Trying - from the IMS_IBCF_A entity + the IMS_S_CSCF_A entity receives a 100_Trying + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 100_Trying - to the IMS_S_CSCF_A entity + the IMS_S_CSCF_A entity sends a 100_Trying + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_100TRY_01 + } // End of TP_MW_SCSCF_100TRY_01 Test Purpose { - TP Id TP_MW_ICSCF_100TRY_02 + TP Id TP_MW_SCSCF_100TRY_02 + // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -900,25 +965,27 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 100_Trying - from the UE_B entity + the IMS_S_CSCF_B entity receives a 100_Trying + from the IMS_P_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 100_Trying + the IMS_S_CSCF_B entity sends a 100_Trying to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_100TRY_02 + } // End of TP_MW_SCSCF_100TRY_02 Test Purpose { - TP Id TP_MW_ICSCF_100TRY_03 + TP Id TP_MW_SCSCF_100TRY_03 + // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -934,25 +1001,27 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 100_Trying - from the IMS_IBCF_B entity + the IMS_S_CSCF_B entity receives a 100_Trying + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 100_Trying - to the IMS_S_CSCF_B entity + the IMS_S_CSCF_B entity sends a 100_Trying + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_100TRY_03 + } // End of TP_MW_SCSCF_100TRY_03 Test Purpose { - TP Id TP_MW_ICSCF_100TRY_04 + TP Id TP_MW_SCSCF_100TRY_04 + // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) + // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -968,27 +1037,25 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 100_Trying - from the IMS_S_CSCF_A entity + the IMS_S_CSCF_A entity receives a 100_Trying + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 100_Trying - to the IMS_IBCF_A entity + the IMS_S_CSCF_A entity sends a 100_Trying + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_100TRY_04 + } // End of TP_MW_SCSCF_100TRY_04 Test Purpose { - TP Id TP_MW_ICSCF_180RINGING_01 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) + TP Id TP_MW_SCSCF_180RINGING_01 - Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1004,31 +1071,29 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 180_Ringing - from the IMS_IBCF_A entity + the IMS_S_CSCF_A entity receives a 180_Ringing + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 180_Ringing containing + the IMS_S_CSCF_A entity sends a 180_Ringing containing PChargingVector, PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_180RINGING_01 + } // End of TP_MW_SCSCF_180RINGING_01 Test Purpose { - TP Id TP_MW_ICSCF_180RINGING_02 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) + TP Id TP_MW_SCSCF_180RINGING_02 - Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1044,11 +1109,11 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 180_Ringing - from the UE_B entity + the IMS_S_CSCF_B entity receives a 180_Ringing + from the IMS_P_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 180_Ringing containing + the IMS_S_CSCF_B entity sends a 180_Ringing containing PChargingVector, PChargingFunctionAddresses, PPreferredIdentity @@ -1057,16 +1122,16 @@ Package TP_MW_IB { } } - } // End of TP_MW_ICSCF_180RINGING_02 + } // End of TP_MW_SCSCF_180RINGING_02 Test Purpose { - TP Id TP_MW_ICSCF_180RINGING_03 + TP Id TP_MW_SCSCF_180RINGING_03 - Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -1082,25 +1147,25 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 180_Ringing - from the IMS_IBCF_B entity + the IMS_S_CSCF_B entity receives a 180_Ringing + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 180_Ringing - to the IMS_S_CSCF_B entity + the IMS_S_CSCF_B entity sends a 180_Ringing + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_180RINGING_03 + } // End of TP_MW_SCSCF_180RINGING_03 Test Purpose { - TP Id TP_MW_ICSCF_180RINGING_04 + TP Id TP_MW_SCSCF_180RINGING_04 - Test objective "Verify that the I-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5" + "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -1116,27 +1181,27 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 180_Ringing - from the IMS_S_CSCF_A entity + the IMS_S_CSCF_A entity receives a 180_Ringing + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 180_Ringing - to the IMS_IBCF_A entity + the IMS_S_CSCF_A entity sends a 180_Ringing + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_180RINGING_04 + } // End of TP_MW_SCSCF_180RINGING_04 Test Purpose { - TP Id TP_MW_ICSCF_200OK_01 + TP Id TP_MW_SCSCF_200OK_01 // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1152,35 +1217,35 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 200_Ok containing + the IMS_S_CSCF_A entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 200_Ok containing + the IMS_S_CSCF_A entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_IBCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_200OK_01 + } // End of TP_MW_SCSCF_200OK_01 Test Purpose { - TP Id TP_MW_ICSCF_200OK_02 + TP Id TP_MW_SCSCF_200OK_02 // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1196,35 +1261,35 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 200_Ok containing + the IMS_S_CSCF_A entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity ; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 200_Ok containing + the IMS_S_CSCF_A entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_200OK_02 + } // End of TP_MW_SCSCF_200OK_02 Test Purpose { - TP Id TP_MW_ICSCF_ACK_01 + TP Id TP_MW_SCSCF_ACK_01 // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1240,41 +1305,41 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives an ACK containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_P_CSCF_A entity receives an ACK containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_I_CSCF_A entity + from the IMS_S_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an ACK containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity sends an ACK containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_ACK_01 + } // End of TP_MW_SCSCF_ACK_01 Test Purpose { - TP Id TP_MW_ICSCF_ACK_02 + TP Id TP_MW_SCSCF_ACK_02 // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1290,38 +1355,38 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives an ACK containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity receives an ACK containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an ACK containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity sends an ACK containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_ACK_02 + } // End of TP_MW_SCSCF_ACK_02 Test Purpose { - TP Id TP_MW_ICSCF_RE_INVITE_01 + TP Id TP_MW_SCSCF_RE_INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes an initial RE-INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" @@ -1335,18 +1400,18 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the IMS_S_CSCF_A entity previouslyEstablishedCallWith the UE_B + the IMS_P_CSCF_A entity previouslyEstablishedCallWith the IMS_P_CSCF_B } Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives an ReINVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_P_CSCF_A entity receives an ReINVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1354,15 +1419,15 @@ Package TP_MW_IB { // TODO To be continued ; ;; - to the IMS_I_CSCF_A entity + to the IMS_S_CSCF_A entity } then { - the IMS_I_CSCF_A entity receives an ReINVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_A entity receives an ReINVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1370,18 +1435,18 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_RE_INVITE_01 + } // End of TP_MW_SCSCF_RE_INVITE_01 Test Purpose { - TP Id TP_MW_ICSCF_RE_INVITE_02 + TP Id TP_MW_SCSCF_RE_INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes an initial RE-INVITE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" @@ -1395,18 +1460,18 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity previouslyEstablishedCallWith the IMS_S_CSCF_A + the IMS_P_CSCF_B entity previouslyEstablishedCallWith the IMS_P_CSCF_A } Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives an ReINVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_B entity receives an ReINVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1417,12 +1482,12 @@ Package TP_MW_IB { to the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity receives an ReINVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + the IMS_S_CSCF_B entity receives an ReINVITE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1430,18 +1495,18 @@ Package TP_MW_IB { // TODO To be continued ; ;; - from the UE_B entity + from the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_RE_INVITE_02 + } // End of TP_MW_SCSCF_RE_INVITE_02 Test Purpose { - TP Id TP_MW_ICSCF_BYE_01 + TP Id TP_MW_SCSCF_BYE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a BYE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Leg)." Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" @@ -1455,44 +1520,44 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the IMS_S_CSCF_A entity previouslyEstablishedCallWith the UE_B + the UE_A entity previouslyEstablishedCallWith the UE_B } Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_P_CSCF_A entity receives an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; from the IMS_S_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_BYE_01 + } // End of TP_MW_SCSCF_BYE_01 Test Purpose { - TP Id TP_MW_ICSCF_BYE_02 + TP Id TP_MW_SCSCF_BYE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a BYE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)." Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" @@ -1506,49 +1571,99 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity previouslyEstablishedCallWith the IMS_S_CSCF_A + the UE_B entity previouslyEstablishedCallWith the UE_A } Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_B entity receives an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_B entity + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_B entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_B entity + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_BYE_02 + } // End of TP_MW_SCSCF_BYE_02 - // TP_MW_ICSCF_BYE_03 Not applicable, re-use TP_MW_ICSCF_BYE_01 + Test Purpose { + + TP Id TP_MW_SCSCF_BYE_03 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Network)." + + Reference + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the IMS_P_CSCF_B entity previouslyEstablishedCallWith the IMS_P_CSCF_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity isNoLongerAvailable + } + then { + the IMS_S_CSCF_A entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_P_CSCF_A entity + and the IMS_S_CSCF_A entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_I_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_BYE_03 Test Purpose { - TP Id TP_MW_ICSCF_BYE_04 + TP Id TP_MW_SCSCF_BYE_04 - Test objective "Verify that the I-CSCF successfully processes a BYE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Leg)." Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1563,7 +1678,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives an BYE containing + the IMS_S_CSCF_B entity receives an BYE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1571,10 +1686,10 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends an BYE containing + the IMS_S_CSCF_B entity sends an BYE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1582,22 +1697,22 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_BYE_04 + } // End of TP_MW_SCSCF_BYE_04 Test Purpose { - TP Id TP_MW_ICSCF_BYE_05 + TP Id TP_MW_SCSCF_BYE_05 - Test objective "Verify that the I-CSCF successfully processes a BYE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)." Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1606,24 +1721,24 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_A and - the UE_B entity previouslyEstablishedCallWith the UE_A + the UE_A entity previouslyEstablishedCallWith the UE_B } Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity receives an BYE containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an BYE containing + the IMS_S_CSCF_A entity sends an BYE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1631,17 +1746,69 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + to the IMS_I_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_BYE_05 + + Test Purpose { + + TP Id TP_MW_SCSCF_BYE_06 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Network)." + + Reference + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and + the IMS_P_CSCF_B entity previouslyEstablishedCallWith the IMS_P_CSCF_A + } + + Expected behaviour + ensure that { + when { + the UE_B entity isNoLongerAvailable + } + then { + the IMS_S_CSCF_A entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_P_CSCF_A entity + and the IMS_S_CSCF_A entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE + // TODO To be continued + ; + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_BYE_05 + } // End of TP_MW_SCSCF_BYE_06 Test Purpose { - TP Id TP_MW_ICSCF_200OK_BYE_01 + TP Id TP_MW_SCSCF_200OK_BYE_01 - Test objective "Verify that the I-CSCF successfully processes a 200 (OK) BYE (Originating Leg/Originating Network)." + Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Originating Leg/Originating Network)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -1654,14 +1821,13 @@ Package TP_MW_IB { the UE_A entity isAttachedTo the EPC_A and the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity previouslyEstablishedCallWith the UE_B + the UE_B entity isRegisteredTo the IMS_B } Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 200_Ok containing + the IMS_S_CSCF_A entity receives a 200_Ok containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -1669,7 +1835,7 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } then { the IMS_S_CSCF_A entity sends a 200_Ok containing @@ -1680,17 +1846,17 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_200OK_BYE_01 + } // End of TP_MW_SCSCF_200OK_BYE_01 Test Purpose { - TP Id TP_MW_ICSCF_200OK_BYE_02 + TP Id TP_MW_SCSCF_200OK_BYE_02 - Test objective "Verify that the I-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -1703,14 +1869,13 @@ Package TP_MW_IB { the UE_A entity isAttachedTo the EPC_A and the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity previouslyEstablishedCallWith the UE_A + the UE_B entity isRegisteredTo the IMS_B } Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 200_Ok containing + the IMS_S_CSCF_B entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1718,10 +1883,10 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_B entity + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 200_Ok containing + the IMS_S_CSCF_B entity sends a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1729,19 +1894,19 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_S_CSCF_B entity + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_200OK_BYE_02 + } // End of TP_MW_SCSCF_200OK_BYE_02 - // TP_MW_ICSCF_200OK_BYE_03 not applicable, re-use TP_MW_ICSCF_200OK_BYE_01 + // TP_MW_SCSCF_200OK_BYE_03 not applicable, re-use TP_MW_SCSCF_200OK_BYE_01 Test Purpose { - TP Id TP_MW_ICSCF_200OK_BYE_04 + TP Id TP_MW_SCSCF_200OK_BYE_04 - Test objective "Verify that the I-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -1754,14 +1919,13 @@ Package TP_MW_IB { the UE_A entity isAttachedTo the EPC_B and the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity previouslyEstablishedCallWith the UE_B + the UE_B entity isRegisteredTo the IMS_B } Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 200_Ok containing + the IMS_S_CSCF_B entity receives a 200_Ok containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -1769,10 +1933,10 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_B entity + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 200_Ok containing + the IMS_S_CSCF_B entity sends a 200_Ok containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -1780,17 +1944,17 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_I_CSCF_B entity + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_200OK_BYE_04 + } // End of TP_MW_SCSCF_200OK_BYE_04 Test Purpose { - TP Id TP_MW_ICSCF_200OK_BYE_05 + TP Id TP_MW_SCSCF_200OK_BYE_05 - Test objective "Verify that the I-CSCF successfully processes a 200 (OK) BYE (Terminating Leg/Originating Network)." + Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Terminating Leg/Originating Network)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -1803,8 +1967,7 @@ Package TP_MW_IB { the UE_A entity isAttachedTo the EPC_A and the UE_B entity isAttachedTo the EPC_A and the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A and - the UE_A entity previouslyEstablishedCallWith the UE_B + the UE_B entity isRegisteredTo the IMS_A } Expected behaviour @@ -1833,20 +1996,20 @@ Package TP_MW_IB { } } - } // End of TP_MW_ICSCF_200OK_BYE_05 + } // End of TP_MW_SCSCF_200OK_BYE_05 - // TP_MW_ICSCF_200OK_BYE_06 Not applicable, re-use TP_MW_ICSCF_200OK_BYE_05 + // TP_MW_SCSCF_200OK_BYE_06 Not applicable, re-use TP_MW_SCSCF_200OK_BYE_05 Test Purpose { - TP Id TP_MW_ICSCF_CANCEL_01 + TP Id TP_MW_SCSCF_CANCEL_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a CANCEL (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1857,48 +2020,48 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the IMS_S_CSCF_A entity hasAchieveInitialINVITE and + the IMS_P_CSCF_A entity hasAchieveInitialINVITE and the UE_A entity isRequestedToSend a CANCEL } Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity receives an CANCEL containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity sends an CANCEL containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_CANCEL_01 + } // End of TP_MW_SCSCF_CANCEL_01 Test Purpose { - TP Id TP_MW_ICSCF_CANCEL_02 + TP Id TP_MW_SCSCF_CANCEL_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a CANCEL (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1909,48 +2072,48 @@ Package TP_MW_IB { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity hasAchieveInitialINVITE and + the IMS_P_CSCF_B entity hasAchieveInitialINVITE and the UE_A entity isRequestedToSend a CANCEL } Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_B entity receives an CANCEL containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + the IMS_S_CSCF_B entity sends an CANCEL containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_CANCEL_02 + } // End of TP_MW_SCSCF_CANCEL_02 Test Purpose { - TP Id TP_MW_ICSCF_CANCEL_03 + TP Id TP_MW_SCSCF_CANCEL_03 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a CANCEL (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -1968,7 +2131,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives an CANCEL containing + the IMS_S_CSCF_B entity receives an CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1976,10 +2139,10 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends an CANCEL containing + the IMS_S_CSCF_B entity sends an CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1987,22 +2150,22 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_CANCEL_03 + } // End of TP_MW_SCSCF_CANCEL_03 Test Purpose { - TP Id TP_MW_ICSCF_CANCEL_04 + TP Id TP_MW_SCSCF_CANCEL_04 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the I-CSCF successfully processes a CANCEL (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_RMI @@ -2020,7 +2183,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives an CANCEL containing + the IMS_S_CSCF_A entity receives an CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2028,10 +2191,10 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends an CANCEL containing + the IMS_S_CSCF_A entity sends an CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2039,21 +2202,21 @@ Package TP_MW_IB { Route indicating value PX_UE_A_SERVICE_ROUTE // TODO To be continued ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_CANCEL_04 + } // End of TP_MW_SCSCF_CANCEL_04 Test Purpose { - TP Id TP_MW_PCSCF_486INVITE_01 + TP Id TP_MW_SCSCF_486INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], clauses Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_INT @@ -2070,40 +2233,40 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE + the IMS_S_CSCF_A entity receives a 486_INVITE containing + From indicating value PX_UA_B_SIP_URI, + To indicating value PX_UA_A_SIP_URI, + CallId indicating value PX_UA_B_CALLID, + Via indicating value PX_UA_B_VIA, + Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE + the IMS_S_CSCF_A entity sends a 486_INVITE containing + From indicating value PX_UA_B_SIP_URI, + To indicating value PX_UA_A_SIP_URI, + CallId indicating value PX_UA_B_CALLID, + Via indicating value PX_UA_B_VIA, + Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_486INVITE_01 + } // End of TP_MW_SCSCF_486INVITE_01 Test Purpose { - TP Id TP_MW_PCSCF_486INVITE_02 + TP Id TP_MW_SCSCF_486INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_INT @@ -2120,42 +2283,42 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE + the IMS_S_CSCF_B entity receives a 486_INVITE containing + From indicating value PX_UA_B_SIP_URI, + To indicating value PX_UA_A_SIP_URI, + CallId indicating value PX_UA_B_CALLID, + Via indicating value PX_UA_B_VIA, + Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE + the IMS_S_CSCF_B entity sends a 486_INVITE containing + From indicating value PX_UA_B_SIP_URI, + To indicating value PX_UA_A_SIP_URI, + CallId indicating value PX_UA_B_CALLID, + Via indicating value PX_UA_B_VIA, + Route indicating value PX_UA_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_486INVITE_02 + } // End of TP_MW_SCSCF_486INVITE_02 Test Purpose { - TP Id TP_MW_ICSCF_486INVITE_03 + TP Id TP_MW_SCSCF_486INVITE_03 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.2" + "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2170,7 +2333,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 486_INVITE containing + the IMS_S_CSCF_B entity receives a 486_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2178,10 +2341,10 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_B entity + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 486_INVITE containing + the IMS_S_CSCF_B entity sends a 486_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2189,23 +2352,23 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_S_CSCF_B entity + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_486INVITE_03 + } // End of TP_MW_SCSCF_486INVITE_03 Test Purpose { - TP Id TP_MW_ICSCF_486INVITE_04 + TP Id TP_MW_SCSCF_486INVITE_04 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the I-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2220,7 +2383,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 486_INVITE containing + the IMS_S_CSCF_A entity receives a 486_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2228,10 +2391,10 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 486_INVITE containing + the IMS_S_CSCF_A entity sends a 486_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2239,21 +2402,21 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_486INVITE_04 + } // End of TP_MW_SCSCF_486INVITE_04 Test Purpose { - TP Id TP_MW_ICSCF_487INVITE_01 + TP Id TP_MW_SCSCF_487INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the I-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2270,7 +2433,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 487_INVITE containing + the IMS_S_CSCF_A entity receives a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2278,10 +2441,10 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 487_INVITE containing + the IMS_S_CSCF_A entity sends a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2289,21 +2452,21 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_S_CSCF_A entity + to the IMS_P_CSCF_A entity } } - } // End of TP_MW_ICSCF_487INVITE_01 + } // End of TP_MW_SCSCF_487INVITE_01 Test Purpose { - TP Id TP_MW_ICSCF_487INVITE_02 + TP Id TP_MW_SCSCF_487INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2320,7 +2483,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 487_INVITE containing + the IMS_S_CSCF_B entity receives a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2328,10 +2491,10 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 487_INVITE containing + the IMS_S_CSCF_B entity sends a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2339,21 +2502,21 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_B entity + to the IMS_I_CSCF_B entity } } - } // End of TP_MW_ICSCF_487INVITE_02 + } // End of TP_MW_SCSCF_487INVITE_02 Test Purpose { - TP Id TP_MW_ICSCF_487INVITE_03 + TP Id TP_MW_SCSCF_487INVITE_03 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the I-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI @@ -2370,7 +2533,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_B entity receives a 487_INVITE containing + the IMS_S_CSCF_B entity receives a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2378,10 +2541,10 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_IBCF_B entity + from the IMS_I_CSCF_B entity } then { - the IMS_I_CSCF_B entity sends a 487_INVITE containing + the IMS_S_CSCF_B entity sends a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2389,21 +2552,21 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_S_CSCF_B entity + to the IMS_P_CSCF_B entity } } - } // End of TP_MW_ICSCF_487INVITE_03 + } // End of TP_MW_SCSCF_487INVITE_03 Test Purpose { - TP Id TP_MW_ICSCF_487INVITE_04 + TP Id TP_MW_SCSCF_487INVITE_04 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7" + "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI @@ -2420,7 +2583,7 @@ Package TP_MW_IB { Expected behaviour ensure that { when { - the IMS_I_CSCF_A entity receives a 487_INVITE containing + the IMS_S_CSCF_A entity receives a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2428,10 +2591,10 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { - the IMS_I_CSCF_A entity sends a 487_INVITE containing + the IMS_S_CSCF_A entity sends a 487_INVITE containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, @@ -2439,11 +2602,11 @@ Package TP_MW_IB { Route indicating value PX_UE_B_SERVICE_ROUTE // TODO To be continued ; - to the IMS_IBCF_A entity + to the IMS_I_CSCF_A entity } } - } // End of TP_MW_ICSCF_487INVITE_04 + } // End of TP_MW_SCSCF_487INVITE_04 } // End of Package TP_MW_IB diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 6129aa4..6e21f1b 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -13,7 +13,7 @@ copyright notice shall be included in all copies of whole or part of this file and shall not imply any sub-license right. */ -/* Mw interface at P-CSCF/S-CSCF */ +/* Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used*/ Package TP_MW_PS { import all from Sip_Common; @@ -67,65 +67,13 @@ Package TP_MW_PS { } } // End of TP_MW_PCSCF_MESSAGE_01 - Test Purpose { - - TP Id TP_MW_PCSCF_MESSAGE_02 - // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 500 bytes" - - Reference - "TS 124 229 (V15.6.0) [1], clause 4.2A" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A - } - - Expected behaviour - ensure that { - when { - the IMS_P_CSCF_A entity receives a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - PChargingVector containing - orig_ioi indicating value PX_OPERATOR_ID_A, - term_ioi indicating value PX_OPERATOR_ID_B, - not PAccessNetworkInfo - ;; - from the IMS_S_CSCF_A entity - } - then { - the IMS_P_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - PChargingVector containing - orig_ioi indicating value PX_OPERATOR_ID_A, - term_ioi indicating value PX_OPERATOR_ID_B, - not PAccessNetworkInfo - ;; - to the UE_A entity - } - } - - } // End of TP_MW_PCSCF_MESSAGE_02 - Test Purpose { TP Id TP_MW_PCSCF_REGISTER_01 // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a first registration." + Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" @@ -164,7 +112,7 @@ Package TP_MW_PS { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_I_CSCF_A entity + to the IMS_S_CSCF_A entity and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -191,7 +139,7 @@ Package TP_MW_PS { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a full registration." + Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" @@ -242,7 +190,7 @@ Package TP_MW_PS { qop indicating value "auth", PChargingVector ;; - to the IMS_I_CSCF_A entity + to the IMS_S_CSCF_A entity and the IMS_P_CSCF_A entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -269,7 +217,7 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_REGISTER_03 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a invalid first registration." + Test objective "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" @@ -319,7 +267,7 @@ Package TP_MW_PS { PChargingVector ;; to the IMS_I_CSCF_A entity - and the IMS_P_CSCF_A entity sends an 404_NotFound containing + and the IMS_I_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID @@ -335,12 +283,12 @@ Package TP_MW_PS { // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a first registration." + Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -374,7 +322,7 @@ Package TP_MW_PS { Require_HDR indicating value "path", Supported indicating value "path" ;; - to the IMS_I_CSCF_B entity + to the IMS_S_CSCF_B entity and the IMS_P_CSCF_B entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, @@ -401,12 +349,12 @@ Package TP_MW_PS { // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a full registration." + Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -481,12 +429,12 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_REGISTER_06 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a invalid first registration." + Test objective "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -548,7 +496,7 @@ Package TP_MW_PS { // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a user de-registration." + Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" @@ -574,7 +522,7 @@ Package TP_MW_PS { the IMS_P_CSCF_A entity sends a REGISTER containing Expire indicating value 0 ; - to the IMS_S_CSCF_A entity + to the IMS_I_CSCF_A entity } } } // End of TP_MW_PCSCF_REGISTER_07 @@ -585,12 +533,12 @@ Package TP_MW_PS { // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a user de-registration." + Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -622,7 +570,7 @@ Package TP_MW_PS { // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a network de-registration." + Test objective "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" @@ -632,8 +580,7 @@ Package TP_MW_PS { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A + the UE_A entity isAttachedTo the EPC_A } Expected behaviour @@ -645,7 +592,7 @@ Package TP_MW_PS { the IMS_P_CSCF_A entity sends a REGISTER containing Expire indicating value 0 ; - to the IMS_S_CSCF_A entity + to the IMS_I_CSCF_A entity } } } // End of TP_MW_PCSCF_REGISTER_09 @@ -720,7 +667,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.3B and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2194,7 +2141,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2412,7 +2359,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2460,7 +2407,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2508,7 +2455,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -2865,7 +2812,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2915,7 +2862,7 @@ Package TP_MW_PS { Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE diff --git a/test_purposes/Mw/TP_MW_SS.tplan2 b/test_purposes/Mw/TP_MW_SS.tplan2 index 885ec94..09a82d9 100644 --- a/test_purposes/Mw/TP_MW_SS.tplan2 +++ b/test_purposes/Mw/TP_MW_SS.tplan2 @@ -13,7 +13,7 @@ copyright notice shall be included in all copies of whole or part of this file and shall not imply any sub-license right. */ -/* Mw interface at P-CSCF/S-CSCF */ +/* Mw interface at I-CSCF/S-CSCF */ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, not MwSS import all from Sip_Common; @@ -59,7 +59,7 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a first registration." + Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" @@ -112,7 +112,7 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a full registration." + Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" @@ -177,12 +177,12 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a first registration." + Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -195,14 +195,14 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Expected behaviour ensure that { when { - the IMS_P_CSCF_B entity sends a REGISTER containing + the IMS_S_CSCF_B entity recieves a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, PVisitedNetworkID ; - to the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { the IMS_S_CSCF_B entity sends a REGISTER containing @@ -245,26 +245,26 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a full registration." + Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_A entity isNotRegisteredTo the IMS_B and the UE_B entity isNotRegisteredTo the IMS_B and - the IMS_P_CSCF_A entity hasAchieveFirstREGISTER + the UE_A entity hasAchieveFirstREGISTER } Expected behaviour ensure that { when { - the IMS_P_CSCF_B entity sends a REGISTER containing + the IMS_S_CSCF_B entity recieves a REGISTER containing From indicating value PX_UA_A_SIP_URI, To indicating value PX_UA_A_SIP_URI, CallId indicating value PX_UA_A_CALLID, @@ -278,7 +278,7 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Nonce indicating value "not empty", qop indicating value "auth" ;; - to the IMS_S_CSCF_B entity + from the IMS_P_CSCF_B entity } then { the IMS_S_CSCF_B entity sends a REGISTER containing @@ -323,17 +323,17 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, TP Id TP_MW_SCSCF_REGISTER_06 // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a invalid first registration." + Test objective "Verify that the S-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isAttachedTo the EPC_B and the UE_A entity isNotRegisteredTo the IMS_B and the UE_B entity isNotRegisteredTo the IMS_B } @@ -389,7 +389,7 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a user de-registration." + Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" @@ -409,10 +409,10 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, the IMS_S_CSCF_A entity receives a REGISTER containing Expire indicating value 0 ; - from the IMS_P_CSCF_A entity + from the IMS_I_CSCF_A entity } then { - the IMS_S_CSCF_A entity forwards a REGISTER containing + the IMS_S_CSCF_A entity sends a 200 OK containing Expire indicating value 0 ; to the IMS_I_CSCF_A entity @@ -426,12 +426,12 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a user de-registration." + Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." Reference "ETSI TS 124 229 [2], Clause 5.4.1.5 and Clause 6.3" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -459,2150 +459,36 @@ Package TP_MW_SI { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, Test Purpose { - TP Id TP_MW_SCSCF_SUBSCRIBE_01 - // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) + TP Id TP_MW_SCSCF_REGISTER_09 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." + Test objective "Verify that the P-CSCF successfully processes a network de-registration." Reference - "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" + "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" Config Id CF_VxLTE_INT PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A + the UE_A entity isAttachedTo the EPC_A } Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity sends an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - Event, - Expires - // TODO To be continued - ; - to the IMS_S_CSCF_A entity + the IMS_P_CSCF_B entity isTriggeredToDetachUser } then { - the IMS_S_CSCF_A entity sends an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - Event, - Expires - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - and the IMS_S_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - } - } - } // End of TP_MW_SCSCF_SUBSCRIBE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_SUBSCRIBE_02 - // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." - - Reference - "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_P_CSCF_B entity sends an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - Event, - Expires - // TODO To be continued + the IMS_I_CSCF_B entity sends a REGISTER containing + Expire indicating value 0 ; to the IMS_S_CSCF_B entity } - then { - the IMS_S_CSCF_B entity sends an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - Event, - Expires - // TODO To be continued - ; - to the IMS_I_CSCF_B entity - and the IMS_S_CSCF_B entity sends a 200_Ok containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA - // TODO To be continued - ; - to the IMS_P_CSCF_B entity - } - } - } // End of TP_MW_SCSCF_SUBSCRIBE_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_NOTIFY_01 - - Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." - - Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing - Event indicating value "reg,de-reg" - ; - } - then { - the IMS_S_CSCF_A entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - // TODO To be continued - ; - to the IMS_P_CSCF_A entity and - the IMS_S_CSCF_A entity receives an 200_Ok - from the IMS_P_CSCF_A entity and - the IMS_S_CSCF_A entity sends an NOTIFY containing - Event indicating value "de-reg" - // TODO To be continued - ; - to the IMS_P_CSCF_A entity and - the IMS_S_CSCF_A entity receives an 200_Ok - from the IMS_P_CSCF_A entity - } - } - } // End of TP_MW_SCSCF_NOTIFY_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_NOTIFY_02 - - Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." - - Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing - Event indicating value "reg,de-reg" - ; - } - then { - the IMS_S_CSCF_A entity sends an NOTIFY containing - Event indicating value "de-reg" - // TODO To be continued - ; - to the IMS_P_CSCF_A entity and - the IMS_S_CSCF_A entity receives an 200_Ok - from the IMS_P_CSCF_A entity - } - } - } // End of TP_MW_SCSCF_NOTIFY_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_INVITE_01 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - ContentType indicating value "application/sdp", - ContentLength, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_INVITE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_INVITE_02 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - ContentType indicating value "application/sdp", - ContentLength, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_INVITE_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_INVITE_03 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, - PAccessNetworkInfo, - ContentType indicating value "application/sdp", - ContentLength, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_INVITE_03 - - Test Purpose { - - TP Id TP_MW_SCSCF_INVITE_04 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.3.2.1 and Clause 5.3.2.1A" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, - PAccessNetworkInfo, - ContentType indicating value "application/sdp", - ContentLength, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_INVITE_04 - - Test Purpose { - - TP Id TP_MW_SCSCF_100TRY_01 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 100_Trying - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 100_Trying - to the IMS_P_CSCF_A entity - } } - - } // End of TP_MW_SCSCF_100TRY_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_100TRY_02 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 100_Trying - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 100_Trying - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_100TRY_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_100TRY_03 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 100_Trying - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 100_Trying - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_100TRY_03 - - Test Purpose { - - TP Id TP_MW_SCSCF_100TRY_04 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 100_Trying - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 100_Trying - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_100TRY_04 - - Test Purpose { - - TP Id TP_MW_SCSCF_180RINGING_01 - - Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 180_Ringing - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 180_Ringing containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_180RINGING_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_180RINGING_02 - - Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 180_Ringing - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 180_Ringing containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_180RINGING_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_180RINGING_03 - - Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 180_Ringing - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 180_Ringing - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_180RINGING_03 - - Test Purpose { - - TP Id TP_MW_SCSCF_180RINGING_04 - - Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 180_Ringing - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 180_Ringing - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_180RINGING_04 - - Test Purpose { - - TP Id TP_MW_SCSCF_200OK_01 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 200_Ok containing - not PChargingVector, - not PChargingFunctionAddresses, - not PPreferredIdentity - ; - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 200_Ok containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_200OK_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_200OK_02 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 200_Ok containing - not PChargingVector, - not PChargingFunctionAddresses, - not PPreferredIdentity - ; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 200_Ok containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity - ; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_200OK_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_ACK_01 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_P_CSCF_A entity receives an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_S_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_ACK_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_ACK_02 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_ACK_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_RE_INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the IMS_P_CSCF_A entity previouslyEstablishedCallWith the IMS_P_CSCF_B - } - - Expected behaviour - ensure that { - when { - the IMS_P_CSCF_A entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - to the IMS_S_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - from the IMS_I_CSCF_A entity - } - } - } // End of TP_MW_SCSCF_RE_INVITE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_RE_INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the IMS_P_CSCF_B entity previouslyEstablishedCallWith the IMS_P_CSCF_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - to the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, - PAccessNetworkInfo, - MessageBody containing - SDP containing - Version indicating value "0" - // TODO To be continued - ; - ;; - from the IMS_P_CSCF_B entity - } - } - } // End of TP_MW_SCSCF_RE_INVITE_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_BYE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity previouslyEstablishedCallWith the UE_B - } - - Expected behaviour - ensure that { - when { - the IMS_P_CSCF_A entity receives an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_S_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_BYE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_BYE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity previouslyEstablishedCallWith the UE_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_BYE_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_BYE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Network)." - - Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the IMS_P_CSCF_B entity previouslyEstablishedCallWith the IMS_P_CSCF_A - } - - Expected behaviour - ensure that { - when { - the UE_A entity isNoLongerAvailable - } - then { - the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - and the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_BYE_03 - - Test Purpose { - - TP Id TP_MW_SCSCF_BYE_04 - - Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity previouslyEstablishedCallWith the UE_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_BYE_04 - - Test Purpose { - - TP Id TP_MW_SCSCF_BYE_05 - - Test objective "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A and - the UE_A entity previouslyEstablishedCallWith the UE_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives an BYE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_BYE_05 - - Test Purpose { - - TP Id TP_MW_SCSCF_BYE_06 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Network)." - - Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A and - the IMS_P_CSCF_B entity previouslyEstablishedCallWith the IMS_P_CSCF_A - } - - Expected behaviour - ensure that { - when { - the UE_B entity isNoLongerAvailable - } - then { - the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - and the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_BYE_06 - - Test Purpose { - - TP Id TP_MW_SCSCF_200OK_BYE_01 - - Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Originating Leg/Originating Network)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 200_Ok containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_200OK_BYE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_200OK_BYE_02 - - Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_200OK_BYE_02 - - // TP_MW_SCSCF_200OK_BYE_03 not applicable, re-use TP_MW_SCSCF_200OK_BYE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_200OK_BYE_04 - - Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 200_Ok containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 200_Ok containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_200OK_BYE_04 - - Test Purpose { - - TP Id TP_MW_SCSCF_200OK_BYE_05 - - Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Terminating Leg/Originating Network)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_200OK_BYE_05 - - // TP_MW_SCSCF_200OK_BYE_06 Not applicable, re-use TP_MW_SCSCF_200OK_BYE_05 - - Test Purpose { - - TP Id TP_MW_SCSCF_CANCEL_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the IMS_P_CSCF_A entity hasAchieveInitialINVITE and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_CANCEL_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_CANCEL_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the IMS_P_CSCF_B entity hasAchieveInitialINVITE and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_CANCEL_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_CANCEL_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity hasAchieveInitialINVITE and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_CANCEL_03 - - Test Purpose { - - TP Id TP_MW_SCSCF_CANCEL_04 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - - Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity hasAchieveInitialINVITE and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends an CANCEL containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_CANCEL_04 - - Test Purpose { - - TP Id TP_MW_SCSCF_486INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses Clause 5.2.7 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity isBusy - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_486INVITE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_486INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity isBusy - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_486INVITE_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_486INVITE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and - the UE_B entity isBusy - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_486INVITE_03 - - Test Purpose { - - TP Id TP_MW_SCSCF_486INVITE_04 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_A and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_A and - the UE_A entity isBusy - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 486_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_486INVITE_04 - - Test Purpose { - - TP Id TP_MW_SCSCF_487INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_487INVITE_01 - - Test Purpose { - - TP Id TP_MW_SCSCF_487INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_INT - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_A and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_487INVITE_02 - - Test Purpose { - - TP Id TP_MW_SCSCF_487INVITE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_B entity receives a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_I_CSCF_B entity - } - then { - the IMS_S_CSCF_B entity sends a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_P_CSCF_B entity - } - } - - } // End of TP_MW_SCSCF_487INVITE_03 - - Test Purpose { - - TP Id TP_MW_SCSCF_487INVITE_04 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." - - Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" - - Config Id CF_VxLTE_RMI - - PICS Selection NONE - - Initial conditions with { - the UE_A entity isAttachedTo the EPC_B and - the UE_B entity isAttachedTo the EPC_B and - the UE_A entity isRegisteredTo the IMS_B and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isRequestedToSend a CANCEL - } - - Expected behaviour - ensure that { - when { - the IMS_S_CSCF_A entity receives a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - from the IMS_P_CSCF_A entity - } - then { - the IMS_S_CSCF_A entity sends a 487_INVITE containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued - ; - to the IMS_I_CSCF_A entity - } - } - - } // End of TP_MW_SCSCF_487INVITE_04 + } // End of TP_MW_SCSCF_REGISTER_09 } // End of Package TP_MW_SI diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 41566de..0da7702 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -147,7 +147,13 @@ Package Sip_Common { Test Configuration CF_VxLTE_INT ; - Test Configuration CF_VxLTE_RMI + Test Configuration CF_VxLTE_RMI_A + ; + + Test Configuration CF_VxLTE_RMI_B + ; + + Test Configuration CF_VxLTE_RMI_S8HR ; Test Configuration CFG_IC_01 -- GitLab From fd06dd4b8a22438fc4191e423a709ca67031b8c6 Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 20 Apr 2020 13:28:25 +0200 Subject: [PATCH 021/176] TP for ISC interface added. --- test_purposes/Isc/TP_ISC.tplan2 | 71 +++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 test_purposes/Isc/TP_ISC.tplan2 diff --git a/test_purposes/Isc/TP_ISC.tplan2 b/test_purposes/Isc/TP_ISC.tplan2 new file mode 100644 index 0000000..dc46bb2 --- /dev/null +++ b/test_purposes/Isc/TP_ISC.tplan2 @@ -0,0 +1,71 @@ +/* +Copyright (c) ETSI 2019-2020. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* Isc interface at S-CSCF<->AS */ +Package TP_ISC { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCSCF_REGISTER_01 + // TP_IMST2_ISC_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes registration towards AS + when IMS supports 3rd-party registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.4.1.7" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_A entity receives a REGISTER + from the IMS_I_CSCF_A entity + } + then { + the IMS_S_CSCF_A entity sends a REGISTER containing + From indicating value PX_SCSCF_SIP_URI, + To indicating value PX_AS_A_SIP_URI, + Request_Uri indicating value PX_AS_A_SIP_URI, + Contact indicating value PX_SCSCF_SIP_URI, + PChargingVector, + PChargingFunctionAddresses, + PAccessNetworkInfo + PVisitedNetworkId + ; + to the IMS_AS_A entity + and the IMS_AS_A entity sends an 200_Ok containing + From indicating value PX_AS_A_SIP_URI, + To indicating value PX_SCSCF_SIP_URI, + CallId, + Via + ; + to the IMS_S_CSCF_A entity + } + } + } // End of TP_ISC_SCSCF_REGISTER_01 + +} // End of Package TP_ISC + -- GitLab From 8d6522e86522953f808082a95648364c135d6c0e Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 21 Apr 2020 13:31:25 +0200 Subject: [PATCH 022/176] initial modules for TPs at IC and RX --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 521 +++++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 216 ++++++++ ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 430 +++++++++++++++ ttcn/LibSip | 2 +- 4 files changed, 1168 insertions(+), 1 deletion(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn new file mode 100644 index 0000000..b30126d --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -0,0 +1,521 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at IC interface + */ + +module AtsImsIot_TP_behavior_IC +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + import from AtsImsIot_Templates_IC all; + + +group g_IBCF { + +group g_IBCF_INVITE { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_01_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_01((mw_SipUrl_Host(v_EUT_A_Addr), + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))) ))}, + {}, + {0, omit}, + "TP_IC_IBCF_INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_02 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_02_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5046_01_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_04( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A)); + var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B); + var template SipUrl v_UserEutBUrl := mw_SipUrl_Host(v_user.domain); + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + var Route v_Route; + var template Route vt_pcscfRoute := { + fieldName := ROUTE_E, + routeBody := ({mw_routeBody(v_pcscfEutAUrl), *}, + {mw_routeBody(v_pcscfEutAIpUrl), *} ) + }; + var Via v_Via; + var template Via vt_pcscfVia := { + fieldName := VIA_E, + viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.components.sip.hostPort), *}, + {mw_ViaBody_interface(v_pcscfEutAIpUrl.components.sip.hostPort), *} ) + }; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest((mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAUrl, v_UserEutBUrl), + mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAIpUrl, v_UserEutBUrl)))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_04", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if(ispresent(v_sip.request.msgHeader.route)) { + v_Route := v_sip.request.msgHeader.route; + } + //if(ispresent(v_sip.request.msgHeader.via)) { + v_Via := v_sip.request.msgHeader.via; + //} + + // Check Route header + if (match(v_Route, vt_pcscfRoute)) { + f_setIotVerdictFAIL("TP_IC_IBCF_INVITE_04"); + } + // Check Via header + if (match(v_Via, vt_pcscfVia)) { + } else { + f_setIotVerdictFAIL("TP_IC_IBCF_INVITE_04"); + } + } + + +} // end group g_IBCF_INVITE + +group g_IBCF_REINVITE { + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REINVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5106_01_ic + */ + function f_mtc_check_TP_IC_IBCF_REINVITE_01( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)), + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REINVITE_01(v_SCSCF_A_Uri))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + v_skip, + "TP_IC_IBCF_REINVITE_01", + false, + false + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_REINVITE + + +group g_IBCF_100TRY { + + /** + * @desc Starts monitor component behavior for TP_IMS_5070_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5070_01_ic + */ + function f_mtc_check_TP_IC_IBCF_100TRY_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_01", + false, + false + ) + ); + p_monitorCompRef.done; + + } + +} // end group g_IBCF_100TRY + +group g_IBCF_180RESP { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_01_ic + */ + function f_mtc_check_TP_IC_IBCF_180RESP_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IBCF_180RESP_01)}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_180RESP_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5131_01_ic + */ + function f_mtc_check_TP_IC_IBCF_180RESP_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_180RESP_02)}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_180RESP_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_180RESP + +group g_IBCF_1XXRESP { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_03_ic + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_01(mw_SIP_URI_Base, mw_TEL_URI_Base))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_1XXRESP + +group g_IBCF_2XXRESP { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_01)}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5131_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_03( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_03)}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_04_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5121_02 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5121_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_04( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)}, + {mw_SipResponse(mdw_2XX_Base)}, + v_skip, + "TP_IC_IBCF_2XXRESP_04", + false, + false + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_2XXRESP + + +group g_IBCF_ACK { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5107_02_ic + */ + function f_mtc_check_TP_IC_IBCF_ACK_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_ACK_01(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, + {}, + {0, omit}, + "TP_IC_IBCF_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + + +} // end group g_IBCF_ACK + +group g_IBCF_BYE { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5107_01_ic + */ + function f_mtc_check_TP_IC_IBCF_BYE_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, + {}, + {0, omit}, + "TP_IC_IBCF_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + +} // end group g_IBCF_BYE + +} // end group g_IBCF + + +group g_SCSCF { + +group g_SCSCF_INVITE { + + /** + * @desc Starts monitor component behavior for TP_IC_SCSCF_INVITE_03 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_04_ic + */ + function f_mtc_check_TP_IC_SCSCF_INVITE_03( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_SCSCF_INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // end group g_SCSCF_INVITE + +} // end group g_SCSCF + + +} // end module AtsImsIot_TP_behavior_IC \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn new file mode 100644 index 0000000..3ce642c --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -0,0 +1,216 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at RX interface + */ + +module AtsImsIot_TP_behavior_RX +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + +group g_PCRF { + +group g_PCRF_ASA { + + /** + * Starts monitor component behavior for TP_RX_PCRF_ASA_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+	 * ensure that {
+	 *     when { 
+	 *         EPC_PCRF triggers_termination of SIP_session 
+	 *     }
+	 *     then { 
+	 *         EPC_PCRF sends Abort-Session-Request to IMS_P-CSCF containing 
+	 *             Session-Id_AVP indicating session of SIP_session
+	 *             Abort-Cause_AVP indicating BEARER_RELEASED (0)
+	 *     } 
+	 * } 
+	 * 
+ * @see TS 103 029 V3.1.1 clause 7.1.2 + * @remark source function f_mtc_check_TP_EPC_6005_01 + */ + function f_mtc_check_TP_RX_PCRF_ASA_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_RX_PCRF_ASA_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_ASA_01 + +} // end group g_PCRF_ASA + +group g_PCRF_AAA { + + /** + * Starts monitor component behavior for TP_RX_PCRF_AAA_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6014_01 + */ + function f_mtc_check_TP_RX_PCRF_AAA_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_RX_PCRF_AAA_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_AAA_01 + +} // end group g_PCRF_AAA + +} // end group g_PCRF + + +group g_PCSCF { + + +group g_PCSCF_AAR { + + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+	 * ensure that {
+	 *     when { 
+	 *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
+	 *     }
+	 *     then { 
+	 *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
+	 *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
+	 *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
+	 *             and one or more Media-Component-Description_AVP containing 
+	 *                 Media-Component-Number_AVP indicating value 0
+	 *                 and Flow-Description_AVP indicating 
+	 *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+	 *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+	 *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+	 *                 and Flow-Description_AVP indicating 
+	 *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+	 *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+	 *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+	 *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
+	 *                 and Flow-Status_AVP indicating ENABLED(2)
+	 *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
+	 *     } 
+	 * } 
+	 * 
+ * @see TS 103 029 V3.1.1 clause 7.2.1.1 + * @remark source function f_mtc_check_TP_EPC_6013_01 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_RX_PCSCF_AAR_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01 + +} // end group g_PCSCF_AAR + +group g_PCSCF_STR { + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_03 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6034_02 + */ + function f_mtc_check_TP_RX_PCSCF_STR_03( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest ( mw_CANCEL_Request_Base ( ? ) ) }, { }, { 0, omit }, + "TP_RX_PCSCF_STR_03", false, false ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_03 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_06 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6034_04 + */ + function f_mtc_check_TP_RX_PCSCF_STR_06( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, + "TP_RX_PCSCF_STR_06", false, false ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_06 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_07 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6012_02 + */ + function f_mtc_check_TP_RX_PCSCF_STR_07( + ImsInterfaceMonitor p_monitorCompRef, + ImsInterfaceMonitor p_monitorCompRef_B + ) runs on ImsTestCoordinator { +// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); +// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); +// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); + } // End of function f_mtc_check_TP_RX_PCSCF_STR_07 + +} // end group g_PCSCF_STR + +} // end group g_PCSCF + + +} // end module AtsImsIot_TP_behavior_RX \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn new file mode 100644 index 0000000..297625f --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -0,0 +1,430 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides TP related templates used at IC interface + */ + +module AtsImsIot_Templates_IC +{ + + import from LibCommon_BasicTypesAndValues {type UInt16;} + import from LibCommon_VerdictControl {type FncRetCode;} + import from LibIot_TypesAndValues { + type + InterfaceInfoList, + ProtocolFilter, + GeneralConfigurationReq, + GeneralConfigurationRsp, + SetFilterReq, + SetFilterRsp, + StartTrafficCaptureReq, + StartTrafficCaptureRsp, + StopTrafficCaptureReq, + StopTrafficCaptureRsp, + IpAddress, + Status; + } + import from AtsImsIot_TypesAndValues { + type + SipMessage, NAPTRmessage + }; + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + import from LibMsrp_TypesAndValues { + type + SEND_request, + RECEIVE_response + }; + import from LibIot_PIXITS { + modulepar + PX_IOT_TIMESTAMP_OFFSET, + PX_IOT_PCAP_SESSIONS_PATH, + PX_IOT_RECORD_MODE, + PX_IOT_EUTs_IFACE_INFO_LIST, + PX_IOT_FILE_MERGE_LIST, + PX_IOT_FILE_MERGE_PATH, + PX_IOT_MERGE_TOOL_PATH, + PX_IOT_IFACES; + } + import from AtsImsIot_PIXITS { + modulepar + PX_IMS_SUT_CONF_FACTORY_NAME, PX_IMS_SUT_CONF_HOME_DOMAIN + }; + + import from AtsImsIot_Templates { + template mdw_2XX_Base, mw_180Ringing_Base, mw_200OK_Base, mw_PChargingVector, mw_SIP_URI_Base, mw_TEL_URI_Base + }; + + group g_IBCF { + + group g_IBCF_INVITE { + + /** + * @desc INVITE Request checking TP_IC_IBCF_INVITE_01 + * @remark source template mdw_TP_IMS_5097_01_ic + */ + template INVITE_Request mdw_TP_IC_IBCF_INVITE_01 (template SipUrl p_SCSCF_SIP_URI) + modifies mw_INVITE_Request_Base := { + msgHeader := { + route := ({ + fieldName := ROUTE_E, + routeBody := { + *, + complement(mw_routeBody(p_SCSCF_SIP_URI)), + * + } + }, omit), + recordRoute := { + fieldName := RECORD_ROUTE_E, + routeBody := {mw_routeBody(p_SCSCF_SIP_URI), *} + }, + pChargingVector := { + fieldName := P_CHARGING_VECTOR_E, + chargeParams := { + *, + {id := "icid-value", paramValue := ?}, + *, + {id := "orig-ioi", paramValue := ?}, + *, + complement({id := "term-ioi", paramValue := ?}), + *, + complement({id := "access-network-charging-info", paramValue := ?}), + * + } + } + } + } + + + /** + * @desc INVITE Request checking TP_IC_IBCF_INVITE_02 + * @remark source template mdw_TP_IMS_5097_02_ic + */ + template INVITE_Request mdw_TP_IC_IBCF_INVITE_02 ( + template SipUrl p_SIP_URI, + template SipUrl p_TEL_URI) + modifies mw_INVITE_Request_Base := { + msgHeader := { + pAssertedID := { + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + *, + ({ nameAddr := mw_NameAddr(p_SIP_URI)}, {addrSpecUnion := mw_SIP_URI_Base}), + *, + ({nameAddr := mw_NameAddr(p_TEL_URI)}, {addrSpecUnion := mw_TEL_URI_Base}), + * + } + } + } + } + + + + + /** + * + * @desc INVITE Request checking TP_IC_IBCF_INVITE_04 + * @remark source template mdw_TP_IMS_5046_01_ic + */ + template INVITE_Request mdw_TP_IC_IBCF_INVITE_04 (template SipUrl p_pcscfEutAUri, template SipUrl p_userEutBUrl) + modifies mw_INVITE_Request_Base := { + msgHeader := { + route := { + fieldName := ROUTE_E, + routeBody := ? // complement (mw_routeBody(p_pcscfEutAUri)) // to be checked outside template + }, + via := { + fieldName := VIA_E, + viaBody := ? // superset(mw_ViaBody_interface(p_pcscfEutAUri.hostPort)) // to be checked outside template + }, + recordRoute := { + fieldName := RECORD_ROUTE_E, + routeBody := {mw_routeBody(p_pcscfEutAUri), *} + }, + pPreferredID := omit, + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_userEutBUrl)), + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }) + } + } + + + } // end group g_IBCF_INVITE + + group g_IBCF_REINVITE { + + /** + * @desc INVITE Request checking TP_IC_IBCF_REINVITE_01 + * @remark source template mdw_TP_IMS_5106_01_ic + */ + template INVITE_Request mdw_TP_IC_IBCF_REINVITE_01( + template SipUrl p_SCSCF_URI + ) modifies mw_INVITE_Request_Base := { + msgHeader := { + route := { + fieldName := ROUTE_E, + routeBody := { + complement(mw_routeBody(p_SCSCF_URI)), + * + } + }, + recordRoute := { + fieldName := RECORD_ROUTE_E, + routeBody := { + mw_routeBody(p_SCSCF_URI), + * + } + }, + pAccessNetworkInfo := omit, + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }) + } + } + + } // end group g_IBCF_REINVITE + + + group g_IBCF_100TRY { + + + + } // end group g_IBCF_100TRY + + group g_IBCF_180RESP { + + /** + * + * @desc 180 Ringing Response checking TP_IBCF_180RESP_01 on MW + * @remark source template mdw_TP_IMS_5115_01_ic + */ + template Response mdw_TP_IBCF_180RESP_01 + modifies mw_180Ringing_Base := { + msgHeader := { + pChargingVector := mw_PChargingVector({ + {id := "orig-ioi", paramValue := ?}, + {id := "term-ioi", paramValue := ?}, + * + }) + } + } + + /** + * + * @desc 180 Ringing Response checking TP_IC_IBCF_180RESP_02 on MW + * @remark source template mdw_TP_IMS_5131_01_ic + */ + template Response mdw_TP_IC_IBCF_180RESP_02 + modifies mw_180Ringing_Base := { + msgHeader := { + pChargingFunctionAddresses := omit + } + } + + } // end group g_IBCF_180RESP + + group g_IBCF_1XXRESP { + + /** + * + * @desc 180 Ringing Response checking TP_IC_IBCF_1XXRESP_01 on MW + * @remark source template mdw_TP_IMS_5115_03_ic + */ + template Response mdw_TP_IC_IBCF_1XXRESP_01( + template SipUrl p_SIP_URI, + template SipUrl p_TEL_URI) + modifies mw_180Ringing_Base := { + msgHeader := { + pAssertedID := { + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + *, + { nameAddr := mw_NameAddr(p_SIP_URI)}, + *, + {nameAddr := mw_NameAddr(p_TEL_URI)}, + * + } + } + } + } + + } // end group g_IBCF_1XXRESP + + group g_IBCF_2XXRESP { + + /** + * + * @desc 200 OK Response checking TP_IC_IBCF_2XXRESP_01 on MW + * @remark source template mdw_TP_IMS_5115_02_ic + */ + template Response mdw_TP_IC_IBCF_2XXRESP_01 + modifies mw_200OK_Base := { + msgHeader := { + pChargingVector := mw_PChargingVector({ + {id := "orig-ioi", paramValue := ?}, + {id := "term-ioi", paramValue := ?}, + * + }) + } + } + + /** + * + * @desc 200 OK Response checking TP_IC_IBCF_2XXRESP_02 on MW + * @remark source template mdw_TP_IMS_5115_04_ic + */ + template Response mdw_TP_IC_IBCF_2XXRESP_02( + template SipUrl p_SIP_URI, + template SipUrl p_TEL_URI) + modifies mw_200OK_Base := { + msgHeader := { + pAssertedID := { + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + *, + { nameAddr := mw_NameAddr(p_SIP_URI)}, + *, + {nameAddr := mw_NameAddr(p_TEL_URI)}, + * + } + } + } + } + + /** + * + * @desc 200 OK Response checking TP_IC_IBCF_2XXRESP_03 on MW + * @remark source template mdw_TP_IMS_5131_02_ic + */ + template Response mdw_TP_IC_IBCF_2XXRESP_03 + modifies mw_200OK_Base := { + msgHeader := { + pChargingFunctionAddresses := omit + } + } + + /** + * + * @desc checking TP_IC_IBCF_2XXRESP_04 on MW + * @remark source template mw_TP_IMS_5121_02_ic + */ + template Response mw_TP_IC_IBCF_2XXRESP_04 modifies mdw_2XX_Base := { + msgHeader := { + pChargingVector := { + fieldName := P_CHARGING_VECTOR_E, + chargeParams := { + complement({id := "access-network-charging-info", paramValue := ?}), + * + } + } + } + } + + } // end group g_IBCF_2XXRESP + + + group g_IBCF_ACK { + + /** + * + * @desc ACK Request checking TP_IC_IBCF_ACK_01 on MW + * @remark source template mdw_TP_IMS_5107_02_ic + */ + template ACK_Request mdw_TP_IC_IBCF_ACK_01(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) + modifies mw_ACK_Request_Base := { + msgHeader := { + route := { + fieldName := ROUTE_E, + routeBody := { + *, + complement(mw_routeBody(p_SCSCF_SIP_URI)), + * + } + } + } + } + + + } // end group g_IBCF_ACK + + group g_IBCF_BYE { + + /** + * + * @desc BYE Request checking TP_IC_IBCF_BYE_01 on MW + * @remark source template mdw_TP_IMS_5107_01_ic + */ + template BYE_Request mdw_TP_IC_IBCF_BYE_01(template CallId p_callId, in template (present) SipUrl p_SCSCF_SIP_URI) + modifies mw_BYE_Request_Base := { + msgHeader := { + route := { + fieldName := ROUTE_E, + routeBody := { + ?, + complement(mw_routeBody(p_SCSCF_SIP_URI)), + * + } + } + } + } + + } // end group g_IBCF_BYE + + } // end group g_IBCF + + + group g_SCSCF { + + group g_SCSCF_INVITE { + + /** + * @desc INVITE Request checking TP_IC_SCSCF_INVITE_03 + * @remark source template mdw_TP_IMS_5097_04_ic + */ + template INVITE_Request mdw_TP_IC_SCSCF_INVITE_03(in template (present) SipUrl p_requestUri) + modifies mw_INVITE_Request_Base := { + requestLine := { + method := INVITE_E, + requestUri := p_requestUri, + sipVersion := c_sipNameVersion + }, + msgHeader := { + pChargingVector := { + fieldName := P_CHARGING_VECTOR_E, + chargeParams := { + *, + complement({id := "access-network-charging-info", paramValue := ?}), + * + } + } + + } + } + + } // end group g_SCSCF_INVITE + + } // end group g_SCSCF + + group g_AuxiliaryInformationElementTemplates { + + /** + * @desc mw_NameAddr + * @remark source template mw_NameAddr from AtsImsIot_Templates + */ + template NameAddr mw_NameAddr(template SipUrl p_URI) := { + displayName := *, + addrSpec := p_URI + } + + } // end group g_AuxiliaryInformationElementTemplates + + +} // end module AtsImsIot_Templates_IC diff --git a/ttcn/LibSip b/ttcn/LibSip index 3fbdde7..2acb7ee 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 3fbdde74a0593590270318e1bd033ad65d974393 +Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 -- GitLab From c9a1ec476d055c20c8a510dd0df36c015345f7e8 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 21 Apr 2020 17:19:29 +0200 Subject: [PATCH 023/176] empty modules for TPs at GM, MW, CX, GX, SH, S6A and S9 --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 58 ++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 58 ++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 61 +++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn | 67 +++++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn | 62 +++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn | 58 ++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn | 58 ++++++++++++++++ 7 files changed, 422 insertions(+) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn new file mode 100644 index 0000000..0ae200b --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -0,0 +1,58 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at CX interface + */ + +module AtsImsIot_TP_behavior_CX +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + + +group g_HSS { + + +} // end group g_HSS + + +} // end module AtsImsIot_TP_behavior_CX \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn new file mode 100644 index 0000000..2f66108 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -0,0 +1,58 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at GM interface + */ + +module AtsImsIot_TP_behavior_GM +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + + +group g_PCSCF { + + +} // end group g_PCSCF + + +} // end module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn new file mode 100644 index 0000000..b8c7180 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -0,0 +1,61 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at GX interface + */ + +module AtsImsIot_TP_behavior_GX +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + +group g_PGW { + + +} // end group g_PGW + +group g_PCRF { + + +} // end group g_PCRF + + +} // end module AtsImsIot_TP_behavior_GX \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn new file mode 100644 index 0000000..8adf2aa --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn @@ -0,0 +1,67 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at MW interface + */ + +module AtsImsIot_TP_behavior_MW +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + + +group g_PCSCF { + + +} // end group g_PCSCF + +group g_ICSCF { + + +} // end group g_ICSCF + +group g_SCSCF { + + +} // end group g_SCSCF + +} // end module AtsImsIot_TP_behavior_MW \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn new file mode 100644 index 0000000..b4be673 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn @@ -0,0 +1,62 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at S6A interface + */ + +module AtsImsIot_TP_behavior_S6A +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + + +group g_HSS { + + +} // end group g_HSS + +group g_MME { + + +} // end group g_MME + +} // end module AtsImsIot_TP_behavior_S6A \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn new file mode 100644 index 0000000..7618b23 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn @@ -0,0 +1,58 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at S9 interface + */ + +module AtsImsIot_TP_behavior_S9 +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + + +group g_PCRF { + + +} // end group g_PCRF + + +} // end module AtsImsIot_TP_behavior_S9 \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn new file mode 100644 index 0000000..58a2cfc --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn @@ -0,0 +1,58 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at SH interface + */ + +module AtsImsIot_TP_behavior_SH +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + + +group g_HSS { + + +} // end group g_HSS + + +} // end module AtsImsIot_TP_behavior_SH \ No newline at end of file -- GitLab From 5b73f9e9fdde30fefe42f7e7eebc337e4c25f176 Mon Sep 17 00:00:00 2001 From: pintar Date: Thu, 7 May 2020 10:00:14 +0200 Subject: [PATCH 024/176] TPs for IC interface from Finn added. --- test_purposes/Ic/TP_IC.tplan2 | 591 +++++++++++++++++++++++++++++++- test_purposes/Sip_Common.tplan2 | 7 + 2 files changed, 594 insertions(+), 4 deletions(-) diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2 index b5752dd..c4232ef 100644 --- a/test_purposes/Ic/TP_IC.tplan2 +++ b/test_purposes/Ic/TP_IC.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019. +Copyright (c) ETSI 2019-2020. This software is subject to copyrights owned by ETSI. Non-exclusive permission is hereby granted, free of charge, to copy, reproduce and amend this file @@ -14,6 +14,7 @@ file and shall not imply any sub-license right. */ +/* Gm interface at IBCF/IBCF*/ Package TP_IC { import all from Sip_Common; @@ -143,7 +144,7 @@ Package TP_IC { Expected behaviour ensure that { when { - the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity + the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_A entity } then { the IMS_IBCF_A entity forwards the initial INVITE containing @@ -164,7 +165,7 @@ Package TP_IC { Test Purpose { - TP Id TP_IC_SCSCF_INVITE_03 // Former TP_IMS_5097_04 + TP Id TP_IC_IBCF_INVITE_03 // Former TP_IMS_5097_04 Test objective "S-CSCF uses ENUM/DNS to translate Tel URIs to SIP URIs in initial INVITE requests" Reference @@ -206,7 +207,7 @@ Package TP_IC { } } - } // End of TP_IC_SCSCF_INVITE_03 + } // End of TP_IC_IBCF_INVITE_03 @@ -773,6 +774,588 @@ Package TP_IC { + Test Purpose { + TP Id TP_IC_IBCF_CANCEL_01 // Former TP_IMS_5107_03 + Test objective + "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceived180OnInitialRequest from the UE_B entity + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a CANCEL "addressed to UE_B" to the IMS_A entity + } + then { + the IMS_IBCF_A entity sends a CANCEL containing + Route indicating value not PX_S_CSCF_A_SIP_URI + ; + to the IMS_IBCF_B entity and + the IMS_IBCF_B entity forwards the CANCEL + to the IMS_P_CSCF_B entity + + } + } + + } // End of TP TP_IC_IBCF_CANCEL_01 + + + + Test Purpose { + TP Id TP_IC_IBCF_CANCEL_02 // Former TP_IMS_5107_03 + Test objective + "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Terminating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isRequestedToSend a CANCEL to the UE_B entity + } + + Expected behaviour + ensure that { + when { + the IMS_IBCF_B entity receives the CANCEL containing + Route indicating value not PX_S_CSCF_A_SIP_URI + ; + from the IMS_A entity + } + then { + the IMS_IBCF_B entity forwards the CANCEL + to the IMS_S_CSCF_B entity + } + } + + } // End of TP TP_IC_IBCF_CANCEL_02 + + + Test Purpose { + TP Id TP_IC_IBCF_CANCEL_03 // Former TP_IMS_5107_03 + Test objective + "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + Config Id CF_VxLTE_RMI // CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceived180OnInitialRequest from the UE_B entity + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a CANCEL "addressed to UE_B" to the IMS_B entity + } + then { + the IMS_IBCF_B entity sends a CANCEL containing + Route indicating value not PX_S_CSCF_B_SIP_URI + ; + to the IMS_IBCF_A entity + } + } + + } // End of TP TP_IC_IBCF_CANCEL_03 + + +/* CURRENTLY NOT REQUIRED FROM THE TD DERIVED TPs IN PART OF THE STANDARD (SEE CLAUSE 6.3.4.2 OF PART 2) + Test Purpose { + TP Id TP_IC_IBCF_CANCEL_04 // Former TP_IMS_5107_03 + Test objective + "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Terminating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + Config Id CF_VxLTE_RMI // CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and + the UE_A entity isRequestedToSend a CANCEL to the UE_B entity + } + + Expected behaviour + ensure that { + when { + the IMS_IBCF_A entity receives the CANCEL containing + Route indicating value not PX_S_CSCF_B_SIP_URI + ; + from the IMS_B entity + } + then { + the IMS_IBCF_A entity forwards the CANCEL + to the IMS_S_CSCF_A entity + } + } + + } // End of TP TP_IC_IBCF_CANCEL_04 + +*/ + + + + + Test Purpose { + TP Id TP_IC_IBCF_CANCEL_OK_01 + Test objective + "The P-CSCF receives a 200 OK response to a CANCEL request from the UE receiving the CANCEL request (Originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 200_Ok response "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity receives the 200_Ok response + and + the IMS_IBCF_A entity forwards the 200_OK + to the IMS_P_CSCF_A entity + } + } + } // End of TP_IC_IBCF_CANCEL_OK_01 + + + + Test Purpose { + TP Id TP_IC_IBCF_CANCEL_OK_02 + Test objective + "The P-CSCF receives a 200 OK response to a CANCEL request from the UE receiving the CANCEL request (Terminating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 200_Ok response "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_B entity sends the 200_Ok + to the IMS_A entity + } + } + } // End of TP_IC_IBCF_CANCEL_OK_02 + + + + Test Purpose { + TP Id TP_IC_IBCF_CANCEL_OK_03 + Test objective + "The P-CSCF receives a 200 OK response to a CANCEL request from the UE receiving the CANCEL request (Originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" + + Config Id CF_VxLTE_RMI // CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 200_Ok response "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity receives the 200_Ok response + and + the IMS_IBCF_A entity forwards the 200_OK + to the IMS_P_CSCF_A entity + } + } + } // End of TP_IC_IBCF_CANCEL_OK_01 + + + + + Test Purpose { + TP Id TP_IC_IBCF_487INVITE_01 + Test objective + "Verify that the IBCF successfully processes a 487 INVITE (Request Terminated). (Originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and + the UE_A entity isRequestedToSend a CANCEL and + the UE_A entity hasReceived200OkCancel from the UE_B entity + + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 487_INVITE request "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity receives the 487_INVITE request + from the IMS_B entity and + the IMS_IBCF_B entity forwards the 487_INVITE request + to the IMS_S_CSCF_A entity + } + } + } // End of TP_IC_IBCF_487INVITE_01 + + + + + Test Purpose { + TP Id TP_IC_IBCF_487INVITE_02 + Test objective + "Verify that the IBCF successfully processes a 487 INVITE (Request Terminated). (Terminating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and + the UE_A entity isRequestedToSend a CANCEL and + the UE_A entity hasReceived200OkCancel from the UE_B entity + + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 487_INVITE request "addressed to UE_A" to the IMS_B entity + } + then { + the IMS_IBCF_B entity sends the 487_INVITE request + to the IMS_IBCF_A entity + } + } + } // End of TP_IC_IBCF_487INVITE_02 + + + + Test Purpose { + TP Id TP_IC_IBCF_487INVITE_ACK_01 + Test objective + "Verify that the IBCF successfully processes an ACK response for a Request terminated. (Originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and + the UE_A entity isRequestedToSend a CANCEL and + the UE_A entity hasReceived200OkCancel from the UE_B entity and + the UE_A entity hasReceivedTerminatedRequest from the UE_B entity + + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a ACK response "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity receives the ACK response + from the IMS_S_CSCF_A entity and + the IMS_IBCF_A entity sends the ACK response + to the IMS_IBCF_B entity + } + } + } // End of TP_IC_IBCF_487INVITE_ACK_01 + + + + Test Purpose { + TP Id TP_IC_IBCF_487INVITE_ACK_02 + Test objective + "Verify that the IBCF successfully processes an ACK response for a Request terminated. (Terminating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and + the UE_A entity isRequestedToSend a CANCEL and + the UE_A entity hasReceived200OkCancel from the UE_B entity and + the UE_A entity hasReceivedTerminatedRequest from the UE_B entity + + } + + Expected behaviour + ensure that { + when { + the IMS_A entity sends a ACK response "addressed to UE_A" to the IMS_B entity + } + then { + the IMS_IBCF_B entity receives the ACK response + from the IMS_A entity and + the IMS_IBCF_A entity forwards the ACK response + to the IMS_S_CSCF_B entity + } + } + } // End of TP_IC_IBCF_487INVITE_ACK_02 + + + + + Test Purpose { + TP Id TP_IC_IBCF_486INVITE_01 + Test objective + "Verify that the IBCF successfully processes a 486 INVITE (BUSY) originating leg. " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + UE_A isAttachedTo the EPC_A and + UE_B isAttachedTo the EPC_B and + UE_A isRegisteredTo the IMS_A and + UE_B isRegisteredTo the IMS_B and + UE_B isBusy + + + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 486_INVITE "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity receives the 486_INVITE + from the IMS_B entity and + the IMS_IBCF_A entity forwards the 486_INVITE + to the IMS_P_CSCF_A entity + } + } + } // End of TP_IC_IBCF_486INVITE_01 + + + + Test Purpose { + TP Id TP_IC_IBCF_486INVITE_02 + Test objective + "Verify that the IBCF successfully processes a 486 INVITE (BUSY) Terminating leg. " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + UE_A isAttachedTo the EPC_A and + UE_B isAttachedTo the EPC_B and + UE_A isRegisteredTo the IMS_A and + UE_B isRegisteredTo the IMS_B and + UE_B isBusy + + + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 486_INVITE "addressed to UE_A" to the IMS_B entity + } + then { + the IMS_S_CSCF_B entity forwards the 486_INVITE + to the IMS_IBCF_B entity and + the IMS_IBCF_B entity sends the 486_INVITE + to the IMS_A entity + } + } + } // End of TP_IC_IBCF_486INVITE_02 + + + + + + Test Purpose { + TP Id TP_IC_IBCF_486INVITE_ACK_01 + Test objective + "Verify that the IBCF successfully processes an ACK in response to a BUSY reply during session set-up (Originating leg). " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + UE_A isAttachedTo the EPC_A and + UE_B isAttachedTo the EPC_B and + UE_A isRegisteredTo the IMS_A and + UE_B isRegisteredTo the IMS_B and + UE_B isBusy and + UE_B hasResponded486INVITE + + + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends an ACK "addressed to UE_B" to the IMS_B entity + } + then { + the IMS_IBCF_A entity receives the ACK + from the IMS_P_CSCF_A entity and + the IMS_IBCF_A entity forwards the ACK + to the IMS_S_CSCF_B entity + } + } + } // End of TP_IC_IBCF_486INVITE_ACK_01 + + + + Test Purpose { + TP Id TP_IC_IBCF_486INVITE_ACK_02 + Test objective + "Verify that the IBCF successfully processes an ACK in response to a BUSY reply during session set-up (Terminating leg). " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + UE_A isAttachedTo the EPC_A and + UE_B isAttachedTo the EPC_B and + UE_A isRegisteredTo the IMS_A and + UE_B isRegisteredTo the IMS_B and + UE_B isBusy and + UE_B hasResponded486INVITE + + + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends an ACK "addressed to UE_B" to the IMS_A entity + } + then { + the IMS_IBCF_B entity receives the ACK + from the IMS_A entity and + the IMS_IBCF_B entity forwards the ACK + to the IMS_S_CSCF_B entity + } + } + } // End of TP_IC_IBCF_486INVITE_ACK_02 + + + + Test Purpose { + TP Id TP_IC_IBCF_REGISTER_01 // Former TP TP_IMS_5137_04 + Test objective + "The IBCF shall perform encryption for topology hiding before an initial REGISTER request is sent " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.4.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + IMS_A isConfiguredForTopologyHiding + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a REGISTER "addressed to home network IMS_A" to the IMS_B entity + } + then { + the IMS_IBCF_B entity sends the REGISTER containing + Via containing + ViaBody containing + HostPort indicating value PX_IBCF_B_SIP_URI + ; + ; , + Route indicating value PX_IBCF_B_SIP_URI, + Path containing + PathValue indicating value PX_IBCF_B_SIP_URI + ; + ; + to the IMS_IBCF_A entity and + the IMS_IBCF_B entity receives the 401_Unauthorized + from the IMS_A entity and + the IMS_IBCF_B entity forwards the 401_Unauthorized + to the IMS_P_CSCF_B entity + } + } + } // End of TP_IC_IBCF_REGISTER_01 + + + + } // End of Package TP_IC diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 5864466..f89ec5a 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -65,6 +65,7 @@ Package Sip_Common { - isNotAttachedTo - isAttachedTo - isNotConfiguredForTopologyHiding + - isConfiguredForTopologyHiding - isExistingIn - establishedSecurityRelation - registeredIdentityTelURI @@ -74,6 +75,8 @@ Package Sip_Common { - hasReceivedIntialRequestForDialog - hasReceived200OkOnInitialRequestForDialogWith - hasReceived180OnInitialRequest + - hasReceived200OkCancel + - hasReceivedTerminatedRequest - registeredPublicIdsWithTelUriAndSipUri - hasReceivedSubsequentOrTargetRefreshRequestInDialog - previouslyEstablishedCallWith @@ -89,6 +92,7 @@ Package Sip_Common { - SUBSCRIBE - hasAchieveInitialINVITE - hasAchieveINVITE + - hasResponded486INVITE - INVITE - 486_INVITE - ACK @@ -151,6 +155,9 @@ Package Sip_Common { Test Configuration CF_VxLTE_INT ; + Test Configuration CF_VxLTE_RMI + ; + Test Configuration CF_VxLTE_RMI_A ; -- GitLab From ea1099d2d59b92e8e702b721645bd76e832af79c Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 11 May 2020 08:43:59 +0200 Subject: [PATCH 025/176] split of monitor component per protocol --- ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn | 37 +++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn index da22ab9..2102eb9 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn @@ -12,6 +12,9 @@ module AtsImsIot_TestSystem { */ type component IotSystemInterface { port DataPort dPort; + port SipPort sipPort; + port DiameterPort diameterPort; + port SgiPort sgiPort; port EquipmentAccessPort eaPort; port AdapterConfigPort acPort; } @@ -27,6 +30,24 @@ module AtsImsIot_TestSystem { port SgiPort sgiPort; port ImsCoordinationPort icpPort; } + + type component SipInterfaceMonitor extends InterfaceMonitor { + port SipPort sipPort; + port ImsCoordinationPort icpPort; + } + type component DiameterInterfaceMonitor extends InterfaceMonitor { + port DiameterPort diameterPort; + port ImsCoordinationPort icpPort; + } + type component NaptrInterfaceMonitor extends InterfaceMonitor { + port NaptrPort naptrPort; + port ImsCoordinationPort icpPort; + } + type component SgiInterfaceMonitor extends InterfaceMonitor { + port SgiPort sgiPort; + port ImsCoordinationPort icpPort; + } + /** * @desc * used to coordinate the behavior of other components. It is in charge @@ -44,6 +65,9 @@ module AtsImsIot_TestSystem { type port DataPort message { in Request, Response, SEND_request, RECEIVE_response; // SIP } + type port SipPort message { //type port SipPort message + in Request, Response, SEND_request, RECEIVE_response; // SIP + } type port NaptrPort message { in NAPTRmessage; } @@ -92,7 +116,7 @@ module AtsImsIot_TestSystem { group g_release15 { - type record CF_ATT { + type record CF_ATT_old { ImsInterfaceMonitor gmA, ImsInterfaceMonitor rx, ImsInterfaceMonitor s6a, @@ -102,5 +126,16 @@ module AtsImsIot_TestSystem { ImsInterfaceMonitor sgi, ImsInterfaceMonitor gmB } + + type record CF_ATT { + SipInterfaceMonitor gmA, + DiameterInterfaceMonitor rx, + DiameterInterfaceMonitor s6a, + DiameterInterfaceMonitor gx, + SipInterfaceMonitor mxA, + SipInterfaceMonitor mw, + SgiInterfaceMonitor sgi, + SipInterfaceMonitor gmB + } } // end of g_release15 } \ No newline at end of file -- GitLab From d4ef9e7b1707507940d73895e7de957746b5d1fe Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 11 May 2020 08:45:30 +0200 Subject: [PATCH 026/176] modification of functions/parameters due to splited monitor components per protocol --- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 6e0c383..c5540f1 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -2781,7 +2781,8 @@ module AtsImsIot_Functions { }// end group - function f_setInterfaceNameOnComponent(charstring p_name) runs on ImsInterfaceMonitor{ + //function f_setInterfaceNameOnComponent(charstring p_name) runs on ImsInterfaceMonitor{ + function f_setInterfaceNameOnComponent(charstring p_name) runs on InterfaceMonitor{ vc_interfaceName := p_name; } -- GitLab From a9a79dca05886f5b59fc97e3d7f88076a5292aa7 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 11 May 2020 08:46:16 +0200 Subject: [PATCH 027/176] modification of functions/parameters due to splited monitor components per protocol --- .../AtsImsIot_TestConfiguration.ttcn | 327 +++++++++++++++++- 1 file changed, 321 insertions(+), 6 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn index 005f571..a9dfa4e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn @@ -20,7 +20,8 @@ module AtsImsIot_TestConfiguration { import from LibIot_Functions { altstep a_receiveIOTVerdict; function f_setConformanceVerdict, f_setE2EVerdict; } import from LibIot_TestConfiguration { function f_cf_oracle_up, f_cf_oracle_down; } import from LibIot_TestInterface {type IotEquipmentUser;} - import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL, CF_ATT;} + import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, SipInterfaceMonitor, DiameterInterfaceMonitor, NaptrInterfaceMonitor, SgiInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL, CF_ATT, CF_ATT_old;} + import from LibIot_TestInterface {type InterfaceMonitor;} import from AtsImsIot_Templates { template m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout, @@ -138,6 +139,66 @@ module AtsImsIot_TestConfiguration { // configure oracle f_cf_oracle_up(p_monitor); } + /** + * @desc configures monitor component: connects to the synchronnization + * port, maps to the TSI port and connects to the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_up_sip(in SipInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + connect(p_monitor:syncPort, self:syncPort); + connect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + map(p_monitor:sipPort, system:sipPort); + map(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_up(p_monitor); + } + /** + * @desc configures monitor component: connects to the synchronnization + * port, maps to the TSI port and connects to the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_up_diameter(in DiameterInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + connect(p_monitor:syncPort, self:syncPort); + connect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + map(p_monitor:diameterPort, system:diameterPort); + map(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_up(p_monitor); + } + /** + * @desc configures monitor component: connects to the synchronnization + * port, maps to the TSI port and connects to the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_up_naptr(in NaptrInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + connect(p_monitor:syncPort, self:syncPort); + connect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + map(p_monitor:naptrPort, system:naptrPort); + map(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_up(p_monitor); + } + /** + * @desc configures monitor component: connects to the synchronnization + * port, maps to the TSI port and connects to the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_up_sgi(in SgiInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + connect(p_monitor:syncPort, self:syncPort); + connect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + map(p_monitor:sgiPort, system:sgiPort); + map(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_up(p_monitor); +} /** * @desc frees monitor component: disconnects the synchronnization @@ -154,12 +215,71 @@ module AtsImsIot_TestConfiguration { // configure oracle f_cf_oracle_down(p_monitor); } - + /** + * @desc frees monitor component: disconnects the synchronnization + * port, unmaps from the TSI port and disconnects from the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_down_sip(in SipInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + disconnect(p_monitor:syncPort, self:syncPort); + disconnect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + unmap(p_monitor:sipPort, system:sipPort); + unmap(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_down(p_monitor); + } + /** + * @desc frees monitor component: disconnects the synchronnization + * port, unmaps from the TSI port and disconnects from the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_down_diameter(in DiameterInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + disconnect(p_monitor:syncPort, self:syncPort); + disconnect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + unmap(p_monitor:diameterPort, system:diameterPort); + unmap(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_down(p_monitor); + } + /** + * @desc frees monitor component: disconnects the synchronnization + * port, unmaps from the TSI port and disconnects from the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_down_naptr(in NaptrInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + disconnect(p_monitor:syncPort, self:syncPort); + disconnect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + unmap(p_monitor:naptrPort, system:naptrPort); + unmap(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_down(p_monitor); + } + /** + * @desc frees monitor component: disconnects the synchronnization + * port, unmaps from the TSI port and disconnects from the oracle + * @param p_monitor monitor component + */ + function f_cf_monitor_down_sgi(in SgiInterfaceMonitor p_monitor) runs on ImsTestCoordinator { + // connect sync ports + disconnect(p_monitor:syncPort, self:syncPort); + disconnect(p_monitor:icpPort, self:icpPort); + // mapp TSI port + unmap(p_monitor:sgiPort, system:sgiPort); + unmap(p_monitor:acPort, system:acPort); + // configure oracle + f_cf_oracle_down(p_monitor); + } } group adapterConfiguration { - function f_cf_setFilter(in SetFilterReq p_req) runs on ImsInterfaceMonitor { + function f_cf_setFilter(in SetFilterReq p_req) runs on /*Ims*/InterfaceMonitor { var SetFilterRsp v_rsp; var template Status v_status := { code := e_success, @@ -202,6 +322,50 @@ module AtsImsIot_TestConfiguration { v_monitor.done; return v_monitor; } + /** + * @desc creates a monitor component + * @param p_name name of the monitor component + * @return the created monitor component + */ + function f_cf_create_monitor_sip(in charstring p_name) runs on ImsTestCoordinator return SipInterfaceMonitor { + var SipInterfaceMonitor v_monitor := SipInterfaceMonitor.create(p_name) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + v_monitor.done; + return v_monitor; + } + /** + * @desc creates a monitor component + * @param p_name name of the monitor component + * @return the created monitor component + */ + function f_cf_create_monitor_diameter(in charstring p_name) runs on ImsTestCoordinator return DiameterInterfaceMonitor { + var DiameterInterfaceMonitor v_monitor := DiameterInterfaceMonitor.create(p_name) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + v_monitor.done; + return v_monitor; + } + /** + * @desc creates a monitor component + * @param p_name name of the monitor component + * @return the created monitor component + */ + function f_cf_create_monitor_naptr(in charstring p_name) runs on ImsTestCoordinator return NaptrInterfaceMonitor { + var NaptrInterfaceMonitor v_monitor := NaptrInterfaceMonitor.create(p_name) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + v_monitor.done; + return v_monitor; + } + /** + * @desc creates a monitor component + * @param p_name name of the monitor component + * @return the created monitor component + */ + function f_cf_create_monitor_sgi(in charstring p_name) runs on ImsTestCoordinator return SgiInterfaceMonitor { + var SgiInterfaceMonitor v_monitor := SgiInterfaceMonitor.create(p_name) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + v_monitor.done; + return v_monitor; + } } @@ -1239,7 +1403,7 @@ module AtsImsIot_TestConfiguration { group g_release15 { - function f_cf_epc_call_rel15_up ( in CF_ATT p_config ) runs on ImsTestCoordinator { + function f_cf_epc_call_rel15_up_old ( in CF_ATT_old p_config ) runs on ImsTestCoordinator { // Initialize the Adapter (including the TrafficCapture process). timer tc_configureGuard; var StartTrafficCaptureRsp startResult; @@ -1354,8 +1518,8 @@ module AtsImsIot_TestConfiguration { } } // end of function f_cf_epc_call_rel15_up - function f_cf_epc_call_rel15_down( - inout CF_ATT p_config + function f_cf_epc_call_rel15_down_old( + inout CF_ATT_old p_config ) runs on ImsTestCoordinator { // Stop traffic capture processing. timer tc_configureGuard; @@ -1386,6 +1550,157 @@ module AtsImsIot_TestConfiguration { f_cf_monitor_down(p_config.sgi); f_cf_monitor_down(p_config.gmB); } // end of function f_cf_epc_call_rel15_down + + function f_cf_epc_call_rel15_up ( in CF_ATT p_config ) runs on ImsTestCoordinator { + // Initialize the Adapter (including the TrafficCapture process). + timer tc_configureGuard; + var StartTrafficCaptureRsp startResult; + + activate(a_receiveIOTVerdict()); + + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_generalConfigurationReq_offline); + alt { + [] acPort.receive (m_generalConfigurationRsp_success) { + log("General configuration succeed."); + tc_configureGuard.stop; + } + [] acPort.receive (m_generalConfigurationRsp_timeout) { + setverdict(fail); + tc_configureGuard.stop; + stop; + } + [] acPort.receive (m_generalConfigurationRsp_error) { + setverdict(fail); + tc_configureGuard.stop; + stop; + } + [] acPort.receive { + log("Unknown response."); + tc_configureGuard.stop; + setverdict (inconc); + stop; + } + [] tc_configureGuard.timeout { + log("Timeout."); + setverdict (inconc); + stop; + } + } + + f_cf_monitor_up_sip(p_config.gmA); + f_cf_monitor_up_diameter(p_config.rx); + f_cf_monitor_up_diameter(p_config.s6a); + f_cf_monitor_up_diameter(p_config.gx); + f_cf_monitor_up_sip(p_config.mxA); + f_cf_monitor_up_sip(p_config.mw); + f_cf_monitor_up_sgi(p_config.sgi); + if(isvalue(p_config.gmB)) { + f_cf_monitor_up_sip(p_config.gmB); + } + + p_config.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.gmA.done; + + p_config.rx.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {f_getInterfaceInfo("Rx", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.rx.done; + + p_config.mxA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.mxA.done; + + p_config.mw.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.mw.done; + + p_config.sgi.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Sgi", PX_PRODUCTS[PX_EUT_A])} + ) + ))); + p_config.sgi.done; + + p_config.gmB.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])} + ) + ))); + // Start traffic capture processing. + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_startTrafficCaptureReq); + alt { + [] acPort.receive (m_startTrafficCaptureRsp_any) -> value startResult { + tc_configureGuard.stop; + if (startResult.status.code != e_success) + { + log("**** StartTrafficCaptureReq unsuccessfull! ****"); + setverdict(fail); + stop; + } + } + [] tc_configureGuard.timeout { + log("**** StartTrafficCaptureReq not answered. ****"); + setverdict (inconc); + stop; + } + } + } // end of function f_cf_epc_call_rel15_up + + function f_cf_epc_call_rel15_down( + inout CF_ATT p_config + ) runs on ImsTestCoordinator { + // Stop traffic capture processing. + timer tc_configureGuard; + var StopTrafficCaptureRsp stopResult; + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_stopTrafficCaptureReq); + alt { + [] acPort.receive (m_stopTrafficCaptureRsp_any) -> value stopResult { + tc_configureGuard.stop; + if (stopResult.status.code != e_success) + { + log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq unsuccessfull! ****"); + setverdict(fail); + } + } + [] tc_configureGuard.timeout { + log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq not answered. ****"); + setverdict (inconc); + } + } + + f_cf_monitor_down_sip(p_config.gmA); + f_cf_monitor_down_diameter(p_config.rx); + f_cf_monitor_down_diameter(p_config.s6a); + f_cf_monitor_down_diameter(p_config.gx); + f_cf_monitor_down_sip(p_config.mxA); + f_cf_monitor_down_sip(p_config.mw); + f_cf_monitor_down_sgi(p_config.sgi); + if(isvalue(p_config.gmB)) { + f_cf_monitor_down_sip(p_config.gmB); + } + + } // end of function f_cf_epc_call_rel15_down } // end group g_release15 -- GitLab From 87b23912b5930c98328bb586ea62cef0d4c1134f Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 11 May 2020 08:46:35 +0200 Subject: [PATCH 028/176] modification of functions/parameters due to splited monitor components per protocol --- ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn | 56 +++++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn index f3ef9c9..afb96ac 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn @@ -29,8 +29,8 @@ module AtsImsIot_TestCases_ATT { * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 */ - testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_ATT v_config; + testcase TC_VxLTE_INT_ATT_01_old ( ) runs on ImsTestCoordinator system IotSystemInterface { + var CF_ATT_old v_config; var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); @@ -48,7 +48,7 @@ module AtsImsIot_TestCases_ATT { f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueA ); - f_cf_epc_call_rel15_up ( v_config ); + f_cf_epc_call_rel15_up_old ( v_config ); // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile @@ -72,10 +72,58 @@ module AtsImsIot_TestCases_ATT { //unmap/disconnet component ports f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); - f_cf_epc_call_rel15_down ( v_config ); + f_cf_epc_call_rel15_down_old ( v_config ); f_cf_adapter_down ( ); } // End of TC TC_VxLTE_INT_ATT_01 + testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + var CF_ATT v_config; + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + v_config.gmA := f_cf_create_monitor_sip ( c_gm_A ); + v_config.gmB := f_cf_create_monitor_sip ( c_gm_B ); + v_config.mxA := f_cf_create_monitor_sip ( c_mx_A ); + v_config.rx := f_cf_create_monitor_diameter ( c_rx ); + v_config.s6a := f_cf_create_monitor_diameter ( c_s6a ); + v_config.gx := f_cf_create_monitor_diameter ( c_gx ); + v_config.mw := f_cf_create_monitor_sip ( c_mw ); + v_config.sgi := f_cf_create_monitor_sgi ( c_sgi ); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueA ); + f_cf_epc_call_rel15_up ( v_config ); + +// // preamble +// f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile +// f_mtc_userRegistration ( v_ueB, v_userInfoB ); +// +// // test body +// // Check that user A can register to IMS A +// f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message +// f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check +// f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) +// f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) +// f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) +// f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); +// f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 +// +// // postamble +// f_PO_user_home_deregistration ( v_ueB ); +// f_PO_user_home_deregistration ( v_ueA ); +// f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_epc_call_rel15_down ( v_config ); + f_cf_adapter_down ( ); + } // End of TC TC_VxLTE_INT_ATT_01_new + } // End of group networkAttachmentAndDefaultBearer -- GitLab From 39ed770cb5d243f808cdee77feabdc07f5bbb120 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Mon, 11 May 2020 14:07:42 +0200 Subject: [PATCH 029/176] ignore module updated --- .gitignore | 2 ++ ttcn/LibIms | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1d4fb2c..3eab426 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ .classpath .metadata +/ttcn3build/ +/ttcn/LibSip/xsd/*.ttcn3view diff --git a/ttcn/LibIms b/ttcn/LibIms index 476286c..45bea25 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit 476286ca120c7f740d669f4a768e966fed02d36b +Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f -- GitLab From 48ee8e2d031eb68245ac960cf7bff869223cb542 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Wed, 13 May 2020 09:12:21 +0200 Subject: [PATCH 030/176] New TPs for Rx and Gx interface added. --- .../AtsImsIot_Diameter_Templates.ttcn | 149 +++++++ ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 82 ++-- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 93 ++-- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 396 +++++++++++------- ttcn/LibSip | 2 +- 5 files changed, 486 insertions(+), 236 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn new file mode 100644 index 0000000..01ac97e --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -0,0 +1,149 @@ +/** + * @author STF574 + * @version $Id$ + * @desc This module defines AtsIot Diameter Templates for message, header, and + * structured types.
+ * @remark Any additions to the templates shall follow the design rules + * and always modify base templates only; + */ + +module AtsImsIot_Diameter_Templates { + + //LibCommon + import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all; + import from LibCommon_BasicTypesAndValues {type UInt8, UInt32, UInt64;}; + + //LibDiameter + import from LibDiameter_TypesAndValues all; + import from LibDiameter_Templates all; + import from LibDiameter_Steps all; + import from LibDiameter_Types_Gx_AVPs all; + import from LibDiameter_Types_Base_AVPs all; + import from LibDiameter_Types_Rx_AVPs all; + + group DiameterHeaderFields { + group RxHeaderFields{ + template Abort_Cause_AVP mw_abortCause(template Abort_Cause_Type p_avpData) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_abort_Cause_AVP_Code), + aVP_Data := p_avpData + }; + + template Media_Component_Description_AVP mw_mediaComponentDescription := + { + aVP_Header := mw_aVP_Header_VMbit1(c_media_Component_Description_AVP_Code), + media_Component_Nr := {aVP_Header := ?, aVP_Data := ?}, + media_Sub_component := {mw_mediaSubComponent}, + af_Application_Id := *, + media_type := *, + max_Requested_Bw_Ul := *, + max_Requested_Bw_Dl := *, + flow_Status := *, + reservation_Priority := *, + rs_Bw := *, + rr_Bw := *, + codec_data := * + } + + template Media_Sub_Component_AVP mw_mediaSubComponent := + { + aVP_Header := mw_aVP_Header_VMbit1(c_media_Sub_Component_AVP_Code), + flow_Number := ?, + flow_Description := ?, + flow_Status := mw_flowStatus(ENABLED_E), + flow_Usage := mw_flowUsage(AF_SIGNALLING_E), + max_Requested_Bw_Ul := *, + max_Requested_Bw_Dl := *, + af_Signalling_Protocol := mw_afSignallingProtocolSIP, + aVP_Type := * + } + + template AF_Signalling_Protocol_AVP mw_afSignallingProtocolSIP := { + //Ref: ETSI TS 129 214 AF_Signalling_Protocol AVP + aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_aF_Signalling_Protocol_AVP_Code), + aVP_Data := SIP_E + } + + template Flow_Status_AVP mw_flowStatus(template (present) Flow_Status_Type p_avpData) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_flow_Status_AVP_Code), + aVP_Data := p_avpData + } + + template Flow_Usage_AVP mw_flowUsage(template (present) Flow_Usage_Type p_avpData) := + { + aVP_Header := mw_aVP_Header_VMbit1(c_flow_Usage_AVP_Code), + aVP_Data := p_avpData + } + } //end group RxHeaderFields + group GxHeaderFields{ + + template CC_Request_Type_AVP mw_cC_Request_Type(CC_Request_Ty_Type p_avpData):= + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Request_Type_AVP_Code), + aVP_Data := p_avpData + } + } //end group GxHeaderFields + } //end DiameterHeaderFields + group DiameterTemplates { + group RxMessageTemplates{ + group RxRequestMessageTemplates{ + + template ASR_MSG mw_ASR_abortCause(template (present) Abort_Cause_Type p_avpData) modifies mw_ASR_dummy := { + aSR_Body :={ + abort_cause := mw_abortCause(p_avpData) + } + } + + }// end group RxRequestMessageTemplates + group RxAnswertMessageTemplates{ + + template AAA_MSG mw_AAA_AcceptableService modifies mw_AAA_dummy := { + aAA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + acceptable_service_info := { + media_component_description := + {mw_mediaComponentDescription + } + }, + ip_Can_Type := ?, + rat_Type := ? + + } + } + + template AAA_MSG mw_AAA_resultCode modifies mw_AAA_dummy := { + aAA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + + template ASA_MSG mw_ASA_resultCode modifies mw_ASA_dummy := { + aSA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + }// end group RxRequestMessageTemplates + }//end group RxMessageTemplates + + group GxMessageTemplates{ + group GxRequestMessageTemplates{ + + template CCR_MSG mw_CCR_RequestType(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := { + cCR_Body :={ + cC_Request_Type := mw_cC_Request_Type(p_avpData) + } + } + + }// end group GxRequestMessageTemplates + group GxAnswertMessageTemplates{ + + template CCA_MSG mw_CCA_resultCode modifies mw_CCA_dummy := { + cCA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + }// end group GxRequestMessageTemplates + }//end group GxMessageTemplates + } // end group DiameterTemplates +}//end module AtsImsIot_Diameter_Templates \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index c5540f1..3c1228b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -2587,51 +2587,51 @@ module AtsImsIot_Functions { } } - group diameterComponent { - /** - * @desc - * This function waits for a given Diameter message. - * @param p_monitor Reference of Diameter component - * @param p_msg The Diameter message - * @param p_log The Log message - */ - function f_receiveDiameterMsg ( in template (present) DIAMETER_MSG p_diameter, - in charstring p_log, in boolean p_bool ) - runs on ImsInterfaceMonitor { - timer t_local := PX_MAX_MSG_WAIT; - var boolean v_loop := true; - log ( "### " & p_log ); + group diameterComponent { + /** + * @desc + * This function waits for a given Diameter message. + * @param p_monitor Reference of Diameter component + * @param p_msg The Diameter message + * @param p_log The Log message + */ + function f_receiveDiameterMsg (in template (present) DIAMETER_MSG p_diameter, + in charstring p_log, in boolean p_bool ) + runs on DiameterInterfaceMonitor { + timer t_local := PX_MAX_MSG_WAIT; + var boolean v_loop := true; + log ( "### " & p_log ); t_local.start; - while ( v_loop ) { - alt { - [] rxPort.receive ( p_diameter ) { - t_local.stop; - if ( p_bool ) { - setverdict ( pass, self, "*** f_receiveDiameterMsg: expected Diameter message received***"); - break; - } - else { - setverdict ( fail, self, "*** f_receiveDiameterMsg: Diameter message received but not expected***"); - break; - } - } - [] t_local.timeout { - if ( p_bool ) { - setverdict ( fail, self, "*** f_receiveDiameterMsg: expected Diameter message not received***"); - break; - } - else { - setverdict ( pass, self, "*** f_receiveDiameterMsg: Diameter message not received as expected***"); - break; - } - } - [] rxPort.receive { - t_local.start; - } + while ( v_loop ) { + alt { + [] diameterPort.receive ( p_diameter ) { + t_local.stop; + if ( p_bool ) { + setverdict ( pass, self, "*** f_receiveDiameterMsg: expected Diameter message received***"); + break; + } + else { + setverdict ( fail, self, "*** f_receiveDiameterMsg: Diameter message received but not expected***"); + break; + } + } + [] t_local.timeout { + if ( p_bool ) { + setverdict ( fail, self, "*** f_receiveDiameterMsg: expected Diameter message not received***"); + break; + } + else { + setverdict ( pass, self, "*** f_receiveDiameterMsg: Diameter message not received as expected***"); + break; + } + } + [] diameterPort.receive { + t_local.start; + } } } } - } + } group sgiComponent { /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index b8c7180..8ee0dfd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -7,45 +7,20 @@ module AtsImsIot_TP_behavior_GX { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from AtsImsIot_Diameter_Templates all; - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; group g_PGW { @@ -53,6 +28,48 @@ group g_PGW { } // end group g_PGW group g_PCRF { + + + /** + * Starts monitor component behavior for TP_GX_PCRF_CCA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT when receives CC-Request for PCC Rules sends a CC-Answer in case of detachment procedure."
+     * ensure that {
+     *     when {
+     *         the EPC_PGW_A entity sends an CCR containing
+     *             CC_Request_Type_AVP
+     *                 indicating value TERMINATION_REQUEST
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the CCA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the EPC_PGW_A entity
+     *     }
+     * }  
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_CCA_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, + "TP_RX_PCRF_CCA_02 - CC Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_resultCode }, + "TP_RX_PCRF_CCA_02 - CC Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_CCA_02 } // end group g_PCRF diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index 3ce642c..dbaa2b0 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -7,98 +7,186 @@ module AtsImsIot_TP_behavior_RX { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from AtsImsIot_Diameter_Templates all; - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; + group g_PCRF { group g_PCRF_ASA { - /** - * Starts monitor component behavior for TP_RX_PCRF_ASA_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-	 * ensure that {
-	 *     when { 
-	 *         EPC_PCRF triggers_termination of SIP_session 
-	 *     }
-	 *     then { 
-	 *         EPC_PCRF sends Abort-Session-Request to IMS_P-CSCF containing 
-	 *             Session-Id_AVP indicating session of SIP_session
-	 *             Abort-Cause_AVP indicating BEARER_RELEASED (0)
-	 *     } 
-	 * } 
-	 * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - * @remark source function f_mtc_check_TP_EPC_6005_01 - */ - function f_mtc_check_TP_RX_PCRF_ASA_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_RX_PCRF_ASA_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_RX_PCRF_ASA_01 + /** + * Starts monitor component behavior for TP_RX_PCRF_ASA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * ensure that {
+     *     when { 
+     *         the IMS_P_CSCF_A entity sends a ASR containing
+     *              Abort_Cause_AVP
+     *                  indicating value BEARER_RELEASED '(0)'
+     *              ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the ASA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS "(2001)"
+     *     ;
+     *     to the IMS_P_CSCF_A entity
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCRF_ASA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) }, + "TP_RX_PCRF_ASA_01 - AS Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_resultCode }, + "TP_RX_PCRF_ASA_01 - AS Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_ASA_01 } // end group g_PCRF_ASA group g_PCRF_AAA { - /** - * Starts monitor component behavior for TP_RX_PCRF_AAA_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6014_01 - */ - function f_mtc_check_TP_RX_PCRF_AAA_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_RX_PCRF_AAA_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_RX_PCRF_AAA_01 + /** + * Starts monitor component behavior for TP_RX_PCRF_AAA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after AA-Request is received due to provisioning of AF Signalling flow sends AA-Answer."
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity sends an AAR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the AAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS,
+     *             Acceptable_Service_Info_AVP containing
+     *                 "one or more" Media_Component_Description_AVP containing
+     *                     Media_Component_Number_AVP
+     *                         indicating value 0,
+     *                     Media_Sub_Component_AVP containing
+     *                         Flow_Description_AVP
+     *                         Flow_Usage_AVP
+     *                             indicating value AF_SIGNALING,
+     *                         Flow_Status_AVP
+     *                             indicating value ENABLED,
+     *                         AF_Signalling_Protocol_AVP
+     *                             indicating value SIP
+     *                     ;
+     *                 ;
+     *             ;,
+     *             IP_CAN_AVP
+     *             RAT_Type_AVP
+     *         ;
+     *         to the IMS_P_CSCF_A entity
+     *         }
+     *     }
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCRF_AAA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy }, + "TP_RX_PCRF_AAA_01 - AA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_AcceptableService }, + "TP_RX_PCRF_AAA_01 - AA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_AAA_01 + + /** + * Starts monitor component behavior for TP_RX_PCRF_AAA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT sends AA-Answer after RAA is received from PGW."
+     * ensure that {
+     *     when {
+     *         the EPC_PGW_A entity sends a RAA
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the AAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS "(2001)"
+     *             Acceptable_Service_Info_AVP containing
+     *                 "one or more" Media_Component_Description_AVP
+     *             ;
+     *         ;
+     *         to the IMS_P_CSCF_A entity
+     *     }
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCRF_AAA_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_resultCode }, + "TP_RX_PCRF_AAA_02", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_AAA_02 + + /** + * Starts monitor component behavior for TP_RX_PCRF_AAA_03 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives AA-Answer from home PCRF and it sends AA-Answer towards visited P-CSCF."
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends a AAA
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the AAA 
+     *         to the IMS_P_CSCF_B entity
+     *     }
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCRF_AAA_03( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_resultCode }, + "TP_RX_PCRF_AAA_03", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_AAA_03 } // end group g_PCRF_AAA @@ -110,68 +198,66 @@ group g_PCSCF { group g_PCSCF_AAR { - /** - * Starts monitor component behavior for TP_RX_PCSCF_AAR_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-	 * ensure that {
-	 *     when { 
-	 *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
-	 *     }
-	 *     then { 
-	 *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
-	 *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
-	 *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
-	 *             and one or more Media-Component-Description_AVP containing 
-	 *                 Media-Component-Number_AVP indicating value 0
-	 *                 and Flow-Description_AVP indicating 
-	 *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-	 *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-	 *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-	 *                 and Flow-Description_AVP indicating 
-	 *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-	 *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-	 *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-	 *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
-	 *                 and Flow-Status_AVP indicating ENABLED(2)
-	 *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
-	 *     } 
-	 * } 
-	 * 
- * @see TS 103 029 V3.1.1 clause 7.2.1.1 - * @remark source function f_mtc_check_TP_EPC_6013_01 - */ - function f_mtc_check_TP_RX_PCSCF_AAR_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_RX_PCSCF_AAR_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01 + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * ensure that {
+     *     when { 
+     *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
+     *     }
+     *     then { 
+     *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
+     *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
+     *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
+     *             and one or more Media-Component-Description_AVP containing 
+     *                 Media-Component-Number_AVP indicating value 0
+     *                 and Flow-Description_AVP indicating 
+     *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+     *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+     *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+     *                 and Flow-Description_AVP indicating 
+     *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+     *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+     *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+     *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
+     *                 and Flow-Status_AVP indicating ENABLED(2)
+     *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
+     *     } 
+     * } 
+     * 
+ * @see TS 103 029 V3.1.1 clause 7.2.1.1 + * @remark source function f_mtc_check_TP_EPC_6013_01 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_RX_PCSCF_AAR_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01 } // end group g_PCSCF_AAR - + group g_PCSCF_STR { - /** - * Starts monitor component behavior for TP_RX_PCSCF_STR_03 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6034_02 - */ + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_03 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6034_02 + */ function f_mtc_check_TP_RX_PCSCF_STR_03( - ImsInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipRequest ( mw_CANCEL_Request_Base ( ? ) ) }, { }, { 0, omit }, - "TP_RX_PCSCF_STR_03", false, false ) - ); - p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_RX_PCSCF_STR_03", true ) + ); + p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCSCF_STR_03 /** @@ -182,30 +268,28 @@ group g_PCSCF_STR { * @remark source function f_mtc_check_TP_EPC_6034_04 */ function f_mtc_check_TP_RX_PCSCF_STR_06( - ImsInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, - "TP_RX_PCSCF_STR_06", false, false ) - ); - p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_RX_PCSCF_STR_06", true ) + ); + p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCSCF_STR_06 - /** - * Starts monitor component behavior for TP_RX_PCSCF_STR_07 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6012_02 - */ + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_07 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6012_02 + */ function f_mtc_check_TP_RX_PCSCF_STR_07( - ImsInterfaceMonitor p_monitorCompRef, - ImsInterfaceMonitor p_monitorCompRef_B + DiameterInterfaceMonitor p_monitorCompRef, + DiameterInterfaceMonitor p_monitorCompRef_B ) runs on ImsTestCoordinator { -// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); -// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); -// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); +// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); +// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); +// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); } // End of function f_mtc_check_TP_RX_PCSCF_STR_07 } // end group g_PCSCF_STR diff --git a/ttcn/LibSip b/ttcn/LibSip index 2acb7ee..7f6fd81 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 +Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 -- GitLab From 156bc75fb3ce0b124f74ea6fe0854c937dcb8b76 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 5 Jun 2020 14:14:06 +0200 Subject: [PATCH 031/176] test configuration + init --- ttcn/LibIot/LibIot_PIXITS.ttcn | 799 --------------------------------- 1 file changed, 799 deletions(-) diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index cd7b945..9d9c827 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -36,7 +36,6 @@ module LibIot_PIXITS { monitorInterfaces := { { interfaceName := "Gm", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -59,7 +58,6 @@ module LibIot_PIXITS { }, { interfaceName := "Mx", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -87,7 +85,6 @@ module LibIot_PIXITS { }, { interfaceName := "Ici", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -100,7 +97,6 @@ module LibIot_PIXITS { }, { interfaceName := "ISC", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -119,7 +115,6 @@ module LibIot_PIXITS { }, { interfaceName := "Rx", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -132,7 +127,6 @@ module LibIot_PIXITS { }, { interfaceName := "Sgi", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -145,7 +139,6 @@ module LibIot_PIXITS { }, { interfaceName := "Mw", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -164,7 +157,6 @@ module LibIot_PIXITS { monitorInterfaces := { { interfaceName := "Gm", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -187,7 +179,6 @@ module LibIot_PIXITS { }, { interfaceName := "Mx", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -215,7 +206,6 @@ module LibIot_PIXITS { }, { interfaceName := "Ici", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -228,7 +218,6 @@ module LibIot_PIXITS { }, { interfaceName := "ISC", - available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -373,794 +362,6 @@ module LibIot_PIXITS { } // group adapterGlobalConfiguration - group VxLTEMonitorInterfaces_As_structure{ - group EPC{ - group Diameter{ - - modulepar MonitorInterfaceInfo PX_MonIntf_S6a := - { - interfaceName := "S6a", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "mme.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_S9 := - { - interfaceName := "S9", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "hpcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "vpcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Gx := - { - interfaceName := "Gx", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pgw.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - }//end group Diameter - } // end group EPC - group IMS{ - group Sip{ - modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := - { - interfaceName := "Gm A", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := - { - interfaceName := "Gm B", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Ic := - { - interfaceName := "Ic", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "ibcfa.imsa.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcfb.imsb.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := - { - interfaceName := "Mw PI", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := - { - interfaceName := "Mw PS", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := - { - interfaceName := "Mw SI", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Isc := - { - interfaceName := "Isc", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "as.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := - { - interfaceName := "Mw PB", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := - { - interfaceName := "Mw IB", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - - }//end group Sip - group Diameter{ - modulepar MonitorInterfaceInfo PX_MonIntf_Rx := - { - interfaceName := "Rx", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := - { - interfaceName := "Cx IH", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := - { - interfaceName := "Cx SH", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Sh := - { - interfaceName := "Sh", - available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - - - }//end group Diameter - } - - }// end VxLTEMonitorInterfaces_As_structure - - group VxLTEMonitorInterfaces_As_pixits{ - - group Sip{ - //A.8.2 PIXIT items for the Gm Interface - //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group GmA{ - modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE - modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE - modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF - modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; // Gm Port number of P-CSCF - modulepar boolean PX_SIP_GMA_MONITORENABLED := true; - }//end group GmA - - //A.8.2 PIXIT items for the Gm Interface - //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group GmB{ - modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE - modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE - modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF - modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; // Gm Port number of P-CSCF - modulepar boolean PX_SIP_GMB_MONITORENABLED := true; - }//end group GmB - - //A.8.3 PIXIT items for the Ic Interface - //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. - group Ic{ - modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network A - modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A - modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network B - modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; // Ic Port number of IBCF of network B - modulepar boolean PX_SIP_IC_MONITORENABLED := true; - }//end group Ic - - //A.8.4 PIXIT items for the Mw Interface - //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group Mw{ - modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of P-CSCF - modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060;// Mw Port number of P-CSCF - modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of I-CSCF - modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080;// Mw Port number of I-CSCF - modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of S-CSCF - modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090;// Mw Port number of S-CSCF - modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of IBCF - modulepar integer PX_SIP_MW_IBCF_PORT := 5050;// Mw Port number of IBCF - modulepar boolean PX_SIP_MW_MONITORENABLED := true; - }//end group Mw - - //A.8.* PIXIT items for the Isc Interface - //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group Isc{ - modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF - modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF - modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS - modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS - modulepar boolean PX_SIP_ISC_MONITORENABLED := true; - }//end group Isc - }//end group SIp - - group Diameter{ - //A.8.5 PIXIT items for the Cx Interface - //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. - group Cx{ - modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Charstring Cx IP address of I-CSCF - modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868;// Cx Port number of I-CSCF - modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of S-CSCF - modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868;// Cx Port number of S-CSCF - modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of HSS - modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868;// Cx Port number of HSS - modulepar boolean PX_DIAMETER_CX_MONITORENABLED := true; - }//end group Cx - - //A.8.6 PIXIT items for the Gx Interface - //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. - group Gx{ - modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PCRF - modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868;// Gx Port number of PCRF - modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PGW - modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868;// Gx Port number of PGW - modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; - }//end group Gx - - //A.8.7 PIXIT items for the Rx Interface - //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. - group Rx{ - modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of P-CSCF - modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868;// Rx Port number of P-CSCF - modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of PCRF - modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868;// Rx Port number of PCRF - modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; - }//end group Rx - - //A.8.8 PIXIT items for the S6a Interface - //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. - group S6a{ - modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of MME - modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868;// S6a Port number of MME - modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of HSS - modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868;// S6a Port number of HSS - modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; - }//end group S6a - - //A.8.9 PIXIT items for the S9 Interface - //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. - group S9{ - modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of H-PCRF - modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868;// S9 Port number of H-PCRF - modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of V-PCRF - modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868;// S9 Port number of V-PCRF - modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; - }//end group S9 - - //A.8.10 PIXIT items for the Sh Interface - //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. - group Sh{ - modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of AS - modulepar integer PX_DIAMETER_SH_AS_PORT := 3868;// Sh Port number of AS - modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of HSS - modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868;// Sh Port number of HSS - modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; - }//end group Sh - }//end group Diameter - - //A.8.11 PIXIT items for the RTP Interface - //In the context of the present document RTP is only considered end-to-end between two UEs. - - }//end group VxLTEMonitorInterfaces_As_pixits - - group VxLTEMonitorInterfaces_Templates{ - group EPC{ - group Diameter{ - template MonitorInterfaceInfo m_MonIntf_Diameter_S6a := - { - interfaceName := "S6a", - available := PX_DIAMETER_S6A_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "mme.epc.domain",//TODO: define as PIXIT - IpAddress := PX_DIAMETER_S6A_MME_IPADDR, - portNumbers := {PX_DIAMETER_S6A_MME_PORT} - }, - { - domainName := "hss.epc.domain", - IpAddress := PX_DIAMETER_S6A_HSS_IPADDR, - portNumbers := {PX_DIAMETER_S6A_HSS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_S9 := - { - interfaceName := "S9", - available := PX_DIAMETER_S9_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "hpcrf.epc.domain", - IpAddress := PX_DIAMETER_S9_H_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_S9_H_PCRF_PORT} - }, - { - domainName := "vpcrf.epc.domain", - IpAddress := PX_DIAMETER_S9_V_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_S9_V_PCRF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Gx := - { - interfaceName := "Gx", - available := PX_DIAMETER_GX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcrf.epc.domain", - IpAddress := PX_DIAMETER_GX_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_GX_PCRF_PORT} - }, - { - domainName := "pgw.epc.domain", - IpAddress := PX_DIAMETER_GX_PGW_IPADDR, - portNumbers := {PX_DIAMETER_GX_PGW_PORT} - } - } - } - }; - }//end group Diameter - - }//end group EPC - - group IMS{ - - group Sip{ - template MonitorInterfaceInfo m_MonIntf_Sip_Gm_A := - { - interfaceName := "Gm A", - available := PX_SIP_GMA_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_GMA_PCSCF_IPADDR, - portNumbers := {PX_SIP_GMA_PCSCF_PORT} - }, - { - domainName := omit, - IpAddress := PX_SIP_GMA_UE_IPADDR, - portNumbers := {PX_SIP_GMA_UE_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Gm_B := - { - interfaceName := "Gm B", - available := PX_SIP_GMB_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_GMB_PCSCF_IPADDR, - portNumbers := {PX_SIP_GMB_PCSCF_PORT} - }, - { - domainName := omit, - IpAddress := PX_SIP_GMB_UE_IPADDR, - portNumbers := {PX_SIP_GMB_UE_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Ic := - { - interfaceName := "Ic", - available := PX_SIP_IC_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "ibcfa.ims.domain", - IpAddress := PX_SIP_IC_IBCF_A_IPADDR, - portNumbers := {PX_SIP_IC_IBCF_A_PORT} - }, - { - domainName := "ibcfb.ims.domain", - IpAddress := PX_SIP_IC_IBCF_B_IPADDR, - portNumbers := {PX_SIP_IC_IBCF_B_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PI:= - { - interfaceName := "Mw PI", - available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_MW_P_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_P_CSCF_PORT} - }, - { - domainName := "icscf.ims.domain", - IpAddress := PX_SIP_MW_I_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_I_CSCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PS:= - { - interfaceName := "Mw PS", - available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_MW_P_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_P_CSCF_PORT} - }, - { - domainName := "scscf.ims.domain", - IpAddress := PX_SIP_MW_S_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_S_CSCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_SI:= - { - interfaceName := "Mw SI", - available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := PX_SIP_MW_S_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_S_CSCF_PORT} - }, - { - domainName := "icscf.ims.domain", - IpAddress := PX_SIP_MW_I_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_I_CSCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_ISC:= - { - interfaceName := "Isc", - available := PX_SIP_ISC_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := PX_SIP_ISC_S_CSCF_IPADDR, - portNumbers := {PX_SIP_ISC_S_CSCF_PORT} - }, - { - domainName := "as.ims.domain", - IpAddress := PX_SIP_ISC_AS_IPADDR, - portNumbers := {PX_SIP_ISC_AS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PB:= - { - interfaceName := "Mw PB", - available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_MW_P_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_P_CSCF_PORT} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := PX_SIP_MW_IBCF_IPADDR, - portNumbers := {PX_SIP_MW_IBCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IB:= - { - interfaceName := "Mw IB", - available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := PX_SIP_MW_I_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_I_CSCF_PORT} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := PX_SIP_MW_IBCF_IPADDR, - portNumbers := {PX_SIP_MW_IBCF_PORT} - } - } - } - }; - }//end group Sip - - group Diameter{ - template MonitorInterfaceInfo m_MonIntf_Diameter_Rx := - { - interfaceName := "Rx", - available := PX_DIAMETER_RX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_DIAMETER_RX_P_CSCF_IPADDR, - portNumbers := {PX_DIAMETER_RX_P_CSCF_PORT} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := PX_DIAMETER_RX_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_RX_PCRF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_IH := - { - interfaceName := "Cx IH", - available := PX_DIAMETER_CX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := PX_DIAMETER_CX_I_CSCF_IPADDR, - portNumbers := {PX_DIAMETER_CX_I_CSCF_PORT} - }, - { - domainName := "hss.ims.domain", - IpAddress := PX_DIAMETER_CX_HSS_IPADDR, - portNumbers := {PX_DIAMETER_CX_HSS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_SH := - { - interfaceName := "Cx SH", - available := PX_DIAMETER_CX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := PX_DIAMETER_CX_S_CSCF_IPADDR, - portNumbers := {PX_DIAMETER_CX_S_CSCF_PORT} - }, - { - domainName := "hss.ims.domain", - IpAddress := PX_DIAMETER_CX_HSS_IPADDR, - portNumbers := {PX_DIAMETER_CX_HSS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Sh := - { - interfaceName := "Sh", - available := PX_DIAMETER_SH_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "as.ims.domain", - IpAddress := PX_DIAMETER_SH_AS_IPADDR, - portNumbers := {PX_DIAMETER_SH_AS_PORT} - }, - { - domainName := "hss.ims.domain", - IpAddress := PX_DIAMETER_SH_HSS_IPADDR, - portNumbers := {PX_DIAMETER_SH_HSS_PORT} - } - } - } - }; - - }//end group Diameter - - }//end group IMS - - - - - }//end group VxLTEMonitorInterfaces_Templates } -- GitLab From be4a998e00758e85c6b0f12a765ffd0a985c2f59 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 5 Jun 2020 14:14:34 +0200 Subject: [PATCH 032/176] test configuration + init --- ttcn/LibIot/LibIot_TestInterface.ttcn | 1 + 1 file changed, 1 insertion(+) diff --git a/ttcn/LibIot/LibIot_TestInterface.ttcn b/ttcn/LibIot/LibIot_TestInterface.ttcn index 41a2ae4..6baefb0 100644 --- a/ttcn/LibIot/LibIot_TestInterface.ttcn +++ b/ttcn/LibIot/LibIot_TestInterface.ttcn @@ -58,6 +58,7 @@ module LibIot_TestInterface { type component InterfaceMonitor extends OracleClient { timer tc_wait := PX_MAX_MSG_WAIT; var charstring vc_interfaceName := "Undefined"; + var MonitorInterfaceInfo vc_Interface; port AdapterConfigPort acPort; } -- GitLab From 79af402fefa6fd5bcf43bec8d2b4c3346dba7ef4 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 5 Jun 2020 14:14:55 +0200 Subject: [PATCH 033/176] test configuration + init --- ttcn/LibIot/LibIot_TypesAndValues.ttcn | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/ttcn/LibIot/LibIot_TypesAndValues.ttcn b/ttcn/LibIot/LibIot_TypesAndValues.ttcn index c319a83..9643eb7 100644 --- a/ttcn/LibIot/LibIot_TypesAndValues.ttcn +++ b/ttcn/LibIot/LibIot_TypesAndValues.ttcn @@ -84,7 +84,6 @@ module LibIot_TypesAndValues { */ type record MonitorInterfaceInfo { charstring interfaceName, - boolean available optional,//or would be better MonitorEnable InterfaceInfo interfaceInfo } @@ -93,6 +92,29 @@ module LibIot_TypesAndValues { * @desc List of monitored interfaces */ type record of MonitorInterfaceInfo MonitorInterfaceInfoList; + + /** + * + * @desc List of VxLTE Monitor interfaces + */ + type record VxLTEMonitorInterfaceList{ + MonitorInterfaceInfo gmA optional, + MonitorInterfaceInfo gmB optional, + MonitorInterfaceInfo ic optional, + MonitorInterfaceInfo mwPI optional,// Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used + MonitorInterfaceInfo mwPS optional, + MonitorInterfaceInfo mwIS optional,// Mw interface at I-CSCF/S-CSCF + MonitorInterfaceInfo mwPB optional,// Mw interface at P-CSCF/IBCF + MonitorInterfaceInfo mwIB optional,// Mw interface at I-CSCF/IBCF + MonitorInterfaceInfo isc optional, + MonitorInterfaceInfo cxIH optional, + MonitorInterfaceInfo cxSH optional, + MonitorInterfaceInfo gx optional, + MonitorInterfaceInfo rx optional, + MonitorInterfaceInfo s6a optional, + MonitorInterfaceInfo s9 optional, + MonitorInterfaceInfo sh optional + } /** * -- GitLab From b7e18a5f0cbed706c86d2d82a2217e6511cb0bfa Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 5 Jun 2020 14:15:28 +0200 Subject: [PATCH 034/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn index fee308a..5ff7cdd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn @@ -5,6 +5,7 @@ module AtsImsIot_TestSystem { import from AtsImsIot_TypesAndValues {type SipMessage, NAPTRmessage;} import from LibIot_TestInterface {type EquipmentAccessPort;} import from LibIot_TestInterface all; + import from LibIot_TypesAndValues {type VxLTEMonitorInterfaceList;} import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} /** @@ -56,6 +57,8 @@ module AtsImsIot_TestSystem { */ type component ImsTestCoordinator extends TestCoordinator { port ImsCoordinationPort icpPort; + var VxLTEMonitorInterfaceList vc_MonIntfList; + var CF_VXLTE_Interfaces vc_vxlte_monitor_components; } group portDefinitions { @@ -115,6 +118,25 @@ module AtsImsIot_TestSystem { } group g_release15 { + + type record CF_VXLTE_Interfaces{ + SipInterfaceMonitor gmA optional, + SipInterfaceMonitor gmB optional, + SipInterfaceMonitor ic optional, + SipInterfaceMonitor mwPI optional,// Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used + SipInterfaceMonitor mwPS optional, + SipInterfaceMonitor mwIS optional,// Mw interface at I-CSCF/S-CSCF + SipInterfaceMonitor mwPB optional,// Mw interface at P-CSCF/IBCF + SipInterfaceMonitor mwIB optional,// Mw interface at I-CSCF/IBCF + SipInterfaceMonitor isc optional, + DiameterInterfaceMonitor cxIH optional, + DiameterInterfaceMonitor cxSH optional, + DiameterInterfaceMonitor gx optional, + DiameterInterfaceMonitor rx optional, + DiameterInterfaceMonitor s6a optional, + DiameterInterfaceMonitor s9 optional, + DiameterInterfaceMonitor sh optional + } type record CF_ATT_old { ImsInterfaceMonitor gmA, -- GitLab From 384b3592916bfd5e3ec89cf6c71fa171f5730b43 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 5 Jun 2020 14:15:38 +0200 Subject: [PATCH 035/176] test configuration + init --- .../AtsImsIot_TestConfiguration.ttcn | 110 +++++++++++++++++- 1 file changed, 105 insertions(+), 5 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn index a9dfa4e..9420e07 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn @@ -305,8 +305,108 @@ module AtsImsIot_TestConfiguration { } } } + + /** + * @desc Initialize traffic cature process + * + * @param + */ + function f_cf_initCapture () runs on ImsTestCoordinator { + // Initialize the Adapter (including the TrafficCapture process). + timer tc_configureGuard; + var StartTrafficCaptureRsp startResult; + + activate(a_receiveIOTVerdict()); + + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_generalConfigurationReq_offline); //TODO: Check posibility to enable ONLINE mode + alt { + [] acPort.receive (m_generalConfigurationRsp_success) { + log("General configuration succeed."); + tc_configureGuard.stop; + } + [] acPort.receive (m_generalConfigurationRsp_timeout) { + setverdict(fail); + tc_configureGuard.stop; + stop; + } + [] acPort.receive (m_generalConfigurationRsp_error) { + setverdict(fail); + tc_configureGuard.stop; + stop; + } + [] acPort.receive { + log("Unknown response."); + tc_configureGuard.stop; + setverdict (inconc); + stop; + } + [] tc_configureGuard.timeout { + log("Timeout."); + setverdict (inconc); + stop; + } + } + } + /** + * @desc Start traffic cature process + * + * @param + */ + function f_cf_startCapture () runs on ImsTestCoordinator { + timer tc_configureGuard; + var StartTrafficCaptureRsp startResult; + + activate(a_receiveIOTVerdict()); + + //Start traffic capture processing. + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_startTrafficCaptureReq); + alt { + [] acPort.receive (m_startTrafficCaptureRsp_any) -> value startResult { + tc_configureGuard.stop; + if (startResult.status.code != e_success) + { + log("**** StartTrafficCaptureReq unsuccessfull! ****"); + setverdict(fail); + stop; + } + } + [] tc_configureGuard.timeout { + log("**** StartTrafficCaptureReq not answered. ****"); + setverdict (inconc); + stop; + } + } + } + /** + * @desc Stops traffic cature + * + * @param + */ + function f_cf_stopCapture() runs on ImsTestCoordinator { + //Stop traffic capture processing. + timer tc_configureGuard; //TODO check to import correct modules + var StopTrafficCaptureRsp stopResult; + tc_configureGuard.start(PX_MAX_MSG_WAIT); + acPort.send(m_stopTrafficCaptureReq); + alt { + [] acPort.receive (m_stopTrafficCaptureRsp_any) -> value stopResult { + tc_configureGuard.stop; + if (stopResult.status.code != e_success) + { + log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq unsuccessfull! ****"); + setverdict(fail); + } + } + [] tc_configureGuard.timeout { + log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq not answered. ****"); + setverdict (inconc); + } + } + } } group componentCreation { @@ -369,7 +469,7 @@ module AtsImsIot_TestConfiguration { } - group testConfiguration { + group testConfiguration { //TODO: check to delete at end of STF574 ATS devel /** * @desc @@ -1445,7 +1545,7 @@ module AtsImsIot_TestConfiguration { f_cf_monitor_up(p_config.s6a); f_cf_monitor_up(p_config.gx); f_cf_monitor_up(p_config.mxA); - f_cf_monitor_up(p_config.mw); + f_cf_monitor_up(p_config.mwPS); f_cf_monitor_up(p_config.sgi); if(isvalue(p_config.gmB)) { f_cf_monitor_up(p_config.gmB); @@ -1475,13 +1575,13 @@ module AtsImsIot_TestConfiguration { ))); p_config.mxA.done; - p_config.mw.start(f_cf_setFilter( + p_config.mwPS.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])} ) ))); - p_config.mw.done; + p_config.mwPS.done; p_config.sgi.start(f_cf_setFilter( valueof (m_SetFilterReq( @@ -1546,7 +1646,7 @@ module AtsImsIot_TestConfiguration { f_cf_monitor_down(p_config.s6a); f_cf_monitor_down(p_config.gx); f_cf_monitor_down(p_config.mxA); - f_cf_monitor_down(p_config.mw); + f_cf_monitor_down(p_config.mwPS); f_cf_monitor_down(p_config.sgi); f_cf_monitor_down(p_config.gmB); } // end of function f_cf_epc_call_rel15_down -- GitLab From f9866023c3842032ab1c002d02c6c5148a4f3ac7 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 5 Jun 2020 14:15:50 +0200 Subject: [PATCH 036/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn | 43 +++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn index afb96ac..0cc59e3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn @@ -123,6 +123,49 @@ module AtsImsIot_TestCases_ATT { f_cf_epc_call_rel15_down ( v_config ); f_cf_adapter_down ( ); } // End of TC TC_VxLTE_INT_ATT_01_new + + testcase TC_VxLTE_INT_ATT_01_dynamicMonitorComponents ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //TODO: Check if needed interfaces are available per TD or TD-GROUP!!! + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + +// // preamble +// f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile +// f_mtc_userRegistration ( v_ueB, v_userInfoB ); +// +// // test body +// // Check that user A can register to IMS A +// f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message +// f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check +// f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) +// f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) +// f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) +// f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); +// f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 +// +// // postamble +// f_PO_user_home_deregistration ( v_ueB ); +// f_PO_user_home_deregistration ( v_ueA ); +// f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + } // End of TC TC_VxLTE_INT_ATT_01_dynamicMonitorComponents } // End of group networkAttachmentAndDefaultBearer -- GitLab From 77b12ab440a2f78973820c3fc15beb1751a66012 Mon Sep 17 00:00:00 2001 From: iTestVM01 Date: Sun, 17 May 2020 11:14:44 +0200 Subject: [PATCH 037/176] new vxlte configuration --- ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 519 ++++++++++++++++++++++++ ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn | 465 +++++++++++++++++++++ ttcn/LibIot/LibIot_VxLTE_Templates.ttcn | 337 +++++++++++++++ 3 files changed, 1321 insertions(+) create mode 100644 ttcn/LibIot/LibIot_VxLTE_Functions.ttcn create mode 100644 ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn create mode 100644 ttcn/LibIot/LibIot_VxLTE_Templates.ttcn diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn new file mode 100644 index 0000000..ed7e3fb --- /dev/null +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -0,0 +1,519 @@ +/* + * @author STF 574 + * @version $Id: LibIot_VxLTE_Functions.ttcn 1 2020-05-29 15:06:42Z pintar $ + * @desc This module provides Functions parameters which need to be + * changeable within validation + */ + +module LibIot_VxLTE_Functions { + + import from LibIot_TypesAndValues + { + type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, + ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailable, InterfaceAvailableList,MonitorInterfaceInfo, + VxLTEMonitorInterfaceList; + } + import from AtsImsIot_Templates { + template /*m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, + m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout,*/ + m_SetFilterReq/*, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq, + m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any*/; + } + import from LibIot_VxLTE_PIXITS all; + import from LibIot_VxLTE_Templates all; + + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + + /** + * @desc Check and create a list of monitor interfaces based on PIXITS + * @param + * @return the created monitor component list in vc_MonIntfList + */ + function f_setVxLteMonIterfacesAvailability(/*inout VxLTEMonitorInterfaceList p_vxlteMonIntfList*/)runs on ImsTestCoordinator{ + + + if (PX_SIP_GMA_MONITORENABLED == true){ + //p_vxlteMonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); + vc_MonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); + } + if (PX_SIP_GMB_MONITORENABLED == true){ + vc_MonIntfList.gmB := valueof(m_MonIntf_Sip_Gm_B); + } + if (PX_SIP_IC_MONITORENABLED == true){ + vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic); + } + if (PX_SIP_MW_MONITORENABLED == true){ + + vc_MonIntfList.mwPI := valueof(m_MonIntf_Sip_Mw_PI); + /**/ + vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS); + /**/ + vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS); + /**/ + vc_MonIntfList.mwPB := valueof(m_MonIntf_Sip_Mw_PB); + /**/ + vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB); + } + if (PX_SIP_ISC_MONITORENABLED == true){ + vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC); + } + + + + if (PX_DIAMETER_CX_MONITORENABLED == true){ + vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH); + /**/ + vc_MonIntfList.cxSH := valueof(m_MonIntf_Diameter_Cx_SH); + } + if (PX_DIAMETER_GX_MONITORENABLED == true){ + vc_MonIntfList.gx := valueof(m_MonIntf_Diameter_Gx); + } + if (PX_DIAMETER_RX_MONITORENABLED == true){ + vc_MonIntfList.rx := valueof(m_MonIntf_Diameter_Rx); + } + if (PX_DIAMETER_S6A_MONITORENABLED == true){ + vc_MonIntfList.s6a := valueof(m_MonIntf_Diameter_S6a); + } + if (PX_DIAMETER_S9_MONITORENABLED == true){ + vc_MonIntfList.s9 := valueof(m_MonIntf_Diameter_S9); + } + if (PX_DIAMETER_SH_MONITORENABLED == true){ + vc_MonIntfList.sh := valueof(m_MonIntf_Diameter_Sh); + } + + } + + /** + * @desc Create monitor components based on vc_MonIntfList + * @param + * @return the created monitor components in vc_vxlte_monitor_components + */ + function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{ + + if (isvalue(vc_MonIntfList.gmA)){ + vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA.interfaceName); + } + if (isvalue(vc_MonIntfList.gmB)){ + vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB.interfaceName); + } + + if (isvalue(vc_MonIntfList.ic)){ + vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic.interfaceName); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI.interfaceName); + } + if (isvalue(vc_MonIntfList.mwPS)){ + vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS.interfaceName); + } + if (isvalue(vc_MonIntfList.mwIS)){ + vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS.interfaceName); + } + if (isvalue(vc_MonIntfList.mwPB)){ + vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB.interfaceName); + } + if (isvalue(vc_MonIntfList.mwIB)){ + vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB.interfaceName); + } + + if (isvalue(vc_MonIntfList.isc)){ + vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc.interfaceName); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH.interfaceName); + } + if (isvalue(vc_MonIntfList.cxSH)){ + vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH.interfaceName); + } + if (isvalue(vc_MonIntfList.gx)){ + vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx.interfaceName); + } + if (isvalue(vc_MonIntfList.rx)){ + vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx.interfaceName); + } + if (isvalue(vc_MonIntfList.s6a)){ + vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a.interfaceName); + } + if (isvalue(vc_MonIntfList.s9)){ + vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9.interfaceName); + } + if (isvalue(vc_MonIntfList.sh)){ + vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh.interfaceName); + } + } + + /** + * @desc Start monitor components based on vc_MonIntfList + * @param + * @return Created monitor components in vc_vxlte_monitor_components are connected/mapped + */ + function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{ + //Initialize the Adapter (including the TrafficCapture process). + f_cf_initCapture(); + + if (isvalue(vc_MonIntfList.gmA)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA); + //TODO: per each enabled monitor inteface send traffic filter req + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.gmA.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.gmB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.gmB.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.ic)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.ic); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.ic.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPI); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPI.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwPS)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPS); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPS.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwIS)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIS); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwIS.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwPB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPB.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwIB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwIB.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.isc)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.isc); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.isc.interfaceInfo} + ) + ))); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxIH); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.cxIH.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.cxSH)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxSH); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.cxSH.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.gx)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.gx); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.gx.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.rx)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.rx); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.rx.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.s6a)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s6a); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.s6a.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.s9)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s9); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.s9.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.sh)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.sh); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.sh.interfaceInfo} + ) + ))); + } + + f_cf_startCapture(); + } + + /** + * @desc Stops monitor components based on vc_MonIntfList + * @param + * @return Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped + */ + function f_cf_VxLteMonitor_Down() runs on ImsTestCoordinator{ + //Stop traffic capture processing. + f_cf_stopCapture(); + + if (isvalue(vc_MonIntfList.gmA)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmA); + } + if (isvalue(vc_MonIntfList.gmB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmB); + } + + if (isvalue(vc_MonIntfList.ic)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.ic); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPI); + } + if (isvalue(vc_MonIntfList.mwPS)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPS); + } + if (isvalue(vc_MonIntfList.mwIS)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIS); + } + if (isvalue(vc_MonIntfList.mwPB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPB); + } + if (isvalue(vc_MonIntfList.mwIB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIB); + } + + if (isvalue(vc_MonIntfList.isc)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.isc); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxIH); + } + if (isvalue(vc_MonIntfList.cxSH)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxSH); + } + if (isvalue(vc_MonIntfList.gx)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.gx); + } + if (isvalue(vc_MonIntfList.rx)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.rx); + } + if (isvalue(vc_MonIntfList.s6a)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s6a); + } + if (isvalue(vc_MonIntfList.s9)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s9); + } + if (isvalue(vc_MonIntfList.sh)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.sh); + } + } + + + function f_check_and_setup_monitor_interfaces() runs on ImsTestCoordinator{ + + var InterfaceAvailableList v_VxLTE_MonIntf_Available; + var InterfaceAvailable v_InterfaceAvailable; + var SipInterfaceMonitor v_gmA, v_gmB, v_ic, v_mwPI, v_mwPS, v_mwSI, v_mwPB, v_mwIB, v_isc; + var DiameterInterfaceMonitor v_cxIH, v_cxSH, v_gx, v_rx, v_s6a, v_s9, v_sh; + + if (PX_SIP_GMA_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_SIP_GMA_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_GMA_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_gmA := f_cf_create_monitor_sip ( PX_SIP_GMA_INTERFACENAME ); + f_cf_monitor_up_sip(v_gmA); + } + if (PX_SIP_GMB_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_SIP_GMB_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_GMB_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_gmB := f_cf_create_monitor_sip ( PX_SIP_GMB_INTERFACENAME ); + f_cf_monitor_up_sip(v_gmB); + } + if (PX_SIP_IC_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_SIP_IC_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_IC_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_ic := f_cf_create_monitor_sip ( PX_SIP_IC_INTERFACENAME ); + f_cf_monitor_up_sip(v_ic); + } + if (PX_SIP_MW_MONITORENABLED == true){ + + v_InterfaceAvailable.interfaceName := PX_SIP_MW_PI_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_mwPI := f_cf_create_monitor_sip ( PX_SIP_MW_PI_INTERFACENAME ); + f_cf_monitor_up_sip(v_mwPI); + /**/ + v_InterfaceAvailable.interfaceName := PX_SIP_MW_PS_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_mwPS := f_cf_create_monitor_sip ( PX_SIP_MW_PS_INTERFACENAME ); + f_cf_monitor_up_sip(v_mwPS); + /**/ + v_InterfaceAvailable.interfaceName := PX_SIP_MW_IS_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_mwSI := f_cf_create_monitor_sip ( PX_SIP_MW_IS_INTERFACENAME ); + f_cf_monitor_up_sip(v_mwSI); + /**/ + v_InterfaceAvailable.interfaceName := PX_SIP_MW_PB_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_mwPB := f_cf_create_monitor_sip ( PX_SIP_MW_PB_INTERFACENAME ); + f_cf_monitor_up_sip(v_mwPB); + /**/ + v_InterfaceAvailable.interfaceName := PX_SIP_MW_IB_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_mwIB := f_cf_create_monitor_sip ( PX_SIP_MW_IB_INTERFACENAME ); + f_cf_monitor_up_sip(v_mwIB); + } + if (PX_SIP_ISC_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_SIP_ISC_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_ISC_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_isc := f_cf_create_monitor_sip ( PX_SIP_ISC_INTERFACENAME ); + f_cf_monitor_up_sip(v_isc); + } + + + + if (PX_DIAMETER_CX_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_IH_INTERFACENAME; + v_InterfaceAvailable.available := PX_DIAMETER_CX_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_cxIH := f_cf_create_monitor_diameter ( PX_DIAMETER_CX_IH_INTERFACENAME ); + f_cf_monitor_up_diameter(v_cxIH); + /**/ + v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_SH_INTERFACENAME; + v_InterfaceAvailable.available := PX_DIAMETER_CX_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_cxSH := f_cf_create_monitor_diameter ( PX_DIAMETER_CX_SH_INTERFACENAME ); + f_cf_monitor_up_diameter(v_cxSH); + } + if (PX_DIAMETER_GX_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_DIAMETER_GX_INTERFACENAME; + v_InterfaceAvailable.available := PX_DIAMETER_GX_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_gx := f_cf_create_monitor_diameter ( PX_DIAMETER_GX_INTERFACENAME ); + f_cf_monitor_up_diameter(v_gx); + } + if (PX_DIAMETER_RX_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_DIAMETER_RX_INTERFACENAME; + v_InterfaceAvailable.available := PX_DIAMETER_RX_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_rx := f_cf_create_monitor_diameter ( PX_DIAMETER_RX_INTERFACENAME ); + f_cf_monitor_up_diameter(v_rx); + } + if (PX_DIAMETER_S6A_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_DIAMETER_S6A_INTERFACENAME; + v_InterfaceAvailable.available := PX_DIAMETER_S6A_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_s6a := f_cf_create_monitor_diameter ( PX_DIAMETER_S6A_INTERFACENAME ); + f_cf_monitor_up_diameter(v_s6a); + } + if (PX_DIAMETER_S9_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_DIAMETER_S9_INTERFACENAME; + v_InterfaceAvailable.available := PX_DIAMETER_S9_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_s9 := f_cf_create_monitor_diameter ( PX_DIAMETER_S9_INTERFACENAME ); + f_cf_monitor_up_diameter(v_s9); + } + if (PX_DIAMETER_SH_MONITORENABLED == true){ + v_InterfaceAvailable.interfaceName := PX_DIAMETER_SH_INTERFACENAME; + v_InterfaceAvailable.available := PX_DIAMETER_SH_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_sh := f_cf_create_monitor_diameter ( PX_DIAMETER_SH_INTERFACENAME ); + f_cf_monitor_up_diameter(v_sh); + } + } + + function f_update_MonitorInterfaceList( + in InterfaceAvailableList p_MI_List, + in InterfaceAvailable p_MI + ) + return InterfaceAvailableList { + var InterfaceAvailable v_IntfAvail; + var InterfaceAvailableList v_MI_List := p_MI_List; + var integer v_size_mi_list := lengthof(v_MI_List); + var integer v_size_mi_updated := v_size_mi_list + 1; + var InterfaceAvailableList v_MI_List_updated; + var integer i; + + for (i := 0; i < v_size_mi_updated; i := i + 1) { + v_MI_List_updated[i] := v_MI_List[i]; + } + v_MI_List_updated[v_size_mi_updated] := p_MI; + + return (v_MI_List_updated); + } +} \ No newline at end of file diff --git a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn new file mode 100644 index 0000000..063f6de --- /dev/null +++ b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn @@ -0,0 +1,465 @@ +/* + * @author STF 574 + * @version $Id: LibIot_VxLTE_PIXITS.ttcn 1 2020-05-29 15:06:42Z pintar $ + * @desc This module provides PIXIT parameters which need to be + * changeable within validation + */ + +module LibIot_VxLTE_PIXITS { + + import from LibIot_TypesAndValues + { + type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, + ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailableList,MonitorInterfaceInfo; + } + + group VxLTEMonitorInterfaces_PIXITS_As_structure{ + group EPC{ + group Diameter{ + + modulepar MonitorInterfaceInfo PX_MonIntf_S6a := + { + interfaceName := "S6a", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "mme.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_S9 := + { + interfaceName := "S9", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "hpcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "vpcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Gx := + { + interfaceName := "Gx", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pgw.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "pcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + }//end group Diameter + } // end group EPC + group IMS{ + group Sip{ + modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := + { + interfaceName := "Gm A", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := + { + interfaceName := "Gm B", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Ic := + { + interfaceName := "Ic", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "ibcfa.imsa.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "ibcfb.imsb.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := + { + interfaceName := "Mw PI", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := + { + interfaceName := "Mw PS", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := + { + interfaceName := "Mw SI", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Isc := + { + interfaceName := "Isc", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "as.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := + { + interfaceName := "Mw PB", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := + { + interfaceName := "Mw IB", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + + }//end group Sip + group Diameter{ + modulepar MonitorInterfaceInfo PX_MonIntf_Rx := + { + interfaceName := "Rx", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "pcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := + { + interfaceName := "Cx IH", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := + { + interfaceName := "Cx SH", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Sh := + { + interfaceName := "Sh", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + + + }//end group Diameter + } + + }// end VxLTEMonitorInterfaces_As_structure + + group VxLTEMonitorInterfaces_PIXITS{ + + group Sip{ + //A.8.2 PIXIT items for the Gm Interface + //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group GmA{ + modulepar charstring PX_SIP_GMA_INTERFACENAME := "Gm A"; + modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE + modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE + modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF + modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; // Gm Port number of P-CSCF + modulepar boolean PX_SIP_GMA_MONITORENABLED := true; + }//end group GmA + + //A.8.2 PIXIT items for the Gm Interface + //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group GmB{ + modulepar charstring PX_SIP_GMB_INTERFACENAME := "Gm B"; + modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE + modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE + modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF + modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; // Gm Port number of P-CSCF + modulepar boolean PX_SIP_GMB_MONITORENABLED := true; + }//end group GmB + + //A.8.3 PIXIT items for the Ic Interface + //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. + group Ic{ + modulepar charstring PX_SIP_IC_INTERFACENAME := "Ic"; + modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network A + modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A + modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network B + modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; // Ic Port number of IBCF of network B + modulepar boolean PX_SIP_IC_MONITORENABLED := true; + }//end group Ic + + //A.8.4 PIXIT items for the Mw Interface + //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group Mw{ + modulepar charstring PX_SIP_MW_PI_INTERFACENAME := "Mw PI"; + modulepar charstring PX_SIP_MW_PS_INTERFACENAME := "Mw PS"; + modulepar charstring PX_SIP_MW_IS_INTERFACENAME := "Mw SI"; + modulepar charstring PX_SIP_MW_PB_INTERFACENAME := "Mw PB"; + modulepar charstring PX_SIP_MW_IB_INTERFACENAME := "Mw IB"; + modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of P-CSCF + modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060;// Mw Port number of P-CSCF + modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of I-CSCF + modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080;// Mw Port number of I-CSCF + modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of S-CSCF + modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090;// Mw Port number of S-CSCF + modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of IBCF + modulepar integer PX_SIP_MW_IBCF_PORT := 5050;// Mw Port number of IBCF + modulepar boolean PX_SIP_MW_MONITORENABLED := true; + }//end group Mw + + //A.8.* PIXIT items for the Isc Interface + //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group Isc{ + modulepar charstring PX_SIP_ISC_INTERFACENAME := "Isc"; + modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF + modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF + modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS + modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS + modulepar boolean PX_SIP_ISC_MONITORENABLED := true; + }//end group Isc + }//end group SIp + + group Diameter{ + //A.8.5 PIXIT items for the Cx Interface + //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. + group Cx{ + modulepar charstring PX_DIAMETER_CX_IH_INTERFACENAME := "Cx IH"; + modulepar charstring PX_DIAMETER_CX_SH_INTERFACENAME := "Cx SH"; + modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Charstring Cx IP address of I-CSCF + modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868;// Cx Port number of I-CSCF + modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of S-CSCF + modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868;// Cx Port number of S-CSCF + modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of HSS + modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868;// Cx Port number of HSS + modulepar boolean PX_DIAMETER_CX_MONITORENABLED := true; + }//end group Cx + + //A.8.6 PIXIT items for the Gx Interface + //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. + group Gx{ + modulepar charstring PX_DIAMETER_GX_INTERFACENAME := "Gx"; + modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PCRF + modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868;// Gx Port number of PCRF + modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PGW + modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868;// Gx Port number of PGW + modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; + }//end group Gx + + //A.8.7 PIXIT items for the Rx Interface + //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. + group Rx{ + modulepar charstring PX_DIAMETER_RX_INTERFACENAME := "Rx"; + modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of P-CSCF + modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868;// Rx Port number of P-CSCF + modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of PCRF + modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868;// Rx Port number of PCRF + modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; + }//end group Rx + + //A.8.8 PIXIT items for the S6a Interface + //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. + group S6a{ + modulepar charstring PX_DIAMETER_S6A_INTERFACENAME := "S6a"; + modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of MME + modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868;// S6a Port number of MME + modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of HSS + modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868;// S6a Port number of HSS + modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; + }//end group S6a + + //A.8.9 PIXIT items for the S9 Interface + //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. + group S9{ + modulepar charstring PX_DIAMETER_S9_INTERFACENAME := "S9"; + modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of H-PCRF + modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868;// S9 Port number of H-PCRF + modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of V-PCRF + modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868;// S9 Port number of V-PCRF + modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; + }//end group S9 + + //A.8.10 PIXIT items for the Sh Interface + //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. + group Sh{ + modulepar charstring PX_DIAMETER_SH_INTERFACENAME := "Sh"; + modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of AS + modulepar integer PX_DIAMETER_SH_AS_PORT := 3868;// Sh Port number of AS + modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of HSS + modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868;// Sh Port number of HSS + modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; + }//end group Sh + }//end group Diameter + + //A.8.11 PIXIT items for the RTP Interface + //In the context of the present document RTP is only considered end-to-end between two UEs. + + }//end group VxLTEMonitorInterfaces_PIXITS + +} \ No newline at end of file diff --git a/ttcn/LibIot/LibIot_VxLTE_Templates.ttcn b/ttcn/LibIot/LibIot_VxLTE_Templates.ttcn new file mode 100644 index 0000000..2e3186b --- /dev/null +++ b/ttcn/LibIot/LibIot_VxLTE_Templates.ttcn @@ -0,0 +1,337 @@ +/* + * @author STF 574 + * @version $Id: LibIot_VxLTE_Templates.ttcn 1 2020-05-29 15:06:42Z pintar $ + * @desc This module provides Templates parameters which need to be + * changeable within validation + */ + +module LibIot_VxLTE_Templates { + + import from LibIot_TypesAndValues + { + type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, + ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailableList,MonitorInterfaceInfo; + } + import from LibIot_VxLTE_PIXITS all; + + group VxLTEMonitorInterfaces_Templates{ + group EPC{ + group Diameter{ + template MonitorInterfaceInfo m_MonIntf_Diameter_S6a := + { + interfaceName := PX_DIAMETER_S6A_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "mme.epc.domain",//TODO: define as PIXIT + IpAddress := PX_DIAMETER_S6A_MME_IPADDR, + portNumbers := {PX_DIAMETER_S6A_MME_PORT} + }, + { + domainName := "hss.epc.domain", + IpAddress := PX_DIAMETER_S6A_HSS_IPADDR, + portNumbers := {PX_DIAMETER_S6A_HSS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_S9 := + { + interfaceName := PX_DIAMETER_S9_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "hpcrf.epc.domain", + IpAddress := PX_DIAMETER_S9_H_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_S9_H_PCRF_PORT} + }, + { + domainName := "vpcrf.epc.domain", + IpAddress := PX_DIAMETER_S9_V_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_S9_V_PCRF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Gx := + { + interfaceName := PX_DIAMETER_GX_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcrf.epc.domain", + IpAddress := PX_DIAMETER_GX_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_GX_PCRF_PORT} + }, + { + domainName := "pgw.epc.domain", + IpAddress := PX_DIAMETER_GX_PGW_IPADDR, + portNumbers := {PX_DIAMETER_GX_PGW_PORT} + } + } + } + }; + }//end group Diameter + + }//end group EPC + + group IMS{ + + group Sip{ + template MonitorInterfaceInfo m_MonIntf_Sip_Gm_A := + { + interfaceName := PX_SIP_GMA_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_GMA_PCSCF_IPADDR, + portNumbers := {PX_SIP_GMA_PCSCF_PORT} + }, + { + domainName := omit, + IpAddress := PX_SIP_GMA_UE_IPADDR, + portNumbers := {PX_SIP_GMA_UE_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Gm_B := + { + interfaceName := PX_SIP_GMA_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_GMB_PCSCF_IPADDR, + portNumbers := {PX_SIP_GMB_PCSCF_PORT} + }, + { + domainName := omit, + IpAddress := PX_SIP_GMB_UE_IPADDR, + portNumbers := {PX_SIP_GMB_UE_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Ic := + { + interfaceName := PX_SIP_IC_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "ibcfa.ims.domain", + IpAddress := PX_SIP_IC_IBCF_A_IPADDR, + portNumbers := {PX_SIP_IC_IBCF_A_PORT} + }, + { + domainName := "ibcfb.ims.domain", + IpAddress := PX_SIP_IC_IBCF_B_IPADDR, + portNumbers := {PX_SIP_IC_IBCF_B_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PI:= + { + interfaceName := PX_SIP_MW_PI_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_MW_P_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_P_CSCF_PORT} + }, + { + domainName := "icscf.ims.domain", + IpAddress := PX_SIP_MW_I_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_I_CSCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PS:= + { + interfaceName := PX_SIP_MW_PS_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_MW_P_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_P_CSCF_PORT} + }, + { + domainName := "scscf.ims.domain", + IpAddress := PX_SIP_MW_S_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_S_CSCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IS:= + { + interfaceName := PX_SIP_MW_IS_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := PX_SIP_MW_I_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_I_CSCF_PORT} + }, + { + domainName := "icscf.ims.domain", + IpAddress := PX_SIP_MW_S_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_S_CSCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_ISC:= + { + interfaceName := PX_SIP_ISC_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := PX_SIP_ISC_S_CSCF_IPADDR, + portNumbers := {PX_SIP_ISC_S_CSCF_PORT} + }, + { + domainName := "as.ims.domain", + IpAddress := PX_SIP_ISC_AS_IPADDR, + portNumbers := {PX_SIP_ISC_AS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PB:= + { + interfaceName := PX_SIP_MW_PB_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_MW_P_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_P_CSCF_PORT} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := PX_SIP_MW_IBCF_IPADDR, + portNumbers := {PX_SIP_MW_IBCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IB:= + { + interfaceName := PX_SIP_MW_IB_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := PX_SIP_MW_I_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_I_CSCF_PORT} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := PX_SIP_MW_IBCF_IPADDR, + portNumbers := {PX_SIP_MW_IBCF_PORT} + } + } + } + }; + }//end group Sip + + group Diameter{ + template MonitorInterfaceInfo m_MonIntf_Diameter_Rx := + { + interfaceName := PX_DIAMETER_RX_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_DIAMETER_RX_P_CSCF_IPADDR, + portNumbers := {PX_DIAMETER_RX_P_CSCF_PORT} + }, + { + domainName := "pcrf.ims.domain", + IpAddress := PX_DIAMETER_RX_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_RX_PCRF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_IH := + { + interfaceName := PX_DIAMETER_CX_IH_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := PX_DIAMETER_CX_I_CSCF_IPADDR, + portNumbers := {PX_DIAMETER_CX_I_CSCF_PORT} + }, + { + domainName := "hss.ims.domain", + IpAddress := PX_DIAMETER_CX_HSS_IPADDR, + portNumbers := {PX_DIAMETER_CX_HSS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_SH := + { + interfaceName := PX_DIAMETER_CX_SH_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := PX_DIAMETER_CX_S_CSCF_IPADDR, + portNumbers := {PX_DIAMETER_CX_S_CSCF_PORT} + }, + { + domainName := "hss.ims.domain", + IpAddress := PX_DIAMETER_CX_HSS_IPADDR, + portNumbers := {PX_DIAMETER_CX_HSS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Sh := + { + interfaceName := PX_DIAMETER_SH_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "as.ims.domain", + IpAddress := PX_DIAMETER_SH_AS_IPADDR, + portNumbers := {PX_DIAMETER_SH_AS_PORT} + }, + { + domainName := "hss.ims.domain", + IpAddress := PX_DIAMETER_SH_HSS_IPADDR, + portNumbers := {PX_DIAMETER_SH_HSS_PORT} + } + } + } + }; + + }//end group Diameter + + }//end group IMS + + }//end group VxLTEMonitorInterfaces_Templates +} \ No newline at end of file -- GitLab From 68fe2b9cfc16776fcd7dd9bd23df4a8af90c6134 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 19 May 2020 11:48:20 +0200 Subject: [PATCH 038/176] Splitting Mw interface --- ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn index da22ab9..a93c7af 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn @@ -98,7 +98,9 @@ module AtsImsIot_TestSystem { ImsInterfaceMonitor s6a, ImsInterfaceMonitor gx, ImsInterfaceMonitor mxA, - ImsInterfaceMonitor mw, + ImsInterfaceMonitor mwPS, // Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used + ImsInterfaceMonitor mwIS, // Mw interface at I-CSCF/S-CSCF + ImsInterfaceMonitor mwSI, // Mw interface at S-CSCF/IBCF ImsInterfaceMonitor sgi, ImsInterfaceMonitor gmB } -- GitLab From c746df7debe2b6c9c6ed9e53a436a568d06bf9ed Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 19 May 2020 12:04:47 +0200 Subject: [PATCH 039/176] local ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1d4fb2c..19ca16a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .classpath .metadata +/ttcn3build/ -- GitLab From 247386069b3e15b179e86e1aac4574e299d046e7 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Tue, 19 May 2020 13:25:32 +0200 Subject: [PATCH 040/176] New TPs for Gx interface added. --- .../AtsImsIot_Diameter_Templates.ttcn | 46 +++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 118 ++++++++++++++++++ 2 files changed, 164 insertions(+) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 01ac97e..b2d5aeb 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -83,6 +83,44 @@ module AtsImsIot_Diameter_Templates { aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Request_Type_AVP_Code), aVP_Data := p_avpData } + + template QoS_Information_AVP mw_qoS_Information := + { + AVP_Header := ?, + QoS_Class_Identifier_AVP := *, + Max_Requested_Bandwidth_UL_AVP := *, + Max_Requested_Bandwidth_DL_AVP := *, + Guaranteed_Bitrate_UL_AVP := *, + Guaranteed_Bitrate_DL_AVP := *, + Bearer_Identifier_AVP := ?, + Allocation_Retention_Priority_AVP := *, + APN_Aggregate_Max_Bitrate_UL_AVP := ?, + APN_Aggregate_Max_Bitrate_DL_AVP := ?, + AVP_Type := * + } + + template Default_EPS_Bearer_QoS_AVP mw_default_EPS_Bearer_QoS_Class_5 := + { + AVP_Header := ?, + QoS_Class_Identifier_AVP := mw_QoS_Class_Identifier, + Allocation_Retention_Priority_AVP := mw_allocation_Retention_Priority, + AVP_Type := * + } + + template Allocation_Retention_Priority_AVP mw_allocation_Retention_Priority := + { + AVP_Header := ?, + Priority_Level_AVP := ?, + Pre_emption_Capability_AVP := ?, + Pre_emption_Vulnerability_AVP := ? + } + + template QoS_Class_Identifier_AVP mw_QoS_Class_Identifier := + { + AVP_Header := ?, + QoS_Class_Identifier := QCI_5_E + } + } //end group GxHeaderFields } //end DiameterHeaderFields group DiameterTemplates { @@ -143,6 +181,14 @@ module AtsImsIot_Diameter_Templates { result_Code := mw_resultCode(mw_resultCode_diameterSuccess) } } + + template CCA_MSG mw_CCA_qosInformation_class5 modifies mw_CCA_dummy := { + cCA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + qoS_Information := {mw_qoS_Information}, + default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5 + } + } }// end group GxRequestMessageTemplates }//end group GxMessageTemplates } // end group DiameterTemplates diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index 8ee0dfd..c973b01 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -35,6 +35,16 @@ group g_PCRF { * @param p_monitorCompRef Reference to monitor component *
      * Test objective  "Verify that IUT when receives CC-Request for PCC Rules sends a CC-Answer in case of detachment procedure."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
      * ensure that {
      *     when {
      *         the EPC_PGW_A entity sends an CCR containing
@@ -70,6 +80,114 @@ group g_PCRF {
         );
         p_monitorCompRef.done;
     } // End of function f_mtc_check_TP_GX_PCRF_CCA_02
+    
+
+    /**
+     * Starts monitor component behavior for TP_GX_PCRF_CCA_03
+     * @param p_monitorCompRef Reference to monitor component
+     * 
+     * Test objective  "Verify that IUT when receives CC-Request for PCC Rules sends a CC-Answer in case of detachment procedure."
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     *
+     * ensure that {
+     *     when {
+     *         the EPC_PGW_A entity sends an CCR containing
+     *             CC_Request_Type_AVP
+     *                 indicating value TERMINATION_REQUEST
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the CCA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the EPC_PGW_A entity
+     *     }
+     * }  
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_CCA_03( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, + "TP_RX_PCRF_CCA_03 - CC Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_resultCode }, + "TP_RX_PCRF_CCA_03 - CC Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_CCA_03 + + + /** + * Starts monitor component behavior for TP_GX_PCRF_CCA_04 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives CC-Answer from home PCRF and it sends CC-Answer towards home P-GW."
+     * 
+     * Reference 
+            "TS 129 212 (V15.3.0) [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)"
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     *
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends an CCA
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the CCA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             QoS_Information_AVP containing
+     *                 APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
+     *                 Bearer_Identifier_AVP;,
+     *             Default_EPS_Bearer_QoS_AVP containing
+     *                 QoS_Class_Identifier_AVP
+     *                     indicating value '5'
+     *                 Allocation_Retention_Priority_AVP containing
+     *                     Priority_Level_AVP
+     *                     Pre_emption_Capablity_AVP
+     *                     Pre_emption_Vulnerability_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PGW_B entity
+     *     }
+     * }  
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_CCA_04( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_qosInformation_class5 }, + "TP_RX_PCRF_CCA_04 - CC Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_CCA_04 } // end group g_PCRF -- GitLab From eb0f84f10f57a449bfe9d2c0892861dfe5709702 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 19 May 2020 15:33:46 +0200 Subject: [PATCH 041/176] initial TPs for IBCF_GC_01, IBCF_CANCEL_01 and IBCF_486INVITE_01 at IC --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 79 ++++++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 44 +++++++++++ ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 4 files changed, 125 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index b30126d..4bce19a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -52,6 +52,34 @@ module AtsImsIot_TP_behavior_IC group g_IBCF { + group g_IBCF_GC{ + + /** + * @desc + * TP_IMS_4002_01 in CFW step 3 (MESSAGE)
ensure that {
+ * when { UE_A sends a MESSAGE to UE_B containing a Message_Body + * greater than 1300 bytes }
then { IMS_B receives the MESSAGE + * containing the Message_Body greater than 1300 bytes }
} + * @remark source function f_mtc_check_TP_IMS_4002_01_ic + */ + + function f_mtc_check_TP_IC_IBCF_GC_01(ImsInterfaceMonitor p_monitorCompRef) + runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_GC_01(?))},//? CallId can be checked + {mw_SipRequest(mw_MESSAGE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_GC_01", + false, + false + ) + ); + p_monitorCompRef.done; + } + } // group g_IBCF_GC + group g_IBCF_INVITE { /** @@ -483,6 +511,57 @@ group g_IBCF_BYE { } // end group g_IBCF_BYE +group g_IBCF_CANCEL { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5107_03_ic + */ + function f_mtc_check_TP_IC_IBCF_CANCEL_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl))}, + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + +} // end group g_IBCF_CANCEL + +group g_IBCF_486INVITE { + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6034_04 + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, + "TP_IC_IBCF_486INVITE_01", false, false ) + ); + p_monitorCompRef.done; + } // End of function + +} // end group g_IBCF_486INVITE + } // end group g_IBCF diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index 297625f..c4689bc 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -62,6 +62,24 @@ module AtsImsIot_Templates_IC group g_IBCF { + group g_IBCF_GC{ + + /** + * + * @desc Message Request containing a message body greater than 1500 bytes. + * @remark source template mdw_TP_IMS_4002_01 + */ + template MESSAGE_Request mdw_TP_IC_IBCF_GC_01(template CallId p_callId) modifies mw_MESSAGE_Request_Base := { + msgHeader := { + contact := * + }, + messageBody := { + textplain := pattern "?#(1500,)" + } + } + + } // group g_IBCF_GC + group g_IBCF_INVITE { /** @@ -378,6 +396,32 @@ module AtsImsIot_Templates_IC } // end group g_IBCF_BYE + group g_IBCF_CANCEL { + + /** + * + * @desc CANCEL Request checking TP_IC_IBCF_CANCEL_01 + * @remark source template mdw_TP_IMS_5107_03_ic + */ + template CANCEL_Request mdw_TP_IC_IBCF_CANCEL_01 (template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) + modifies mw_CANCEL_Request_Base := { + msgHeader := { + route := ( + omit, + { + fieldName := ROUTE_E, + routeBody := { + *, + complement(mw_routeBody(p_SCSCF_SIP_URI)), + * + } + } + ) + } + } + + } // end group g_IBCF_CANCEL + } // end group g_IBCF diff --git a/ttcn/LibIms b/ttcn/LibIms index 45bea25..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e diff --git a/ttcn/LibSip b/ttcn/LibSip index 7f6fd81..2acb7ee 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 +Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 -- GitLab From f3b08067aff58b6699b53d989714f1ccb2e64ff3 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 26 May 2020 13:40:19 +0200 Subject: [PATCH 042/176] intro of nwe IOT PIXITS --- ttcn/LibIot/LibIot_PIXITS.ttcn | 1505 ++++++++++++++++++++++++-------- 1 file changed, 1141 insertions(+), 364 deletions(-) diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index 22091fa..878200f 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -1,364 +1,1141 @@ -/* - * @author STF 370 - * @version $Id: LibIot_PIXITS.ttcn 277 2009-06-16 15:06:42Z pintar $ - * @desc This module provides PIXIT parameters which need to be - * changeable within validation - */ - -module LibIot_PIXITS { - - import from LibIot_TypesAndValues - { - type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, - ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailableList; - } - - /** - * @desc PIXIT defines which verdict (E2E or conformance)is to be kept track of with the TTCN-3 verdict. - * Note that the verdict not chosen will be only available in log statements. - */ - modulepar IotVerdictType PX_TTCN3_VERDICT := e_conformance; - - /** - * - * @desc Maximum time limit used by monitor component for waiting for expected incoming messages - */ - modulepar float PX_MAX_MSG_WAIT := 10.0; - - /** - * - * @desc Example of module parameter based entry of EUT interface information for all products particpating in an interoperability event - */ - modulepar ProductList PX_PRODUCTS := { - { - // productIndex = 0 - productName := "ProductA", - monitorInterfaces := { - { - interfaceName := "Gm", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:99", //"10.10.20.99", - portNumbers := {5060} - } - } - } - }, - { - interfaceName := "Mx", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "icscf.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:98", //"192.86.1.98", - portNumbers := {5060} - }, - { - domainName := "scscf.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:99", //"192.86.1.99", - portNumbers := {5060} - }, - { - domainName := "ibcf.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:100", //"192.86.1.100", - portNumbers := {5060} - } - } - } - }, - { - interfaceName := "Ici", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "ibcf.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:100", //"192.86.1.100", - portNumbers := {5060} - } - } - } - }, - { - interfaceName := "ISC", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "as.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:109", //"192.86.1.109", - portNumbers := {} - }, - { - domainName := "scscf.ProductA.etsi", - IpAddress := "fe80::21a:a0ff:fe07:99", //"192.86.1.99", - portNumbers := {5060} - } - - } - } - }, - { - interfaceName := "Rx", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "", - IpAddress := "", - portNumbers := {1111} - } - } - } - }, - { - interfaceName := "Sgi", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "", - IpAddress := "", - portNumbers := {1111} - } - } - } - }, - { - interfaceName := "Mw", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "", - IpAddress := "", - portNumbers := {2222} - } - } - } - } - } - }, - { - // productIndex = 1 - productName := "ProductB", - monitorInterfaces := { - { - interfaceName := "Gm", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ProductB.etsi", - IpAddress := "fec0::216:d3ff:fe0d:22c", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fec0::216:d3ff:fe0d:106", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fec0::216:d3ff:fe0d:107", - portNumbers := {5060} - } - } - } - }, - { - interfaceName := "Mx", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ProductB.etsi", - IpAddress := "fec0::216:d3ff:fe0d:22c", - portNumbers := {5060} - }, - { - domainName := "icscf.ProductB.etsi", - IpAddress := "fec0::216:d3ff:fe0d:10", - portNumbers := {5180,5185} - }, - { - domainName := "scscf.ProductB.etsi", - IpAddress := "fec0::216:d3ff:fe0d:10", - portNumbers := {5185,5187,5188,5189} - }, - { - domainName := "ibcf.ProductB.etsi", - IpAddress := "fec0::216:d3ff:fe0d:10", - portNumbers := {5190} - } - } - } - }, - { - interfaceName := "Ici", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "ibcf.ProductB.etsi", - IpAddress := "fec0::216:d3ff:fe0d:10", - portNumbers := {5185,5187,5188,5189} - } - } - } - }, - { - interfaceName := "ISC", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ProductB.etsi", - IpAddress := "fec0::216:d3ff:fe0d:10", - portNumbers := {5060} - }, - { - domainName := "as.ProductB.net", - IpAddress := "fec0::216:d3ff:fe0d:20", - portNumbers := {5076} - } - } - } - } - } - } - } - - /** - * - * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_A - * - */ - modulepar integer PX_EUT_A := 0; - - /** - * - * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_B - */ - modulepar integer PX_EUT_B := 1; - - /** - * - * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_C - */ - modulepar integer PX_EUT_C := 10; - - /** - * - * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_D - */ - modulepar integer PX_EUT_D := 11; - - /** - * - * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_B_B2 - */ - modulepar integer PX_EUT_B_B2 := 2; - - - /** - * - * @desc Selects if interfaces should be considered in the evaluation - * interfaceName needs to be consistent to AtsImsIot_TestConfiguration - */ - modulepar InterfaceAvailableList PX_AVAILABLE_INTERFACES := { - { interfaceName := "Gm A", available := true }, - { interfaceName := "Gm B", available := true }, - { interfaceName := "Gm C", available := true }, - { interfaceName := "Gm D", available := true }, - { interfaceName := "Mx", available := true }, - { interfaceName := "Rx", available := true }, - { interfaceName := "Mw", available := false }, - { interfaceName := "Sgi", available := false }, - { interfaceName := "Ici", available := true }, - { interfaceName := "ISC A", available := true }, - { interfaceName := "ISC B", available := true }, - { interfaceName := "User A", available := true }, - { interfaceName := "User B", available := true }, - { interfaceName := "User A2", available := true }, - { interfaceName := "User B2", available := true } - } - - group adapterGeneralConfiguration { - /** - * - * @desc Maximum time limit used by trigger component for waiting for EUT response after command has been sent - */ - modulepar float PX_EUT_TRIGGER_RESPONSE := 15.0; - - /** - * @desc - * In case of offline mode, it defines the path where all sessions's Pcap files are located. - */ - modulepar charstring PX_IOT_PCAP_SESSIONS_PATH := "C:/cygwin/tmp/IMS-UE_tool_pcaps"; // Do not forget to upgrade PX_EUT_A and PX_EUT_B - - /** - * @desc - * Defines if the record traffic capture mode must be activated or not. - */ - modulepar RecordMode PX_IOT_RECORD_MODE := e_norecord; - - /** - * @desc - * Defines list of the files to merge. - */ - modulepar FileList PX_IOT_FILE_MERGE_LIST := { }; - - /** - * @desc - * Defines the location of the files to merge. - */ - modulepar charstring PX_IOT_FILE_MERGE_PATH := "."; - - /** - * @desc - * Defines the location of the files to merge. - */ - modulepar charstring PX_IOT_MERGE_TOOL_PATH := "C:\Program Files\WireShark"; - - /** - * @desc - * Defines the time stamp offset to start playing record traffic capture file. - */ - modulepar TimeOffset PX_IOT_TIMESTAMP_OFFSET := - { - seconds := 0, - microseconds := 0 - }; - - /** - * @desc - * List of the network interfaces to monitor. - * Use ';' to separate the interfaces - */ - modulepar charstring PX_IOT_IFACES := "rpcap://\Device\NPF_{60DAA80A-2AC6-4592-B3A7-80FC0FF08908}"; - - modulepar EutInterfaceInfoList PX_IOT_EUTs_IFACE_INFO_LIST := - { - { - eut := "User A", - ipAddress := "3ffe:501:ffff:100::10", // "127.0.0.1", - portNumber := 5060 - }, - { - eut := "User B", - ipAddress := "3ffe:501:ffff:1000::1000", //"127.0.0.1", - portNumber := 5060 - } - }; - - } // group adapterGlobalConfiguration -} \ No newline at end of file +/* + * @author STF 370 + * @version $Id: LibIot_PIXITS.ttcn 277 2009-06-16 15:06:42Z pintar $ + * @desc This module provides PIXIT parameters which need to be + * changeable within validation + */ + +module LibIot_PIXITS { + + import from LibIot_TypesAndValues + { + type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, + ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailableList,MonitorInterfaceInfo; + } + + /** + * @desc PIXIT defines which verdict (E2E or conformance)is to be kept track of with the TTCN-3 verdict. + * Note that the verdict not chosen will be only available in log statements. + */ + modulepar IotVerdictType PX_TTCN3_VERDICT := e_conformance; + + /** + * + * @desc Maximum time limit used by monitor component for waiting for expected incoming messages + */ + modulepar float PX_MAX_MSG_WAIT := 10.0; + + /** + * + * @desc Example of module parameter based entry of EUT interface information for all products particpating in an interoperability event + */ + modulepar ProductList PX_PRODUCTS := { + { + // productIndex = 0 + productName := "ProductA", + monitorInterfaces := { + { + interfaceName := "Gm", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fe80::21a:a0ff:fe07:99", //"10.10.20.99", + portNumbers := {5060} + } + } + } + }, + { + interfaceName := "Mx", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "icscf.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:98", //"192.86.1.98", + portNumbers := {5060} + }, + { + domainName := "scscf.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:99", //"192.86.1.99", + portNumbers := {5060} + }, + { + domainName := "ibcf.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:100", //"192.86.1.100", + portNumbers := {5060} + } + } + } + }, + { + interfaceName := "Ici", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "ibcf.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:100", //"192.86.1.100", + portNumbers := {5060} + } + } + } + }, + { + interfaceName := "ISC", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "as.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:109", //"192.86.1.109", + portNumbers := {} + }, + { + domainName := "scscf.ProductA.etsi", + IpAddress := "fe80::21a:a0ff:fe07:99", //"192.86.1.99", + portNumbers := {5060} + } + + } + } + }, + { + interfaceName := "Rx", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "", + IpAddress := "", + portNumbers := {1111} + } + } + } + }, + { + interfaceName := "Sgi", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "", + IpAddress := "", + portNumbers := {1111} + } + } + } + }, + { + interfaceName := "Mw", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "", + IpAddress := "", + portNumbers := {2222} + } + } + } + } + } + }, + { + // productIndex = 1 + productName := "ProductB", + monitorInterfaces := { + { + interfaceName := "Gm", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ProductB.etsi", + IpAddress := "fec0::216:d3ff:fe0d:22c", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fec0::216:d3ff:fe0d:106", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fec0::216:d3ff:fe0d:107", + portNumbers := {5060} + } + } + } + }, + { + interfaceName := "Mx", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ProductB.etsi", + IpAddress := "fec0::216:d3ff:fe0d:22c", + portNumbers := {5060} + }, + { + domainName := "icscf.ProductB.etsi", + IpAddress := "fec0::216:d3ff:fe0d:10", + portNumbers := {5180,5185} + }, + { + domainName := "scscf.ProductB.etsi", + IpAddress := "fec0::216:d3ff:fe0d:10", + portNumbers := {5185,5187,5188,5189} + }, + { + domainName := "ibcf.ProductB.etsi", + IpAddress := "fec0::216:d3ff:fe0d:10", + portNumbers := {5190} + } + } + } + }, + { + interfaceName := "Ici", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "ibcf.ProductB.etsi", + IpAddress := "fec0::216:d3ff:fe0d:10", + portNumbers := {5185,5187,5188,5189} + } + } + } + }, + { + interfaceName := "ISC", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ProductB.etsi", + IpAddress := "fec0::216:d3ff:fe0d:10", + portNumbers := {5060} + }, + { + domainName := "as.ProductB.net", + IpAddress := "fec0::216:d3ff:fe0d:20", + portNumbers := {5076} + } + } + } + } + } + } + } + + /** + * + * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_A + * + */ + modulepar integer PX_EUT_A := 0; + + /** + * + * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_B + */ + modulepar integer PX_EUT_B := 1; + + /** + * + * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_C + */ + modulepar integer PX_EUT_C := 10; + + /** + * + * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_D + */ + modulepar integer PX_EUT_D := 11; + + /** + * + * @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_B_B2 + */ + modulepar integer PX_EUT_B_B2 := 2; + + + /** + * + * @desc Selects if interfaces should be considered in the evaluation + * interfaceName needs to be consistent to AtsImsIot_TestConfiguration + */ + modulepar InterfaceAvailableList PX_AVAILABLE_INTERFACES := { + { interfaceName := "Gm A", available := true }, + { interfaceName := "Gm B", available := true }, + { interfaceName := "Gm C", available := true }, + { interfaceName := "Gm D", available := true }, + { interfaceName := "Mx", available := true }, + { interfaceName := "Rx", available := true }, + { interfaceName := "Mw", available := false }, + { interfaceName := "Sgi", available := false }, + { interfaceName := "Ici", available := true }, + { interfaceName := "ISC A", available := true }, + { interfaceName := "ISC B", available := true }, + { interfaceName := "User A", available := true }, + { interfaceName := "User B", available := true }, + { interfaceName := "User A2", available := true }, + { interfaceName := "User B2", available := true } + } + + group adapterGeneralConfiguration { + /** + * + * @desc Maximum time limit used by trigger component for waiting for EUT response after command has been sent + */ + modulepar float PX_EUT_TRIGGER_RESPONSE := 15.0; + + /** + * @desc + * In case of offline mode, it defines the path where all sessions's Pcap files are located. + */ + modulepar charstring PX_IOT_PCAP_SESSIONS_PATH := "C:/cygwin/tmp/IMS-UE_tool_pcaps"; // Do not forget to upgrade PX_EUT_A and PX_EUT_B + + /** + * @desc + * Defines if the record traffic capture mode must be activated or not. + */ + modulepar RecordMode PX_IOT_RECORD_MODE := e_norecord; + + /** + * @desc + * Defines list of the files to merge. + */ + modulepar FileList PX_IOT_FILE_MERGE_LIST := { }; + + /** + * @desc + * Defines the location of the files to merge. + */ + modulepar charstring PX_IOT_FILE_MERGE_PATH := "."; + + /** + * @desc + * Defines the location of the files to merge. + */ + modulepar charstring PX_IOT_MERGE_TOOL_PATH := "C:\Program Files\WireShark"; + + /** + * @desc + * Defines the time stamp offset to start playing record traffic capture file. + */ + modulepar TimeOffset PX_IOT_TIMESTAMP_OFFSET := + { + seconds := 0, + microseconds := 0 + }; + + /** + * @desc + * List of the network interfaces to monitor. + * Use ';' to separate the interfaces + */ + modulepar charstring PX_IOT_IFACES := "rpcap://\Device\NPF_{60DAA80A-2AC6-4592-B3A7-80FC0FF08908}"; + + modulepar EutInterfaceInfoList PX_IOT_EUTs_IFACE_INFO_LIST := + { + { + eut := "User A", + ipAddress := "3ffe:501:ffff:100::10", // "127.0.0.1", + portNumber := 5060 + }, + { + eut := "User B", + ipAddress := "3ffe:501:ffff:1000::1000", //"127.0.0.1", + portNumber := 5060 + } + }; + + } // group adapterGlobalConfiguration + + group VxLTEMonitorInterfaces_As_structure{ + group EPC{ + group ProtocolDIAMETER{ + + modulepar MonitorInterfaceInfo PX_MonIntf_S6a := + { + interfaceName := "S6a", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "mme.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_S9 := + { + interfaceName := "S9", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "hpcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "vpcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Gx := + { + interfaceName := "Gx", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pgw.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "pcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + }//end group ProtocolDIAMETER + } // end group EPC + group IMS{ + group ProtocolSIP{ + modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := + { + interfaceName := "Gm A", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := + { + interfaceName := "Gm B", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := omit, + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Ic := + { + interfaceName := "Ic", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "ibcfa.imsa.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "ibcfb.imsb.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := + { + interfaceName := "Mw PI", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := + { + interfaceName := "Mw PS", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := + { + interfaceName := "Mw SI", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Isc := + { + interfaceName := "Isc", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "as.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := + { + interfaceName := "Mw PB", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := + { + interfaceName := "Mw IB", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + + }//end group ProtocolSIP + group ProtocolDIAMETER{ + modulepar MonitorInterfaceInfo PX_MonIntf_Rx := + { + interfaceName := "Rx", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "pcrf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := + { + interfaceName := "Cx IH", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := + { + interfaceName := "Cx SH", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + modulepar MonitorInterfaceInfo PX_MonIntf_Sh := + { + interfaceName := "Sh", + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", + portNumbers := {5060} + }, + { + domainName := "hss.ims.domain", + IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", + portNumbers := {5060} + } + } + } + }; + + + }//end group ProtocolDIAMETER + } + + }// end VxLTEMonitorInterfaces_As_structure + + group VxLTEMonitorInterfaces_As_pixits{ + + group Sip{ + //A.8.2 PIXIT items for the Gm Interface + //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group GmA{ + modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE + modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE + modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF + modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; // Gm Port number of P-CSCF + modulepar boolean PX_SIP_GMA_MONITORENABLED := true; + }//end group GmA + + //A.8.2 PIXIT items for the Gm Interface + //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group GmB{ + modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE + modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE + modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF + modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; // Gm Port number of P-CSCF + modulepar boolean PX_SIP_GMB_MONITORENABLED := true; + }//end group GmB + + //A.8.3 PIXIT items for the Ic Interface + //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. + group Ic{ + modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network A + modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A + modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network B + modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; // Ic Port number of IBCF of network B + modulepar boolean PX_SIP_IC_MONITORENABLED := true; + }//end group Ic + + //A.8.4 PIXIT items for the Mw Interface + //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group Mw{ + modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of P-CSCF + modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060;// Mw Port number of P-CSCF + modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of I-CSCF + modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080;// Mw Port number of I-CSCF + modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of S-CSCF + modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090;// Mw Port number of S-CSCF + modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of IBCF + modulepar integer PX_SIP_MW_IBCF_PORT := 5050;// Mw Port number of IBCF + modulepar boolean PX_SIP_MW_MONITORENABLED := true; + }//end group Mw + + //A.8.* PIXIT items for the Isc Interface + //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group Isc{ + modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF + modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF + modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS + modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS + modulepar boolean PX_SIP_ISC_MONITORENABLED := true; + }//end group Isc + }//end group SIp + + group Diameter{ + //A.8.5 PIXIT items for the Cx Interface + //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. + group Cx{ + modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Charstring Cx IP address of I-CSCF + modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868;// Cx Port number of I-CSCF + modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of S-CSCF + modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868;// Cx Port number of S-CSCF + modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of HSS + modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868;// Cx Port number of HSS + modulepar boolean PX_DIAMETER_CX_MONITORENABLED := true; + }//end group Cx + + //A.8.6 PIXIT items for the Gx Interface + //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. + group Gx{ + modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PCRF + modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868;// Gx Port number of PCRF + modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PGW + modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868;// Gx Port number of PGW + modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; + }//end group Gx + + //A.8.7 PIXIT items for the Rx Interface + //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. + group Rx{ + modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of P-CSCF + modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868;// Rx Port number of P-CSCF + modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of PCRF + modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868;// Rx Port number of PCRF + modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; + }//end group Rx + + //A.8.8 PIXIT items for the S6a Interface + //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. + group S6a{ + modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of MME + modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868;// S6a Port number of MME + modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of HSS + modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868;// S6a Port number of HSS + modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; + }//end group S6a + + //A.8.9 PIXIT items for the S9 Interface + //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. + group S9{ + modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of H-PCRF + modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868;// S9 Port number of H-PCRF + modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of V-PCRF + modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868;// S9 Port number of V-PCRF + modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; + }//end group S9 + + //A.8.10 PIXIT items for the Sh Interface + //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. + group Sh{ + modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of AS + modulepar integer PX_DIAMETER_SH_AS_PORT := 3868;// Sh Port number of AS + modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of HSS + modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868;// Sh Port number of HSS + modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; + }//end group Sh + }//end group Diameter + + //A.8.11 PIXIT items for the RTP Interface + //In the context of the present document RTP is only considered end-to-end between two UEs. + + }//end group VxLTEMonitorInterfaces_As_pixits + + group VxLTEMonitorInterfaces_Templates{ + group EPC{ + group Diameter{ + template MonitorInterfaceInfo m_MonIntf_Diameter_S6a := + { + interfaceName := "S6a", + available := PX_DIAMETER_S6A_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "mme.epc.domain",//TODO: define as PIXIT + IpAddress := PX_DIAMETER_S6A_MME_IPADDR, + portNumbers := {PX_DIAMETER_S6A_MME_PORT} + }, + { + domainName := "hss.epc.domain", + IpAddress := PX_DIAMETER_S6A_HSS_IPADDR, + portNumbers := {PX_DIAMETER_S6A_HSS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_S9 := + { + interfaceName := "S9", + available := PX_DIAMETER_S9_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "hpcrf.epc.domain", + IpAddress := PX_DIAMETER_S9_H_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_S9_H_PCRF_PORT} + }, + { + domainName := "vpcrf.epc.domain", + IpAddress := PX_DIAMETER_S9_V_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_S9_V_PCRF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Gx := + { + interfaceName := "Gx", + available := PX_DIAMETER_GX_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcrf.epc.domain", + IpAddress := PX_DIAMETER_GX_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_GX_PCRF_PORT} + }, + { + domainName := "pgw.epc.domain", + IpAddress := PX_DIAMETER_GX_PGW_IPADDR, + portNumbers := {PX_DIAMETER_GX_PGW_PORT} + } + } + } + }; + }//end group Diameter + + }//end group EPC + + group IMS{ + + group Sip{ + template MonitorInterfaceInfo m_MonIntf_Sip_Gm_A := + { + interfaceName := "Gm A", + available := PX_SIP_GMA_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_GMA_PCSCF_IPADDR, + portNumbers := {PX_SIP_GMA_PCSCF_PORT} + }, + { + domainName := omit, + IpAddress := PX_SIP_GMA_UE_IPADDR, + portNumbers := {PX_SIP_GMA_UE_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Gm_B := + { + interfaceName := "Gm B", + available := PX_SIP_GMB_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_GMB_PCSCF_IPADDR, + portNumbers := {PX_SIP_GMB_PCSCF_PORT} + }, + { + domainName := omit, + IpAddress := PX_SIP_GMB_UE_IPADDR, + portNumbers := {PX_SIP_GMB_UE_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Ic := + { + interfaceName := "Ic", + available := PX_SIP_IC_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "ibcfa.ims.domain", + IpAddress := PX_SIP_IC_IBCF_A_IPADDR, + portNumbers := {PX_SIP_IC_IBCF_A_PORT} + }, + { + domainName := "ibcfb.ims.domain", + IpAddress := PX_SIP_IC_IBCF_B_IPADDR, + portNumbers := {PX_SIP_IC_IBCF_B_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PI:= + { + interfaceName := "Mw PI", + available := PX_SIP_MW_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_MW_P_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_P_CSCF_PORT} + }, + { + domainName := "icscf.ims.domain", + IpAddress := PX_SIP_MW_I_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_I_CSCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PS:= + { + interfaceName := "Mw PS", + available := PX_SIP_MW_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_MW_P_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_P_CSCF_PORT} + }, + { + domainName := "scscf.ims.domain", + IpAddress := PX_SIP_MW_S_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_S_CSCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_SI:= + { + interfaceName := "Mw SI", + available := PX_SIP_MW_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := PX_SIP_MW_S_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_S_CSCF_PORT} + }, + { + domainName := "icscf.ims.domain", + IpAddress := PX_SIP_MW_I_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_I_CSCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_ISC:= + { + interfaceName := "Isc", + available := PX_SIP_ISC_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := PX_SIP_ISC_S_CSCF_IPADDR, + portNumbers := {PX_SIP_ISC_S_CSCF_PORT} + }, + { + domainName := "as.ims.domain", + IpAddress := PX_SIP_ISC_AS_IPADDR, + portNumbers := {PX_SIP_ISC_AS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PB:= + { + interfaceName := "Mw PB", + available := PX_SIP_MW_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_SIP_MW_P_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_P_CSCF_PORT} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := PX_SIP_MW_IBCF_IPADDR, + portNumbers := {PX_SIP_MW_IBCF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IB:= + { + interfaceName := "Mw IB", + available := PX_SIP_MW_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := PX_SIP_MW_I_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_I_CSCF_PORT} + }, + { + domainName := "ibcf.ims.domain", + IpAddress := PX_SIP_MW_IBCF_IPADDR, + portNumbers := {PX_SIP_MW_IBCF_PORT} + } + } + } + }; + }//end group Sip + + group Diameter{ + template MonitorInterfaceInfo m_MonIntf_Diameter_Rx := + { + interfaceName := "Rx", + available := PX_DIAMETER_RX_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "pcscf.ims.domain", + IpAddress := PX_DIAMETER_RX_P_CSCF_IPADDR, + portNumbers := {PX_DIAMETER_RX_P_CSCF_PORT} + }, + { + domainName := "pcrf.ims.domain", + IpAddress := PX_DIAMETER_RX_PCRF_IPADDR, + portNumbers := {PX_DIAMETER_RX_PCRF_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_IH := + { + interfaceName := "Cx IH", + available := PX_DIAMETER_CX_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "icscf.ims.domain", + IpAddress := PX_DIAMETER_CX_I_CSCF_IPADDR, + portNumbers := {PX_DIAMETER_CX_I_CSCF_PORT} + }, + { + domainName := "hss.ims.domain", + IpAddress := PX_DIAMETER_CX_HSS_IPADDR, + portNumbers := {PX_DIAMETER_CX_HSS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_SH := + { + interfaceName := "Cx SH", + available := PX_DIAMETER_CX_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "scscf.ims.domain", + IpAddress := PX_DIAMETER_CX_S_CSCF_IPADDR, + portNumbers := {PX_DIAMETER_CX_S_CSCF_PORT} + }, + { + domainName := "hss.ims.domain", + IpAddress := PX_DIAMETER_CX_HSS_IPADDR, + portNumbers := {PX_DIAMETER_CX_HSS_PORT} + } + } + } + }; + + template MonitorInterfaceInfo m_MonIntf_Diameter_Sh := + { + interfaceName := "Sh", + available := PX_DIAMETER_SH_MONITORENABLED, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "as.ims.domain", + IpAddress := PX_DIAMETER_SH_AS_IPADDR, + portNumbers := {PX_DIAMETER_SH_AS_PORT} + }, + { + domainName := "hss.ims.domain", + IpAddress := PX_DIAMETER_SH_HSS_IPADDR, + portNumbers := {PX_DIAMETER_SH_HSS_PORT} + } + } + } + }; + + }//end group Diameter + + }//end group IMS + + + + + }//end group VxLTEMonitorInterfaces_Templates +} + + + + -- GitLab From 971ed9fb0d2f0d085b27bb6747f8c4ba487c98e0 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 26 May 2020 13:40:36 +0200 Subject: [PATCH 043/176] intro of nwe IOT PIXITS --- ttcn/LibIot/LibIot_TypesAndValues.ttcn | 1 + 1 file changed, 1 insertion(+) diff --git a/ttcn/LibIot/LibIot_TypesAndValues.ttcn b/ttcn/LibIot/LibIot_TypesAndValues.ttcn index a24b0e5..c319a83 100644 --- a/ttcn/LibIot/LibIot_TypesAndValues.ttcn +++ b/ttcn/LibIot/LibIot_TypesAndValues.ttcn @@ -84,6 +84,7 @@ module LibIot_TypesAndValues { */ type record MonitorInterfaceInfo { charstring interfaceName, + boolean available optional,//or would be better MonitorEnable InterfaceInfo interfaceInfo } -- GitLab From b53dd7646b2b8cd9e8ef185ceb386eb3dd34362e Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 26 May 2020 13:51:22 +0200 Subject: [PATCH 044/176] intro of nwe IOT PIXITS --- ttcn/LibIot/LibIot_PIXITS.ttcn | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index 878200f..61063ae 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -364,7 +364,7 @@ module LibIot_PIXITS { group VxLTEMonitorInterfaces_As_structure{ group EPC{ - group ProtocolDIAMETER{ + group Diameter{ modulepar MonitorInterfaceInfo PX_MonIntf_S6a := { @@ -420,10 +420,10 @@ module LibIot_PIXITS { } } }; - }//end group ProtocolDIAMETER + }//end group Diameter } // end group EPC group IMS{ - group ProtocolSIP{ + group Sip{ modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := { interfaceName := "Gm A", @@ -587,8 +587,8 @@ module LibIot_PIXITS { } }; - }//end group ProtocolSIP - group ProtocolDIAMETER{ + }//end group Sip + group Diameter{ modulepar MonitorInterfaceInfo PX_MonIntf_Rx := { interfaceName := "Rx", @@ -663,7 +663,7 @@ module LibIot_PIXITS { }; - }//end group ProtocolDIAMETER + }//end group Diameter } }// end VxLTEMonitorInterfaces_As_structure -- GitLab From 816c2d23173d3b078a176b936630664115edebd3 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 28 May 2020 10:16:50 +0200 Subject: [PATCH 045/176] intro of nwe IOT PIXITS --- ttcn/LibIot/LibIot_PIXITS.ttcn | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index 61063ae..cd7b945 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -36,6 +36,7 @@ module LibIot_PIXITS { monitorInterfaces := { { interfaceName := "Gm", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -58,6 +59,7 @@ module LibIot_PIXITS { }, { interfaceName := "Mx", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -85,6 +87,7 @@ module LibIot_PIXITS { }, { interfaceName := "Ici", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -97,6 +100,7 @@ module LibIot_PIXITS { }, { interfaceName := "ISC", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -115,6 +119,7 @@ module LibIot_PIXITS { }, { interfaceName := "Rx", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -127,6 +132,7 @@ module LibIot_PIXITS { }, { interfaceName := "Sgi", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -139,6 +145,7 @@ module LibIot_PIXITS { }, { interfaceName := "Mw", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -157,6 +164,7 @@ module LibIot_PIXITS { monitorInterfaces := { { interfaceName := "Gm", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -179,6 +187,7 @@ module LibIot_PIXITS { }, { interfaceName := "Mx", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -206,6 +215,7 @@ module LibIot_PIXITS { }, { interfaceName := "Ici", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -218,6 +228,7 @@ module LibIot_PIXITS { }, { interfaceName := "ISC", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -369,6 +380,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_S6a := { interfaceName := "S6a", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -387,6 +399,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_S9 := { interfaceName := "S9", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -405,6 +418,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Gx := { interfaceName := "Gx", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -427,6 +441,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := { interfaceName := "Gm A", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -445,6 +460,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := { interfaceName := "Gm B", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -463,6 +479,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Ic := { interfaceName := "Ic", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -481,6 +498,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := { interfaceName := "Mw PI", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -499,6 +517,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := { interfaceName := "Mw PS", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -517,6 +536,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := { interfaceName := "Mw SI", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -535,6 +555,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Isc := { interfaceName := "Isc", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -553,6 +574,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := { interfaceName := "Mw PB", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -571,6 +593,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := { interfaceName := "Mw IB", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -592,6 +615,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Rx := { interfaceName := "Rx", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -610,6 +634,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := { interfaceName := "Cx IH", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -628,6 +653,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := { interfaceName := "Cx SH", + available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -646,6 +672,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Sh := { interfaceName := "Sh", + available := true, interfaceInfo := { IpInterfaceInfo := { { -- GitLab From 3023c91d659d2dc07812a934086fd6261457c368 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Thu, 28 May 2020 20:41:48 +0200 Subject: [PATCH 046/176] New TPs for Gx interface added. --- .../AtsImsIot_Diameter_Templates.ttcn | 208 ++++++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 518 ++++++++++++++++++ 2 files changed, 702 insertions(+), 24 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index b2d5aeb..9cd5820 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -67,13 +67,13 @@ module AtsImsIot_Diameter_Templates { template Flow_Status_AVP mw_flowStatus(template (present) Flow_Status_Type p_avpData) := { aVP_Header := mw_aVP_Header_VMbit1(c_flow_Status_AVP_Code), - aVP_Data := p_avpData + aVP_Data := p_avpData } template Flow_Usage_AVP mw_flowUsage(template (present) Flow_Usage_Type p_avpData) := { aVP_Header := mw_aVP_Header_VMbit1(c_flow_Usage_AVP_Code), - aVP_Data := p_avpData + aVP_Data := p_avpData } } //end group RxHeaderFields group GxHeaderFields{ @@ -86,40 +86,166 @@ module AtsImsIot_Diameter_Templates { template QoS_Information_AVP mw_qoS_Information := { - AVP_Header := ?, - QoS_Class_Identifier_AVP := *, - Max_Requested_Bandwidth_UL_AVP := *, - Max_Requested_Bandwidth_DL_AVP := *, - Guaranteed_Bitrate_UL_AVP := *, - Guaranteed_Bitrate_DL_AVP := *, - Bearer_Identifier_AVP := ?, - Allocation_Retention_Priority_AVP := *, - APN_Aggregate_Max_Bitrate_UL_AVP := ?, - APN_Aggregate_Max_Bitrate_DL_AVP := ?, - AVP_Type := * + aVP_Header := ?, + qoS_Class_Identifier := *, + max_Requested_Bandwidth_UL := *, + max_Requested_Bandwidth_DL := *, + guaranteed_Bitrate_UL := *, + guaranteed_Bitrate_DL := *, + bearer_Identifier := ?, + allocation_Retention_Priority := *, + aPN_Aggregate_Max_Bitrate_UL := ?, + aPN_Aggregate_Max_Bitrate_DL := ?, + aVP_Type := * + } + + template QoS_Information_AVP mw_qoS_Information_Audio := + { + aVP_Header := ?, + qoS_Class_Identifier := mw_QoS_Class_Identifier(QCI_1_E), + max_Requested_Bandwidth_UL := ?, + max_Requested_Bandwidth_DL := ?, + guaranteed_Bitrate_UL := ?, + guaranteed_Bitrate_DL := ?, + bearer_Identifier := *, + allocation_Retention_Priority := ?, + aPN_Aggregate_Max_Bitrate_UL := *, + aPN_Aggregate_Max_Bitrate_DL := *, + aVP_Type := * + } + + template QoS_Information_AVP mw_qoS_Information_Video := + { + aVP_Header := ?, + qoS_Class_Identifier := mw_QoS_Class_Identifier(QCI_2_E), + max_Requested_Bandwidth_UL := ?, + max_Requested_Bandwidth_DL := ?, + guaranteed_Bitrate_UL := ?, + guaranteed_Bitrate_DL := ?, + bearer_Identifier := *, + allocation_Retention_Priority := ?, + aPN_Aggregate_Max_Bitrate_UL := *, + aPN_Aggregate_Max_Bitrate_DL := *, + aVP_Type := * } template Default_EPS_Bearer_QoS_AVP mw_default_EPS_Bearer_QoS_Class_5 := { - AVP_Header := ?, - QoS_Class_Identifier_AVP := mw_QoS_Class_Identifier, - Allocation_Retention_Priority_AVP := mw_allocation_Retention_Priority, - AVP_Type := * + aVP_Header := ?, + qoS_Class_Identifier := mw_QoS_Class_Identifier(QCI_5_E), + allocation_Retention_Priority := mw_allocation_Retention_Priority, + aVP_Type := * } template Allocation_Retention_Priority_AVP mw_allocation_Retention_Priority := { - AVP_Header := ?, - Priority_Level_AVP := ?, - Pre_emption_Capability_AVP := ?, - Pre_emption_Vulnerability_AVP := ? + aVP_Header := ?, + priority_Level := ?, + pre_emption_Capability := ?, + pre_emption_Vulnerability := ? } - template QoS_Class_Identifier_AVP mw_QoS_Class_Identifier := + template QoS_Class_Identifier_AVP mw_QoS_Class_Identifier(template QoS_Class_Identifier p_avp_Data) := + { + aVP_Header := ?, + aVP_Data := p_avp_Data + } + + template Bearer_Usage_AVP mw_bearer_Usage(Bearer_Usage p_avpData) := + { + aVP_Header := ?, + aVP_Data := p_avpData + } + + template Subscription_Id_AVP mw_subscription_Id(template Subscription_Id_Type_AVP p_typeAVP):= + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_AVP_Code), + subscription_Id_Type := p_typeAVP, + subscription_Id_Data := ? + } + + template Subscription_Id_Type_AVP mw_subscription_Id_Type(template Subscription_Id_Ty_Type p_avpData):= + { + aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_Type_AVP_Code), + aVP_Data := p_avpData + } + + template Charging_Rule_Install_AVP mw_chrgRuleInstall := + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Install_AVP_Code), + charging_Rule_Definition := {mw_chrgRuleDefinition_RuleName_Flows_FlowStatus}, + charging_Rule_Name := *, + charging_Rule_Base_Name := *, + bearer_Identifier := *, + rule_Activation_Time := *, + rule_DeActivation_Time := *, + resource_Allocation_Notification := *, + charging_Correlation_Indicator := *, + aVP_Type := * + } + + template Charging_Rule_Install_AVP mw_chrgRuleInstall_Qos := + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Install_AVP_Code), + charging_Rule_Definition := {mw_chrgRuleDefinition_RuleName_Flows_FlowStatus_Qos}, + charging_Rule_Name := *, + charging_Rule_Base_Name := *, + bearer_Identifier := *, + rule_Activation_Time := *, + rule_DeActivation_Time := *, + resource_Allocation_Notification := *, + charging_Correlation_Indicator := *, + aVP_Type := * + } + + template Charging_Rule_Remove_AVP mw_chrgRuleRemove_Name := { - AVP_Header := ?, - QoS_Class_Identifier := QCI_5_E + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Remove_AVP_Code), + charging_Rule_Name := ?, + charging_Rule_Base_Name := *, + aVP_Type := * } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_RuleName_Flows_FlowStatus := + { + aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Definition_AVP_Code), + charging_Rule_Name := ?, + service_Identifier := *, + rating_Group := *, + flow_Information := *, + flow_Status := mw_flowStatus(ENABLED_E), + qoS_Information := *, + reporting_Level := *, + online := *, + offline := *, + metering_Method := *, + precedence := *, + aF_Charging_Identifier := *, + flows := {mw_flows}, + monitoring_Key := *, + aF_Signalling_Protocol := *, + sponsor_Identity := *, + application_Service_Provider_Identity := *, + aVP_Type := * + } + + template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_RuleName_Flows_FlowStatus_Qos modifies mw_chrgRuleDefinition_RuleName_Flows_FlowStatus:= + { + flow_Information := ?, + flow_Status := ?, + qoS_Information := (mw_qoS_Information_Audio,mw_qoS_Information_Video) + } + + template Flows_AVP mw_flows := + { + aVP_Header := ?,// + media_component_number := + {aVP_Header := ?,// + aVP_Data := 0 + },//Media_Component_Number_AVP + flow_Number := *, + final_unit_action := * + } } //end group GxHeaderFields } //end DiameterHeaderFields @@ -172,6 +298,34 @@ module AtsImsIot_Diameter_Templates { cC_Request_Type := mw_cC_Request_Type(p_avpData) } } + + template CCR_MSG mw_CCR_SubscriberIMSI_qosInformation_class5(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := { + cCR_Body :={ + cC_Request_Type := mw_cC_Request_Type(p_avpData), + subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))}, + iP_CAN_Type := ?, + rat_Type := ?, + called_Station_Id := ?, + pDN_Connection_ID := ?, + framed_IP_Address := ?, + //framed_IPv6_Prefix := *, + bearer_Usage := mw_bearer_Usage(IMS_SIGNALLING_E), + qoS_Information := mw_qoS_Information, + default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5 + } + } + + template RAR_MSG mw_RAR_ChargingRuleInstall(template Charging_Rule_Install_AVP p_Charging_Rule_Install) modifies mw_RAR_dummy := { + rAR_Body :={ + charging_Rule_Install := {p_Charging_Rule_Install} + } + } + + template RAR_MSG mw_RAR_ChargingRuleRemove modifies mw_RAR_dummy := { + rAR_Body :={ + charging_Rule_Remove := {mw_chrgRuleRemove_Name} + } + } }// end group GxRequestMessageTemplates group GxAnswertMessageTemplates{ @@ -189,6 +343,12 @@ module AtsImsIot_Diameter_Templates { default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5 } } + + template RAA_MSG mw_RAA_resultCode modifies mw_RAA_dummy := { + rAA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } }// end group GxRequestMessageTemplates }//end group GxMessageTemplates } // end group DiameterTemplates diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index c973b01..d50828e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -23,11 +23,422 @@ module AtsImsIot_TP_behavior_GX import from LibDiameter_Templates all; group g_PGW { + + + /** + * Starts monitor component behavior for TP_GX_PGW_CCR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that when IUT is invoked with a create session request the CC-Request is sent towards PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PGW_A entity invokes create_session_request
+     *     }
+     *     then {
+     *         the EPC_PGW_B entity sends an CCR containing
+     *             CC_Request_Type_AVP
+     *                 indicating value INITIAL_REQUEST
+     *             Subscription_Id_AVP containing
+     *                 Subscription_Id_Type_AVP
+     *                     indicating value END_USER_IMSI
+     *                 ;,
+     *             IP_CAN_Type_AVP
+     *             RAT_Type_AVP
+     *             Called_Station_Id_AVP
+     *             PDN_Connection_Id_AVP
+     *             Framed_IP_Address_AVP
+     *             "or" Framed_IP6_IP_Address_AVP
+     *             Bearer_Usage_AVP
+     *                 indicating value IMS_SIGNALLING
+     *             QoS_Information_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
+     *                 Bearer_Identifier_AVP
+     *             Default_EPS_Bearer_QoS_AVP containing
+     *                 QoS_Class_Identifier_AVP
+     *                     indicating value '5'
+     *                 Allocation_Retention_Priority_AVP containing
+     *                     Priority_Level_AVP
+     *                     Pre_emption_Capablity_AVP
+     *                     Pre_emption_Vulnerability_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PGW_CCR_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }, + "TP_RX_PGW_CCR_01", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PGW_CCR_01 + + + /** + * Starts monitor component behavior for TP_GX_PGW_CCR_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that when IUT is invoked with a delete session request the CC-Request is sent towards PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *              the EPC_PGW_A entity invokes delete_session_request
+     *     }
+     *     then {
+     *         the EPC_PGW_B entity sends an CCR containing
+     *             CC_Request_Type_AVP
+     *                 indicating value TERMINATION_REQUEST
+     *         ;
+     *         to the EPC_PCRF_B entity
+     *     }
+     * }  
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PGW_CCR_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, + "TP_RX_PGW_CCR_02", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PGW_CCR_02 + + + /** + * Starts monitor component behavior for TP_GX_PGW_RAA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in an RA-Request received due provision of PCC rules and sends RA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends an RAR containing
+     *             Charging_Rule_Install_AVP containing
+     *                 Charging_Rule_Definition_AVP containing
+     *                     Charging_Rule_Name_AVP containing
+     *                         Flows_AVP containing
+     *                             Media_Component_Number_AVP
+     *                                 indicating value 0
+     *                             ,
+     *                             Flow_Status_AVP
+     *                                 indicating value ENABLED
+     *                         ;
+     *                     ;
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PGW_A entity
+     *     }
+     *     then {
+     *         the EPC_PGW_A entity sends the RAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     * }  
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PGW_RAA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)}, + "TP_RX_PGW_RAA_01 - RA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, + "TP_RX_PGW_RAA_01 - RA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PGW_RAA_01 + + + /** + * Starts monitor component behavior for TP_GX_PGW_RAA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes an RA-Request received due to the Session Bearer procedure and sends RA-Answer with Result_Code_AVP."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *              the EPC_PCRF_A entity sends an RAR
+     *              to the EPC_PGW_A entity
+     *     }
+     *     then {
+     *         the EPC_PGW_A entity sends the RAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     * }  
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PGW_RAA_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_dummy}, + "TP_RX_PGW_RAA_02 - RA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, + "TP_RX_PGW_RAA_02 - RA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PGW_RAA_02 + + + /** + * Starts monitor component behavior for TP_GX_PGW_RAA_03 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes an RA-Request received due to the Session Bearer procedure and sends RA-Answer with Result_Code_AVP."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A and
+     *     the UE_A entity previouslyEstablishedCallWith the UE_B
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends an RAR
+     *         to the EPC_PGW_A entity
+     *     }
+     *     then {
+     *         the EPC_PGW_A entity sends the RAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PGW_RAA_03( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_dummy}, + "TP_RX_PGW_RAA_03 - RA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, + "TP_RX_PGW_RAA_03 - RA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PGW_RAA_03 + + + /** + * Starts monitor component behavior for TP_GX_PGW_RAA_04 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes an RA-Request received due to removal of Session Bearer procedure and sends RA-Answer with Result_Code_AVP."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends an RAR containing
+     *             Charging_Rule_Remove_AVP containing
+     *                 Charging_Rule_Name_AVP
+     *         ;;
+     *         to the EPC_PGW_A entity
+     *     }
+     *     then {
+     *         the EPC_PGW_A entity sends the RAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PGW_RAA_04( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleRemove}, + "TP_RX_PGW_RAA_04 - RA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, + "TP_RX_PGW_RAA_04 - RA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PGW_RAA_04 } // end group g_PGW group g_PCRF { + + + /** + * Starts monitor component behavior for TP_GX_PCRF_CCA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT when receives CC-Request for PCC Rules sends a CC-Answer in case of attachment procedure."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PGW_A entity sends an CCR containing
+     *             CC_Request_Type_AVP
+     *                 indicating value INITIAL_REQUEST
+     *             Subscription_Id_AVP containing
+     *                 Subscription_Id_Type_AVP
+     *                     indicating value END_USER_IMSI
+     *                 ;,
+     *             IP_CAN_Type_AVP
+     *             RAT_Type_AVP
+     *             Called_Station_Id_AVP
+     *             PDN_Connection_Id_AVP
+     *             Framed_IP_Address_AVP
+     *             "or" Framed_IP6_IP_Address_AVP
+     *             Bearer_Usage_AVP
+     *                 indicating value IMS_SIGNALLING
+     *             QoS_Information_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
+     *                 Bearer_Identifier_AVP
+     *             Default_EPS_Bearer_QoS_AVP containing
+     *                 QoS_Class_Identifier_AVP
+     *                     indicating value '5'
+     *                 Allocation_Retention_Priority_AVP containing
+     *                     Priority_Level_AVP
+     *                     Pre_emption_Capablity_AVP
+     *                     Pre_emption_Vulnerability_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the CCA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             QoS_Information_AVP containing
+     *                 APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
+     *                 Bearer_Identifier_AVP;,
+     *             Default_EPS_Bearer_QoS_AVP containing
+     *                 QoS_Class_Identifier_AVP
+     *                     indicating value '5'
+     *                 Allocation_Retention_Priority_AVP containing
+     *                     Priority_Level_AVP
+     *                     Pre_emption_Capablity_AVP
+     *                     Pre_emption_Vulnerability_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PGW_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_CCA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }, + "TP_RX_PCRF_CCA_01 - CC Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_qosInformation_class5 }, + "TP_RX_PCRF_CCA_01 - CC Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_CCA_01 /** @@ -188,6 +599,113 @@ group g_PCRF { ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_CCA_04 + + + /** + * Starts monitor component behavior for TP_GX_PCRF_CCA_04 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives CC-Answer from home PCRF and it sends CC-Answer towards home P-GW."
+     * 
+     * Reference 
+            "TS 129 212 (V15.3.0) [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)"
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     *
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends an CCA
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the CCA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the EPC_PGW_B entity
+     *     }
+     * }  
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_CCA_05( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_resultCode}, + "TP_RX_PCRF_CCA_05 - CC Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_CCA_05 + + + /** + * Starts monitor component behavior for TP_GX_PCRF_RAR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "When IUT receives AA-Request from P-CSCF successfully sends an RA-Request due to the Session Bearer procedure"
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity sends an AAR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the RAR containing
+     *             Charging_Rule_Install_AVP containing
+     *                 Charging_Rule_Definition_AVP containing
+     *                     Charging_Rule_Name_AVP
+     *                     Flow_Information_AVP containing
+     *                         Flow_Description_AVP
+     *                     Flow_Status_AVP
+     *                     Flows_AVP containing
+     *                         Media_Component_Number_AVP
+     *                     ;,
+     *                     QOS_Information_AVP containing
+     *                         QOS_Class_Identifier_AVP
+     *                             indicating value 
+     *                                 "QCI_1 for voice or
+     *                                  QCI_2 for video";,
+     *                         Max_Requested_Bandwidth_UL_AVP
+     *                         Max_Requested_Bandwidth_DL_AVP
+     *                         Guaranteed_Bitrate_UL_AVP
+     *                         Guaranteed_Bitrate_DL_AVP
+     *                         Allocation_Retention_Priority_AVP
+     *                     ;
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PGW_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_RAR_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)}, + "TP_RX_PCRF_RAR_01 - RA Request", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_RAR_01 } // end group g_PCRF -- GitLab From 98f8f5294f990d2c78c4b64de2ebc54807237e0c Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 29 May 2020 07:07:44 +0200 Subject: [PATCH 047/176] Start implementing Gm --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 155 ++++-- ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn | 481 ++++++++++--------- 2 files changed, 364 insertions(+), 272 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 2f66108..4a96954 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1,58 +1,117 @@ -/* +/** * @author STF 574 * @version $Id$ * @desc This module provides the TP behaviour functions at GM interface */ -module AtsImsIot_TP_behavior_GM -{ +module AtsImsIot_TP_behavior_GM { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; + import from AtsImsIot_TestSystem all; + import from LibIot_PIXITS all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from LibIot_TestInterface all; + import from LibIms_UpperTester all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } + import from LibSip_Common all; - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; + import from AtsImsIot_Functions all; + import from LibIot_PIXITS all; + // LibSip + import from LibSip_SDPTypes all; + // LibMsrp + import from LibMsrp_TypesAndValues all; + import from LibMsrp_Functions all; + import from LibMsrp_Templates all; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + group imsMessage { + + } // End of group imsMessage + + // 5.2 IMS Registration + group imsRegistration { + + /** + * @desc Verify that the P-CSCF successfully processes a first registration (Successful) + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isTriggeredToStart + * } + * then { + * the UE_A entity sends a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "", + * not term_ioi, + * not SecurityClient + * ;; + * to the IMS_P_CSCF_A entity + * and the UE_A entity receives an 401_Unauthorized containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Path, + * Warning, + * PAccessNetworkInfo, + * WwwAuthenticate containing + * Digest, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth" + * ;; + * from the IMS_P_CSCF_A entity + * } + * } + */ + // FIXME To be removed: f_mtc_check_TP_IMS_5203_01_gm + function f_mtc_check_TP_GM_PCSCF_REGISTER_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_401Unauthorized_Base), + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_01() + + } // End of group imsRegistration - - -group g_PCSCF { - - -} // end group g_PCSCF - - } // end module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn index 6cb2a7f..ec13086 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn @@ -1,112 +1,145 @@ /** - * @author STF 370 + * @author STF 370 * @version $Id: $ - * @desc This module provides ATS specific test case definitions. + * @desc This module provides ATS specific test case definitions. */ module AtsImsIot_TestCases_REG { - - import from AtsImsIot_Behavior { + + import from AtsImsIot_Behavior { function all; } - import from AtsImsIot_Functions { + import from AtsImsIot_Functions { function all; } - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TestConfiguration { + import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } - import from AtsImsIot_TestConfiguration { + import from AtsImsIot_TestConfiguration { const all; function all; } - + import from LibSip_SIPTypesAndValues {const c_statusLine200, c_statusLine401, c_statusLine403;} - import from LibIot_TestInterface {type IotEquipmentUser;} + import from LibIot_TestInterface {type IotEquipmentUser;} - import from AtsImsIot_TestSystem { + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from LibSip_SIPTypesAndValues all; + /** + * @desc To perform initial IMS registration via the established default bearer. + * Note that some UEs perform IMS registration automatically on attachment - in which case this test becomes merged with the previous one. + */ + testcase TC_VxLTE_INT_REG_01() runs on ImsTestCoordinator system IotSystemInterface { + // Local variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_A); + + // Test control + + // Test component configuration + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + + // Test adapter configuration + + // Preamble + f_mtc_userRegistration(v_ueA, v_anyValidUser); + + // Test body + f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); + f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); + + + + // Postamble + + + } // End of testcase TC_VxLTE_INT_REG_01() - /** - * @desc - * First time registration in a visited IMS network. - * (in ETSI TS 186 011-2 V3.1.1 clause 4.5.2.1) - */ - testcase TC_IMS_REG_0001_AKA() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); - var Response v_200OK_Step8; - var Request v_Subscribe_Step10; + + /** + * @desc + * First time registration in a visited IMS network. + * (in ETSI TS 186 011-2 V3.1.1 clause 4.5.2.1) + */ + testcase TC_IMS_REG_0001_AKA() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); + var Response v_200OK_Step8; + var Request v_Subscribe_Step10; var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 @TODO shouldn't this be EUT_A? - - // @TODO check mw_credentialIntegrityNo, mw_credentialIntegrityYes - - f_mtc_check_TP_IMS_5011_01_gm(v_gmA, true); // Check1 when - f_mtc_check_TP_IMS_5011_01_ic(v_ic, true); // Check1 then - - f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA, false); // Check4 when (Gm) + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueB); + f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); + + // test body + f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 @TODO shouldn't this be EUT_A? + + // @TODO check mw_credentialIntegrityNo, mw_credentialIntegrityYes + + f_mtc_check_TP_IMS_5011_01_gm(v_gmA, true); // Check1 when + f_mtc_check_TP_IMS_5011_01_ic(v_ic, true); // Check1 then + + f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA, false); // Check4 when (Gm) f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5089_01_ic_when(v_ic, false); // Check4 when (Mw) + f_mtc_check_TP_IMS_5089_01_ic_when(v_ic, false); // Check4 when (Mw) f_mtc_check_register_mx(v_mxB); f_mtc_check_response_mx(v_mxB, c_statusLine401); - f_mtc_check_TP_IMS_5089_01_ic_then(v_ic, false); // Check4 then @TODO check mw_WwwAuthenticate + f_mtc_check_TP_IMS_5089_01_ic_then(v_ic, false); // Check4 then @TODO check mw_WwwAuthenticate f_mtc_check_response_mx(v_mxA, c_statusLine401); - f_mtc_check_TP_IMS_5011_02_gm(v_gmA, true); // Check2 when (Gm) - f_mtc_check_TP_IMS_5011_02_ic(v_ic, true); // Check2 then (Mw) - - f_mtc_check_TP_IMS_5092_01_gm(v_gmA, false); // Check5 when (Gm) + f_mtc_check_TP_IMS_5011_02_gm(v_gmA, true); // Check2 when (Gm) + f_mtc_check_TP_IMS_5011_02_ic(v_ic, true); // Check2 then (Mw) + + f_mtc_check_TP_IMS_5092_01_gm(v_gmA, false); // Check5 when (Gm) f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5092_01_ic_when(v_ic, false); // Check5 when (Mw) - f_mtc_check_register_mx(v_mxB); + f_mtc_check_TP_IMS_5092_01_ic_when(v_ic, false); // Check5 when (Mw) + f_mtc_check_register_mx(v_mxB); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5092_01_ic(v_ic, true); // Check5 then + f_mtc_check_TP_IMS_5092_01_ic(v_ic, true); // Check5 then f_mtc_check_response_mx(v_mxA, c_statusLine200); f_mtc_check_subscribe(v_mxA); - v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_ic_when(v_ic, false); // Check3 when - f_mtc_check_TP_IMS_5044_01_ic(v_ic, v_200OK_Step8, true); // Check3 then - f_mtc_check_subscribe(v_mxB); + v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_ic_when(v_ic, false); // Check3 when + f_mtc_check_TP_IMS_5044_01_ic(v_ic, v_200OK_Step8, true); // Check3 then + f_mtc_check_subscribe(v_mxB); f_mtc_check_response_mx(v_mxB, c_statusLine200); - v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_ic_when(v_ic, false); // Check6 when - f_mtc_check_TP_IMS_5096_01_ic(v_ic, v_Subscribe_Step10, false); // Check6 then + v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_ic_when(v_ic, false); // Check6 when + f_mtc_check_TP_IMS_5096_01_ic(v_ic, v_Subscribe_Step10, false); // Check6 then f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence Step 2 - f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); - - // postamble - f_PO_user_home_deregistration(v_ueB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - f_cf_adapter_down(); - } + + // Test Sequence Step 2 + f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); + + // postamble + f_PO_user_home_deregistration(v_ueB); + + // unmap/disconnect component ports + f_cf_user_down(v_ueB); + f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); + f_cf_adapter_down(); + } /** * @desc @@ -123,44 +156,44 @@ module AtsImsIot_TestCases_REG { var Request v_Subscribe_Step10; var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - + // test body f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 @TODO shouldn't this be EUT_A? - + // @TODO check mw_credentialIntegrityNo, mw_credentialIntegrityYes - + f_mtc_check_TP_IMS_5011_03_gm(v_gmA, true); // Check1 when f_mtc_check_TP_IMS_5011_03_ic(v_ic, true); // Check1 then - - f_mtc_check_TP_IMS_5089_02_gm_when(v_gmA, false); // Check4 when (Gm) + + f_mtc_check_TP_IMS_5089_02_gm_when(v_gmA, false); // Check4 when (Gm) f_mtc_check_register_mx(v_mxA); f_mtc_check_TP_IMS_5089_02_ic_when(v_ic, false); // Check4 when (Mw) f_mtc_check_register_mx(v_mxB); f_mtc_check_response_mx(v_mxB, c_statusLine401); f_mtc_check_TP_IMS_5089_02_ic_then(v_ic, false); // Check4 then @TODO check mw_WwwAuthenticate f_mtc_check_response_mx(v_mxA, c_statusLine401); - - f_mtc_check_TP_IMS_5011_04_gm(v_gmA, true); // Check2 when (Gm) + + f_mtc_check_TP_IMS_5011_04_gm(v_gmA, true); // Check2 when (Gm) f_mtc_check_TP_IMS_5011_04_ic(v_ic, true); // Check2 then (Mw) - - f_mtc_check_TP_IMS_5092_01_gm(v_gmA, false); // Check5 when (Gm) - f_mtc_check_register_mx(v_mxA); + + f_mtc_check_TP_IMS_5092_01_gm(v_gmA, false); // Check5 when (Gm) + f_mtc_check_register_mx(v_mxA); f_mtc_check_TP_IMS_5092_01_ic_when(v_ic, false); // Check5 when (Mw) - f_mtc_check_register_mx(v_mxB); + f_mtc_check_register_mx(v_mxB); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5092_01_ic(v_ic, true); // Check5 then + f_mtc_check_TP_IMS_5092_01_ic(v_ic, true); // Check5 then f_mtc_check_response_mx(v_mxA, c_statusLine200); - + f_mtc_check_subscribe(v_mxA); v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_ic_when(v_ic, false); // Check3 when f_mtc_check_TP_IMS_5044_01_ic(v_ic, v_200OK_Step8, true); // Check3 then f_mtc_check_subscribe(v_mxB); - + f_mtc_check_response_mx(v_mxB, c_statusLine200); v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_ic_when(v_ic, false); // Check6 when @@ -169,180 +202,180 @@ module AtsImsIot_TestCases_REG { // Test Sequence Step 2 f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); - + // postamble f_PO_user_home_deregistration(v_ueB); - + // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); f_cf_adapter_down(); } - - /** - * @desc - * No response from first entry point on REGISTER with topology hiding - * (TS 186 011-2 V3.1.1 Clause 4.5.2.2) - */ - // @TODO - testcase TC_IMS_REG_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var Request v_Register_Step4; // why do we need this variable? - var Response v_200OK_Step9; + + /** + * @desc + * No response from first entry point on REGISTER with topology hiding + * (TS 186 011-2 V3.1.1 Clause 4.5.2.2) + */ + // @TODO + testcase TC_IMS_REG_0002() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var Request v_Register_Step4; // why do we need this variable? + var Response v_200OK_Step9; var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - f_mtc_userRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); // Test Sequence Step 1 - - // check no response (check1-when) -message skip (1st register) - // check included in check1-then + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueB); + f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); + + // test body + f_mtc_userRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); // Test Sequence Step 1 + + // check no response (check1-when) -message skip (1st register) + // check included in check1-then f_mtc_check_register_mx(v_mxA); - // check mw for second register request - f_mtc_check_TP_IMS_5203_01_ic(v_ic); // (Check1-then) + // check mw for second register request + f_mtc_check_TP_IMS_5203_01_ic(v_ic); // (Check1-then) f_mtc_check_register_mx(v_mxB); - - // check gm for protected register (Check2-when) - - // check mw for protected register (check2-when) - - // check mw for 200_response (check2-then) - //v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_ic(v_ic); // Check2 - - //Step 2 - f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // postamble - f_PO_user_home_deregistration(v_ueB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - f_cf_adapter_down(); - } + + // check gm for protected register (Check2-when) + + // check mw for protected register (check2-when) + + // check mw for 200_response (check2-then) + //v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_ic(v_ic); // Check2 + + //Step 2 + f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); + + // postamble + f_PO_user_home_deregistration(v_ueB); + + // unmap/disconnect component ports + f_cf_user_down(v_ueB); + f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); + f_cf_adapter_down(); + } - /** - * @desc - * 403 response to REGISTER from an un-trusted domain without topology hiding - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.4) - */ - testcase TC_IMS_REG_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); + /** + * @desc + * 403 response to REGISTER from an un-trusted domain without topology hiding + * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.4) + */ + testcase TC_IMS_REG_0003() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 - - f_mtc_check_TP_IMS_5129_01_gm(v_gmA, false); // Check1 when (Gm) + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueB); + f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); + + // test body + f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 + + f_mtc_check_TP_IMS_5129_01_gm(v_gmA, false); // Check1 when (Gm) f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5129_01_ic_when(v_ic, false); // Check1 when (Mw) + f_mtc_check_TP_IMS_5129_01_ic_when(v_ic, false); // Check1 when (Mw) f_mtc_check_register_mx(v_mxB); f_mtc_check_response_mx(v_mxB, c_statusLine403); - f_mtc_check_TP_IMS_5129_01_ic(v_ic, false); // Check1 then + f_mtc_check_TP_IMS_5129_01_ic(v_ic, false); // Check1 then f_mtc_check_response_mx(v_mxA, c_statusLine403); - f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - unsuccessful registration - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - } - - /** - * @desc IMS network can initiate user de-registration, - * e.g., when a user runs out of credit - * @see ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.7 - */ - testcase TC_IMS_REG_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); + f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - unsuccessful registration + + // unmap/disconnect component ports + f_cf_user_down(v_ueB); + f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); + } + + /** + * @desc IMS network can initiate user de-registration, + * e.g., when a user runs out of credit + * @see ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.7 + */ + testcase TC_IMS_REG_0005() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - // IMS_B is triggered manually to de-register user B // Test Sequence Step 1 manuallz - - // IMS_B receives a network_originated_deregistration_event // Check1 when manually + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueB); + f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); + + // test body + // IMS_B is triggered manually to de-register user B // Test Sequence Step 1 manuallz + + // IMS_B receives a network_originated_deregistration_event // Check1 when manually f_mtc_check_notify_mx(v_mxB); - f_mtc_check_TP_IMS_5093_01_UE_ic(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY + f_mtc_check_TP_IMS_5093_01_UE_ic(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY f_mtc_check_notify_mx(v_mxA); f_mtc_check_notify_mx(v_mxB); - f_mtc_check_TP_IMS_5093_01_IMS_ic(v_ic, false); // check1 then - 2nd NOTIFY + f_mtc_check_TP_IMS_5093_01_IMS_ic(v_ic, false); // check1 then - 2nd NOTIFY f_mtc_check_notify_mx(v_mxA); - f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - check that user is not registered anymore (de-registration) - - // postamble - f_PO_user_home_deregistration(v_ueB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - } - /** - * @desc IMS network can initiate user re-authentication - * @see ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.8 - */ - testcase TC_IMS_REG_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); + f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - check that user is not registered anymore (de-registration) + + // postamble + f_PO_user_home_deregistration(v_ueB); + + // unmap/disconnect component ports + f_cf_user_down(v_ueB); + f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); + } + /** + * @desc IMS network can initiate user re-authentication + * @see ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.8 + */ + testcase TC_IMS_REG_0006() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - - //IMS_B receives a network_originated_deregistration_event // Check1 when manually - - f_mtc_check_TP_IMS_5094_01_UE(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY - f_mtc_check_TP_IMS_5094_01_IMS(v_ic, false); // check1 then - 2nd NOTIFY - - f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueB); + f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); + + // test body + + //IMS_B receives a network_originated_deregistration_event // Check1 when manually + + f_mtc_check_TP_IMS_5094_01_UE(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY + f_mtc_check_TP_IMS_5094_01_IMS(v_ic, false); // check1 then - 2nd NOTIFY + + f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 + + // postamble + f_PO_user_home_deregistration(v_ueB); + f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); + + // unmap/disconnect component ports + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } } \ No newline at end of file -- GitLab From 1bb45657037691a23948bc237384eb120a12bc28 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Fri, 29 May 2020 11:33:47 +0200 Subject: [PATCH 048/176] New TPs for Gx interface added. --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 148 +++++++++++++++++++ 1 file changed, 148 insertions(+) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index d50828e..1c826b2 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -706,6 +706,154 @@ group g_PCRF { ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_RAR_01 + + /** + * Starts monitor component behavior for TP_GX_PCRF_RAR_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "When IUT receives ST-Request from P-CSCF to remove all relevant previously created bearers then IUT sends an RA-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A and
+     *     the UE_A entity previouslyEstablishedCallWith the UE_B
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity sends an STR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the RAR containing
+     *             Charging_Rule_Remove_AVP containing
+     *                 Charging_Rule_Name_AVP
+     *             ;
+     *         ;
+     *         to the EPC_PGW_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_RAR_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleRemove}, + "TP_RX_PCRF_RAR_02", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_RAR_02 + + /** + * Starts monitor component behavior for TP_GX_PCRF_RAR_03 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "When IUT receives AA-Answer from home PCRF then IUT sends an RA-Request due to the Session Bearer procedure"
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *         the EPC_PCRF_A entity sends an AAA
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the RAR containing
+     *             Charging_Rule_Install_AVP containing
+     *                 Charging_Rule_Definition_AVP containing
+     *                     Charging_Rule_Name_AVP
+     *                     Flow_Information_AVP containing
+     *                         Flow_Description_AVP
+     *                     Flow_Status_AVP
+     *                     Flows_AVP containing
+     *                         Media_Component_Number_AVP
+     *                     ;,
+     *                     QOS_Information_AVP containing
+     *                         QOS_Class_Identifier_AVP
+     *                             indicating value 
+     *                                 "QCI_1 for voice or
+     *                                  QCI_2 for video";,
+     *                         Max_Requested_Bandwidth_UL_AVP
+     *                         Max_Requested_Bandwidth_DL_AVP
+     *                         Guaranteed_Bitrate_UL_AVP
+     *                         Guaranteed_Bitrate_DL_AVP
+     *                         Allocation_Retention_Priority_AVP
+     *                     ;
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PGW_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_RAR_03( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)}, //During validation some additions may be required + "TP_RX_PCRF_RAR_03", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_RAR_03 + + /** + * Starts monitor component behavior for TP_GX_PCRF_RAR_04 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "When IUT receives ST-Answer from home PCRF then IUT sends an RA-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends an STA
+     *              to the EPC_PCRF_B entity
+     *         }
+     *     then {
+     *         the EPC_PCRF_B entity sends the RAR containing
+     *             Charging_Rule_Remove_AVP containing
+     *                 Charging_Rule_Name_AVP
+     *             ;
+     *         ;
+     *         to the EPC_PGW_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_RAR_04( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleRemove},//During validation some additions may be required + "TP_RX_PCRF_RAR_04", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GX_PCRF_RAR_04 } // end group g_PCRF -- GitLab From 4d362e93e2e58522c4971409c86064b846625e2d Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 29 May 2020 13:59:46 +0200 Subject: [PATCH 049/176] Start implementing Gm --- .gitignore | 29 ++++++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 6 +--- 2 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b1f1da9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +.project +.settings +.classpath +.metadata + +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ +/bin/ diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 4a96954..90e862a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -34,10 +34,6 @@ module AtsImsIot_TP_behavior_GM { import from LibDiameter_Templates all; // import from DiameterRx_Templates all; - group imsMessage { - - } // End of group imsMessage - // 5.2 IMS Registration group imsRegistration { @@ -93,7 +89,7 @@ module AtsImsIot_TP_behavior_GM { // FIXME To be removed: f_mtc_check_TP_IMS_5203_01_gm function f_mtc_check_TP_GM_PCSCF_REGISTER_01( in ImsInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false + in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( -- GitLab From dc2aeb3a2b92593edbcf9da31f8502b51c84aa57 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Fri, 5 Jun 2020 11:49:32 +0200 Subject: [PATCH 050/176] initial TPs for all IC --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 971 ++++++++++++++++++- ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 292 +++++- 2 files changed, 1245 insertions(+), 18 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index 4bce19a..f69f108 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -187,6 +187,44 @@ group g_IBCF_INVITE { } } + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_05 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_02_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_05( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + //TODO: from/to + var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from + var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + //TODO: from/to + v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from + v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // end group g_IBCF_INVITE @@ -287,7 +325,7 @@ group g_IBCF_180RESP { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mdw_TP_IBCF_180RESP_01)}, + {mw_SipResponse(mdw_TP_IC_IBCF_180RESP_01)}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, "TP_IC_IBCF_180RESP_01", @@ -296,7 +334,7 @@ group g_IBCF_180RESP { ) ); p_monitorCompRef.done; - } + } /** * @desc Starts monitor component behavior @@ -347,6 +385,89 @@ group g_IBCF_1XXRESP { ); p_monitorCompRef.done; } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template RecordRoute v_recordRoute := ?; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_03( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template RecordRoute v_recordRoute := ?; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_02 + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_04( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template RecordRoute v_recordRoute := ?; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // end group g_IBCF_1XXRESP @@ -422,7 +543,7 @@ group g_IBCF_2XXRESP { } /** - * @desc Starts monitor component behavior for TP_IMS_5121_02 + * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_04 * @param p_monitorCompRef Reference to monitor component * @remark source function f_mtc_check_TP_IMS_5121_02_ic */ @@ -450,6 +571,69 @@ group g_IBCF_2XXRESP { ); p_monitorCompRef.done; } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_05 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5121_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_05( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var template RecordRoute v_recordRoute := ?; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mdw_2XX_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_05", + false, + false + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_06 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_2XXRESP_05 + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_06( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var template RecordRoute v_recordRoute := ?; + + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mdw_2XX_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_05", + false, + false + ) + ); + p_monitorCompRef.done; + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mdw_2XX_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_05", + false, + false + ) + ); + p_monitorCompRef.done; + } } // end group g_IBCF_2XXRESP @@ -509,6 +693,110 @@ group g_IBCF_BYE { p_monitorCompRef.done; } //function + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 + */ + function f_mtc_check_TP_IC_IBCF_BYE_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + + //TODO: to/from + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, + {}, + {0, omit}, + "TP_IC_IBCF_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 + */ + function f_mtc_check_TP_IC_IBCF_BYE_03( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + + //TODO: to/from + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, + {}, + {0, omit}, + "TP_IC_IBCF_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function + } // end group g_IBCF_BYE group g_IBCF_CANCEL { @@ -526,7 +814,19 @@ group g_IBCF_CANCEL { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl))}, + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To {}, {0, omit}, "TP_IC_IBCF_CANCEL_01", @@ -535,11 +835,101 @@ group g_IBCF_CANCEL { ) ); p_monitorCompRef.done; + + } //function + + function f_mtc_check_TP_IC_IBCF_CANCEL_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + + function f_mtc_check_TP_IC_IBCF_CANCEL_03( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsBUrl,?,?))}, + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } //function } // end group g_IBCF_CANCEL +group g_IBCF_CANCEL_OK { + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_statusLine indicate response code. + * @remark source function f_mtc_check_response_mx + */ + function f_mtc_check_TP_IC_IBCF_CANCEL_OK_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From + {}, + {0,omit}, + "TP_IC_IBCF_CANCEL_OK_01", + false, + false + ) + ); + p_monitorCompRef.done; + } + + function f_mtc_check_TP_IC_IBCF_CANCEL_OK_02( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From + {}, + {0,omit}, + "TP_IC_IBCF_CANCEL_OK_02", + false, + false + ) + ); + p_monitorCompRef.done; + } + + function f_mtc_check_TP_IC_IBCF_CANCEL_OK_03( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + f_mtc_check_TP_IC_IBCF_CANCEL_OK_01(p_monitorCompRef) + } + +} // end group g_IBCF_CANCEL_OK + group g_IBCF_486INVITE { /** @@ -550,17 +940,572 @@ group g_IBCF_486INVITE { * @remark source function f_mtc_check_TP_EPC_6034_04 */ function f_mtc_check_TP_IC_IBCF_486INVITE_01( - ImsInterfaceMonitor p_monitorCompRef + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, - "TP_IC_IBCF_486INVITE_01", false, false ) - ); - p_monitorCompRef.done; - } // End of function +// p_monitorCompRef.start( +// f_imsIot_receive( +// { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, +// "TP_IC_IBCF_486INVITE_01", false, false ) +// ); +// p_monitorCompRef.done; -} // end group g_IBCF_486INVITE + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_486INVITE + +group g_IBCF_487INVITE { + + /** + * Starts monitor component behavior for TP_IC_IBCF_487INVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6034_04 + */ + function f_mtc_check_TP_IC_IBCF_487INVITE_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, + "TP_IC_IBCF_487INVITE_01", false, false ) + ); + p_monitorCompRef.done; + } // End of function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IC_IBCF_487INVITE_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_487INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_487INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_487INVITE + +group g_IBCF_487INVITE_ACK { + + /** + * Starts monitor component behavior for TP_IC_IBCF_487INVITE_ACK_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + +// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_487INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + + /** + * Starts monitor component behavior for TP_IC_IBCF_487INVITE_ACK_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + +// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_487INVITE_ACK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + +} // end group g_IBCF_487INVITE_ACK + +group g_IBCF_486INVITE_ACK { + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_ACK_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + +// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_ACK_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + +// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + +} // end group g_IBCF_486INVITE_ACK + +group g_IBCF_SUBSCRIBE { + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_SUBSCRIBE_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5044_01_ic + */ + function f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01( + ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); + var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + var charstring v_Epires200OK; + var charstring v_EpiresSubscribe; + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5044_01_ic(?, v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_SUBSCRIBE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // TODO: IBCF_B receives a 200_OK from the IMS_A + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_SUBSCRIBE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_P_CSCF_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_SUBSCRIBE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_SUBSCRIBE + + +group g_IBCF_NOTIFY { + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_NOTIFY_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5094_01_IMS + */ + function f_mtc_check_TP_IC_IBCF_NOTIFY_01( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_NOTIFY_01(?, v_request_uri))}, + {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, + {0, omit}, + "TP_IC_IBCF_NOTIFY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // TODO: IBCF_B receives a 200_OK from the IMS_P_CSCF_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_NOTIFY_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_A + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_NOTIFY_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // end group g_IBCF_NOTIFY + +group g_IBCF_REGISTER { + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5089_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_01( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_01)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, + {mw_SipResponse (mw_401Unauthorized_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, + {mw_SipResponse (mw_401Unauthorized_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_02 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_02( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_02)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); + v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_03 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_03( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: UE_A,IMS_B + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); + v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_04 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_04( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); + v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_05 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_05( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator {f_mtc_check_TP_IC_IBCF_REGISTER_04(p_monitorCompRef,p_checkMessage) + } + +} // end group g_IBCF_REGISTER } // end group g_IBCF diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index c4689bc..81d68a2 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -57,7 +57,8 @@ module AtsImsIot_Templates_IC }; import from AtsImsIot_Templates { - template mdw_2XX_Base, mw_180Ringing_Base, mw_200OK_Base, mw_PChargingVector, mw_SIP_URI_Base, mw_TEL_URI_Base + template mdw_2XX_Base, mw_180Ringing_Base, mw_200OK_Base, mw_PChargingVector, mw_SIP_URI_Base, mw_TEL_URI_Base, + mw_credentialIntegrityNo, mw_401Unauthorized_Base, mw_WwwAuthenticate, mw_PathDef, mw_ServiceRoute, mdw_4XX_Base }; group g_IBCF { @@ -173,6 +174,19 @@ module AtsImsIot_Templates_IC } } + /** + * @desc INVITE Request checking TP_IC_IBCF_INVITE_05 + * @remark source template mdw_TP_IMS_5097_02_ic and mdw_TP_IMS_5044_01_ic + */ + template INVITE_Request mdw_TP_IC_IBCF_INVITE_05 ( + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId) + modifies mw_INVITE_Request_Base := { + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?) + } + } } // end group g_IBCF_INVITE @@ -224,7 +238,7 @@ module AtsImsIot_Templates_IC * @desc 180 Ringing Response checking TP_IBCF_180RESP_01 on MW * @remark source template mdw_TP_IMS_5115_01_ic */ - template Response mdw_TP_IBCF_180RESP_01 + template Response mdw_TP_IC_IBCF_180RESP_01 modifies mw_180Ringing_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ @@ -253,7 +267,7 @@ module AtsImsIot_Templates_IC /** * - * @desc 180 Ringing Response checking TP_IC_IBCF_1XXRESP_01 on MW + * @desc 180 Ringing Response checking TP_IC_IBCF_1XXRESP_01 * @remark source template mdw_TP_IMS_5115_03_ic */ template Response mdw_TP_IC_IBCF_1XXRESP_01( @@ -273,6 +287,33 @@ module AtsImsIot_Templates_IC } } } + + /** + * + * @desc 180 Ringing Response checking TP_IC_IBCF_1XXRESP_02 + * @remark source template mdw_TP_IC_IBCF_1XXRESP_01 + */ + template Response mdw_TP_IC_IBCF_1XXRESP_02( + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId, + template SipUrl p_SIP_URI, + template RecordRoute p_recordRoute) + modifies mw_180Ringing_Base := { + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), + pPreferredID := omit, + pAssertedID := { + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + *, + { nameAddr := mw_NameAddr(p_SIP_URI)}, + * + } + }, + recordRoute := p_recordRoute + } + } } // end group g_IBCF_1XXRESP @@ -345,9 +386,134 @@ module AtsImsIot_Templates_IC } } } + + /** + * + * @desc checking TP_IC_IBCF_2XXRESP_05 + * @remark source template mw_TP_IMS_5121_02_ic + */ + template Response mw_TP_IC_IBCF_2XXRESP_05 (template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId, + template SipUrl p_SIP_URI, + template RecordRoute p_recordRoute) modifies mdw_2XX_Base := { + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), + pPreferredID := omit, + pAssertedID := { + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + *, + { nameAddr := mw_NameAddr(p_SIP_URI)}, + * + } + }, + recordRoute := p_recordRoute + } + } } // end group g_IBCF_2XXRESP + group g_IBCF_4XX { + + /** + * + * @desc 487 Ringing Response checking TP_IC_IBCF_487INVITE_02 + * @remark source template mdw_TP_IC_IBCF_1XXRESP_01 + */ + template Response mdw_TP_IC_IBCF_487INVITE_02( + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId) + modifies mdw_4XX_Base := { + statusLine := {c_sipNameVersion, 487, ?}, + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?) + } + } + + /** + * + * @desc 487 Ringing Response checking TP_IC_IBCF_487INVITE_02 + * @remark source template mdw_TP_IC_IBCF_1XXRESP_01 + */ + template Response mdw_TP_IC_IBCF_486INVITE_02( + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId) + modifies mdw_4XX_Base := { + statusLine := {c_sipNameVersion, 486, ?}, + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?) + } + } + + } // end group g_IBCF_4XX + + group g_IBCF_200OK { + + /** + * + * @desc 200 OK message for TP_IC_IBCF_REGISTER_02 + * @remark source template mdw_TP_IMS_5092_01_ic + */ + template Response mdw_TP_IC_IBCF_REGISTER200OK_02 (charstring p_EUTHostname, template SipUrl p_eutBUri) modifies mw_200OK_Base := { + msgHeader := { + path := mw_PathDef (p_EUTHostname), + pAssociatedURI := { + fieldName := P_ASSOCIATED_URI_E, + nameAddrList := ? + }, + pChargingVector := mw_PChargingVector({ // @TODO indicating operator_identifier of IMS_? (IUT_?)? + {id := "term-ioi", paramValue := ?}, + * + }), + serviceRoute := mw_ServiceRoute (p_eutBUri), + contact := { + fieldName := CONTACT_E, + contactBody := { + contactAddresses := ? + } + } + } + } + + template(present) Response mw_Response_Base_ToFrom( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId + ) modifies mw_Response_Dummy := { + statusLine := p_statusLine, + msgHeader := { + callId := p_callId, + contentLength := *, + cSeq := p_cSeq, + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), + maxForwards := *, + via := ? + } + } + + } // end group g_IBCF_200OK + + group g_IBCF_401 { + + /** + * + * @desc 401 Unauthorized message checking f_mtc_check_TP_IC_IBCF_REGISTER_01. + * @remark source template mdw_TP_IMS_5089_01_ic + */ + template Response mdw_TP_IC_IBCF_REGISTER401_01 modifies mw_401Unauthorized_Base := { + msgHeader := { + wwwAuthenticate := mw_WwwAuthenticate + } + } + + + } // end group g_IBCF_401 group g_IBCF_ACK { @@ -369,7 +535,20 @@ module AtsImsIot_Templates_IC } } } - + + /** + * + * @desc ACK Request checking TP_IC_IBCF_4XXINVITE_ACK_01 + */ + template ACK_Request mdw_TP_IC_IBCF_4XXINVITE_ACK_01(template CallId p_callId, + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId) + modifies mw_ACK_Request_Base := { + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?) + } + } } // end group g_IBCF_ACK @@ -403,9 +582,13 @@ module AtsImsIot_Templates_IC * @desc CANCEL Request checking TP_IC_IBCF_CANCEL_01 * @remark source template mdw_TP_IMS_5107_03_ic */ - template CANCEL_Request mdw_TP_IC_IBCF_CANCEL_01 (template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) + template CANCEL_Request mdw_TP_IC_IBCF_CANCEL_01 ( + template CallId p_callId, template SipUrl p_SCSCF_SIP_URI, + template SipUrl p_eutAUri, template charstring p_EUTB_PublicId) modifies mw_CANCEL_Request_Base := { msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), route := ( omit, { @@ -422,6 +605,105 @@ module AtsImsIot_Templates_IC } // end group g_IBCF_CANCEL + group g_IBCF_SUBSCRIBE { + + /** + * + * @desc SUBSCRIBE Request checking TP_IC_IBCF_SUBSCRIBE_01 + * @remark source template mdw_TP_IMS_5044_01_ic + */ + template SUBSCRIBE_Request mdw_TP_IC_IBCF_SUBSCRIBE_01( + template SipUrl p_subscribe_uri, + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId + ) modifies mw_SUBSCRIBE_Request_Base := { + + requestLine := { + method := SUBSCRIBE_E, + requestUri := p_subscribe_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), + event := m_Event_reg, + expires := ?, // checked outside the template + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_eutAUri)), + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }) + } + } + + } // end group g_IBCF_SUBSCRIBE + + group g_IBCF_NOTIFY { + + /** + * + * @desc NOTIFY Request checking mdw_TP_IC_IBCF_NOTIFY_01 + * @remark source template mdw_TP_IMS_5094_01_IMS_ic + */ + template NOTIFY_Request mdw_TP_IC_IBCF_NOTIFY_01(template CallId p_callId, template SipUrl p_PCSCF_SIP_URI) modifies mw_NOTIFY_Request_Base := { + requestLine := { requestUri := p_PCSCF_SIP_URI }, + msgHeader := { + event := { + fieldName := EVENT_E, + eventType := pattern "*reg*", + eventParams := *}, +// pChargingVector := mw_PChargingVector({ +// {id := "icid-value", paramValue := *}, +// * +// }), + route := ? }, // TODO route header indicating the original Route_header from SUBSCRIBE (SUBSCRIBE not defined in the test description) + messageBody := ? // TODO + } + + } // end group g_IBCF_NOTIFY + + group g_IBCF_REGISTER { + + /** + * + * @desc REGISTER Request checking TP_IC_IBCF_REGISTER_01. + * @remark source template mdw_TP_IMS_5089_01_ic_when + */ + template REGISTER_Request mdw_TP_IC_IBCF_REGISTER_01 modifies mw_REGISTER_Request_Base := { + msgHeader := { + authorization := mw_Authorization(mw_credentialIntegrityNo) + } + } + + /** + * + * @desc REGISTER Request checking TP_IMS_5092_01. + * @remark source template mdw_TP_IMS_5092_01_ic_when + */ + template REGISTER_Request mdw_TP_IC_IBCF_REGISTER_02 modifies mw_REGISTER_Request_Base := { + msgHeader := { + authorization := mw_Authorization(mw_credentialIntegrityNo) + } + } + + /** + * + * @desc REGISTER Request checking TP_IC_IBCF_REGISTER_03. + * @remark TODO: template may be moved to LibSip_Templates + */ + template REGISTER_Request mdw_TP_IC_IBCF_REGISTER_EXPIRES_03( + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId + ) modifies mw_REGISTER_Request_Base := { + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), + expires := mw_Expires("0") + } + } + + } // end group g_IBCF_REGISTER + } // end group g_IBCF -- GitLab From 58e92379d31865cad2f62de80516633eae8b114f Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 8 Jun 2020 15:17:56 +0200 Subject: [PATCH 051/176] TPs for Gx, Rx, Cx interface minor changes. --- test_purposes/Cx/TP_CX.tplan2 | 2 -- test_purposes/Gx/TP_GX.tplan2 | 17 ++++++++--------- test_purposes/Rx/TP_RX.tplan2 | 22 ++-------------------- ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 5 files changed, 12 insertions(+), 33 deletions(-) diff --git a/test_purposes/Cx/TP_CX.tplan2 b/test_purposes/Cx/TP_CX.tplan2 index 2e710d5..cea3197 100644 --- a/test_purposes/Cx/TP_CX.tplan2 +++ b/test_purposes/Cx/TP_CX.tplan2 @@ -268,8 +268,6 @@ Package TP_CX { User_Name_AVP Destination_Host_AVP Destination_Realm_AVP - UAR_Flags_AVP - indicating value IMS_Emergency_Registration_bit_not_set ; to the IMS_HSS_A entity } diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2 index 8a2632f..a83868a 100644 --- a/test_purposes/Gx/TP_GX.tplan2 +++ b/test_purposes/Gx/TP_GX.tplan2 @@ -335,7 +335,7 @@ Package TP_GX { Test Purpose { TP Id TP_GX_PGW_RAA_01 - //TP_EPC_6013_01 and TP_EPC_6014_01 from TS 103 029 V5.1.1 + //TP_EPC_7001_05 and TP_EPC_7001_06 from TS 103 029 V5.1.1 Test objective "IUT successfully processes all mandatory AVPs in an RA-Request received due provision of PCC rules and sends RA-Answer." Reference @@ -355,14 +355,13 @@ Package TP_GX { the EPC_PCRF_A entity sends an RAR containing Charging_Rule_Install_AVP containing Charging_Rule_Definition_AVP containing - Charging_Rule_Name_AVP containing - Flows_AVP containing - Media_Component_Number_AVP - indicating value 0 - , - Flow_Status_AVP - indicating value ENABLED - ; + Charging_Rule_Name_AVP + Flows_AVP containing + Media_Component_Number_AVP + indicating value 0 + , + Flow_Status_AVP + indicating value ENABLED ; ; ; diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index 88b86fe..787fc31 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -52,17 +52,8 @@ Package TP_RX { indicating value 0, Media_Sub_Component_AVP containing Flow_Description_AVP - indicating value - "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number)", - Flow_Description_AVP - indicating value - "permit_out_ip from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - permit_out_udp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - permit_out_tcp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address", Flow_Usage_AVP - indicating value AF_SIGNALING, + indicating value AF_SIGNALLING, Flow_Status_AVP indicating value ENABLED, AF_Signalling_Protocol_AVP @@ -179,18 +170,9 @@ Package TP_RX { Media_Component_Number_AVP indicating value 0, Media_Sub_Component_AVP containing - Flow_Description_AVP - indicating value - "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number))", Flow_Description_AVP - indicating value - "permit_out_ip from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - permit_out_udp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - permit_out_tcp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address)", Flow_Usage_AVP - indicating value AF_SIGNALING, + indicating value AF_SIGNALLING, Flow_Status_AVP indicating value ENABLED, AF_Signalling_Protocol_AVP diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..45bea25 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f diff --git a/ttcn/LibSip b/ttcn/LibSip index 2acb7ee..7f6fd81 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 +Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 -- GitLab From d666324a71f62d99ddeb6c227ac96f0fc303d8e2 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 9 Jun 2020 17:55:52 +0200 Subject: [PATCH 052/176] initial module for TPs at ISC --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn | 98 +++++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 28 ++++++ ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 4 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn new file mode 100644 index 0000000..2096f88 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn @@ -0,0 +1,98 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at IC interface + */ + +module AtsImsIot_TP_behavior_ISC +{ + + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; + // LibMsrp + import from LibMsrp_TypesAndValues { type MsrpURI }; + import from LibMsrp_Functions { function f_str2msrpUri }; + import from LibMsrp_Templates { + template + m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, + m_msrpReport_Dummy, mw_msrpREPORT_success, + m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, + mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, + m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, + mw_contentType + }; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + + import from AtsImsIot_Templates_IC all; + + +group g_ISC { + + /** + * @desc Starts monitor component behavior for TP_ISC_SCSCF_REGISTER_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_REGISTER_02 + */ + function f_mtc_check_TP_ISC_SCSCF_REGISTER_01( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_ISC_SCSCF_REGISTER_01(?,?,v_request_uri))}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_ISC_SCSCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From +// {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_ISC_SCSCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } + +} // end of g_ISC + +} // end module AtsImsIot_TP_behavior_IC \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index 81d68a2..b1c4d42 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -702,6 +702,34 @@ module AtsImsIot_Templates_IC } } + /** + * + * @desc REGISTER Request checking TP_ISC_SCSCF_REGISTER_01. + */ + template REGISTER_Request mdw_TP_ISC_SCSCF_REGISTER_01( + template SipUrl p_eutAUri, + template charstring p_EUTB_PublicId, + template SipUrl p_PCSCF_SIP_URI + ) modifies mw_REGISTER_Request_Base := { + requestLine := { requestUri := p_PCSCF_SIP_URI }, + msgHeader := { + fromField := mw_From (p_eutAUri), + toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), + authorization := mw_Authorization(mw_credentialIntegrityNo), + pChargingVector := ?, + pChargingFunctionAddresses := ?, + pAccessNetworkInfo := ?, + pVisitedNetworkID := ?, + contact := { + fieldName := CONTACT_E, + contactBody := { + contactAddresses := ? + } + } + + } + } + } // end group g_IBCF_REGISTER } // end group g_IBCF diff --git a/ttcn/LibIms b/ttcn/LibIms index 45bea25..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e diff --git a/ttcn/LibSip b/ttcn/LibSip index 7f6fd81..2acb7ee 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 +Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 -- GitLab From 0221ac622e78e693ed3eb5394c96d9752b453d76 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 11 Jun 2020 13:54:32 +0200 Subject: [PATCH 053/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn | 61 +++++++++++++------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn index b90597b..05ae015 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn @@ -5,7 +5,7 @@ */ module AtsImsIot_Behavior { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator,SipInterfaceMonitor, DiameterInterfaceMonitor; } import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } @@ -3949,7 +3949,7 @@ group checksTC_IMS_SHARE_0009 { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_S6A_MME_ULR_01( - ImsInterfaceMonitor p_monitorCompRef, + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { @@ -3974,7 +3974,7 @@ group checksTC_IMS_SHARE_0009 { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_S6A_HSS_ULA_01( - ImsInterfaceMonitor p_monitorCompRef, + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { @@ -3997,7 +3997,7 @@ group checksTC_IMS_SHARE_0009 { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_GX_PCRF_CCA_01( - ImsInterfaceMonitor p_monitorCompRef, + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { @@ -5496,7 +5496,7 @@ group checksTC_IMS_SHARE_0009 { * @see TS 103 029 V3.1.1 clause 7.1.2 */ function f_mtc_check_TP_EPC_6005_01( - ImsInterfaceMonitor p_monitorCompRef + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) @@ -5529,7 +5529,7 @@ group checksTC_IMS_SHARE_0009 { * @see TS 103 029 V3.1.1 clause 7.1.2 */ function f_mtc_check_TP_EPC_6006_01( - ImsInterfaceMonitor p_monitorCompRef + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { f_mtc_check_TP_EPC_6006_02 ( p_monitorCompRef ); f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); @@ -5560,7 +5560,7 @@ group checksTC_IMS_SHARE_0009 { * @see TS 103 029 V3.1.1 clause 7.1.2 */ function f_mtc_check_TP_EPC_6006_02( - ImsInterfaceMonitor p_monitorCompRef + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_dummy } , "TP_EPC_6006_02", true ) @@ -5590,7 +5590,7 @@ group checksTC_IMS_SHARE_0009 { * @see TS 103 029 V3.1.1 clause 7.1.2 */ function f_mtc_check_TP_EPC_6009_01( - ImsInterfaceMonitor p_monitorCompRef + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { sTA_MSG := mw_STA_dummy } , "TP_EPC_6009_01", true ) @@ -5684,7 +5684,7 @@ group checksTC_IMS_SHARE_0009 { * @see TS 103 029 V3.1.1 clause 7.2.1.1 */ function f_mtc_check_TP_EPC_6012_01( - ImsInterfaceMonitor p_monitorCompRef, + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( @@ -5696,21 +5696,22 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6012_01 - /** - * Starts monitor component behavior for TP_EPC_6012_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6012_02( - ImsInterfaceMonitor p_monitorCompRef, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); - f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6012_02 - +//TODO: function commented out due to removal of TPs after refactoring/restructuring +// /** +// * Starts monitor component behavior for TP_EPC_6012_02 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// */ +// function f_mtc_check_TP_EPC_6012_02( +// ImsInterfaceMonitor p_monitorCompRef, +// ImsInterfaceMonitor p_monitorCompRef_B +// ) runs on ImsTestCoordinator { +// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); +// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); +// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); +// } // End of function f_mtc_check_TP_EPC_6012_02 +// /** * Starts monitor component behavior for TP_EPC_6013_01 * @param p_monitorCompRef Reference to monitor component @@ -5744,7 +5745,7 @@ group checksTC_IMS_SHARE_0009 { * @see TS 103 029 V3.1.1 clause 7.2.1.1 */ function f_mtc_check_TP_EPC_6013_01( - ImsInterfaceMonitor p_monitorCompRef + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_EPC_6013_01", true ) @@ -5759,7 +5760,7 @@ group checksTC_IMS_SHARE_0009 { * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. */ function f_mtc_check_TP_EPC_6014_01( - ImsInterfaceMonitor p_monitorCompRef + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_EPC_6014_01", true ) @@ -5821,7 +5822,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_TP_EPC_6017_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, - ImsInterfaceMonitor p_monitorCompRef_B + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef_B ) runs on ImsTestCoordinator { f_mtc_check_TP_EPC_6018_01 ( p_monitorCompRef, p_checkMessage ); f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef_B ); @@ -5869,7 +5870,7 @@ group checksTC_IMS_SHARE_0009 { * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. */ function f_mtc_check_TP_EPC_6022_01( - ImsInterfaceMonitor p_monitorCompRef + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_EPC_6022_01", true ) @@ -5905,7 +5906,7 @@ group checksTC_IMS_SHARE_0009 { * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. */ function f_mtc_check_TP_EPC_6026_01( - ImsInterfaceMonitor p_monitorCompRef, + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef, IotEquipmentUser p_ue ) runs on ImsTestCoordinator { f_mtc_triggerUserCommand ( p_ue, "Trigger registration expiration for UE A"); @@ -5966,7 +5967,7 @@ group checksTC_IMS_SHARE_0009 { */ function f_mtc_check_TP_EPC_6033_01( ImsInterfaceMonitor p_monitorCompRef_A, - ImsInterfaceMonitor p_monitorCompRef_B + /*ImsInterfaceMonitor*/DiameterInterfaceMonitor p_monitorCompRef_B ) runs on ImsTestCoordinator { p_monitorCompRef_A.start( f_imsIot_receive( -- GitLab From e8aa43add52d0c27e941c5cfcdd62750c91757b6 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 11 Jun 2020 13:54:45 +0200 Subject: [PATCH 054/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn index 0cc59e3..036fde3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn @@ -14,6 +14,7 @@ module AtsImsIot_TestCases_ATT { import from LibIot_TestInterface { type IotEquipmentUser }; import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_VxLTE_Functions all; // LibImsIot import from AtsImsIot_Functions { function f_getImUser }; // ImsIot @@ -41,7 +42,7 @@ module AtsImsIot_TestCases_ATT { v_config.rx := f_cf_create_monitor ( c_rx ); v_config.s6a := f_cf_create_monitor ( c_s6a ); v_config.gx := f_cf_create_monitor ( c_gx ); - v_config.mw := f_cf_create_monitor ( c_mw ); + v_config.mwPS := f_cf_create_monitor ( c_mw ); v_config.sgi := f_cf_create_monitor ( c_sgi ); // map/connect component ports @@ -58,9 +59,10 @@ module AtsImsIot_TestCases_ATT { // Check that user A can register to IMS A f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check - f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) - f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) +//TODO: commented out dure to restructure of Test functions +// f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) +// f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) +// f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 -- GitLab From c6a28cfc2a6eb9fd73145aad817e02b5e36bdc4f Mon Sep 17 00:00:00 2001 From: Rennoch Date: Mon, 15 Jun 2020 15:12:12 +0200 Subject: [PATCH 055/176] additional PIXIT for TP_IC_IBCF_INVITE_04 --- ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn | 6 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 60 ++++++++------------ ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 37 +++++++++--- 3 files changed, 60 insertions(+), 43 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn b/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn index 7072b8b..b8bd9b0 100644 --- a/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn @@ -18,7 +18,11 @@ group SUT_CONF { * @desc charstring for conference factory URI name */ modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name"; - + /** + * @desc charstring for PChargingVector TP_IC_IBCF_INVITE_04 + */ + modulepar charstring PX_IMS_A_ICID := "PX_IMS_A_ICID"; + } // end group SUT_CONF } // end group SUT diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index f69f108..f7238dd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -68,7 +68,7 @@ group g_IBCF { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_GC_01(?))},//? CallId can be checked + {mw_SipRequest(mdw_TP_IC_IBCF_GC_01)}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, "TP_IC_IBCF_GC_01", @@ -128,6 +128,28 @@ group g_IBCF_INVITE { p_monitorCompRef.done; } + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_03 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_04_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_03( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_03(v_eutBUri))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } /** * @desc Starts monitor component behavior @@ -172,9 +194,9 @@ group g_IBCF_INVITE { if(ispresent(v_sip.request.msgHeader.route)) { v_Route := v_sip.request.msgHeader.route; } - //if(ispresent(v_sip.request.msgHeader.via)) { + if(ispresent(v_sip.request.msgHeader.via)) { v_Via := v_sip.request.msgHeader.via; - //} + } // Check Route header if (match(v_Route, vt_pcscfRoute)) { @@ -1510,36 +1532,4 @@ group g_IBCF_REGISTER { } // end group g_IBCF -group g_SCSCF { - -group g_SCSCF_INVITE { - - /** - * @desc Starts monitor component behavior for TP_IC_SCSCF_INVITE_03 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5097_04_ic - */ - function f_mtc_check_TP_IC_SCSCF_INVITE_03( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IC_SCSCF_INVITE_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_SCSCF_INVITE - -} // end group g_SCSCF - - } // end module AtsImsIot_TP_behavior_IC \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index b1c4d42..31fa6cd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -53,7 +53,7 @@ module AtsImsIot_Templates_IC } import from AtsImsIot_PIXITS { modulepar - PX_IMS_SUT_CONF_FACTORY_NAME, PX_IMS_SUT_CONF_HOME_DOMAIN + PX_IMS_SUT_CONF_FACTORY_NAME, PX_IMS_SUT_CONF_HOME_DOMAIN, PX_IMS_A_ICID }; import from AtsImsIot_Templates { @@ -67,15 +67,15 @@ module AtsImsIot_Templates_IC /** * - * @desc Message Request containing a message body greater than 1500 bytes. + * @desc Message Request containing a message body greater than 1300 bytes. * @remark source template mdw_TP_IMS_4002_01 */ - template MESSAGE_Request mdw_TP_IC_IBCF_GC_01(template CallId p_callId) modifies mw_MESSAGE_Request_Base := { + template MESSAGE_Request mdw_TP_IC_IBCF_GC_01 modifies mw_MESSAGE_Request_Base := { msgHeader := { contact := * }, messageBody := { - textplain := pattern "?#(1500,)" + textplain := pattern "?#(1300,)" } } @@ -115,7 +115,8 @@ module AtsImsIot_Templates_IC complement({id := "access-network-charging-info", paramValue := ?}), * } - } + }, + pAccessNetworkInfo := omit } } @@ -143,7 +144,29 @@ module AtsImsIot_Templates_IC } - + /** + * @desc INVITE Request checking TP_IC_IBCF_INVITE_03 + * @remark source template mdw_TP_IMS_5097_04_ic + */ + template INVITE_Request mdw_TP_IC_IBCF_INVITE_03(in template (present) SipUrl p_requestUri) + modifies mw_INVITE_Request_Base := { + requestLine := { + method := INVITE_E, + requestUri := p_requestUri, + sipVersion := c_sipNameVersion + }, + msgHeader := { + pChargingVector := { + fieldName := P_CHARGING_VECTOR_E, + chargeParams := { + *, + complement({id := "access-network-charging-info", paramValue := ?}), + * + } + } + + } + } /** * @@ -168,7 +191,7 @@ module AtsImsIot_Templates_IC pPreferredID := omit, pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_userEutBUrl)), pChargingVector := mw_PChargingVector({ - {id := "icid-value", paramValue := *}, + {id := "icid-value", paramValue := {quotedString :=PX_IMS_A_ICID}}, * }) } -- GitLab From eccb0e2243cf6b7410cf7c6f55549a8bf48810c0 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Mon, 15 Jun 2020 16:30:05 +0200 Subject: [PATCH 056/176] smaller corrections for TPs at IC --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 127 +++++++++++++++---- ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 34 +---- 2 files changed, 105 insertions(+), 56 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index f7238dd..12c00a8 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -233,7 +233,7 @@ group g_IBCF_INVITE { ); p_monitorCompRef.done; //TODO: from/to - v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from + v_UEB_PublicId := f_GetUEPublicId(PX_EUT_A); //from v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to p_monitorCompRef.start( f_imsIot_receive( @@ -305,17 +305,17 @@ group g_IBCF_100TRY { v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; } - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IC_IBCF_100TRY_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; +// p_monitorCompRef.start( +// f_imsIot_receive( +// {mw_SipRequest(mw_INVITE_Request_Base)}, +// {}, +// v_skip, +// "TP_IC_IBCF_100TRY_01", +// false, +// p_checkMessage +// ) +// ); +// p_monitorCompRef.done; p_monitorCompRef.start( f_imsIot_receive( @@ -521,19 +521,19 @@ group g_IBCF_2XXRESP { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5131_02_ic + * @remark source function f_mtc_check_TP_IMS_5115_04_ic */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_03( + function f_mtc_check_TP_IC_IBCF_2XXRESP_02( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_03)}, + {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, - "TP_IC_IBCF_2XXRESP_03", + "TP_IC_IBCF_2XXRESP_02", false, p_checkMessage ) @@ -544,19 +544,19 @@ group g_IBCF_2XXRESP { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5115_04_ic + * @remark source function f_mtc_check_TP_IMS_5131_02_ic */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_02( + function f_mtc_check_TP_IC_IBCF_2XXRESP_03( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, + {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_03)}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, - "TP_IC_IBCF_2XXRESP_02", + "TP_IC_IBCF_2XXRESP_03", false, p_checkMessage ) @@ -947,7 +947,17 @@ group g_IBCF_CANCEL_OK { function f_mtc_check_TP_IC_IBCF_CANCEL_OK_03( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - f_mtc_check_TP_IC_IBCF_CANCEL_OK_01(p_monitorCompRef) + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From + {}, + {0,omit}, + "TP_IC_IBCF_CANCEL_OK_03", + false, + false + ) + ); + p_monitorCompRef.done; } } // end group g_IBCF_CANCEL_OK @@ -1055,6 +1065,13 @@ group g_IBCF_487INVITE { "TP_IC_IBCF_487INVITE_01", false, false ) ); p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, + "TP_IC_IBCF_487INVITE_01", false, false ) + ); + p_monitorCompRef.done; } // End of function /** @@ -1109,6 +1126,18 @@ group g_IBCF_487INVITE_ACK { ) ); p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_487INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } //function /** @@ -1136,6 +1165,18 @@ group g_IBCF_487INVITE_ACK { ) ); p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_487INVITE_ACK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } //function } // end group g_IBCF_487INVITE_ACK @@ -1167,6 +1208,20 @@ group g_IBCF_486INVITE_ACK { ) ); p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function /** @@ -1194,6 +1249,20 @@ group g_IBCF_486INVITE_ACK { ) ); p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function } // end group g_IBCF_486INVITE_ACK @@ -1215,7 +1284,7 @@ group g_IBCF_SUBSCRIBE { var charstring v_EpiresSubscribe; p_monitorCompRef.start( f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5044_01_ic(?, v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mdw_TP_IC_IBCF_SUBSCRIBE_01(?, v_eutAUri, v_UEB_PublicId))}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, "TP_IC_IBCF_SUBSCRIBE_01", @@ -1483,7 +1552,19 @@ group g_IBCF_REGISTER { ) ); p_monitorCompRef.done; - + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // @remark source function f_mtc_check_TP_IMS_5092_01_ic var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index 31fa6cd..967c291 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -237,7 +237,7 @@ module AtsImsIot_Templates_IC * } }, - pAccessNetworkInfo := omit, +// pAccessNetworkInfo := omit, pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, * @@ -758,38 +758,6 @@ module AtsImsIot_Templates_IC } // end group g_IBCF - group g_SCSCF { - - group g_SCSCF_INVITE { - - /** - * @desc INVITE Request checking TP_IC_SCSCF_INVITE_03 - * @remark source template mdw_TP_IMS_5097_04_ic - */ - template INVITE_Request mdw_TP_IC_SCSCF_INVITE_03(in template (present) SipUrl p_requestUri) - modifies mw_INVITE_Request_Base := { - requestLine := { - method := INVITE_E, - requestUri := p_requestUri, - sipVersion := c_sipNameVersion - }, - msgHeader := { - pChargingVector := { - fieldName := P_CHARGING_VECTOR_E, - chargeParams := { - *, - complement({id := "access-network-charging-info", paramValue := ?}), - * - } - } - - } - } - - } // end group g_SCSCF_INVITE - - } // end group g_SCSCF - group g_AuxiliaryInformationElementTemplates { /** -- GitLab From ee51c62c832d4516449e4f63bf24839bfa9adbdf Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 16 Jun 2020 07:30:32 +0200 Subject: [PATCH 057/176] Updating Gm interface --- ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn | 7157 ++++++++--------- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 380 +- ttcn/AtsImsIot/AtsImsIot_Templates.ttcn | 2 +- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 3649 ++++----- ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn | 122 +- ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn | 665 +- ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn | 1387 ++-- ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn | 125 +- ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn | 1405 ++-- ...ntrol.ttcn3 => AtsImsIot_TestControl.ttcn} | 0 ttcn/LibIot/LibIot_PIXITS.ttcn | 6 - 11 files changed, 7648 insertions(+), 7250 deletions(-) rename ttcn/AtsImsIot/{AtsImsIot_TestControl.ttcn3 => AtsImsIot_TestControl.ttcn} (100%) diff --git a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn index b90597b..d7cc26c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn @@ -1,83 +1,49 @@ /** - * @author STF 370 + * @author STF 370 * @version $Id: $ - * @desc This module provides common functions which describes behavior for each TP reference. + * @desc This module provides common functions which describes behavior for each TP reference. */ module AtsImsIot_Behavior { - - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } - - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + import from LibSip_SDPTypes all; + // LibIot + import from LibIot_PIXITS all; + import from LibIot_TestInterface all; + import from LibIms_UpperTester all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibIot_PIXITS all; + // LibMsrp + import from LibMsrp_TypesAndValues all; + import from LibMsrp_Functions all; + import from LibMsrp_Templates all; + // LibDiameter import from DiameterS6a_Templates all; import from DiameterS6a_PIXITS all; import from DiameterGx_Templates all; - // LibDiameter import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; - -group checks { - -group checksTC_IMS_MESS_0001{ - - /** - * @desc - * TP_IMS_4002_01 in CFW step 3 (MESSAGE)
ensure that {
- * when { UE_A sends a MESSAGE to UE_B containing a Message_Body - * greater than 1300 bytes }
then { IMS_B receives the MESSAGE - * containing the Message_Body greater than 1300 bytes }
} - */ - function f_mtc_check_TP_IMS_4002_01_gm(ImsInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_4002_01(?))},//? CallId can be checked - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0,omit}, - "TP_IMS_4002_01_gm", - false, - false - ) - ); - p_monitorCompRef.done; - } +// import from DiameterRx_Templates all; + // AtsImsIot + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TestSystem all; + + group checks { - function f_mtc_check_TP_IMS_4002_01_ic(ImsInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator { - + group checksTC_IMS_MESS_0001{ + + function f_mtc_check_TP_IMS_4002_01_ic(ImsInterfaceMonitor p_monitorCompRef) + runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_4002_01(?))},//? CallId can be checked + {mw_SipRequest(mdw_MESSAGE_1500c)}, // FIXME CallId and more can be checked {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, "TP_IMS_4002_01_ic", @@ -86,19 +52,19 @@ group checksTC_IMS_MESS_0001{ ) ); p_monitorCompRef.done; - } + } } // group - group checksTC_IMS_REG_0001_AKA { + group checksTC_IMS_REG_0001_AKA { /** - * @desc Starts monitor component behavior for TP_IMS_5011_01 - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ + * @desc Starts monitor component behavior for TP_IMS_5011_01 + * the on Gm-interface + * @param p_monitorCompRef Reference to monitor component + */ function f_mtc_check_TP_IMS_5011_01_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_gm)}, @@ -106,132 +72,132 @@ group checksTC_IMS_MESS_0001{ {0, omit}, "TP_IMS_5011_01", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; } /** - * @desc Starts monitor component behavior for TP_IMS_5011_01 - * on the Mw-interface - * @param p_monitorCompRef Reference to monitor component - */ - - function f_mtc_check_TP_IMS_5011_01_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_01p_ic(v_EUT_A_Addr))}, - { - mw_SipRequest(mdw_TP_IMS_5011_01f_ic), - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {0, omit}, - "TP_IMS_5011_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + * @desc Starts monitor component behavior for TP_IMS_5011_01 + * on the Mw-interface + * @param p_monitorCompRef Reference to monitor component + */ + + function f_mtc_check_TP_IMS_5011_01_ic( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5011_01p_ic(v_EUT_A_Addr))}, + { + mw_SipRequest(mdw_TP_IMS_5011_01f_ic), + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_IMS_5011_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior for TP_IMS_5089_01 (gm) * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_01_gm_when ( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + */ + function f_mtc_check_TP_IMS_5089_01_gm_when ( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5089_01_gm_when", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5089_01_gm_when", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - /** + /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (gm) - * the on Gm-interface + * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5011_02_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5011_02_gm", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + function f_mtc_check_TP_IMS_5011_02_gm( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IMS_5011_02_gm", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_02p_ic(v_EUT_A_Addr))}, - {mw_SipRequest(mdw_TP_IMS_5011_02f_ic), - mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5011_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5011_02p_ic(v_EUT_A_Addr))}, + {mw_SipRequest(mdw_TP_IMS_5011_02f_ic), + mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IMS_5011_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + + /** * @desc Starts monitor component behavior for TP_IMS_5089_01 (when) * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5089_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5089_01_ic_when)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5089_01 (when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_01 (then) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_01_ic_then( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_IMS_5089_01_ic_when( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5089_01_ic_when)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IMS_5089_01 (when)", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5089_01 (then) + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5089_01_ic_then( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5089_01_ic)}, @@ -239,172 +205,172 @@ group checksTC_IMS_MESS_0001{ {0, omit}, "TP_IMS_5089_01", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5092_01 (gm) - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5092_01_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5092_01_gm", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5092_01 (when) - * @param p_monitorCompRef Reference to monitor component - */ + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5092_01 (gm) + * the on Gm-interface + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5092_01_gm( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IMS_5092_01_gm", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5092_01 (when) + * @param p_monitorCompRef Reference to monitor component + */ function f_mtc_check_TP_IMS_5092_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5092_01_ic_when)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5092_01 (when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5092_01_ic_when)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IMS_5092_01 (when)", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior for TP_IMS_5092_01 * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5092_01_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5092_01_ic(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5092_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5044_01 (when) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5044_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator return Response { - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var SipMessage v_sip := {response := valueof(m_Response_Dummy)}; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5044_01 (when)", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - return v_sip.response; - } + function f_mtc_check_TP_IMS_5092_01_ic( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5092_01_ic(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IMS_5092_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5044_01 (when) + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5044_01_ic_when( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator return Response { + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + var SipMessage v_sip := {response := valueof(m_Response_Dummy)}; + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IMS_5044_01 (when)", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + return v_sip.response; + } /** * @desc Starts monitor component behavior for TP_IMS_5044_01 * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5044_01_ic( - ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); - var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var charstring v_Epires200OK; - var charstring v_EpiresSubscribe; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5044_01_ic(?, v_eutAUri, v_UEB_PublicId))}, - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {0, omit}, - "TP_IMS_5044_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; + function f_mtc_check_TP_IMS_5044_01_ic( + ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); + var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + var charstring v_Epires200OK; + var charstring v_EpiresSubscribe; + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5044_01_ic(?, v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, + {0, omit}, + "TP_IMS_5044_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Check that the expires header is set to "a value greater than the one - // in the Expires_header of the 200_response" - - if(ispresent(p_200OK.msgHeader.expires)) { - v_Epires200OK := p_200OK.msgHeader.expires.deltaSec; - v_EpiresSubscribe := v_sip.request.msgHeader.expires.deltaSec; - if (str2int(v_EpiresSubscribe) > str2int(v_Epires200OK)) { - f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response."); - } - } - } - - /** + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check that the expires header is set to "a value greater than the one + // in the Expires_header of the 200_response" + + if(ispresent(p_200OK.msgHeader.expires)) { + v_Epires200OK := p_200OK.msgHeader.expires.deltaSec; + v_EpiresSubscribe := v_sip.request.msgHeader.expires.deltaSec; + if (str2int(v_EpiresSubscribe) > str2int(v_Epires200OK)) { + f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response."); + } + } + } + + /** * @desc Starts monitor component behavior for TP_IMS_5096_01 * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5096_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator return Request { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5096_01_ic_when)}, - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {0, omit}, - "TP_IMS_5096_01 (when)", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - return v_sip.request; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5096_01 - */ - function f_mtc_check_TP_IMS_5096_01_ic( - ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe, boolean p_checkMessage - ) runs on ImsTestCoordinator - { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + function f_mtc_check_TP_IMS_5096_01_ic_when( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator return Request { + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5096_01_ic_when)}, + {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, + {0, omit}, + "TP_IMS_5096_01 (when)", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + return v_sip.request; + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5096_01 + */ + function f_mtc_check_TP_IMS_5096_01_ic( + ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe, boolean p_checkMessage + ) runs on ImsTestCoordinator + { + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; var charstring v_Epires200OK; var charstring v_EpiresSubscribe; p_monitorCompRef.start( @@ -414,35 +380,35 @@ group checksTC_IMS_MESS_0001{ {0, omit}, "TP_IMS_5096_01", true, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); if(ispresent(v_sip.response.msgHeader.expires)) { // Check that the message contains "Expires_header indicating the same or // lower expiry time than specified in the initial SUBSCRIBE" - v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec; - v_EpiresSubscribe := p_Subscribe.msgHeader.expires.deltaSec; + v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec; + v_EpiresSubscribe := p_Subscribe.msgHeader.expires.deltaSec; if (str2int(v_Epires200OK) <= str2int(v_EpiresSubscribe)) { - f_setIotVerdictFAIL("TP_IMS_5096_01 - - Expires_header Expires_header of 200_response is NOT the same or lower than the Expires_header of subscribe."); + f_setIotVerdictFAIL("TP_IMS_5096_01 - - Expires_header Expires_header of 200_response is NOT the same or lower than the Expires_header of subscribe."); } } - } + } } // group - group checksTC_IMS_REG_0001_MD5 { + group checksTC_IMS_REG_0001_MD5 { /** - * @desc Starts monitor component behavior for TP_IMS_5011_03 - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ + * @desc Starts monitor component behavior for TP_IMS_5011_03 + * the on Gm-interface + * @param p_monitorCompRef Reference to monitor component + */ function f_mtc_check_TP_IMS_5011_03_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, @@ -450,132 +416,132 @@ group checksTC_IMS_MESS_0001{ {0, omit}, "TP_IMS_5011_03", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; } /** - * @desc Starts monitor component behavior for TP_IMS_5011_03 - * on the Mw-interface - * @param p_monitorCompRef Reference to monitor component - */ - - function f_mtc_check_TP_IMS_5011_03_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_03p_ic(v_EUT_A_Addr))}, - { - mw_SipRequest(mdw_TP_IMS_5011_01f_ic),//mdw_TP_IMS_5011_03f_ic == mdw_TP_IMS_5011_01f_ic - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {0, omit}, - "TP_IMS_5011_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + * @desc Starts monitor component behavior for TP_IMS_5011_03 + * on the Mw-interface + * @param p_monitorCompRef Reference to monitor component + */ + + function f_mtc_check_TP_IMS_5011_03_ic( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5011_03p_ic(v_EUT_A_Addr))}, + { + mw_SipRequest(mdw_TP_IMS_5011_01f_ic),//mdw_TP_IMS_5011_03f_ic == mdw_TP_IMS_5011_01f_ic + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_IMS_5011_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior for TP_IMS_5089_02 (gm) * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_02_gm_when ( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + */ + function f_mtc_check_TP_IMS_5089_02_gm_when ( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5089_02_gm_when", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5089_02_gm_when", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - /** + /** * @desc Starts monitor component behavior for TP_IMS_5011_04 (gm) - * the on Gm-interface + * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5011_04_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5011_04_gm", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + function f_mtc_check_TP_IMS_5011_04_gm( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5011_04_gm", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } /** * @desc Starts monitor component behavior for TP_IMS_5011_04 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_04_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_04p_ic(v_EUT_A_Addr))}, - {mw_SipRequest(mdw_TP_IMS_5011_02f_ic),//mdw_TP_IMS_5011_04f_ic == mdw_TP_IMS_5011_02f_ic - mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5011_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5011_04p_ic(v_EUT_A_Addr))}, + {mw_SipRequest(mdw_TP_IMS_5011_02f_ic),//mdw_TP_IMS_5011_04f_ic == mdw_TP_IMS_5011_02f_ic + mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IMS_5011_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + + /** * @desc Starts monitor component behavior for TP_IMS_5089_02 (when) * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5089_02_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5089_02_ic_when)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5089_02 (when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_02 (then) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_02_ic_then( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_IMS_5089_02_ic_when( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5089_02_ic_when)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IMS_5089_02 (when)", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5089_02 (then) + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5089_02_ic_then( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5089_02_ic)}, @@ -583,48 +549,28 @@ group checksTC_IMS_MESS_0001{ {0, omit}, "TP_IMS_5089_02", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } + } } // group -group checksTC_IMS_REG_0002{ - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5203_01_gm( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - // Check that the UE sends any register - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5203_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5203_01_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator return Request { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - - //Get first Register - //var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A); - var Request v_RegisterStep4, v_RegisterStep2; +group checksTC_IMS_REG_0002{ + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5203_01_ic( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator return Request { + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + + //Get first Register + //var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A); + var Request v_RegisterStep4, v_RegisterStep2; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, @@ -639,7 +585,7 @@ group checksTC_IMS_REG_0002{ f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_RegisterStep2 := v_sip.request; - //Get second Register + //Get second Register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, @@ -656,19 +602,19 @@ group checksTC_IMS_REG_0002{ // TODO: Currently we don't check anything, just that IMS-A sent 2 consecutive Registers v_RegisterStep4 := v_sip.request; return v_RegisterStep4; - } + } } // group - group checksTC_IMS_REG_0003{ - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5129_01_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - // Check that the UE sends any register + group checksTC_IMS_REG_0003{ + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5129_01_gm( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + // Check that the UE sends any register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, @@ -676,208 +622,187 @@ group checksTC_IMS_REG_0002{ {0, omit}, "TP_IMS_5129_01 (gm)", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } + } - /** + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5129_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - // Check that the IMS_A forwards register from UE_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5129_01 (mw-when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5129_01_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - p_monitorCompRef.start( + function f_mtc_check_TP_IMS_5129_01_ic_when( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + // Check that the IMS_A forwards register from UE_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5129_01 (mw-when)", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5129_01_ic( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + p_monitorCompRef.start( // Check that IMS_B responds with 403 forbidden - f_imsIot_receive( + f_imsIot_receive( {mw_SipResponse(mw_403Forbidden_Base)}, {}, - {0, omit}, + {0, omit}, "TP_IMS_5129_01 (mw)", true, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } - } // group - - group checksTC_IMS_REG_0005{ - /** - * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5093_01_UE_ic( - ImsInterfaceMonitor p_monitorCompRef, ImsUserInfo v_anyValidUser, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Number(v_anyValidUser.publicId); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5093_01_UE_ic(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5093_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5093_01_IMS_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5093_01_IMS_ic(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5093_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // end group - - group checksTC_IMS_REG_0006{ - - /** - * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5094_01_UE( - ImsInterfaceMonitor p_monitorCompRef, ImsUserInfo v_anyValidUser, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Number(v_anyValidUser.publicId); + } + } // group + + group checksTC_IMS_REG_0005{ + /** + * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5093_01_UE_ic( + ImsInterfaceMonitor p_monitorCompRef, ImsUserInfo v_anyValidUser, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_request_uri := mw_SipUrl_Number(v_anyValidUser.publicId); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5093_01_UE_ic(?, v_request_uri))}, + {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, + {0, omit}, + "TP_IMS_5093_01_ic", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5093_01_IMS_ic( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5093_01_IMS_ic(?, v_request_uri))}, + {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, + {0, omit}, + "TP_IMS_5093_01_ic", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // end group + + group checksTC_IMS_REG_0006{ + + /** + * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5094_01_UE( + ImsInterfaceMonitor p_monitorCompRef, ImsUserInfo v_anyValidUser, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_request_uri := mw_SipUrl_Number(v_anyValidUser.publicId); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5094_01_UE(?, v_request_uri))}, + {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, + {0, omit}, + "TP_IMS_5094_01_ic", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5094_01_UE(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5094_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5094_01_IMS( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5094_01_IMS_ic(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5094_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - } // end group - -group checksTC_IMS_CALL_0001 { - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - + /** + * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5094_01_IMS( + ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5094_01_IMS_ic(?, v_request_uri))}, + {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, + {0, omit}, + "TP_IMS_5094_01_ic", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + } // end group + +group checksTC_IMS_CALL_0001 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5097_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_01_ic((mw_SipUrl_Host(v_EUT_A_Addr), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))) ))}, + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))) ))}, {}, {0, omit}, "TP_IMS_5097_01", true, - p_checkMessage + p_checkMessage ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + ); + p_monitorCompRef.done; + } //function + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, @@ -889,16 +814,16 @@ group checksTC_IMS_CALL_0001 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_02_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, @@ -910,110 +835,110 @@ group checksTC_IMS_CALL_0001 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_04 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_04_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_04 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_04_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_TEL_URI_Base))},//TODO check TEL_URI of UE_B - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_TEL_URI_Base))},//TODO check TEL_URI of UE_B + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IMS_5097_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior for TP_IMS_5097_04 * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_04_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + */ + function f_mtc_check_TP_IMS_5097_04_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - /** - * @desc Starts monitor component behavior for TP_IMS_ENUM_01 - * @param p_gm Reference to Gm monitor component - * @param p_naptr Reference to NAPTR monitor component - */ - function f_mtc_check_TP_IMS_ENUM_01 ( ImsInterfaceMonitor p_gm, ImsInterfaceMonitor p_naptr) - runs on ImsTestCoordinator { - var EnumQuery v_enumQuery; - var EnumResponse v_enumResponse; - f_mtc_check_TP_IMS_ENUM_01_gm ( p_gm, false ); // SIP INVITE - v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( p_naptr ); // ENUM query - //TODO check ENUM query message as described in the spec. - v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( p_naptr ); // ENUM response - //TODO check ENUM response message as described in the spec. - } - function f_mtc_check_TP_IMS_ENUM_01_gm ( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) - runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IMS_5097_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + /** + * @desc Starts monitor component behavior for TP_IMS_ENUM_01 + * @param p_gm Reference to Gm monitor component + * @param p_naptr Reference to NAPTR monitor component + */ + function f_mtc_check_TP_IMS_ENUM_01 ( ImsInterfaceMonitor p_gm, ImsInterfaceMonitor p_naptr) + runs on ImsTestCoordinator { + var EnumQuery v_enumQuery; + var EnumResponse v_enumResponse; + f_mtc_check_TP_IMS_ENUM_01_gm ( p_gm, false ); // SIP INVITE + v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( p_naptr ); // ENUM query + //TODO check ENUM query message as described in the spec. + v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( p_naptr ); // ENUM response + //TODO check ENUM response message as described in the spec. + } + function f_mtc_check_TP_IMS_ENUM_01_gm ( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) + runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_imsIot_receive ( - { mw_SipRequest ( mdw_TP_IMS_5097_04_gm ( mw_TEL_URI_Base )) }, - { }, { 0, omit }, "TP_IMS_ENUM_01", false, p_checkMessage - ) - ); - p_monitorCompRef.done; - } - function f_mtc_check_TP_IMS_ENUM_01_enumQuery ( ImsInterfaceMonitor p_monitorCompRef ) - runs on ImsTestCoordinator return EnumQuery { - var NAPTRmessage v_naptr; - var SipMessage v_sip; - p_monitorCompRef.start ( - f_getNaptrMsg ( p_monitorCompRef, { query := ? }) - ); - p_monitorCompRef.done; + f_imsIot_receive ( + { mw_SipRequest ( mdw_TP_IMS_5097_04_gm ( mw_TEL_URI_Base )) }, + { }, { 0, omit }, "TP_IMS_ENUM_01", false, p_checkMessage + ) + ); + p_monitorCompRef.done; + } + function f_mtc_check_TP_IMS_ENUM_01_enumQuery ( ImsInterfaceMonitor p_monitorCompRef ) + runs on ImsTestCoordinator return EnumQuery { + var NAPTRmessage v_naptr; + var SipMessage v_sip; + p_monitorCompRef.start ( + f_getNaptrMsg ( p_monitorCompRef, { query := ? }) + ); + p_monitorCompRef.done; f_getSipMsgFromMonitor ( p_monitorCompRef, v_sip ); v_naptr := v_sip.naptrmessage; - return v_naptr.enumMessage.query; - } - function f_mtc_check_TP_IMS_ENUM_01_enumResponse ( ImsInterfaceMonitor p_monitorCompRef ) - runs on ImsTestCoordinator return EnumResponse { - var NAPTRmessage v_naptr; - var SipMessage v_sip; + return v_naptr.enumMessage.query; + } + function f_mtc_check_TP_IMS_ENUM_01_enumResponse ( ImsInterfaceMonitor p_monitorCompRef ) + runs on ImsTestCoordinator return EnumResponse { + var NAPTRmessage v_naptr; + var SipMessage v_sip; p_monitorCompRef.start ( - f_getNaptrMsg ( p_monitorCompRef, { response := ? } ) - ); - p_monitorCompRef.done; + f_getNaptrMsg ( p_monitorCompRef, { response := ? } ) + ); + p_monitorCompRef.done; f_getSipMsgFromMonitor ( p_monitorCompRef, v_sip ); v_naptr := v_sip.naptrmessage; - return v_naptr.enumMessage.response; - } + return v_naptr.enumMessage.response; + } - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5107_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_ACK_Request_Base(?))}, @@ -1021,22 +946,22 @@ group checksTC_IMS_CALL_0001 { {0, omit}, "TP_IMS_5107_02", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5107_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5107_02_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, @@ -1044,21 +969,21 @@ group checksTC_IMS_CALL_0001 { {0, omit}, "TP_IMS_5107_02", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - + } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5107_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_BYE_Request_Base(?))}, @@ -1066,23 +991,23 @@ group checksTC_IMS_CALL_0001 { {0, omit}, "TP_IMS_5107_01", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - + } + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5107_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, @@ -1090,21 +1015,21 @@ group checksTC_IMS_CALL_0001 { {0, omit}, "TP_IMS_5107_01", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - + } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_180Ringing_Base)}, @@ -1112,21 +1037,21 @@ group checksTC_IMS_CALL_0001 { {0, omit}, "TP_IMS_5115_01", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5115_01_ic)}, @@ -1134,238 +1059,238 @@ group checksTC_IMS_CALL_0001 { {0, omit}, "TP_IMS_5115_01", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5115_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_02_ic)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5115_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5115_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_03_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5115_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_04_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5115_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_04_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_04_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5115_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5131_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5131_01_ic)}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5131_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5131_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5131_02_ic)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5131_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IMS_5115_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5115_02_ic)}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IMS_5115_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_03_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_180Ringing_Base)}, + {}, + {0, omit}, + "TP_IMS_5115_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_03_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5115_03_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IMS_5115_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_04_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IMS_5115_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_04_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5115_04_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IMS_5115_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5131_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_180Ringing_Base)}, + {}, + {0, omit}, + "TP_IMS_5131_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5131_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5131_01_ic)}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IMS_5131_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5131_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IMS_5131_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5131_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5131_02_ic)}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IMS_5131_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // group group checksTC_IMS_CALL_0001F { /*functions already used in test TC_IMS_CALL_0001 - * f_mtc_check_TP_IMS_5097_01_gm + * f_mtc_check_TP_GM_PCSCF_INVITE_01 * f_mtc_check_TP_IMS_5097_01_ic * f_mtc_check_TP_IMS_5107_01_gm * f_mtc_check_TP_IMS_5107_01_ic @@ -1386,7 +1311,7 @@ group checksTC_IMS_CALL_0001F { group checksTC_IMS_CALL_0002 { /*functions already used in test TC_IMS_CALL_0001 - * f_mtc_check_TP_IMS_5097_01_gm + * f_mtc_check_TP_GM_PCSCF_INVITE_01 * f_mtc_check_TP_IMS_5097_01_ic * f_mtc_check_TP_IMS_5097_02_gm * f_mtc_check_TP_IMS_5097_02_ic @@ -1410,1640 +1335,1640 @@ group checksTC_IMS_CALL_0002 { */ } // group -group checksTC_IMS_CALL_0003 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_05_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_05_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_404NotFound_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_05", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0004 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5132_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5132_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5132_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5132_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_404Or604NotFound_Base)}, - {}, - {0, omit}, - "TP_IMS_5132_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0005 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5133_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5133_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5133_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5133_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_4XX_Base)}, - {}, - {0, omit}, - "TP_IMS_5133_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0006 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5109_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5109_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5109_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5109_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_408Or5XX_Base)}, - {}, - {0, omit}, - "TP_IMS_5109_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0007 { - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5055_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_A); - var template SipUrl v_UserEutAUrl := mw_SipUrl_Host(v_user.domain); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5055_01_ic(v_pcscfEutAUrl, v_UserEutAUrl))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5055_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5055_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_A); - var template SipUrl v_UserEutAUrl := mw_SipUrl_Host(v_user.domain); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5055_02_ic(v_pcscfEutAUrl, v_UserEutAUrl))}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5055_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5067_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( +group checksTC_IMS_CALL_0003 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_05_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, {0, omit}, - "TP_IMS_5067_01", + "TP_IMS_5108_05", false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5067_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5067_01_ic)}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5067_01", - true, //NOTE: later check in 5108_01 of same icid value - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5070_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5070_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5070_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - v_skip, - "TP_IMS_5070_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var SemicolonParam_List p_paramList; - var GenericParam p_param; - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - - - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); //NOTE: icid value from 5067_01 -log("### f_mtc_check_TP_IMS_5108_01_ic: v_sip=", v_sip.request.msgHeader.pChargingVector); - if(ispresent(v_sip.request.msgHeader.pChargingVector)) { - if(ispresent(v_sip.request.msgHeader.pChargingVector.chargeParams)) { -log("### f_mtc_check_TP_IMS_5108_01_ic: then"); - p_paramList := v_sip.request.msgHeader.pChargingVector.chargeParams; -log("### f_mtc_check_TP_IMS_5108_01_ic: p_paramList=", p_paramList); - for(var integer i := 0; i < lengthof(p_paramList); i:= i+1) { - if(p_paramList[i].id == "icid-value") { -log("### f_mtc_check_TP_IMS_5108_01_ic: find param=", p_paramList[i]); - p_param := p_paramList[i]; - break; - } - } - } - } -log("### f_mtc_check_TP_IMS_5108_01_ic: start"); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5108_01_ic(v_SCSCF_IMS_B, p_param))},//pass criteria - { - mw_SipRequest(mdw_TP_IMS_5108_01_f_ic), //fail criteria - mw_SipRequest(mw_INVITE_Request_Base) //fail criteria - }, - {0, omit}, - "TP_IMS_5108_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5301_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5301_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5301_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_IMS_A := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5301_01_ic(?, v_SCSCF_IMS_A))}, - {mw_SipRequest(mw_BYE_Request_Base(?))}, - {0, omit}, - "TP_IMS_5301_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0008 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5081_01_ic( + */ + function f_mtc_check_TP_IMS_5108_05_ic( ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5081_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5081_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5082_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mw_200OK_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - v_skip, - "TP_IMS_5082_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5082_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipResponse(mw_200OK_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5082_01_ic)},//TODO check updated access-network-charging-info - {mw_SipResponse(mw_200OK_Base)}, - v_skip, - "TP_IMS_5082_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5120_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfEutBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - //INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5120_01", - false, - false - ) - ); - p_monitorCompRef.done; - - // 100 Trying from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5120_01", - false, - false - ) - ); - p_monitorCompRef.done; - - // INVITE from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5120_01_ic(v_scscfEutBUrl))}, - {}, - {0, omit}, - "TP_IMS_5120_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0009 { + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5108_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_404NotFound_Base)}, + {}, + {0, omit}, + "TP_IMS_5108_05", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function - - /** +} // group + +group checksTC_IMS_CALL_0004 { + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5052_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5052_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + */ + function f_mtc_check_TP_IMS_5132_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5132_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5052_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_PCSCF_IMS_A := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var template RecordRoute p_recordRoute := omit; - var SipMessage v_sip := {request := valueof(m_ACK_Dummy)}; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_ACK_Request_Base(?))}, - {}, - {1, mw_SipRequest(mw_ACK_Request_Base(?))}, - "TP_IMS_5052_01", - true, - false - ) - ); - p_monitorCompRef.done; - - // get Record-route header from prev ACK - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - if(ispresent(v_sip.request.msgHeader.recordRoute)){ - p_recordRoute := v_sip.request.msgHeader.recordRoute; - } - - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5052_01_p_ic(?,p_recordRoute))}, - { - mw_SipRequest(mdw_TP_IMS_5052_01_f_ic(?, v_PCSCF_IMS_A)), - mw_SipRequest(mw_BYE_Request_Base(?)) - }, - {0, omit}, - "TP_IMS_5052_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0010 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5048_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5048_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5048_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := (mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)), - mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A))); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - // INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5048_01_ic(v_pcscfEutAUrl))}, - {}, - v_skip, - "TP_IMS_5048_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5080_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - // INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5080_01_ic)}, - {}, - {0, omit}, - "TP_IMS_5080_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0011 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5080_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_UPDATE_Request_Base(?))}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(?))}, - {}, - v_skip, - "TP_IMS_5080_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5080_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - // INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5080_02_ic(?))}, - {}, - {0, omit}, - "TP_IMS_5080_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group + */ + function f_mtc_check_TP_IMS_5132_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5132_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_404Or604NotFound_Base)}, + {}, + {0, omit}, + "TP_IMS_5132_01", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function -group checksTC_IMS_CALL_0012 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_UPDATE_Request_Base(?))}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(?))}, - {}, - v_skip, - "TP_IMS_5120_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfEutBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_UPDATE_Request_Base(?))}; - } - - //UPDATE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(?))}, - {}, - v_skip, - "TP_IMS_5120_02", - false, - false - ) - ); - p_monitorCompRef.done; - - // 100 Trying from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5120_02", - false, - false - ) - ); - p_monitorCompRef.done; - - // UPDATE from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5120_02_ic(?, v_scscfEutBUrl))}, - {}, - {0, omit}, - "TP_IMS_5120_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // group -group checksTC_IMS_CALL_0014 { - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_CANCEL_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5107_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5107_03_ic(?, v_scscfImsAUrl))}, - {}, - {0, omit}, - "TP_IMS_5107_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function +group checksTC_IMS_CALL_0005 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5133_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5133_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5133_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5133_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_4XX_Base)}, + {}, + {0, omit}, + "TP_IMS_5133_01", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function } // group -group checksTC_IMS_CALL_0015 { - - /** +group checksTC_IMS_CALL_0006 { + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5073_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5073_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + */ + function f_mtc_check_TP_IMS_5109_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5109_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5073_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5073_01_ic(?))}, - {}, - {0, omit}, - "TP_IMS_5073_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } -} // group + */ + function f_mtc_check_TP_IMS_5109_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5109_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_408Or5XX_Base)}, + {}, + {0, omit}, + "TP_IMS_5109_01", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function -group checksTC_IMS_CALL_0016 { - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5139_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var SipUrl v_UE_URI; - var To v_to; - var From v_from; - var CallId v_callId; - var CSeq v_cSeq; - var Route v_route; - - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5139_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Get Contact Header from INVITE - - if(ischosen(v_sip.request)) { - v_from := valueof(v_sip.request.msgHeader.fromField); - v_callId := valueof(v_sip.request.msgHeader.callId); - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5139_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Get Contact Header from 200-OK response - - if(ischosen(v_sip.response)) { - if(ispresent(v_sip.response.msgHeader.contact)) { - v_UE_URI := f_getContactAddr(v_sip.response.msgHeader.contact); - } - v_to := valueof(v_sip.response.msgHeader.toField); - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5139_01_ic(v_callId, v_UE_URI, v_to, v_from, ?, ?))}, - {}, - {0, omit}, - "TP_IMS_5139_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function } // group -group checksTC_IMS_CALL_0024 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5135_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, +group checksTC_IMS_CALL_0007 { + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5055_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_180Ringing_Base)}, + {}, + {0, omit}, + "TP_IMS_5055_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5055_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_A); + var template SipUrl v_UserEutAUrl := mw_SipUrl_Host(v_user.domain); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5055_01_ic(v_pcscfEutAUrl, v_UserEutAUrl))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IMS_5055_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5055_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IMS_5055_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5055_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_A); + var template SipUrl v_UserEutAUrl := mw_SipUrl_Host(v_user.domain); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5055_02_ic(v_pcscfEutAUrl, v_UserEutAUrl))}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IMS_5055_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5067_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5067_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5067_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5067_01_ic)}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IMS_5067_01", + true, //NOTE: later check in 5108_01 of same icid value + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5070_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5070_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IMS_5070_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + v_skip, + "TP_IMS_5070_01", + false, + false + ) + ); + p_monitorCompRef.done; + + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5108_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + var SemicolonParam_List p_paramList; + var GenericParam p_param; + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + + + + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); //NOTE: icid value from 5067_01 +log("### f_mtc_check_TP_IMS_5108_01_ic: v_sip=", v_sip.request.msgHeader.pChargingVector); + if(ispresent(v_sip.request.msgHeader.pChargingVector)) { + if(ispresent(v_sip.request.msgHeader.pChargingVector.chargeParams)) { +log("### f_mtc_check_TP_IMS_5108_01_ic: then"); + p_paramList := v_sip.request.msgHeader.pChargingVector.chargeParams; +log("### f_mtc_check_TP_IMS_5108_01_ic: p_paramList=", p_paramList); + for(var integer i := 0; i < lengthof(p_paramList); i:= i+1) { + if(p_paramList[i].id == "icid-value") { +log("### f_mtc_check_TP_IMS_5108_01_ic: find param=", p_paramList[i]); + p_param := p_paramList[i]; + break; + } + } + } + } +log("### f_mtc_check_TP_IMS_5108_01_ic: start"); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5108_01_ic(v_SCSCF_IMS_B, p_param))},//pass criteria + { + mw_SipRequest(mdw_TP_IMS_5108_01_f_ic), //fail criteria + mw_SipRequest(mw_INVITE_Request_Base) //fail criteria + }, + {0, omit}, + "TP_IMS_5108_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5301_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_BYE_Request_Base(*))}, + {}, + {0, omit}, + "TP_IMS_5301_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5301_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_IMS_A := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5301_01_ic(?, v_SCSCF_IMS_A))}, + {mw_SipRequest(mw_BYE_Request_Base(?))}, + {0, omit}, + "TP_IMS_5301_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // group + +group checksTC_IMS_CALL_0008 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5081_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5081_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + {0, omit}, + "TP_IMS_5081_01", + false, + false + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5082_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mw_200OK_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + v_skip, + "TP_IMS_5082_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5082_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipResponse(mw_200OK_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5082_01_ic)},//TODO check updated access-network-charging-info + {mw_SipResponse(mw_200OK_Base)}, + v_skip, + "TP_IMS_5082_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5120_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IMS_5120_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5120_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfEutBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + //INVITE from IMS_A to IMS_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IMS_5120_01", + false, + false + ) + ); + p_monitorCompRef.done; + + // 100 Trying from IMS_B to IMS_A + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + {0, omit}, + "TP_IMS_5120_01", + false, + false + ) + ); + p_monitorCompRef.done; + + // INVITE from IMS_B to IMS_A + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5120_01_ic(v_scscfEutBUrl))}, + {}, + {0, omit}, + "TP_IMS_5120_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // group + +group checksTC_IMS_CALL_0009 { + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5052_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_BYE_Request_Base(*))}, + {}, + {0, omit}, + "TP_IMS_5052_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5052_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_PCSCF_IMS_A := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var template RecordRoute p_recordRoute := omit; + var SipMessage v_sip := {request := valueof(m_ACK_Dummy)}; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_ACK_Request_Base(?))}, + {}, + {1, mw_SipRequest(mw_ACK_Request_Base(?))}, + "TP_IMS_5052_01", + true, + false + ) + ); + p_monitorCompRef.done; + + // get Record-route header from prev ACK + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if(ispresent(v_sip.request.msgHeader.recordRoute)){ + p_recordRoute := v_sip.request.msgHeader.recordRoute; + } + + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5052_01_p_ic(?,p_recordRoute))}, + { + mw_SipRequest(mdw_TP_IMS_5052_01_f_ic(?, v_PCSCF_IMS_A)), + mw_SipRequest(mw_BYE_Request_Base(?)) + }, + {0, omit}, + "TP_IMS_5052_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // group + +group checksTC_IMS_CALL_0010 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5048_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IMS_5048_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5048_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_pcscfEutAUrl := (mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)), + mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A))); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + // INVITE from IMS_A to IMS_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5048_01_ic(v_pcscfEutAUrl))}, + {}, + v_skip, + "TP_IMS_5048_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5080_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + // INVITE from IMS_A to IMS_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5080_01_ic)}, + {}, + {0, omit}, + "TP_IMS_5080_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // group + +group checksTC_IMS_CALL_0011 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5080_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_UPDATE_Request_Base(?))}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_UPDATE_Request_Base(?))}, + {}, + v_skip, + "TP_IMS_5080_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5080_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + // INVITE from IMS_A to IMS_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5080_02_ic(?))}, + {}, + {0, omit}, + "TP_IMS_5080_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // group + +group checksTC_IMS_CALL_0012 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5120_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_UPDATE_Request_Base(?))}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_UPDATE_Request_Base(?))}, + {}, + v_skip, + "TP_IMS_5120_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5120_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfEutBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_UPDATE_Request_Base(?))}; + } + + //UPDATE from IMS_A to IMS_B + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_UPDATE_Request_Base(?))}, + {}, + v_skip, + "TP_IMS_5120_02", + false, + false + ) + ); + p_monitorCompRef.done; + + // 100 Trying from IMS_B to IMS_A + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + {0, omit}, + "TP_IMS_5120_02", + false, + false + ) + ); + p_monitorCompRef.done; + + // UPDATE from IMS_B to IMS_A + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5120_02_ic(?, v_scscfEutBUrl))}, + {}, + {0, omit}, + "TP_IMS_5120_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // group + +group checksTC_IMS_CALL_0014 { + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5107_03_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_CANCEL_Request_Base(?))}, + {}, + {0, omit}, + "TP_IMS_5107_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5107_03_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5107_03_ic(?, v_scscfImsAUrl))}, + {}, + {0, omit}, + "TP_IMS_5107_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + +} // group + +group checksTC_IMS_CALL_0015 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5073_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_BYE_Request_Base(*))}, + {}, + {0, omit}, + "TP_IMS_5073_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5073_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5073_01_ic(?))}, + {}, + {0, omit}, + "TP_IMS_5073_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } +} // group + +group checksTC_IMS_CALL_0016 { + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5139_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + var SipUrl v_UE_URI; + var To v_to; + var From v_from; + var CallId v_callId; + var CSeq v_cSeq; + var Route v_route; + + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5139_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Get Contact Header from INVITE + + if(ischosen(v_sip.request)) { + v_from := valueof(v_sip.request.msgHeader.fromField); + v_callId := valueof(v_sip.request.msgHeader.callId); + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IMS_5139_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Get Contact Header from 200-OK response + + if(ischosen(v_sip.response)) { + if(ispresent(v_sip.response.msgHeader.contact)) { + v_UE_URI := f_getContactAddr(v_sip.response.msgHeader.contact); + } + v_to := valueof(v_sip.response.msgHeader.toField); + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5139_01_ic(v_callId, v_UE_URI, v_to, v_from, ?, ?))}, + {}, + {0, omit}, + "TP_IMS_5139_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function +} // group + +group checksTC_IMS_CALL_0024 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5135_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5135_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5135_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5135_01_ic(v_ibcfEutAUrl))}, + {}, + {0, omit}, + "TP_IMS_5135_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5137_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5137_01_ic(v_ibcfEutAUrl))}, + {}, + {0, omit}, + "TP_IMS_5137_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5404_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5404_01_gm)}, + {}, + {0, omit}, + "TP_IMS_5404_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5404_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5404_01_ic)}, + {}, + {0, omit}, + "TP_IMS_5404_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5414_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5414_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5414_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + {0, omit}, + "TP_IMS_5414_01", + false, + false + ) + ); + p_monitorCompRef.done; + + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5137_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_180Ringing_Base)}, + {}, + {0, omit}, + "TP_IMS_5137_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5137_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5137_02_ic)}, + {}, + {0, omit}, + "TP_IMS_5137_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5137_03_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IMS_5137_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5137_03_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5137_03_ic)}, + {}, + {0, omit}, + "TP_IMS_5137_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5408_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_ACK_Request_Base(?))}, + {}, + {0, omit}, + "TP_IMS_5408_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5408_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5408_01_ic(?, v_ibcfEutAUrl))}, {}, {0, omit}, - "TP_IMS_5135_01", + "TP_IMS_5408_01", false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5135_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5135_01_ic(v_ibcfEutAUrl))}, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5408_03_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_BYE_Request_Base(*))}, {}, {0, omit}, - "TP_IMS_5135_01", + "TP_IMS_5408_03", false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5137_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5137_01_ic(v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5137_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + function f_mtc_check_TP_IMS_5408_03_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5408_03_ic(?, v_ibcfEutAUrl))}, + {}, + {0, omit}, + "TP_IMS_5408_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + +} // group + +group checksTC_IMS_CALL_0025 { + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5404_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5404_01_gm)}, - {}, - {0, omit}, - "TP_IMS_5404_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + function f_mtc_check_TP_IMS_5408_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_CANCEL_Request_Base(*))}, + {}, + {0, omit}, + "TP_IMS_5408_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ - function f_mtc_check_TP_IMS_5404_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5404_01_ic)}, - {}, - {0, omit}, - "TP_IMS_5404_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5414_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5414_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5414_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - + function f_mtc_check_TP_IMS_5408_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5414_01", - false, - false - ) + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5408_02_ic(?, v_ibcfEutAUrl))}, + {}, + {0, omit}, + "TP_IMS_5408_02", + false, + p_checkMessage + ) ); p_monitorCompRef.done; - - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5137_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5137_02_ic)}, - {}, - {0, omit}, - "TP_IMS_5137_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5137_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; } - + +} // group + +group checksTC_IMS_CALL_0026 { + /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5137_03_ic)}, - {}, - {0, omit}, - "TP_IMS_5137_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_ACK_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5408_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_01_ic(?, v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5408_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5408_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** + */ + function f_mtc_check_TP_IMS_5408_04_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IMS_5408_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_03_ic(?, v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5408_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0025 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_CANCEL_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5408_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_02_ic(?, v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5408_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0026 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_04_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5408_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_04_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_04_ic(v_ibcfEutAUrl))}, - {}, - v_skip, - "TP_IMS_5408_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - + */ + function f_mtc_check_TP_IMS_5408_04_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5408_04_ic(v_ibcfEutAUrl))}, + {}, + v_skip, + "TP_IMS_5408_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // group - - + + group checksTC_IMS_SS_0001 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5310_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5310_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5310_01_gm)}, @@ -3053,64 +2978,64 @@ group checksTC_IMS_SS_0001 { false, false ) - ); - p_monitorCompRef.done; - } - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5310_01_isc( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - + ); + p_monitorCompRef.done; + } + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5310_01_isc( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5310_01_isc)}, - {}, - {0, omit}, - "TP_IMS_5310_01", - false, - false + {mw_SipRequest(mdw_TP_IMS_5310_01_isc)}, + {}, + {0, omit}, + "TP_IMS_5310_01", + false, + false ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5312_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}; - } - + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5312_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}; + } + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5312_01_ic)}, {}, - v_skip, + v_skip, "mdw_TP_IMS_5312_01", false, false ) ); p_monitorCompRef.done; - } - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5312_01_isc( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { + } + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5312_01_isc( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5312_01_isc)}, @@ -3122,266 +3047,266 @@ group checksTC_IMS_SS_0001 { ) ); p_monitorCompRef.done; - } + } } // group group checksTC_IMS_SS_0002 { - - // f_mtc_check_TP_IMS_5310_01_gm already used in test TC_IMS_SS_0001 - // f_mtc_check_TP_IMS_5310_01_isc already used in test TC_IMS_SS_0001 - // f_mtc_check_TP_IMS_5312_01_ic already used in test TC_IMS_SS_0001 - // f_mtc_check_TP_IMS_5312_01_isc already used in test TC_IMS_SS_0001 + + // f_mtc_check_TP_IMS_5310_01_gm already used in test TC_IMS_SS_0001 + // f_mtc_check_TP_IMS_5310_01_isc already used in test TC_IMS_SS_0001 + // f_mtc_check_TP_IMS_5312_01_ic already used in test TC_IMS_SS_0001 + // f_mtc_check_TP_IMS_5312_01_isc already used in test TC_IMS_SS_0001 } group checksTC_IMS_SS_0003 { - - // f_mtc_check_TP_IMS_5097_02_gm already used in test TC_IMS_CALL_0001 - // f_mtc_check_TP_IMS_5097_02_ic already used in test TC_IMS_CALL_0001 + + // f_mtc_check_TP_IMS_5097_02_gm already used in test TC_IMS_CALL_0001 + // f_mtc_check_TP_IMS_5097_02_ic already used in test TC_IMS_CALL_0001 - /** + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - + */ + function f_mtc_check_TP_IMS_5108_03_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IMS_5108_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_03_isc( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SipUrl v_AS_IMS_B := (mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)), + mw_SipUrl_Host(f_GetEUTASServerIpAddress(PX_EUT_B))); + var template SipUrl v_SCSCF_IMS_B := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)), + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_B))); + var template SkipType v_skip := {0, omit}; - + if(p_skipCount > 0) { v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5108_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_03_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SipUrl v_AS_IMS_B := (mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTASServerIpAddress(PX_EUT_B))); - var template SipUrl v_SCSCF_IMS_B := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_B))); - + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5108_03_isc(v_AS_IMS_B, v_SCSCF_IMS_B))}, + {mw_SipRequest(mdw_TP_IMS_5108_03_f_isc)}, + v_skip, + "TP_IMS_5108_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_08_isc( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mw_200OK_Base)},//check 200OK from ASB->IMSB + {}, + {1, mw_SipResponse(mw_200OK_Base)},//skip 200OK from IMSB->ASB + "TP_IMS_5115_08", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5115_08_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; - + if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + v_skip := {p_skipCount, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}; } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5108_03_isc(v_AS_IMS_B, v_SCSCF_IMS_B))}, - {mw_SipRequest(mdw_TP_IMS_5108_03_f_isc)}, - v_skip, - "TP_IMS_5108_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_08_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)},//check 200OK from ASB->IMSB - {}, - {1, mw_SipResponse(mw_200OK_Base)},//skip 200OK from IMSB->ASB - "TP_IMS_5115_08", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_08_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_08_ic)}, - {}, - v_skip, - "TP_IMS_5115_08", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5115_08_ic)}, + {}, + v_skip, + "TP_IMS_5115_08", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } group checksTC_IMS_SS_0004 { - - // f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_isc already used in test TC_IMS_SS_0003 + + // f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 + // f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 + // f_mtc_check_TP_IMS_5115_08_ic already used in test TC_IMS_SS_0003 + // f_mtc_check_TP_IMS_5115_08_isc already used in test TC_IMS_SS_0003 } group checksTC_IMS_SS_0005 { - + // f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 // f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5313_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5313_01_ic)}, - {}, - {0, omit}, - "TP_IMS_5313_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5313_01_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5313_01_isc)}, - {}, - {0, omit}, - "TP_IMS_5313_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5313_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5313_01_ic)}, + {}, + {0, omit}, + "TP_IMS_5313_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5313_01_isc( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5313_01_isc)}, + {}, + {0, omit}, + "TP_IMS_5313_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } }//end group checksTC_IMS_SS_0005 group checksTC_IMS_SS_0006 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_09_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5097_09", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_09_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_AS_IMS_B := mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_09_isc(v_AS_IMS_B))}, - {mw_SipRequest(mdw_TP_IMS_5097_09_f_isc)}, - {0, omit}, - "TP_IMS_5097_09", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_09_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5097_09", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_09_isc( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_AS_IMS_B := mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)); + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5097_09_isc(v_AS_IMS_B))}, + {mw_SipRequest(mdw_TP_IMS_5097_09_f_isc)}, + {0, omit}, + "TP_IMS_5097_09", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function }//end group checksTC_IMS_SS_0006 group checksTC_IMS_SS_0007 { - - // f_mtc_check_TP_IMS_5097_01_gm already used in test TC_IMS_CALL_0001 - // f_mtc_check_TP_IMS_5097_01_ic already used in test TC_IMS_CALL_0001 - // f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_isc already used in test TC_IMS_SS_0003 - + + // f_mtc_check_TP_GM_PCSCF_INVITE_01 already used in test TC_IMS_CALL_0001 + // f_mtc_check_TP_IMS_5097_01_ic already used in test TC_IMS_CALL_0001 + // f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 + // f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 + // f_mtc_check_TP_IMS_5115_08_ic already used in test TC_IMS_SS_0003 + // f_mtc_check_TP_IMS_5115_08_isc already used in test TC_IMS_SS_0003 + }//end group checksTC_IMS_SS_0007 -group checksTC_IMS_SS_0008 { - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5046_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - +group checksTC_IMS_SS_0008 { + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5046_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, @@ -3389,76 +3314,76 @@ group checksTC_IMS_SS_0008 { {0, omit}, "TP_IMS_5046_01", false, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5046_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A)); - var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B); - var template SipUrl v_UserEutBUrl := mw_SipUrl_Host(v_user.domain); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var Route v_Route; - var template Route vt_pcscfRoute := { - fieldName := ROUTE_E, - routeBody := ({mw_routeBody(v_pcscfEutAUrl), *}, - {mw_routeBody(v_pcscfEutAIpUrl), *} ) - }; - var Via v_Via; - var template Via vt_pcscfVia := { - fieldName := VIA_E, - viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.components.sip.hostPort), *}, - {mw_ViaBody_interface(v_pcscfEutAIpUrl.components.sip.hostPort), *} ) - }; - + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5046_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A)); + var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B); + var template SipUrl v_UserEutBUrl := mw_SipUrl_Host(v_user.domain); + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + var Route v_Route; + var template Route vt_pcscfRoute := { + fieldName := ROUTE_E, + routeBody := ({mw_routeBody(v_pcscfEutAUrl), *}, + {mw_routeBody(v_pcscfEutAIpUrl), *} ) + }; + var Via v_Via; + var template Via vt_pcscfVia := { + fieldName := VIA_E, + viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.components.sip.hostPort), *}, + {mw_ViaBody_interface(v_pcscfEutAIpUrl.components.sip.hostPort), *} ) + }; + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest((mdw_TP_IMS_5046_01_ic(v_pcscfEutAUrl, v_UserEutBUrl), - mdw_TP_IMS_5046_01_ic(v_pcscfEutAIpUrl, v_UserEutBUrl)))}, + mdw_TP_IMS_5046_01_ic(v_pcscfEutAIpUrl, v_UserEutBUrl)))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, "TP_IMS_5046_01", true, - p_checkMessage + p_checkMessage ) ); p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - if(ispresent(v_sip.request.msgHeader.route)) { - v_Route := v_sip.request.msgHeader.route; - } - //if(ispresent(v_sip.request.msgHeader.via)) { - v_Via := v_sip.request.msgHeader.via; - //} - - // Check Route header - if (match(v_Route, vt_pcscfRoute)) { - f_setIotVerdictFAIL("TP_IMS_5046_01"); - } - // Check Via header - if (match(v_Via, vt_pcscfVia)) { - } else { - f_setIotVerdictFAIL("TP_IMS_5046_01"); - } - } - - /** - * @desc Starts monitor component - */ - function f_mtc_check_TP_IMS_5110_01_isc( - ImsInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator - { + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if(ispresent(v_sip.request.msgHeader.route)) { + v_Route := v_sip.request.msgHeader.route; + } + //if(ispresent(v_sip.request.msgHeader.via)) { + v_Via := v_sip.request.msgHeader.via; + //} + + // Check Route header + if (match(v_Route, vt_pcscfRoute)) { + f_setIotVerdictFAIL("TP_IMS_5046_01"); + } + // Check Via header + if (match(v_Via, vt_pcscfVia)) { + } else { + f_setIotVerdictFAIL("TP_IMS_5046_01"); + } + } + + /** + * @desc Starts monitor component + */ + function f_mtc_check_TP_IMS_5110_01_isc( + ImsInterfaceMonitor p_monitorCompRef) + runs on ImsTestCoordinator + { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, @@ -3469,15 +3394,15 @@ group checksTC_IMS_SS_0008 { false ) ); - p_monitorCompRef.done; - } - /** - * @desc Starts monitor component - */ - function f_mtc_check_TP_IMS_5110_01_ic( - ImsInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator - { + p_monitorCompRef.done; + } + /** + * @desc Starts monitor component + */ + function f_mtc_check_TP_IMS_5110_01_ic( + ImsInterfaceMonitor p_monitorCompRef) + runs on ImsTestCoordinator + { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, @@ -3488,8 +3413,8 @@ group checksTC_IMS_SS_0008 { false ) ); - p_monitorCompRef.done; - } + p_monitorCompRef.done; + } } // group @@ -3498,100 +3423,100 @@ group checksTC_IMS_SS_0009 { }//end group checksTC_IMS_SS_0009 group checksTC_IMS_SS_0010 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_01_gm)}, - {}, - {0, omit}, - "TP_IMS_5308_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_01_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_01_isc)}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5308_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_02_gm)}, - {}, - {0, omit}, - "TP_IMS_5308_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_02_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_02_isc)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5308_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5308_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5308_01_gm)}, + {}, + {0, omit}, + "TP_IMS_5308_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5308_01_isc( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5308_01_isc)}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IMS_5308_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5308_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5308_02_gm)}, + {}, + {0, omit}, + "TP_IMS_5308_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5308_02_isc( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipResponse(mdw_TP_IMS_5308_02_isc)}, + {mw_SipResponse(mw_200OK_Base)}, + {0, omit}, + "TP_IMS_5308_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + }//end group checksTC_IMS_SS_0010 - group checksTC_IMS_PRES_0001 { + group checksTC_IMS_PRES_0001 { - + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component @@ -3600,7 +3525,7 @@ group checksTC_IMS_SS_0010 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_PUBLISH_Request_Base(?))}, @@ -3613,7 +3538,7 @@ group checksTC_IMS_SS_0010 { ); p_monitorCompRef.done; } //function - + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component @@ -3622,7 +3547,7 @@ group checksTC_IMS_SS_0010 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + var template SipUrl v_AS_IMS_B := mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( @@ -3637,85 +3562,85 @@ group checksTC_IMS_SS_0010 { p_monitorCompRef.done; } //function - /** + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_07_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_07_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_AS_IMS_B := (mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTASServerIpAddress(PX_EUT_B))); - var template SipUrl v_SCSCF_IMS_B := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_B))); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5108_07_isc(v_AS_IMS_B, v_SCSCF_IMS_B))}, - {mw_SipRequest(mdw_TP_IMS_5108_07_f_isc)}, - {0, omit}, - "TP_IMS_5108_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - + */ + function f_mtc_check_TP_IMS_5108_07_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, + {}, + {0, omit}, + "TP_IMS_5108_07", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_07_isc( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_AS_IMS_B := (mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)), + mw_SipUrl_Host(f_GetEUTASServerIpAddress(PX_EUT_B))); + var template SipUrl v_SCSCF_IMS_B := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)), + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_B))); + + p_monitorCompRef.start( + f_imsIot_receive( + {mw_SipRequest(mdw_TP_IMS_5108_07_isc(v_AS_IMS_B, v_SCSCF_IMS_B))}, + {mw_SipRequest(mdw_TP_IMS_5108_07_f_isc)}, + {0, omit}, + "TP_IMS_5108_07", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + /*functions already used in test checksTC_IMS_SS_0003 * f_mtc_check_TP_IMS_5115_08_isc * f_mtc_check_TP_IMS_5115_08_ic * */ - - -}//end group checksTC_IMS_PRES_0001 + + +}//end group checksTC_IMS_PRES_0001 group checksTC_IMS_PRES_0002 { - + /*functions already used in test checksTC_IMS_PRES_0001 - * f_mtc_check_TP_IMS_5108_07_gm + * f_mtc_check_TP_IMS_5108_07_gm * f_mtc_check_TP_IMS_5108_07_isc * f_mtc_check_TP_IMS_5115_08_isc * f_mtc_check_TP_IMS_5115_08_ic * */ - - + + }//end group checksTC_IMS_PRES_0002 group checksTC_IMS_PRES_0003 { - + /*functions already used in test checksTC_IMS_PRES_0001 * f_mtc_check_TP_IMS_5115_08_isc * f_mtc_check_TP_IMS_5115_08_ic * */ - + }//end group checksTC_IMS_PRES_0003 group checksTC_IMS_PRES_0004 { @@ -3723,9 +3648,9 @@ group checksTC_IMS_PRES_0004 { /*functions already used in test checksTC_IMS_PRES_0001 * f_mtc_check_TP_IMS_5097_13_isc * f_mtc_check_TP_IMS_5097_13_ic - * f_mtc_check_TP_IMS_5108_07_gm + * f_mtc_check_TP_IMS_5108_07_gm * f_mtc_check_TP_IMS_5108_07_isc - * and checksTC_IMS_SS_0005 + * and checksTC_IMS_SS_0005 * f_mtc_check_TP_IMS_5313_01_ic * f_mtc_check_TP_IMS_5313_01_isc * @@ -3736,9 +3661,9 @@ group checksTC_IMS_PRES_0004 { group checksTC_IMS_PRES_0005 { /*functions already used in test checksTC_IMS_PRES_0001 - * f_mtc_check_TP_IMS_5108_07_gm + * f_mtc_check_TP_IMS_5108_07_gm * f_mtc_check_TP_IMS_5108_07_isc - * and checksTC_IMS_SS_0005 + * and checksTC_IMS_SS_0005 * f_mtc_check_TP_IMS_5313_01_ic * f_mtc_check_TP_IMS_5313_01_isc * @@ -3756,7 +3681,7 @@ group checksTC_IMS_CHAT_0014 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REFER_Request_Base(?))}, @@ -3778,9 +3703,9 @@ group checksTC_IMS_CHAT_0014 { function f_mtc_check_TP_IMS_5107_04_ic( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { + ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5107_04_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, @@ -3794,7 +3719,7 @@ group checksTC_IMS_CHAT_0014 { p_monitorCompRef.done; } //function - }//end group checksTC_IMS_CHAT_0014 + }//end group checksTC_IMS_CHAT_0014 group checksTC_IMS_SHARE_0001 { @@ -3806,7 +3731,7 @@ group checksTC_IMS_SHARE_0001 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_OPTIONS_Request_Base(?))}, @@ -3828,9 +3753,9 @@ group checksTC_IMS_SHARE_0001 { function f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { + ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_CONTENT_SHARE_01_ic(?))}, @@ -3852,7 +3777,7 @@ group checksTC_IMS_SHARE_0001 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, @@ -3874,9 +3799,9 @@ group checksTC_IMS_SHARE_0001 { function f_mtc_check_TP_IMS_CONTENT_SHARE_02_ic( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { + ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_CONTENT_SHARE_02_ic)}, @@ -3890,7 +3815,7 @@ group checksTC_IMS_SHARE_0001 { p_monitorCompRef.done; } //function*/ - }//end group checksTC_IMS_SHARE_0001 + }//end group checksTC_IMS_SHARE_0001 group checksTC_IMS_SHARE_0009 { @@ -3902,7 +3827,7 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_603Decline_Base)}, @@ -3924,9 +3849,9 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_TP_IMS_CONTENT_SHARE_03_ic( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { + ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_603Decline_Base)}, @@ -3940,94 +3865,94 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } //function*/ - }//end group checksTC_IMS_SHARE_0009 - - group checksTC_VxLTE_INT_ATT_01 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_S6A_MME_ULR_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( - md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED + }//end group checksTC_IMS_SHARE_0009 + + group checksTC_VxLTE_INT_ATT_01 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_S6A_MME_ULR_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( + md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED ?, //vc_originHost_IUT, // containing an Origin-Host AVP ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP ?, //vc_destinationRealm, // containing a Destination-Realm AVP m_userName(PX_USR_NAME), // containing a User-Name AVP - DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP + DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP ?, // containing a ULR-Flags AVP with S6a-indicator bit set - m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP - )) } , "TP_S6A_MME_ULR_01", true ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_S6A_HSS_ULA_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( - mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS + m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP + )) } , "TP_S6A_MME_ULR_01", true ) + ); + p_monitorCompRef.done; + } + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_S6A_HSS_ULA_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( + mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED ?, //vc_originHost_IUT, // containing an Origin-Host AVP ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set mw_subscriptionData_dummy // containing a Subscription-Data AVP - ) - ) } , "TP_S6A_MME_ULA_01", true ) - ); - p_monitorCompRef.done; - } //function*/ - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_GX_PCRF_CCA_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, - ?, //vc_originHost, - ?, //vc_originRealm, - ?, //vc_destinationRealm, - mw_cC_Request_Type(INITIAL_REQUEST_E), - *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) - ); - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) - ); - p_monitorCompRef.done; - - } //function*/ - - }//end group checksTC_VxLTE_INT_ATT_01 - - - group messagingChecks { - /** - * @desc Starts monitor component behavior for TP_IMS_5097_05 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_05_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + ) + ) } , "TP_S6A_MME_ULA_01", true ) + ); + p_monitorCompRef.done; + } //function*/ + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_GX_PCRF_CCA_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, + ?, //vc_originHost, + ?, //vc_originRealm, + ?, //vc_destinationRealm, + mw_cC_Request_Type(INITIAL_REQUEST_E), + *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) + ); + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) + ); + p_monitorCompRef.done; + + } //function*/ + + }//end group checksTC_VxLTE_INT_ATT_01 + + + group messagingChecks { + /** + * @desc Starts monitor component behavior for TP_IMS_5097_05 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_05_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, @@ -4039,25 +3964,25 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_05 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_05_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_05 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_05_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive( { mw_SipRequest(mdw_TP_IMS_5097_05_p_ic(*)) }, { - mw_SipRequest(mdw_TP_IMS_5097_05_f_ic(*)), - mw_SipRequest(mdw_TP_IMS_5097_05_f2_ic(*,mw_SipUrl_Host(v_EUT_A_Addr))), - mw_SipRequest(mw_MESSAGE_Request_Base) + mw_SipRequest(mdw_TP_IMS_5097_05_f_ic(*)), + mw_SipRequest(mdw_TP_IMS_5097_05_f2_ic(*,mw_SipUrl_Host(v_EUT_A_Addr))), + mw_SipRequest(mw_MESSAGE_Request_Base) }, {0, omit}, "TP_IMS_5097_05", @@ -4079,16 +4004,16 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_05 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_07_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_05 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_07_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, @@ -4100,17 +4025,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_07 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_07_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_07 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_07_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_07_ic(*,mw_SIP_URI_Base, mw_TEL_URI_Base))}, @@ -4122,20 +4047,20 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_08 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_08_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_08 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_08_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); p_monitorCompRef.start( - f_imsIot_receive( + f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_08_gm(mw_TEL_URI_Base))}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, @@ -4145,17 +4070,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_08 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_08_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5097_08 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5097_08_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( @@ -4168,17 +4093,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5117_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5117_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_2XX_Base)}, @@ -4190,20 +4115,20 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5117_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5117_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mw_TP_IMS_5117_02_ic)}, + {mw_SipResponse(mw_TP_IMS_5117_02_ic)}, {mw_SipResponse(mdw_2XX_Base)}, {0, omit}, "TP_IMS_5117_02", @@ -4212,18 +4137,18 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_06_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + + /** + * @desc Starts monitor component behavior for TP_IMS_5117_06 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5117_06_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_2XX_Base)}, @@ -4235,20 +4160,20 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_06_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5117_06 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5117_06_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mw_TP_IMS_5117_06_ic)}, + {mw_SipResponse(mw_TP_IMS_5117_06_ic)}, {mw_SipResponse(mdw_2XX_Base)}, {0, omit}, "TP_IMS_5117_06", @@ -4257,17 +4182,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5118_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5118_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5118_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5118_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, @@ -4279,20 +4204,20 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5118_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5118_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5118_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5118_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mw_TP_IMS_5118_01_ic)}, + {mw_SipResponse(mw_TP_IMS_5118_01_ic)}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, "TP_IMS_5118_01", @@ -4301,17 +4226,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5108_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, @@ -4323,16 +4248,16 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_02_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5108_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_02_ic( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); var SemicolonParam_List p_paramList; var GenericParam p_param; var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; @@ -4352,17 +4277,17 @@ group checksTC_IMS_SHARE_0009 { f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); p_paramList := v_sip.request.msgHeader.pChargingVector.chargeParams; for(var integer i := 0; i < lengthof(p_paramList); i:= i+1) { - if(p_paramList[i].id == "icid-value") { - p_param := p_paramList[i]; - } + if(p_paramList[i].id == "icid-value") { + p_param := p_paramList[i]; + } } p_monitorCompRef.start( f_imsIot_receive( {}, { - mw_SipRequest(mdw_TP_IMS_5108_02b_f_ic(*)), - mw_SipRequest(mw_MESSAGE_Request_Base) + mw_SipRequest(mdw_TP_IMS_5108_02b_f_ic(*)), + mw_SipRequest(mw_MESSAGE_Request_Base) }, {0, omit}, "TP_IMS_5108_02", @@ -4377,8 +4302,8 @@ group checksTC_IMS_SHARE_0009 { f_imsIot_receive( {}, { - mw_SipRequest(mdw_TP_IMS_5108_02b_p_ic(*, v_SCSCF_IMS_B, p_param)), - mw_SipRequest(mw_MESSAGE_Request_Base) + mw_SipRequest(mdw_TP_IMS_5108_02b_p_ic(*, v_SCSCF_IMS_B, p_param)), + mw_SipRequest(mw_MESSAGE_Request_Base) }, {0, omit}, "TP_IMS_5108_02", @@ -4387,16 +4312,16 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5050_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5050_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5050_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, @@ -4408,23 +4333,23 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5050_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_PCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_B)); - var template SipUrl v_UE_A := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_A)); - + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5050_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5050_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_PCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_B)); + var template SipUrl v_UE_A := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_A)); + p_monitorCompRef.start( f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5050_01_ic(*, v_PCSCF_IMS_B, v_UE_A))}, + {mw_SipRequest(mdw_TP_IMS_5050_01_ic(*, v_PCSCF_IMS_B, v_UE_A))}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, "TP_IMS_5050_01", @@ -4433,17 +4358,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5114_02_gm( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5050_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5114_02_gm( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, {}, @@ -4453,18 +4378,18 @@ group checksTC_IMS_SHARE_0009 { false ) ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5114_02_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5050_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5114_02_ic( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, {}, @@ -4474,11 +4399,11 @@ group checksTC_IMS_SHARE_0009 { false ) ); - p_monitorCompRef.done; - + p_monitorCompRef.done; + p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mdw_4XX_Base)}, + {mw_SipResponse(mdw_4XX_Base)}, {}, {0, omit}, "TP_IMS_5114_02", @@ -4487,16 +4412,16 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_06_gm( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5108_06 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_06_gm( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, {}, @@ -4507,17 +4432,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_06_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5108_06 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5108_06_ic( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, {}, @@ -4527,11 +4452,11 @@ group checksTC_IMS_SHARE_0009 { false ) ); - p_monitorCompRef.done; - + p_monitorCompRef.done; + p_monitorCompRef.start( f_imsIot_receive( - {mw_SipResponse(mw_404NotFound_Base)}, + {mw_SipResponse(mw_404NotFound_Base)}, {}, {0, omit}, "TP_IMS_5108_06", @@ -4540,26 +4465,26 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - } - - group callChecks { - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - p_monitorCompRef.start( + } + } + + group callChecks { + + + /** + * @desc Starts monitor component behavior for TP_IMS_5106_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5106_01_gm( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, @@ -4570,27 +4495,27 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - - p_monitorCompRef.start( + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5106_01 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5106_01_ic( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)), + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5106_01_ic(v_SCSCF_A_Uri))}, {mw_SipRequest(mw_INVITE_Request_Base)}, @@ -4601,17 +4526,17 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_02_gm( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5106_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5106_02_gm( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_UPDATE_Request_Base(*))}, {}, @@ -4622,24 +4547,24 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_02_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( + } + + + /** + * @desc Starts monitor component behavior for TP_IMS_5106_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5106_02_ic( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5106_02_p_ic(*,v_SCSCF_A_Uri))}, { - mw_SipRequest(mdw_TP_IMS_5106_02_f_ic(*,v_SCSCF_A_Uri)), - mw_SipRequest(mw_UPDATE_Request_Base(*))}, + mw_SipRequest(mdw_TP_IMS_5106_02_f_ic(*,v_SCSCF_A_Uri)), + mw_SipRequest(mw_UPDATE_Request_Base(*))}, {0, omit}, "TP_IMS_5106_02", false, @@ -4647,23 +4572,23 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5121_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5121_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - // TODO TP must be checked, currently only 2XX is checked - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; - } - p_monitorCompRef.start( + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5121_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5121_02_gm( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + // TODO TP must be checked, currently only 2XX is checked + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_2XX_Base)}, {}, @@ -4674,25 +4599,25 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5121_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5121_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; - } - - - p_monitorCompRef.start( + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5121_02 + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IMS_5121_02_ic( + ImsInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + + + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_TP_IMS_5121_02_ic)}, {mw_SipResponse(mdw_2XX_Base)}, @@ -4703,13 +4628,13 @@ group checksTC_IMS_SHARE_0009 { ) ); p_monitorCompRef.done; - } - } + } + } group mx { function f_mtc_check_invite_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, @@ -4724,15 +4649,15 @@ group checksTC_IMS_SHARE_0009 { } function f_mtc_check_message ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest ( mw_MESSAGE_Request_Base ) }, - { }, { 0, omit }, "f_mtc_check_message", false, false ) ); + p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest ( mw_MESSAGE_Request_Base ) }, + { }, { 0, omit }, "f_mtc_check_message", false, false ) ); p_monitorCompRef.done; } function f_mtc_check_message_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base)}, @@ -4749,7 +4674,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_ack_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_ACK_Request_Base(?))}, @@ -4766,7 +4691,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_prack_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_PRACK_Request_Base(?))}, @@ -4783,9 +4708,9 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_publish_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( - f_imsIot_receive ( + f_imsIot_receive ( {mw_SipRequest(mw_PUBLISH_Request_Base(?))}, {}, {0,omit}, @@ -4800,7 +4725,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_bye_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_BYE_Request_Base(?))}, @@ -4817,7 +4742,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_update_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_UPDATE_Request_Base(?))}, @@ -4834,7 +4759,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_register_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, @@ -4851,7 +4776,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_notify_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, @@ -4868,7 +4793,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_info_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INFO_Request_Base(?))}, @@ -4885,7 +4810,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_subscribe( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, @@ -4902,7 +4827,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_cancel_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_CANCEL_Request_Base(?))}, @@ -4919,7 +4844,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_refer_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REFER_Request_Base(?))}, @@ -4936,7 +4861,7 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_options_mx( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_OPTIONS_Request_Base(?))}, @@ -4951,23 +4876,23 @@ group checksTC_IMS_SHARE_0009 { } function f_mtc_check_options ( ImsInterfaceMonitor p_monitorCompRef, charstring p_rcsCap ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest( mw_OPTIONS_Request ( p_rcsCap ) ) }, - { }, { 0, omit }, "f_mtc_check_options", false, false ) ); - p_monitorCompRef.done; + p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest( mw_OPTIONS_Request ( p_rcsCap ) ) }, + { }, { 0, omit }, "f_mtc_check_options", false, false ) ); + p_monitorCompRef.done; } - function f_mtc_check_response ( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine, - charstring p_rcsCap ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipResponse ( mw_Response ( p_statusLine, p_rcsCap ) ) }, - { }, { 0, omit },"f_mtc_check_response", false, false ) ); - p_monitorCompRef.done; + function f_mtc_check_response ( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine, + charstring p_rcsCap ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipResponse ( mw_Response ( p_statusLine, p_rcsCap ) ) }, + { }, { 0, omit },"f_mtc_check_response", false, false ) ); + p_monitorCompRef.done; } function f_mtc_check_response_mx( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine ) runs on ImsTestCoordinator { - + p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_Response_Base(p_statusLine, ?, ?))}, @@ -5136,7 +5061,7 @@ group checksTC_IMS_SHARE_0009 { mw_msrpSEND_toPath_fromPath_contentType( mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response mw_fromPath(v_fromPath), // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE - LibMsrp_Templates.mw_contentType("text", "plain") // Content-Type_header indicating text/plain + LibMsrp_Templates.mw_contentType("text", "plain") // Content-Type_header indicating text/plain ) ) }, @@ -5391,13 +5316,13 @@ group checksTC_IMS_SHARE_0009 { in ImsInterfaceMonitor p_monitorCompRef_B ) runs on ImsTestCoordinator { p_monitorCompRef_A.start ( - f_check_ExistingDedicatedBearer ( p_ueRef_A ) - ); - p_monitorCompRef_A.done; - p_monitorCompRef_B.start ( - f_check_ExistingDedicatedBearer ( p_ueRef_B ) - ); - p_monitorCompRef_B.done; + f_check_ExistingDedicatedBearer ( p_ueRef_A ) + ); + p_monitorCompRef_A.done; + p_monitorCompRef_B.start ( + f_check_ExistingDedicatedBearer ( p_ueRef_B ) + ); + p_monitorCompRef_B.done; } // End of function f_mtc_check_TP_EPC_6003_01 /** @@ -5409,11 +5334,11 @@ group checksTC_IMS_SHARE_0009 { * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). * @see TS 103 029 V3.1.1 clause 7.1.1 */ - function f_check_ExistingDedicatedBearer ( + function f_check_ExistingDedicatedBearer ( in EquipmentUser p_ueRef ) runs on ImsInterfaceMonitor { // External function TODO - } // End of function f_check_ExistingDedicatedBearer + } // End of function f_check_ExistingDedicatedBearer /** * Starts monitor component behavior for TP_EPC_6003_02 @@ -5470,7 +5395,7 @@ group checksTC_IMS_SHARE_0009 { * @see TS 103 029 V3.1.1 clause 7.1.2 */ function f_mtc_check_TP_EPC_6004_01( - IotEquipmentUser p_ue + IotEquipmentUser p_ue ) runs on ImsTestCoordinator { f_mtc_triggerUserCommand ( p_ue, "start complete network detachment"); f_mtc_userRadioEnabled ( p_ue, false, true ); @@ -5499,9 +5424,9 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) + f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) ); - p_monitorCompRef.done; + p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6005_01 /** @@ -5621,10 +5546,10 @@ group checksTC_IMS_SHARE_0009 { */ function f_mtc_check_TP_EPC_6009_02( in EquipmentUser p_ueRef, - in ImsInterfaceMonitor p_monitorCompRef + in ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_check_ExistingDedicatedBearer ( p_ueRef ) + f_check_ExistingDedicatedBearer ( p_ueRef ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6009_02 @@ -5657,11 +5582,11 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_imsIot_receive ( + p_monitorCompRef.start ( + f_imsIot_receive ( { mw_SipRequest ( mw_BYE_Request_Base( ? ) ) }, { }, { 0, omit }, "TP_EPC_6010_01", false, p_checkMessage - ) + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6010_01 @@ -5688,9 +5613,9 @@ group checksTC_IMS_SHARE_0009 { boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_imsIot_receive ( - { mw_SipResponse ( mw_200OK_Base ) }, { }, { 0, omit }, - "TP_EPC_6012_01", true, p_checkMessage + f_imsIot_receive ( + { mw_SipResponse ( mw_200OK_Base ) }, { }, { 0, omit }, + "TP_EPC_6012_01", true, p_checkMessage ) ); p_monitorCompRef.done; @@ -5703,7 +5628,7 @@ group checksTC_IMS_SHARE_0009 { * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. */ function f_mtc_check_TP_EPC_6012_02( - ImsInterfaceMonitor p_monitorCompRef, + ImsInterfaceMonitor p_monitorCompRef, ImsInterfaceMonitor p_monitorCompRef_B ) runs on ImsTestCoordinator { f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); @@ -5791,10 +5716,10 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_imsIot_receive ( - { mw_SipResponse ( mdw_4XX_Base ) }, { }, { 0, omit }, - "TP_EPC_6016_01", false, false - ) + f_imsIot_receive ( + { mw_SipResponse ( mdw_4XX_Base ) }, { }, { 0, omit }, + "TP_EPC_6016_01", false, false + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6016_01 @@ -5885,7 +5810,7 @@ group checksTC_IMS_SHARE_0009 { */ function f_mtc_check_TP_EPC_6024_01( ImsInterfaceMonitor p_monitorCompRef, - IotEquipmentUser p_ue + IotEquipmentUser p_ue ) runs on ImsTestCoordinator { f_mtc_triggerUserCommand ( p_ue, "Trigger administrative de-registration for UE A"); p_monitorCompRef.start( @@ -5906,7 +5831,7 @@ group checksTC_IMS_SHARE_0009 { */ function f_mtc_check_TP_EPC_6026_01( ImsInterfaceMonitor p_monitorCompRef, - IotEquipmentUser p_ue + IotEquipmentUser p_ue ) runs on ImsTestCoordinator { f_mtc_triggerUserCommand ( p_ue, "Trigger registration expiration for UE A"); f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); @@ -5955,12 +5880,12 @@ group checksTC_IMS_SHARE_0009 { * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. *
          * ensure that {
-         * 	when { IMS_P-CSCF receives INVITE with no SDP from UE_A }
-         * 		then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         * 		when { IMS_P-CSCF receives 200_response on INVITE with no SDP from IMS_S-CSCF }
-         * 			then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         * 			when { IMS_P-CSCF receives ACK with no SDP from UE_A }
-         * 				then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+         *     when { IMS_P-CSCF receives INVITE with no SDP from UE_A }
+         *         then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+         *         when { IMS_P-CSCF receives 200_response on INVITE with no SDP from IMS_S-CSCF }
+         *             then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+         *             when { IMS_P-CSCF receives ACK with no SDP from UE_A }
+         *                 then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
          * }
          * 
*/ diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 90e862a..f51438c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -6,27 +6,29 @@ module AtsImsIot_TP_behavior_GM { - import from AtsImsIot_TestSystem all; - import from LibIot_PIXITS all; - import from AtsImsIot_Templates all; - import from AtsImsIot_TypesAndValues all; - import from LibIot_TestInterface all; + // LibIms + import from LibIms_Templates all; import from LibIms_UpperTester all; + // LibIot import from LibIot_TypesAndValues all; import from LibIot_Functions all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // LibSip import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; - import from LibSip_Common all; - - import from AtsImsIot_Functions all; - import from LibIot_PIXITS all; - // LibSip import from LibSip_SDPTypes all; // LibMsrp import from LibMsrp_TypesAndValues all; import from LibMsrp_Functions all; import from LibMsrp_Templates all; + // AtsImsIot + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Functions all; + import from DiameterS6a_Templates all; import from DiameterS6a_PIXITS all; import from DiameterGx_Templates all; @@ -34,6 +36,74 @@ module AtsImsIot_TP_behavior_GM { import from LibDiameter_Templates all; // import from DiameterRx_Templates all; + group imsMessages { + + /** + * @desc Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * then { + * the UE_A entity isRequestedToSend a MESSAGE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ContentLength indicating value greater than 1300 bytes + * ; + * to the IMS_P_CSCF_A entity + * and the UE_A entity receives the MESSAGE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ContentLength indicating value greater than 1300 bytes + * ; + * from the UE_A entity + * and the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * PChargingVector containing + * orig_ioi indicating value PX_OPERATOR_ID_A, + * term_ioi indicating value PX_OPERATOR_ID_B, + * not PAccessNetworkInfo + * ;; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_MESSAGE_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c), + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_MESSAGE_01", + false, + false + )); + p_monitorCompRef.done; + } + + } // End of group imsMessages + // 5.2 IMS Registration group imsRegistration { @@ -95,8 +165,7 @@ module AtsImsIot_TP_behavior_GM { f_imsIot_receive( { mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_401Unauthorized_Base), - mw_SipRequest(mw_REGISTER_Request_Base) + mw_SipResponse(mw_401Unauthorized_Base) }, {}, {0, omit}, @@ -106,8 +175,293 @@ module AtsImsIot_TP_behavior_GM { ) ); p_monitorCompRef.done; - } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_01() + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_01 + + /** + * @desc Verify that the P-CSCF successfully processes a first registration (Successful) + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient + * ;; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * AuthenticationInfo, + * PAccessNetworkInfo, + * PAssociatedURI indicating value PX_UE_A_SIP_URI, + * PChargingVector, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA" , + * term_ioi_parameter + * indicating value "Operator Identifier Of ImsB" + * Path, + * ServiceRoute + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_REGISTER_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_Response_200onREGISTER_IMS) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_02 + + /** + * @desc Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isTriggeredToStart + * } + * then { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_INVALID_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "" + * ;; + * from the UE_A entity + * and the IMS_P_CSCF_A entity sends an 404_NotFound containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_REGISTER_03( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_03 } // End of group imsRegistration + group imsSubscribe { + + /** + * @desc Verify that the P-CSCF successfully processes a first registration (Successful) + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a SUBSCRIBE + * } + * then { + * the IMS_P_CSCF_A entity receives an SUBSCRIBE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * and the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_SUBSCRIBE_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_02 + + } // End of group imsSubscribe + + group imsInvite { + + /** + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend an INVITE + * } + * then { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_01 + + } // End of group imsInvite + + group ims180Ringing { + + /** + * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity receives a 180_Ringing containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_180RINGING_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_180RINGING_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_01 + + } // End of group ims180Ringing + } // end module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn index d4cb32c..2e9bd42 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn @@ -194,7 +194,7 @@ module AtsImsIot_Templates { * * @desc Message Request containing a message body greater than 1500 bytes. */ - template MESSAGE_Request mdw_TP_IMS_4002_01(template CallId p_callId) modifies mw_MESSAGE_Request_Base := { + template MESSAGE_Request mdw_MESSAGE_1500c(template CallId p_callId := ?) modifies mw_MESSAGE_Request_Base := { msgHeader := { contact := * }, diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index 2a74342..7ecd368 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -1,2108 +1,2175 @@ /** - * @author STF 370 + * @author STF 370 * @version $Id: $ - * @desc This module provides ATS specific test case definitions. + * @desc This module provides ATS specific test case definitions. */ module AtsImsIot_TestCases_CALL { - import from AtsImsIot_Behavior { - function all; - } - - import from AtsImsIot_Functions { - function all; - } - - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - - import from LibIms_UpperTester {type ImsUserInfo;} - - import from LibSip_SIPTypesAndValues {const c_statusLine100, c_statusLine180, c_statusLine200;} - - import from LibIot_TestConfiguration { - function f_cf_create_IotEquipmentUser; - } - - import from AtsImsIot_TestConfiguration { - const all; - function all; - } - - import from LibIot_TestInterface {type IotEquipmentUser;} - - import from AtsImsIot_TestSystem { - type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; - } - import from AtsImsIot_TestSystem {type CF_INT_CALL;} - - - /** - * @desc Default SIP URI with DNS/ENUM lookup procedure - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.1 - */ - testcase TC_IMS_CALL_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibIms_UpperTester all; + + // LibIot + import from LibIot_PIXITS all; + import from LibIot_TestConfiguration all; + import from LibIot_TestInterface all; + + // AtsImsIot + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_Behavior all; // TODO To be removed + import from AtsImsIot_Functions all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_TestConfiguration all; + + group imsSipSessionEstablishment { + + group originatingLeg { + + /** + * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP session establishment + */ + testcase TC_VxLTE_INT_INI_01() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); + var CF_INT_CALL v_config := {v_gmA, omit, omit, omit, v_gmB, omit}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); + + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true, true); // Event 1 + + f_mtc_check_TP_GM_PCSCF_180RINGING_01(v_gmA, true); // Event 6 + + + + f_mtc_check_TP_IMS_5097_02_gm(v_gmA, true); // Check2 + f_mtc_check_TP_IMS_5097_04_gm(v_gmA, false); // Check3 + + // checks 6, 10 (180 Ringing) + f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 6 + f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 7 + f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 10 + + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + + // checks 8, 11 (2xx) + f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 8 + f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 9 + f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 11 + + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + + //check 4 (ACK) + f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 + + f_mtc_EndCall(v_ueA); //Test Sequence Step 7 + + // check 5 (BYE) + f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 + + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } //End of testcase TC_VxLTE_INT_INI_01 + + } // End of group originatingLeg + + } // End of imsSipSessionEstablishment + + + /** + * @desc Default SIP URI with DNS/ENUM lookup procedure + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.1 + */ + testcase TC_IMS_CALL_0001() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, true); // Check1 - f_mtc_check_TP_IMS_5097_02_gm(v_gmA, true); // Check2 - f_mtc_check_TP_IMS_5097_04_gm(v_gmA, false); // Check3 + var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); //Test Sequence Step 1 + + // check 1 (INVITE) + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true, true); // Check1 + f_mtc_check_TP_IMS_5097_04_gm(v_gmA, false); // Check3 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5097_02_ic(v_ic, true); // Check2 - f_mtc_check_TP_IMS_5097_04_ic(v_ic, false); // Check3 + f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 + f_mtc_check_TP_IMS_5097_02_ic(v_ic, true); // Check2 + f_mtc_check_TP_IMS_5097_04_ic(v_ic, false); // Check3 f_mtc_check_invite_mx(v_mxB); - // checks 6, 10 (180 Ringing) + // checks 6, 10 (180 Ringing) f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 6 - f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 7 + f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 7 f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 10 f_mtc_check_response_mx(v_mxB, c_statusLine180); f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check 6 f_mtc_check_TP_IMS_5115_03_ic(v_ic, true); // Check 7 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check 10 + f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check 10 f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - // checks 8, 11 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 8 - f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 9 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 11 + // checks 8, 11 (2xx) + f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 8 + f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 9 + f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 11 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 8 - f_mtc_check_TP_IMS_5115_04_ic(v_ic, true); // Check 9 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 11 + f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 8 + f_mtc_check_TP_IMS_5115_04_ic(v_ic, true); // Check 9 + f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 11 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - //check 4 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 + //check 4 (ACK) + f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check2 + f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check2 f_mtc_check_ack_mx(v_mxB); - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 + f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - // check 5 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 + // check 5 (BYE) + f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check3 + f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check3 f_mtc_check_bye_mx(v_mxB); - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0001 - - - /** - * @desc Default SIP URI - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.2 - */ - testcase TC_IMS_CALL_0001F() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0001 + + + /** + * @desc Default SIP URI + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.2 + */ + testcase TC_IMS_CALL_0001F() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueB2 := f_cf_create_IotEquipmentUser(c_userUE_B2); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + var IotEquipmentUser v_ueB2 := f_cf_create_IotEquipmentUser(c_userUE_B2); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueB2); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueB2, v_userInfoB); - - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, false); // Check1 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_user_up(v_ueB2); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userRegistration(v_ueB2, v_userInfoB); + + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + + // check 1 (INVITE) + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 + f_mtc_check_invite_mx(v_mxA); + f_mtc_check_TP_IMS_5097_01_ic(v_ic, false); // Check1 f_mtc_check_invite_mx(v_mxB); - // checks 4, 6 (180 Ringing) - f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 4 - f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 6 + // checks 4, 6 (180 Ringing) + f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 4 + f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 6 f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check4 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check6 + f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check4 + f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check6 f_mtc_check_response_mx(v_mxA, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check4 - f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check6 + f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check4 + f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check6 f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check4 from UE_B2 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check6 from UE_B2 + f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check4 from UE_B2 + f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check6 from UE_B2 f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckRinging(v_ueB2); //Test Sequence Step 3 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 4 - f_mtc_userAnswerCall(v_ueB2); //Test Sequence Step 5 - - // checks 5, 7 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 5 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 7 + + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckRinging(v_ueB2); //Test Sequence Step 3 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 4 + f_mtc_userAnswerCall(v_ueB2); //Test Sequence Step 5 + + // checks 5, 7 (2xx) + f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 5 + f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 7 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 5 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 7 + f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 5 + f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 7 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 5 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 7 + f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 5 + f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 7 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check5 from UE_B2 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check7 from UE_B2 + f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check5 from UE_B2 + f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check7 from UE_B2 f_mtc_check_response_mx(v_mxA, c_statusLine200); - - - f_mtc_userCheckCallNoLongerOffered(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 7 - f_mtc_userCheckCallEstablished(v_ueB2); //Test Sequence Step 8 + + + f_mtc_userCheckCallNoLongerOffered(v_ueB); //Test Sequence Step 6 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 7 + f_mtc_userCheckCallEstablished(v_ueB2); //Test Sequence Step 8 - //check 2 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 + //check 2 (ACK) + f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check2 + f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check2 f_mtc_check_ack_mx(v_mxB); - f_mtc_EndCall(v_ueA); //Test Sequence Step 9 + f_mtc_EndCall(v_ueA); //Test Sequence Step 9 - // check 3 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 + // check 3 (BYE) + f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check3 + f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check3 f_mtc_check_bye_mx(v_mxB); - f_mtc_userCheckCallEnded(v_ueB2 ); //Test Sequence Step 10 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 - - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueB2); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueB2); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0001F - - - /** - * @desc Default Tel URI - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.3 - */ - testcase TC_IMS_CALL_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B); + f_mtc_userCheckCallEnded(v_ueB2 ); //Test Sequence Step 10 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 + + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_PO_user_home_deregistration(v_ueB2); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_user_down(v_ueB2); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0001F + + + /** + * @desc Default Tel URI + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.3 + */ + testcase TC_IMS_CALL_0002() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, true); // Check1 - f_mtc_check_TP_IMS_5097_02_gm(v_gmA, false); // Check2 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + + // check 1 (INVITE) + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5097_02_ic(v_ic, false); // Check2 + f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 + f_mtc_check_TP_IMS_5097_02_ic(v_ic, false); // Check2 f_mtc_check_invite_mx(v_mxB); - // checks 6, 10 (180 Ringing) + // checks 6, 10 (180 Ringing) f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 5 - f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 6 + f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 6 f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 9 f_mtc_check_response_mx(v_mxB, c_statusLine180); f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check 5 f_mtc_check_TP_IMS_5115_03_ic(v_ic, true); // Check 6 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check 9 - f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check 9 + f_mtc_check_response_mx(v_mxA, c_statusLine180); + + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - // checks 8, 11 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 7 - f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 8 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 10 + // checks 8, 11 (2xx) + f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 7 + f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 8 + f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 10 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 7 - f_mtc_check_TP_IMS_5115_04_ic(v_ic, true); // Check 8 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 10 + f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 7 + f_mtc_check_TP_IMS_5115_04_ic(v_ic, true); // Check 8 + f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 10 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - //check 4 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check3 + //check 4 (ACK) + f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check3 f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check3 + f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check3 f_mtc_check_ack_mx(v_mxB); - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 + f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - // check 5 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check4 + // check 5 (BYE) + f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check4 f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check4 + f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check4 f_mtc_check_bye_mx(v_mxB); - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0002 - - - /** - * @desc Rejection of call from barred user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.4 - */ - testcase TC_IMS_CALL_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0002 + + + /** + * @desc Rejection of call from barred user + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.4 + */ + testcase TC_IMS_CALL_0003() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5108_05_gm(v_gmA, false); // Check1 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + + //check 1 (INVITE) + f_mtc_check_TP_IMS_5108_05_gm(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5108_05_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5108_05_ic(v_ic, false); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0003 - - - /** - * @desc Rejection of call to non existing user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.5 - */ - testcase TC_IMS_CALL_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0003 + + + /** + * @desc Rejection of call to non existing user + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.5 + */ + testcase TC_IMS_CALL_0004() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - - // test body - v_userInfoB.privateId := ("non_existing_user"); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5132_01_gm(v_gmA, false); // Check1 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + + // test body + v_userInfoB.privateId := ("non_existing_user"); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // + + //check 1 (INVITE) + f_mtc_check_TP_IMS_5132_01_gm(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5132_01_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5132_01_ic(v_ic, false); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0004 - - - /** - * @desc Rejection of call to unavailable user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.6 - */ - testcase TC_IMS_CALL_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0004 + + + /** + * @desc Rejection of call to unavailable user + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.6 + */ + testcase TC_IMS_CALL_0005() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - - // test body - v_userInfoB.privateId := ("unavailable"); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5133_01_gm(v_gmA, false); // Check1 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + + // test body + v_userInfoB.privateId := ("unavailable"); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // + + //check 1 (INVITE) + f_mtc_check_TP_IMS_5133_01_gm(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5133_01_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5133_01_ic(v_ic, false); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0005 - - - /** - * @desc Initial request to non-registered user with terminating unregistered filter criterion - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.7 - */ - testcase TC_IMS_CALL_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0005 + + + /** + * @desc Initial request to non-registered user with terminating unregistered filter criterion + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.7 + */ + testcase TC_IMS_CALL_0006() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - - // test body - v_userInfoB.privateId := ("userNOAS_in_IMSB"); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5109_01_gm(v_gmA, false); // Check1 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + + // test body + v_userInfoB.privateId := ("userNOAS_in_IMSB"); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // + + //check 1 (INVITE) + f_mtc_check_TP_IMS_5109_01_gm(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5109_01_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5109_01_ic(v_ic, false); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0006 - - - /** - * @desc Normal call (roaming) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.1 - */ - testcase TC_IMS_CALL_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0006 + + + /** + * @desc Normal call (roaming) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.1 + */ + testcase TC_IMS_CALL_0007() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - - // checks 1,2 gm - f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmA, false); // Check2 + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 + + // checks 1,2 gm + f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 + f_mtc_check_TP_IMS_5067_01_gm(v_gmA, false); // Check2 f_mtc_check_invite_mx(v_mxA); - //checks 1,2 (INVITE from IMS_A to IMS_B) - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, false); // Check2 + //checks 1,2 (INVITE from IMS_A to IMS_B) + f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 + f_mtc_check_TP_IMS_5067_01_ic(v_ic, false); // Check2 f_mtc_check_invite_mx(v_mxB); - + //checks 7,3 (INVITE from IMS_B to IMS_A and 100 Trying from IMS_A to IMS_B) - f_mtc_check_TP_IMS_5108_01_ic(v_ic, true); // Check7 - f_mtc_check_response_mx(v_mxB, c_statusLine100); - f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,0); // Check3 + f_mtc_check_TP_IMS_5108_01_ic(v_ic, true); // Check7 + f_mtc_check_response_mx(v_mxB, c_statusLine100); + f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,0); // Check3 f_mtc_check_response_mx(v_mxA, c_statusLine100); - // checks 5 (180 Ringing) + // checks 5 (180 Ringing) f_mtc_check_TP_IMS_5055_01_gm(v_gmA, true); // Check 5 f_mtc_check_response_mx(v_mxB, c_statusLine180); f_mtc_check_TP_IMS_5055_01_ic(v_ic, true); // Check 5 f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 + + f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - // checks 6 (2xx) - f_mtc_check_TP_IMS_5055_02_gm(v_gmA, true); // Check 6 + // checks 6 (2xx) + f_mtc_check_TP_IMS_5055_02_gm(v_gmA, true); // Check 6 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5055_02_ic(v_ic, true); // Check 6 + f_mtc_check_TP_IMS_5055_02_ic(v_ic, true); // Check 6 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 + f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - // check 4 (BYE) - f_mtc_check_TP_IMS_5301_01_gm(v_gmA, false); // Check4 + // check 4 (BYE) + f_mtc_check_TP_IMS_5301_01_gm(v_gmA, false); // Check4 f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5301_01_ic(v_ic, false); // Check4 + f_mtc_check_TP_IMS_5301_01_ic(v_ic, false); // Check4 f_mtc_check_bye_mx(v_mxB); - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0007 - - - /** - * @desc Normal call with hold/resume - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.2 - */ - testcase TC_IMS_CALL_0008() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0007 + + + /** + * @desc Normal call with hold/resume + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.2 + */ + testcase TC_IMS_CALL_0008() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 + f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 - // checks 3 and 1 (INVITE and 100 Trying) - f_mtc_check_TP_IMS_5120_01_gm(v_gmA, false, 1); // Check3 + // checks 3 and 1 (INVITE and 100 Trying) + f_mtc_check_TP_IMS_5120_01_gm(v_gmA, false, 1); // Check3 f_mtc_check_response_mx(v_mxA, c_statusLine100); - f_mtc_check_TP_IMS_5081_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5120_01_ic(v_ic, false, 2); // Check3 - f_mtc_check_response_mx(v_mxB, c_statusLine100); - - //checks 2 (200 OK) - f_mtc_check_TP_IMS_5082_01_gm(v_gmA, false, 1); // Check2 + f_mtc_check_TP_IMS_5081_01_ic(v_ic, true); // Check1 + f_mtc_check_TP_IMS_5120_01_ic(v_ic, false, 2); // Check3 + f_mtc_check_response_mx(v_mxB, c_statusLine100); + + //checks 2 (200 OK) + f_mtc_check_TP_IMS_5082_01_gm(v_gmA, false, 1); // Check2 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5082_01_ic(v_ic, false, 2); // Check2 + f_mtc_check_TP_IMS_5082_01_ic(v_ic, false, 2); // Check2 f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 - - // checks 3 and 1 (INVITE and 100 Trying) - f_mtc_check_TP_IMS_5120_01_gm(v_gmA, false, 0); // Check3 + + f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 + + f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 + + // checks 3 and 1 (INVITE and 100 Trying) + f_mtc_check_TP_IMS_5120_01_gm(v_gmA, false, 0); // Check3 f_mtc_check_response_mx(v_mxA, c_statusLine100); - f_mtc_check_TP_IMS_5120_01_ic(v_ic, true, 0); // Check3 - f_mtc_check_TP_IMS_5081_01_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5120_01_ic(v_ic, true, 0); // Check3 + f_mtc_check_TP_IMS_5081_01_ic(v_ic, false); // Check1 f_mtc_check_response_mx(v_mxB, c_statusLine200); - - //checks 2 (200 OK) - f_mtc_check_TP_IMS_5082_01_gm(v_gmA, false, 0); // Check2 + + //checks 2 (200 OK) + f_mtc_check_TP_IMS_5082_01_gm(v_gmA, false, 0); // Check2 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5082_01_ic(v_ic, false, 0); // Check2 + f_mtc_check_TP_IMS_5082_01_ic(v_ic, false, 0); // Check2 f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 + + f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 + f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 + f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0008 - - - /** - * @desc Subsequent request(other than target refresh) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.3 - */ - testcase TC_IMS_CALL_0009() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0008 + + + /** + * @desc Subsequent request(other than target refresh) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.3 + */ + testcase TC_IMS_CALL_0009() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 + + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 + + f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - f_mtc_EndCall(v_ueB); //Test Sequence Step 7 + f_mtc_EndCall(v_ueB); //Test Sequence Step 7 - // check 1 (BYE) - f_mtc_check_TP_IMS_5052_01_gm(v_gmA, false); // Check1 + // check 1 (BYE) + f_mtc_check_TP_IMS_5052_01_gm(v_gmA, false); // Check1 f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5052_01_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5052_01_ic(v_ic, false); // Check1 f_mtc_check_bye_mx(v_mxB); - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0009 - - - /** - * @desc Subsequent target refresh request(INVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.4 - */ - testcase TC_IMS_CALL_0010() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0009 + + + /** + * @desc Subsequent target refresh request(INVITE) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.4 + */ + testcase TC_IMS_CALL_0010() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - f_mtc_userTriggerHold(v_ueB); //Test Sequence Step 7 + f_mtc_userTriggerHold(v_ueB); //Test Sequence Step 7 - // checks 1 and 2 (INVITE) - f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 1); // Check1 + // checks 1 and 2 (INVITE) + f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 1); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 2); // Check1 - f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 + f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 2); // Check1 + f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueB); //Test Sequence Step 10 - - // checks 1 and 2 (INVITE) - f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 0); // Check1 + + f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 8 + f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 9 + + f_mtc_userTriggerResume(v_ueB); //Test Sequence Step 10 + + // checks 1 and 2 (INVITE) + f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 0); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 1); // Check1 - f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 + f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 1); // Check1 + f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 12 + + f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 11 + f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 12 - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 + f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0010 - - - /** - * @desc IMS network handles subsequent UPDATEs correctly in case of a user initiated - * call hold and resume when roaming caller puts a home user on hold and resumes call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.5 - */ - testcase TC_IMS_CALL_0011() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0010 + + + /** + * @desc IMS network handles subsequent UPDATEs correctly in case of a user initiated + * call hold and resume when roaming caller puts a home user on hold and resumes call + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.5 + */ + testcase TC_IMS_CALL_0011() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - f_mtc_userTriggerHold(v_ueB); //Test Sequence Step 7 + f_mtc_userTriggerHold(v_ueB); //Test Sequence Step 7 - // checks 1 (UPDATE) - f_mtc_check_TP_IMS_5080_02_gm(v_gmA, false, 1); // Check1 + // checks 1 (UPDATE) + f_mtc_check_TP_IMS_5080_02_gm(v_gmA, false, 1); // Check1 f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5080_02_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5080_02_ic(v_ic, false); // Check1 f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueB); //Test Sequence Step 10 - + + f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 8 + f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 9 + + f_mtc_userTriggerResume(v_ueB); //Test Sequence Step 10 + // checks 1 (UPDATE) f_mtc_check_TP_IMS_5080_02_gm(v_gmA, false, 1); // Check1 f_mtc_check_update_mx(v_mxA); f_mtc_check_TP_IMS_5080_02_ic(v_ic, false); // Check1 f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 12 + + f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 11 + f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 12 - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 + f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0011 - - - /** - * @desc IMS network handles subsequent UPDATEs correctly in case of a user initiated - * call hold and resume when home caller puts a roaming user on hold and resumes call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.6 - */ - testcase TC_IMS_CALL_0012() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0011 + + + /** + * @desc IMS network handles subsequent UPDATEs correctly in case of a user initiated + * call hold and resume when home caller puts a roaming user on hold and resumes call + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.6 + */ + testcase TC_IMS_CALL_0012() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoA); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 + f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 - // checks 1 (UPDATE) - f_mtc_check_TP_IMS_5120_02_gm(v_gmA, false, 1); // Check1 + // checks 1 (UPDATE) + f_mtc_check_TP_IMS_5120_02_gm(v_gmA, false, 1); // Check1 f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5120_02_ic(v_ic, false, 0); // Check1 + f_mtc_check_TP_IMS_5120_02_ic(v_ic, false, 0); // Check1 f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 - + + f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 + + f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 + // checks 1 (UPDATE) f_mtc_check_TP_IMS_5120_02_gm(v_gmA, false, 1); // Check1 f_mtc_check_update_mx(v_mxA); f_mtc_check_TP_IMS_5120_02_ic(v_ic, false, 0); // Check1 f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 + + f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 + f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 - f_mtc_EndCall(v_ueB); //Test Sequence Step 13 + f_mtc_EndCall(v_ueB); //Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 14 + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 15 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0012 - - /** - * @desc Call CANCEL by calling user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.1 - */ - testcase TC_IMS_CALL_0014() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0012 + + /** + * @desc Call CANCEL by calling user + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.1 + */ + testcase TC_IMS_CALL_0014() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userTriggerCancelCall (v_ueA); //Test Sequence Step 4 - - //check1 CANCEL - f_mtc_check_TP_IMS_5107_03_gm(v_gmA, false); // Check1 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userTriggerCancelCall (v_ueA); //Test Sequence Step 4 + + //check1 CANCEL + f_mtc_check_TP_IMS_5107_03_gm(v_gmA, false); // Check1 f_mtc_check_cancel_mx(v_mxA); - f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check1 f_mtc_check_cancel_mx(v_mxB); - - f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0014 - - /** - * @desc IMS network ends call in case calling UE looses connectivity during a call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.2 - */ - testcase TC_IMS_CALL_0015() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + + f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 6 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0014 + + /** + * @desc IMS network ends call in case calling UE looses connectivity during a call + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.2 + */ + testcase TC_IMS_CALL_0015() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - - //Check 1 BYE - f_mtc_check_TP_IMS_5073_01_gm(v_gmA, false); // Check1 + + //Check 1 BYE + f_mtc_check_TP_IMS_5073_01_gm(v_gmA, false); // Check1 f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5073_01_ic(v_ic, false); // Check1 + f_mtc_check_TP_IMS_5073_01_ic(v_ic, false); // Check1 f_mtc_check_bye_mx(v_mxB); - + f_mtc_userLooseConnection(v_ueB); //Test Sequence Step 7 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0015 - + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0015 + - /** - * @desc Call failure due to de-registration of calling user during call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.3 - */ - testcase TC_IMS_CALL_0016() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_imsA := f_cf_create_IotEquipmentUser("IMS A"); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + /** + * @desc Call failure due to de-registration of calling user during call + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.3 + */ + testcase TC_IMS_CALL_0016() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var IotEquipmentUser v_imsA := f_cf_create_IotEquipmentUser("IMS A"); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_imsA); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - f_mtc_imsTriggerUeDeregistration(v_imsA, v_ueA); //Test Sequence Step 7 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_user_up(v_imsA); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + f_mtc_imsTriggerUeDeregistration(v_imsA, v_ueA); //Test Sequence Step 7 //f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5139_01_ic(v_ic, false); // Check 1 + f_mtc_check_TP_IMS_5139_01_ic(v_ic, false); // Check 1 f_mtc_check_bye_mx(v_mxB); - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_imsA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0016 - - - /** - * @desc Subsequent target refresh request (INVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.4 - */ - testcase TC_IMS_CALL_0017() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_user_down(v_imsA); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0016 + + + /** + * @desc Subsequent target refresh request (INVITE) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.4 + */ + testcase TC_IMS_CALL_0017() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + + // test body + + // Test Sequence 1 ---------------------> + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + // Test Sequence 2 ---------------------> + f_mtc_userCheckRinging(v_ueB); + // Test Sequence 3 ---------------------> + f_mtc_userCheckPeerIsRinging(v_ueA); + // Test Sequence 4 ---------------------> + f_mtc_userAnswerCall(v_ueB); + // Test Sequence 5 ---------------------> + f_mtc_userCheckCallEstablished(v_ueA); + // Test Sequence 6 ---------------------> + f_mtc_userCheckCallEstablished(v_ueB); + // Test Sequence 7 ---------------------> + f_mtc_userTriggerHold(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); + + // Test Sequence 8 ---------------------> + f_mtc_userCheckUserOnHold(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 9 ---------------------> - f_mtc_userCheckUserOnHold(v_ueA); - // Test Sequence 10 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); + + // Test Sequence 9 ---------------------> + f_mtc_userCheckUserOnHold(v_ueA); + // Test Sequence 10 --------------------> + f_mtc_userTriggerResume(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 11 --------------------> + f_mtc_userCheckCallResumed(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - // Test Sequence 13 --------------------> - f_mtc_EndCall(v_ueA); - // Test Sequence 14 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - // Test Sequence 15 --------------------> - f_mtc_userCheckCallEnded(v_ueA); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Subsequent target refresh request (UPDATE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.5 - */ - testcase TC_IMS_CALL_0018() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + + // Test Sequence 12 --------------------> + f_mtc_userCheckCallResumed(v_ueA); + // Test Sequence 13 --------------------> + f_mtc_EndCall(v_ueA); + // Test Sequence 14 --------------------> + f_mtc_userCheckCallEnded(v_ueB ); + // Test Sequence 15 --------------------> + f_mtc_userCheckCallEnded(v_ueA); + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } + + + /** + * @desc Subsequent target refresh request (UPDATE) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.5 + */ + testcase TC_IMS_CALL_0018() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + + // test body + + // Test Sequence 1 ---------------------> + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + // Test Sequence 2 ---------------------> + f_mtc_userCheckRinging(v_ueB); + // Test Sequence 3 ---------------------> + f_mtc_userCheckPeerIsRinging(v_ueA); + // Test Sequence 4 ---------------------> + f_mtc_userAnswerCall(v_ueB); + // Test Sequence 5 ---------------------> + f_mtc_userCheckCallEstablished(v_ueA); + // Test Sequence 6 ---------------------> + f_mtc_userCheckCallEstablished(v_ueB); + // Test Sequence 7 ---------------------> + f_mtc_userTriggerHold(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_02_gm(v_gmA); f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); + f_mtc_check_TP_IMS_5106_02_ic(v_ic); f_mtc_check_update_mx(v_mxB); - - // Test Sequence 8 ---------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); + + // Test Sequence 8 ---------------------> + f_mtc_userCheckUserOnHold(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 9 ---------------------> - f_mtc_userCheckUserOnHold(v_ueA); - // Test Sequence 10 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); + + // Test Sequence 9 ---------------------> + f_mtc_userCheckUserOnHold(v_ueA); + // Test Sequence 10 --------------------> + f_mtc_userTriggerResume(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_02_gm(v_gmA); f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); + f_mtc_check_TP_IMS_5106_02_ic(v_ic); f_mtc_check_update_mx(v_mxB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 11 --------------------> + f_mtc_userCheckCallResumed(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - // Test Sequence 13 --------------------> - f_mtc_EndCall(v_ueA); - // Test Sequence 14 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - // Test Sequence 15 --------------------> - f_mtc_userCheckCallEnded(v_ueA); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Addition of media streams (reINVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.6 - */ - testcase TC_IMS_CALL_0019() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + + // Test Sequence 12 --------------------> + f_mtc_userCheckCallResumed(v_ueA); + // Test Sequence 13 --------------------> + f_mtc_EndCall(v_ueA); + // Test Sequence 14 --------------------> + f_mtc_userCheckCallEnded(v_ueB ); + // Test Sequence 15 --------------------> + f_mtc_userCheckCallEnded(v_ueA); + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } + + + /** + * @desc Addition of media streams (reINVITE) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.6 + */ + testcase TC_IMS_CALL_0019() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + + // test body + + // Test Sequence 1 ---------------------> + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + // Test Sequence 2 ---------------------> + f_mtc_userCheckRinging(v_ueB); + // Test Sequence 3 ---------------------> + f_mtc_userCheckPeerIsRinging(v_ueA); + // Test Sequence 4 ---------------------> + f_mtc_userAnswerCall(v_ueB); + // Test Sequence 5 ---------------------> + f_mtc_userCheckCallEstablished(v_ueA); + // Test Sequence 6 ---------------------> + f_mtc_userCheckCallEstablished(v_ueB); + // Test Sequence 7 ---------------------> + f_mtc_userAddNewMediaStream(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); + + // Test Sequence 8 ---------------------> + // optional + // Test Sequence 9 ---------------------> + // optional + + // Test Sequence 10 --------------------> + f_mtc_userCheckNewMediaStream(v_ueB); + + // Test Sequence 11 --------------------> + f_mtc_userCheckNewMediaStream(v_ueA); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_EndCall(v_ueA); - // Test Sequence 13 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 12 --------------------> + f_mtc_EndCall(v_ueA); + // Test Sequence 13 --------------------> + f_mtc_userCheckCallEnded(v_ueB ); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 14 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Addition of media streams (reINVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.7 - */ - testcase TC_IMS_CALL_0020() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + + // Test Sequence 14 --------------------> + f_mtc_userCheckCallEnded(v_ueA ); + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } + + + /** + * @desc Addition of media streams (reINVITE) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.7 + */ + testcase TC_IMS_CALL_0020() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + + // test body + + // Test Sequence 1 ---------------------> + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + // Test Sequence 2 ---------------------> + f_mtc_userCheckRinging(v_ueB); + // Test Sequence 3 ---------------------> + f_mtc_userCheckPeerIsRinging(v_ueA); + // Test Sequence 4 ---------------------> + f_mtc_userAnswerCall(v_ueB); + // Test Sequence 5 ---------------------> + f_mtc_userCheckCallEstablished(v_ueA); + // Test Sequence 6 ---------------------> + f_mtc_userCheckCallEstablished(v_ueB); + // Test Sequence 7 ---------------------> + f_mtc_userAddNewMediaStream(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); + + // Test Sequence 8 ---------------------> + // optional + // Test Sequence 9 ---------------------> + // optional + + // Test Sequence 10 --------------------> + f_mtc_userCheckNewMediaStream(v_ueB); + + // Test Sequence 11 --------------------> + f_mtc_userCheckNewMediaStream(v_ueA); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userModifiyMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); + + // Test Sequence 12 --------------------> + f_mtc_userModifiyMediaStream(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 13 --------------------> - // optional - // Test Sequence 14 --------------------> - // optional - - // Test Sequence 15 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 13 --------------------> + // optional + // Test Sequence 14 --------------------> + // optional + + // Test Sequence 15 --------------------> + f_mtc_userCheckNewMediaStream(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 16 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // Test Sequence 17 --------------------> - f_mtc_EndCall(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 16 --------------------> + f_mtc_userCheckNewMediaStream(v_ueA); + + // Test Sequence 17 --------------------> + f_mtc_EndCall(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 18 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // Test Sequence 19 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Hold/resume media streams (reINVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.8 - */ - testcase TC_IMS_CALL_0021() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + + // Test Sequence 18 --------------------> + f_mtc_userCheckCallEnded(v_ueA ); + + // Test Sequence 19 --------------------> + f_mtc_userCheckCallEnded(v_ueB ); + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } + + + /** + * @desc Hold/resume media streams (reINVITE) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.8 + */ + testcase TC_IMS_CALL_0021() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + + // test body + + // Test Sequence 1 ---------------------> + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + // Test Sequence 2 ---------------------> + f_mtc_userCheckRinging(v_ueB); + // Test Sequence 3 ---------------------> + f_mtc_userCheckPeerIsRinging(v_ueA); + // Test Sequence 4 ---------------------> + f_mtc_userAnswerCall(v_ueB); + // Test Sequence 5 ---------------------> + f_mtc_userCheckCallEstablished(v_ueA); + // Test Sequence 6 ---------------------> + f_mtc_userCheckCallEstablished(v_ueB); + // Test Sequence 7 ---------------------> + f_mtc_userAddNewMediaStream(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); + + // Test Sequence 8 ---------------------> + // optional + // Test Sequence 9 ---------------------> + // optional + + // Test Sequence 10 --------------------> + f_mtc_userCheckNewMediaStream(v_ueB); + + // Test Sequence 11 --------------------> + f_mtc_userCheckNewMediaStream(v_ueA); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); + + // Test Sequence 12 --------------------> + f_mtc_userTriggerHold(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 13 --------------------> - f_mtc_userCheckUserOnHold(v_ueA); - - // Test Sequence 14 --------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 13 --------------------> + f_mtc_userCheckUserOnHold(v_ueA); + + // Test Sequence 14 --------------------> + f_mtc_userCheckUserOnHold(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 15 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); + + // Test Sequence 15 --------------------> + f_mtc_userTriggerResume(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 16 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 16 --------------------> + f_mtc_userCheckCallResumed(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 17 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - - // Test Sequence 18 --------------------> - f_mtc_userRemoveMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); - - // Test Sequence 19 --------------------> - f_mtc_userCheckRemoveMediaStream(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - - // Test Sequence 20 --------------------> - // optional - - // Test Sequence 21 --------------------> - f_mtc_EndCall(v_ueB); - - // Test Sequence 22 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // Test Sequence 23 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Hold/resume media streams (UPDATE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.9 - */ - testcase TC_IMS_CALL_0022() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + + // Test Sequence 17 --------------------> + f_mtc_userCheckCallResumed(v_ueA); + + // Test Sequence 18 --------------------> + f_mtc_userRemoveMediaStream(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); + f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); + + // Test Sequence 19 --------------------> + f_mtc_userCheckRemoveMediaStream(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + + // Test Sequence 20 --------------------> + // optional + + // Test Sequence 21 --------------------> + f_mtc_EndCall(v_ueB); + + // Test Sequence 22 --------------------> + f_mtc_userCheckCallEnded(v_ueA ); + + // Test Sequence 23 --------------------> + f_mtc_userCheckCallEnded(v_ueB ); + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } + + + /** + * @desc Hold/resume media streams (UPDATE) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.9 + */ + testcase TC_IMS_CALL_0022() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + + // test body + + // Test Sequence 1 ---------------------> + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + // Test Sequence 2 ---------------------> + f_mtc_userCheckRinging(v_ueB); + // Test Sequence 3 ---------------------> + f_mtc_userCheckPeerIsRinging(v_ueA); + // Test Sequence 4 ---------------------> + f_mtc_userAnswerCall(v_ueB); + // Test Sequence 5 ---------------------> + f_mtc_userCheckCallEstablished(v_ueA); + // Test Sequence 6 ---------------------> + f_mtc_userCheckCallEstablished(v_ueB); + // Test Sequence 7 ---------------------> + f_mtc_userAddNewMediaStream(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_02_gm(v_gmA); f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); + f_mtc_check_TP_IMS_5106_02_ic(v_ic); f_mtc_check_update_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); + + // Test Sequence 8 ---------------------> + // optional + // Test Sequence 9 ---------------------> + // optional + + // Test Sequence 10 --------------------> + f_mtc_userCheckNewMediaStream(v_ueB); + + // Test Sequence 11 --------------------> + f_mtc_userCheckNewMediaStream(v_ueA); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); + + // Test Sequence 12 --------------------> + f_mtc_userTriggerHold(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_02_gm(v_gmA); f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); + f_mtc_check_TP_IMS_5106_02_ic(v_ic); f_mtc_check_update_mx(v_mxB); - - // Test Sequence 13 --------------------> - f_mtc_userCheckUserOnHold(v_ueA); - - // Test Sequence 14 --------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 13 --------------------> + f_mtc_userCheckUserOnHold(v_ueA); + + // Test Sequence 14 --------------------> + f_mtc_userCheckUserOnHold(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 15 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); + + // Test Sequence 15 --------------------> + f_mtc_userTriggerResume(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_02_gm(v_gmA); f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); + f_mtc_check_TP_IMS_5106_02_ic(v_ic); f_mtc_check_update_mx(v_mxB); - - // Test Sequence 16 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 16 --------------------> + f_mtc_userCheckCallResumed(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 17 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - - // Test Sequence 18 --------------------> - f_mtc_userRemoveMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); + + // Test Sequence 17 --------------------> + f_mtc_userCheckCallResumed(v_ueA); + + // Test Sequence 18 --------------------> + f_mtc_userRemoveMediaStream(v_ueA); + + // check 1 + f_mtc_check_TP_IMS_5106_02_gm(v_gmA); f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); + f_mtc_check_TP_IMS_5106_02_ic(v_ic); f_mtc_check_update_mx(v_mxB); - - // Test Sequence 19 --------------------> - f_mtc_userCheckRemoveMediaStream(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); + + // Test Sequence 19 --------------------> + f_mtc_userCheckRemoveMediaStream(v_ueB); + + // check 2 + f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); + f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 20 --------------------> - // optional - - // Test Sequence 21 --------------------> - f_mtc_EndCall(v_ueB); - - // Test Sequence 22 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // Test Sequence 23 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Normal call - TH(Topology hiding) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.1 - */ - testcase TC_IMS_CALL_0024() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // Test Sequence 20 --------------------> + // optional + + // Test Sequence 21 --------------------> + f_mtc_EndCall(v_ueB); + + // Test Sequence 22 --------------------> + f_mtc_userCheckCallEnded(v_ueA ); + + // Test Sequence 23 --------------------> + f_mtc_userCheckCallEnded(v_ueB ); + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } + + + /** + * @desc Normal call - TH(Topology hiding) + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.1 + */ + testcase TC_IMS_CALL_0024() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - //check 1,2,3,6 (INVITE and 100Trying) + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + + //check 1,2,3,6 (INVITE and 100Trying) f_mtc_check_TP_IMS_5135_01_gm(v_gmA, true); // Check1 - INVITE f_mtc_check_TP_IMS_5404_01_gm(v_gmA, false); // Check3 - INVITE // f_mtc_check_response_mx(v_mxA, c_statusLine100); - f_mtc_check_TP_IMS_5135_01_ic(v_ic, true); // Check1 - INVITE - f_mtc_check_TP_IMS_5137_01_ic(v_ic, true); // Check2 - INVITE - f_mtc_check_TP_IMS_5404_01_ic(v_ic, true); // Check3 - INVITE - f_mtc_check_TP_IMS_5414_01_ic(v_ic, false); // Check6 - INVITE and 100Trying - f_mtc_check_response_mx(v_mxB, c_statusLine100); - - //check 7 (180 Ringing) + f_mtc_check_TP_IMS_5135_01_ic(v_ic, true); // Check1 - INVITE + f_mtc_check_TP_IMS_5137_01_ic(v_ic, true); // Check2 - INVITE + f_mtc_check_TP_IMS_5404_01_ic(v_ic, true); // Check3 - INVITE + f_mtc_check_TP_IMS_5414_01_ic(v_ic, false); // Check6 - INVITE and 100Trying + f_mtc_check_response_mx(v_mxB, c_statusLine100); + + //check 7 (180 Ringing) - f_mtc_check_TP_IMS_5137_02_gm(v_gmB, false); // Check 7 + f_mtc_check_TP_IMS_5137_02_gm(v_gmB, false); // Check 7 f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5137_02_ic(v_ic, false); // Check 7 + f_mtc_check_TP_IMS_5137_02_ic(v_ic, false); // Check 7 f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - //check 8 (2xx) + //check 8 (2xx) - f_mtc_check_TP_IMS_5137_03_gm(v_gmB, false); // Check 8 + f_mtc_check_TP_IMS_5137_03_gm(v_gmB, false); // Check 8 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5137_03_ic(v_ic, false); // Check 8 + f_mtc_check_TP_IMS_5137_03_ic(v_ic, false); // Check 8 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - // check 4 (ACK) - f_mtc_check_TP_IMS_5408_01_gm(v_gmA, false); // Check4 + // check 4 (ACK) + f_mtc_check_TP_IMS_5408_01_gm(v_gmA, false); // Check4 f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5408_01_ic(v_ic, false); // Check4 + f_mtc_check_TP_IMS_5408_01_ic(v_ic, false); // Check4 f_mtc_check_ack_mx(v_mxB); - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 + f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - // check 5 (BYE) - f_mtc_check_TP_IMS_5408_03_gm(v_gmA, false); // Check4 + // check 5 (BYE) + f_mtc_check_TP_IMS_5408_03_gm(v_gmA, false); // Check4 f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5408_03_ic(v_ic, false); // Check4 + f_mtc_check_TP_IMS_5408_03_ic(v_ic, false); // Check4 f_mtc_check_bye_mx(v_mxB); - - //check 8 (2xx) + + //check 8 (2xx) - f_mtc_check_TP_IMS_5137_03_gm(v_gmB, false); // Check 8 + f_mtc_check_TP_IMS_5137_03_gm(v_gmB, false); // Check 8 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5137_03_ic(v_ic, false); // Check 8 + f_mtc_check_TP_IMS_5137_03_ic(v_ic, false); // Check 8 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_call_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0024 - - /** - * @desc CANCEL call by calling user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.2 - */ - testcase TC_IMS_CALL_0025() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_call_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0024 + + /** + * @desc CANCEL call by calling user + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.2 + */ + testcase TC_IMS_CALL_0025() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userTriggerCancelCall (v_ueA); //Test Sequence Step 4 - - //Check1 CANCEL - f_mtc_check_TP_IMS_5408_02_gm(v_gmA, false); // Check1 + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userTriggerCancelCall (v_ueA); //Test Sequence Step 4 + + //Check1 CANCEL + f_mtc_check_TP_IMS_5408_02_gm(v_gmA, false); // Check1 f_mtc_check_cancel_mx(v_mxA); - f_mtc_check_TP_IMS_5408_02_ic(v_ic, false); // Check1 - f_mtc_check_cancel_mx(v_mxB); - - f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallTerminated(v_ueA); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_call_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0025 - - - /** - * @desc Normal call with hold/resume - roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.3 - */ - testcase TC_IMS_CALL_0026() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + f_mtc_check_TP_IMS_5408_02_ic(v_ic, false); // Check1 + f_mtc_check_cancel_mx(v_mxB); + + f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 + f_mtc_userCheckCallTerminated(v_ueA); //Test Sequence Step 6 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_call_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_CALL_0025 + + + /** + * @desc Normal call with hold/resume - roaming + * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.3 + */ + testcase TC_IMS_CALL_0026() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 + + // map/connect component ports + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 + f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 + f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 - // check 1 (INVITE) - f_mtc_check_TP_IMS_5408_04_gm(v_gmA, false,1); // Check1 + // check 1 (INVITE) + f_mtc_check_TP_IMS_5408_04_gm(v_gmA, false,1); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5408_04_ic(v_ic, false,2); // Check1 + f_mtc_check_TP_IMS_5408_04_ic(v_ic, false,2); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5408_04_gm(v_gmA, false,0); // Check1 + + f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 + f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 + + f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 + + // check 1 (INVITE) + f_mtc_check_TP_IMS_5408_04_gm(v_gmA, false,0); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5408_04_ic(v_ic, false,1); // Check1 + f_mtc_check_TP_IMS_5408_04_ic(v_ic, false,1); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 + + f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 + f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 + f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - } //end testcase TC_IMS_CALL_0026 - + f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 + f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); + } //end testcase TC_IMS_CALL_0026 + } \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn index 31c5233..140b40c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn @@ -1,66 +1,70 @@ /** - * @author STF 435 - * @version $Id: $ - * @desc This module provides ATS specific ENUM test case. + * @author STF 435 + * @version $Id: $ + * @desc This module provides ATS specific ENUM test case. */ module AtsImsIot_TestCases_ENUM { - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B; } - import from LibIms_UpperTester { type ImsUserInfo; } - import from LibSip_SIPTypesAndValues { const c_statusLine100, c_statusLine180, c_statusLine200; } - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } - import from LibIot_TestInterface { type IotEquipmentUser; } - import from AtsImsIot_TestSystem { type CF_INT_CALL, ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } - import from AtsImsIot_TestConfiguration { const all; function all; } - import from AtsImsIot_Functions { function all; } - import from AtsImsIot_Behavior { function all; } - - - /** - * @desc ENUM query should result in return of NAPTR with correct SIP URI - */ - testcase TC_IMS_ENUM_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_CALL v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var ImsUserInfo v_userTelInfoB := f_getTelUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + // LibSip + import from LibIms_UpperTester all; + import from LibSip_SIPTypesAndValues all; + // LibIot + import from LibIot_TestConfiguration all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // AtsImsIot + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_Behavior all; // TODO To be removed + import from AtsImsIot_TestSystem all; + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_Functions all; + + + /** + * @desc ENUM query should result in return of NAPTR with correct SIP URI + */ + testcase TC_IMS_ENUM_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { + var CF_INT_CALL v_config; + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); + var ImsUserInfo v_userTelInfoB := f_getTelUserId ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.naptr := f_cf_create_monitor ( c_naptr ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_int_call_up ( v_config ); - - // preamble - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_userInitiateCall ( v_ueA, v_userTelInfoB ); // UE A invite UE B by using Tel number - - // check 1 (INVITE + ENUM db exchange) - f_mtc_check_TP_IMS_ENUM_01 ( v_config.gmA, v_config.naptr ); - // check 2 (INVITE arrived at gmB) - f_mtc_check_TP_IMS_5097_01_gm ( v_config.gmB, false ); + // create components + v_config.gmA := f_cf_create_monitor ( c_gm_A ); + v_config.gmB := f_cf_create_monitor ( c_gm_B ); + v_config.ici := f_cf_create_monitor ( c_ic ); + v_config.mxA := f_cf_create_monitor ( c_mx_A ); + v_config.mxB := f_cf_create_monitor ( c_mx_B ); + v_config.naptr := f_cf_create_monitor ( c_naptr ); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_int_call_up ( v_config ); + + // preamble + f_mtc_userRegistration ( v_ueA, v_userInfoA ); + f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // test body + f_mtc_userInitiateCall ( v_ueA, v_userTelInfoB ); // UE A invite UE B by using Tel number + + // check 1 (INVITE + ENUM db exchange) + f_mtc_check_TP_IMS_ENUM_01 ( v_config.gmA, v_config.naptr ); + // check 2 (INVITE arrived at gmB) + f_mtc_check_TP_GM_PCSCF_INVITE_01 ( v_config.gmB, false ); - // postamble - f_PO_user_home_deregistration ( v_ueA ); - f_PO_user_home_deregistration ( v_ueB ); - f_cf_int_call_down ( v_config ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueA ); - f_cf_user_down ( v_ueB ); - f_cf_adapter_down ( ); - } + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_PO_user_home_deregistration ( v_ueB ); + f_cf_int_call_down ( v_config ); + + //unmap/disconnet component ports + f_cf_user_down ( v_ueA ); + f_cf_user_down ( v_ueB ); + f_cf_adapter_down ( ); + } } \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn index 54c3e0a..6d76bef 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn @@ -1,378 +1,383 @@ /** - * @author STF 370 + * @author STF 370 * @version $Id: $ - * @desc This module provides ATS specific test case definitions. + * @desc This module provides ATS specific test case definitions. */ module AtsImsIot_TestCases_MESS { - - import from AtsImsIot_Behavior {function all;} - import from AtsImsIot_Functions {function all;} - import from LibSip_SIPTypesAndValues {const c_statusLine200;} - import from LibCommon_VerdictControl {type FncRetCode;} - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } - import from AtsImsIot_TestConfiguration { const all; function all; } - import from LibIot_TestInterface { type IotEquipmentUser; } - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } - import from AtsImsIot_TestSystem { type CF_INT_CALL; } - import from AtsImsIot_Templates all; - import from AtsImsIot_TypesAndValues { type NAPTRmessage, EnumResponse, EnumQuery; } - - /** - * @desc - * IMS network shall support SIP messages greater than 1500 bytes. - * (in ETSI TS 186 011-2 V3.1.1 Clause 4.5.1.1) - */ - testcase TC_IMS_MESS_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + // LibCommon + import from LibCommon_VerdictControl all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibIms_UpperTester all; + // LibIot + import from LibIot_TestConfiguration all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // AtsImsIot + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_Behavior all; // FIXME To be removed + import from AtsImsIot_Functions all; + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + + /** + * @desc IMS network shall support SIP messages greater than 1500 bytes. + * + */ + testcase TC_VxLTE_INT_MESSAGE_01() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); +// var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // preamble - f_cf_int_call_up(v_config); - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - log("**** TC_IMS_MESS_0001: Preamble done. ****"); - - // test body - f_mtc_userSendMessage(v_ueA, f_getMessageBody(1301)); - f_mtc_check_TP_IMS_4002_01_gm(v_gmA); + var CF_INT_CALL v_config := {v_gmA, v_mxA, omit, v_mxB, omit, omit}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // preamble + f_cf_int_call_up(v_config); + f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); + f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); + log("**** TC_VxLTE_INT_MESSAGE_01: Preamble done. ****"); + + // test body + f_mtc_userSendMessage(v_ueA, f_getMessageBody(1301)); + f_mtc_check_TP_GM_PCSCF_MESSAGE_01(v_gmA); f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_4002_01_ic(v_ic); +// f_mtc_check_TP_IMS_4002_01_ic(v_ic); f_mtc_check_message_mx(v_mxB); - f_mtc_userCheckMessageReceipt(v_ueB); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - log("**** TC_IMS_MESS_0001: Postamble done. ****"); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - - - /** - * @desc - * IMS network handles messaging with SIP identity correctly without - * topology hiding. (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.1) - */ - testcase TC_IMS_MESS_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + f_mtc_userCheckMessageReceipt(v_ueB); + + // postabmle + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + log("**** TC_IMS_MESS_0001: Postamble done. ****"); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } + + + + /** + * @desc + * IMS network handles messaging with SIP identity correctly without + * topology hiding. (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.1) + */ + testcase TC_IMS_MESS_0002() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getSipUserId(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5097_05_gm(v_gmA, false); // message not removed from port queue - //f_mtc_check_TP_IMS_5097_07_gm(v_gmA, false); // message removed from port queue + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA, f_getSipUserId(PX_EUT_A)); + f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); + + // test body + f_mtc_userSendMessage(v_ueA, "test"); + + f_mtc_check_TP_IMS_5097_05_gm(v_gmA, false); // message not removed from port queue + //f_mtc_check_TP_IMS_5097_07_gm(v_gmA, false); // message removed from port queue f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5097_05_ic(v_ic, false);// message not removed from port queue - //f_mtc_check_TP_IMS_5097_07_ic(v_ic, false);// message removed from port queue + f_mtc_check_TP_IMS_5097_05_ic(v_ic, false);// message not removed from port queue + //f_mtc_check_TP_IMS_5097_07_ic(v_ic, false);// message removed from port queue f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5117_02_gm(v_gmB, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_gm(v_gmB, false);// message removed from port queue + + f_mtc_userCheckMessageReceipt(v_ueB); + + f_mtc_check_TP_IMS_5117_02_gm(v_gmB, true);// message not removed from port queue + f_mtc_check_TP_IMS_5118_01_gm(v_gmB, false);// message removed from port queue f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5117_02_ic(v_ic, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_ic(v_ic, false);// message removed from port queue + f_mtc_check_TP_IMS_5117_02_ic(v_ic, true);// message not removed from port queue + f_mtc_check_TP_IMS_5118_01_ic(v_ic, false);// message removed from port queue f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - - /** - * @desc - * IMS network handles messaging with TEL URI identities correctly - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.2) - */ - testcase TC_IMS_MESS_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + // postabmle + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } + + + /** + * @desc + * IMS network handles messaging with TEL URI identities correctly + * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.2) + */ + testcase TC_IMS_MESS_0003() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getTelUserId(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getTelUserId(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5097_07_gm(v_gmA, false); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA, f_getTelUserId(PX_EUT_A)); + f_PR_user_home_registration(v_ueB, f_getTelUserId(PX_EUT_B)); + + // test body + f_mtc_userSendMessage(v_ueA, "test"); + + f_mtc_check_TP_IMS_5097_07_gm(v_gmA, false); f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5097_07_ic(v_ic, false); + f_mtc_check_TP_IMS_5097_07_ic(v_ic, false); f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5117_02_gm(v_gmB, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_gm(v_gmB, true);// message not removed from port queue - f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false);// message removed from port queue + + f_mtc_userCheckMessageReceipt(v_ueB); + + f_mtc_check_TP_IMS_5117_02_gm(v_gmB, true);// message not removed from port queue + f_mtc_check_TP_IMS_5118_01_gm(v_gmB, true);// message not removed from port queue + f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false);// message removed from port queue f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5117_02_ic(v_ic, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_ic(v_ic, true);// message not removed from port queue - f_mtc_check_TP_IMS_5117_06_ic(v_ic, false);// message removed from port queue + f_mtc_check_TP_IMS_5117_02_ic(v_ic, true);// message not removed from port queue + f_mtc_check_TP_IMS_5118_01_ic(v_ic, true);// message not removed from port queue + f_mtc_check_TP_IMS_5117_06_ic(v_ic, false);// message removed from port queue f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - /** - * @desc - * IMS network handles messaging with DNS/ENUM lookup procedure correctly - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.3) - */ - testcase TC_IMS_MESS_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var EnumQuery v_enumQuery; - var EnumResponse v_enumResponse; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + // postabmle + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } + + /** + * @desc + * IMS network handles messaging with DNS/ENUM lookup procedure correctly + * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.3) + */ + testcase TC_IMS_MESS_0004() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var EnumQuery v_enumQuery; + var EnumResponse v_enumResponse; + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - v_config.naptr := f_cf_create_monitor ( c_naptr ); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getTelUserId(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getTelUserId(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5097_08_gm(v_gmA, false); - v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( v_config.naptr ); // ENUM query - //TODO check ENUM query message as described in the spec. - v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( v_config.naptr ); // ENUM response - //TODO check ENUM response message as described in the spec. + v_config.naptr := f_cf_create_monitor ( c_naptr ); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA, f_getTelUserId(PX_EUT_A)); + f_PR_user_home_registration(v_ueB, f_getTelUserId(PX_EUT_B)); + + // test body + f_mtc_userSendMessage(v_ueA, "test"); + + f_mtc_check_TP_IMS_5097_08_gm(v_gmA, false); + v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( v_config.naptr ); // ENUM query + //TODO check ENUM query message as described in the spec. + v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( v_config.naptr ); // ENUM response + //TODO check ENUM response message as described in the spec. f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5097_08_ic(v_ic, false); + f_mtc_check_TP_IMS_5097_08_ic(v_ic, false); f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false); + + f_mtc_userCheckMessageReceipt(v_ueB); + + f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false); f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5117_06_ic(v_ic, false); + f_mtc_check_TP_IMS_5117_06_ic(v_ic, false); f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - /** - * @desc - * IMS network handles messaging while roaming correctly. - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.4) - */ - testcase TC_IMS_MESS_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + // postabmle + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } + + /** + * @desc + * IMS network handles messaging while roaming correctly. + * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.4) + */ + testcase TC_IMS_MESS_0005() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - f_PR_user_roaming_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); + + // preamble + f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); + f_PR_user_roaming_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); + + // test body + f_mtc_userSendMessage(v_ueA, "test"); f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5108_02_ic(v_ic); // TODO must be checked + f_mtc_check_TP_IMS_5108_02_ic(v_ic); // TODO must be checked f_mtc_check_message_mx(v_mxB); - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5118_01_gm(v_gmA, false); + f_mtc_userCheckMessageReceipt(v_ueB); + + f_mtc_check_TP_IMS_5118_01_gm(v_gmA, false); f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5118_01_ic(v_ic, false); + f_mtc_check_TP_IMS_5118_01_ic(v_ic, false); f_mtc_check_response_mx(v_mxB, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_roaming_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - /** - * @desc - * IMS network handles messaging correctly when receiving user is nit registered. - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.5) - */ - testcase TC_IMS_MESS_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + // postabmle + f_PO_user_home_deregistration(v_ueA); + f_PO_user_roaming_deregistration(v_ueB); + f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } + + /** + * @desc + * IMS network handles messaging correctly when receiving user is nit registered. + * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.5) + */ + testcase TC_IMS_MESS_0006() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5114_02_gm(v_gmA); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); + + // test body + f_mtc_userSendMessage(v_ueA, "test"); + + f_mtc_check_TP_IMS_5114_02_gm(v_gmA); f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5114_02_ic(v_ic); + f_mtc_check_TP_IMS_5114_02_ic(v_ic); f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageNotDelivered(v_ueA); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - } - - - /** - * @desc - * IMS network handles messaging correctly when receiving user is nit registered. - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.6) - */ - testcase TC_IMS_MESS_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + f_mtc_userCheckMessageNotDelivered(v_ueA); + + // postabmle + f_PO_user_home_deregistration(v_ueA); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_adapter_down(); + } + + + /** + * @desc + * IMS network handles messaging correctly when receiving user is nit registered. + * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.6) + */ + testcase TC_IMS_MESS_0007() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5108_06_gm(v_gmA); + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); + f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); + + // test body + f_mtc_userSendMessage(v_ueA, "test"); + + f_mtc_check_TP_IMS_5108_06_gm(v_gmA); f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5108_06_ic(v_ic); + f_mtc_check_TP_IMS_5108_06_ic(v_ic); f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageNotDelivered(v_ueA); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } + + f_mtc_userCheckMessageNotDelivered(v_ueA); + + // postabmle + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } } \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn index 45a801d..345576e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn @@ -1,65 +1,70 @@ /** - * @author STF 407 + * @author STF 407 * @version $Id: $ - * @desc This module provides ATS specific test case definitions. + * @desc This module provides ATS specific test case definitions. */ module AtsImsIot_TestCases_RCS { - import from AtsImsIot_Behavior { function all; } - import from AtsImsIot_TypesAndValues { type SipMessage; } - import from AtsImsIot_Functions { function all; } - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C, PX_EUT_D } - import from LibIms_UpperTester { type ImsUserInfo; } - import from LibSip_SIPTypesAndValues { const c_statusLine100, c_statusLine180, c_statusLine200, c_statusLine404, - c_statusLine480,c_statusLine603; } - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } - import from AtsImsIot_TestConfiguration { const all; function all; } - import from LibIot_TestInterface {type IotEquipmentUser;} - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface, CF_INT_AS, CF_ROAM_AS; } + + // LibSip + import from LibSip_SIPTypesAndValues all; + // LibIms + import from LibIms_UpperTester all; + // LibIot + import from LibIot_TestConfiguration all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // AtsImsIot + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_Behavior all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_TestSystem all; /** * @desc User A capabilities (RCS-e services Tags) */ - modulepar charstring PX_RCSE_A := ""; + modulepar charstring PX_RCSE_A := ""; /** * @desc User B capabilities (RCS-e services Tags) */ - modulepar charstring PX_RCSE_B := ""; + modulepar charstring PX_RCSE_B := ""; /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between two users in their home network can be performed. User B must be - * Registered. + * @desc IMS network supports capability discovery and OPTIONS messages exchange + * between two users in their home network can be performed. User B must be + * Registered. */ testcase TD_IMS_CAP_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var CF_INT_AS v_config; + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - + v_config.gmA := f_cf_create_monitor ( c_gm_A ); + v_config.gmB := f_cf_create_monitor ( c_gm_B ); + v_config.ici := f_cf_create_monitor ( c_ic ); + v_config.mxA := f_cf_create_monitor ( c_mx_A ); + v_config.mxB := f_cf_create_monitor ( c_mx_B ); + v_config.iscA := omit; + v_config.iscB := omit; + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_int_as_up ( v_config ); - + // preamble f_mtc_userRegistration ( v_ueA, v_userInfoA ); f_mtc_userRegistration ( v_ueB, v_userInfoB ); - + // test body f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - + // check (OPTIONS + 200 OK exchange) f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); f_mtc_check_response ( v_config.mxA, c_statusLine200, PX_RCSE_B ); @@ -67,7 +72,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration ( v_ueA ); f_PO_user_home_deregistration ( v_ueB ); - + //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_user_down ( v_ueB ); @@ -76,40 +81,40 @@ module AtsImsIot_TestCases_RCS { } /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between one user in its home network and another in visited network can be - * performed. User B must be Registered. + * @desc IMS network supports capability discovery and OPTIONS messages exchange + * between one user in its home network and another in visited network can be + * performed. User B must be Registered. */ testcase TD_IMS_CAP_0002 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_ROAM_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var CF_ROAM_AS v_config; + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - + v_config.gmA := f_cf_create_monitor ( c_gm_A ); + v_config.gmB := f_cf_create_monitor ( c_gm_B ); + v_config.ici := f_cf_create_monitor ( c_ic ); + v_config.mxA := f_cf_create_monitor ( c_mx_A ); + v_config.mxB := f_cf_create_monitor ( c_mx_B ); + v_config.iscA := omit; + v_config.iscB := omit; + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_roam_as_up ( v_config ); f_cf_roam_call_up ( v_config.gmA, v_config.mxA, v_config.ici, v_config.mxB ); - + // preamble f_mtc_userRegistration ( v_ueA, v_userInfoA ); f_mtc_userRegistration ( v_ueB, v_userInfoB ); - + // test body f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - + // check (OPTIONS + 200 OK exchange) f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); f_mtc_check_response ( v_config.mxA, c_statusLine200, PX_RCSE_B ); @@ -117,7 +122,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration ( v_ueA ); f_PO_user_home_deregistration ( v_ueB ); - + //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_user_down ( v_ueB ); @@ -126,38 +131,38 @@ module AtsImsIot_TestCases_RCS { } /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between two users in their home network can be performed. User B must be not - * Registered. + * @desc IMS network supports capability discovery and OPTIONS messages exchange + * between two users in their home network can be performed. User B must be not + * Registered. */ testcase TD_IMS_CAP_0003 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var CF_INT_AS v_config; + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - + v_config.gmA := f_cf_create_monitor ( c_gm_A ); + v_config.gmB := f_cf_create_monitor ( c_gm_B ); + v_config.ici := f_cf_create_monitor ( c_ic ); + v_config.mxA := f_cf_create_monitor ( c_mx_A ); + v_config.mxB := f_cf_create_monitor ( c_mx_B ); + v_config.iscA := omit; + v_config.iscB := omit; + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_int_as_up ( v_config ); - + // preamble f_mtc_userRegistration ( v_ueA, v_userInfoA ); - + // test body f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - + // check (OPTIONS + 480 exchange) f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); f_mtc_check_response_mx ( v_config.mxA, c_statusLine480 ); @@ -165,7 +170,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration ( v_ueA ); f_PO_user_home_deregistration ( v_ueB ); - + //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_user_down ( v_ueB ); @@ -174,40 +179,40 @@ module AtsImsIot_TestCases_RCS { } /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between two users in their home network can be performed. User B must be - * Registered. + * @desc IMS network supports capability discovery and OPTIONS messages exchange + * between two users in their home network can be performed. User B must be + * Registered. */ testcase TD_IMS_CAP_0004 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var CF_INT_AS v_config; + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - + v_config.gmA := f_cf_create_monitor ( c_gm_A ); + v_config.gmB := f_cf_create_monitor ( c_gm_B ); + v_config.ici := f_cf_create_monitor ( c_ic ); + v_config.mxA := f_cf_create_monitor ( c_mx_A ); + v_config.mxB := f_cf_create_monitor ( c_mx_B ); + v_config.iscA := omit; + v_config.iscB := omit; + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_int_as_up ( v_config ); - + // preamble f_mtc_userRegistration ( v_ueA, v_userInfoA ); f_mtc_userRegistration ( v_ueB, v_userInfoB ); - + // test body f_mtc_triggerUserCommand ( v_ueB, "Force user B to be not provisionned for RCS-e" ); // Trigger UE B f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - + // check (OPTIONS + 404 exchange) f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); f_mtc_check_response_mx ( v_config.mxA, c_statusLine404 ); @@ -215,7 +220,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration ( v_ueA ); f_PO_user_home_deregistration ( v_ueB ); - + //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_user_down ( v_ueB ); @@ -225,38 +230,38 @@ module AtsImsIot_TestCases_RCS { /** * @desc IMS network supports properly presence service when a watcher - * subscribes to presence information for a presentity that it’s - * located in a different network. + * subscribes to presence information for a presentity that it’s + * located in a different network. * @see TS 102 901-2 V2.1.2 clause 4.5.1.1 */ testcase TC_IMS_PRES_0001() runs on ImsTestCoordinator system IotSystemInterface { - var CF_ROAM_AS v_config; - var ImsUserInfo v_userInfoA := f_getPresUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getPresUser ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var CF_ROAM_AS v_config; + var ImsUserInfo v_userInfoA := f_getPresUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getPresUser ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := f_cf_create_monitor ( c_isc_B ); - + v_config.gmA := f_cf_create_monitor ( c_gm_A ); + v_config.gmB := f_cf_create_monitor ( c_gm_B ); + v_config.ici := f_cf_create_monitor ( c_ic ); + v_config.mxA := f_cf_create_monitor ( c_mx_A ); + v_config.mxB := f_cf_create_monitor ( c_mx_B ); + v_config.iscA := omit; + v_config.iscB := f_cf_create_monitor ( c_isc_B ); + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_roam_as_up ( v_config ); - + // preamble f_mtc_userRegistration ( v_ueA, v_userInfoA ); f_mtc_userRegistration ( v_ueB, v_userInfoB ); - + // test body - + // check - PUBLISH + 200 OK (from User B to IMS A that forwards it to AS B) f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); f_mtc_check_publish_mx ( v_config.mxB ); @@ -284,7 +289,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration ( v_ueA ); f_PO_user_home_deregistration ( v_ueB ); - + //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_user_down ( v_ueB ); @@ -292,11 +297,11 @@ module AtsImsIot_TestCases_RCS { f_cf_adapter_down ( ); } //end testcase TC_IMS_PRES_0001 - + /** * @desc IMS network supports properly presence service when a watcher subscribes - * to presence information for a presentity that it’s located in a different - * network. + * to presence information for a presentity that it’s located in a different + * network. * @see TS 102 901-2 V2.1.2 clause 4.5.1.2 */ testcase TC_IMS_PRES_0002() runs on ImsTestCoordinator system IotSystemInterface { @@ -313,17 +318,17 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); @@ -354,19 +359,19 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_PRES_0002 - + /** * @desc IMS network supports properly presence service when a watcher subscribes - * to presence information for a presentity that it’s located in a different - * network and does not authorize the watcher to be informed of his presence - * information. + * to presence information for a presentity that it’s located in a different + * network and does not authorize the watcher to be informed of his presence + * information. * @see TS 102 901-2 V2.1.2 clause 4.5.1.3 */ testcase TC_IMS_PRES_0003() runs on ImsTestCoordinator system IotSystemInterface { @@ -382,25 +387,25 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); + f_mtc_StartAllTrafficCapture(); // check (OPTIONS + 200 OK exchange) f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B f_mtc_check_options ( v_mxB, PX_RCSE_A ); f_mtc_check_response ( v_mxA, c_statusLine200, PX_RCSE_B ); - + f_mtc_userSubscribeToPresenceInformation(v_ueA);//Test Sequence Step 1 //check 1 - SUBSCRIBE @@ -414,18 +419,18 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_PRES_0003 - + /** * @desc IMS network supports properly presence service when a watcher subscribes - * to a resource list containing one or more presentities located in - * different networks. + * to a resource list containing one or more presentities located in + * different networks. * @see TS 102 901-2 V2.1.2 clause 4.5.1.4 */ testcase TC_IMS_PRES_0004() runs on ImsTestCoordinator system IotSystemInterface { @@ -441,20 +446,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); - + //check 1 - PUBLISH f_mtc_check_publish_mx(v_mxA); f_mtc_check_TP_IMS_5097_13_ic(v_ic, false); // Check1 @@ -487,18 +492,18 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_PRES_0004 - + /** * @desc IMS network supports properly presence service when a watcher subscribes - * to a resource list containing one or more presentities located in - * different networks. + * to a resource list containing one or more presentities located in + * different networks. * @see TS 102 901-2 V2.1.2 clause 4.5.1.5 */ testcase TC_IMS_PRES_0005() runs on ImsTestCoordinator system IotSystemInterface { @@ -515,17 +520,17 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); @@ -550,14 +555,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_PRES_0005 - + /** * @desc 1-to-1 chat standard procedure - interworking * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users in their home network can be performed. @@ -593,12 +598,12 @@ module AtsImsIot_TestCases_RCS { f_mtc_userRegistration(v_ueB, v_userInfoB); // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChat (v_ueA, v_userInfoB); //Test Sequence Step 1 // check 1,2 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, true); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true); // Check1 v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 @@ -624,7 +629,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - + f_mtc_userCheckChatInfo(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerChatInfo(v_ueA); //Test Sequence Step 3 f_mtc_userAnswerChat(v_ueB); //Test Sequence Step 4 @@ -647,14 +652,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0001 - + /** * @desc 1-to-1 chat standard procedure - roaming. * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. @@ -683,16 +688,16 @@ module AtsImsIot_TestCases_RCS { f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - + // check 1,2,3 (INVITE) f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 f_mtc_check_TP_IMS_5067_01_gm(v_gmA, true); // Check2 @@ -722,7 +727,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - + f_mtc_userCheckChatInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatInfo(v_ueB); //Test Sequence Step 3 f_mtc_userAnswerChat(v_ueA); //Test Sequence Step 4 @@ -739,14 +744,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0002 - + /** * @desc Several messages prior to establishment of 1-to-1 chat - interworking * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users in their home network can be performed. User B must wait until receiving several messages from User A before accepting the chat invitation. @@ -774,18 +779,18 @@ module AtsImsIot_TestCases_RCS { f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - + // check 1,2 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, true); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true); // Check1 v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 @@ -811,7 +816,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - + f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 // checks 3 (2xx) @@ -833,14 +838,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0003 - + /** * @desc Several messages prior to establishment of 1-to-1 chat - roaming (optional). * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. User B must wait until receiving several messages from User A before accepting the chat invitation @@ -869,16 +874,16 @@ module AtsImsIot_TestCases_RCS { f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - + // check 1,2,3 (INVITE) f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 f_mtc_check_TP_IMS_5067_01_gm(v_gmA, true); // Check2 @@ -908,7 +913,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - + f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 f_mtc_userCheckChating(v_ueB,v_ueA); //Test Sequence Step 3 @@ -923,18 +928,18 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0004 - + /** * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users in their home network can be performed. - * User B rejects the chat invitation. + * exchange between two users in their home network can be performed. + * User B rejects the chat invitation. * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.5 */ testcase TC_IMS_CHAT_0005_RemovedInRel_e ( ) runs on ImsTestCoordinator system IotSystemInterface { @@ -951,31 +956,31 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - + // check 1 (INVITE) f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 1 f_mtc_check_invite_mx(v_mxB); f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 1 - + f_mtc_userCheckChatInfo(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerChatInfo(v_ueA); //Test Sequence Step 3 - f_mtc_userCheckChatRejected(v_ueB); //Test Sequence Step 4 + f_mtc_userCheckChatRejected(v_ueB); //Test Sequence Step 4 // check 2 (ACK) f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check 1 @@ -989,18 +994,18 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0005 - + /** * @desc IMS network supports instant messaging (IM) service and messages exchange - * between two users, one user in its home network and one user roaming can - * be performed. User B rejects the chat invitation. + * between two users, one user in its home network and one user roaming can + * be performed. User B rejects the chat invitation. * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.6 */ testcase TC_IMS_CHAT_0006_RemovedInRel_e ( ) runs on ImsTestCoordinator system IotSystemInterface { @@ -1017,28 +1022,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - + // check 1 (INVITE) f_mtc_check_TP_IMS_5097_09_ic(v_ic, false); // Check1 f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false); // Check1 f_mtc_check_invite_mx(v_mxB); - + f_mtc_userCheckChatInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatInfo(v_ueB); //Test Sequence Step 3 f_mtc_userCheckChatRejected(v_ueA); //Test Sequence Step 4 @@ -1049,18 +1054,18 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0006 - + /** * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users in their home network can be performed. - * User B rejects the chat invitation. + * exchange between two users in their home network can be performed. + * User B rejects the chat invitation. * MSC was Fully changed in RCS-e * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.7 */ @@ -1078,46 +1083,46 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_StartAllTrafficCapture(); - + f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - + f_mtc_userCheckChatInfo(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerChatInfo(v_ueA); //Test Sequence Step 3 - f_mtc_userInformedNoAnswer(v_ueA); //Test Sequence Step 5 + f_mtc_userInformedNoAnswer(v_ueA); //Test Sequence Step 5 // check 1 (CANCEL) f_mtc_check_TP_IMS_5107_03_gm(v_gmA, false); // Check 1 f_mtc_check_cancel_mx(v_mxA); f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check 1 f_mtc_check_cancel_mx(v_mxB); - + f_mtc_userCheckChatCancelled(v_ueB); //Test Sequence Step 6 f_mtc_userCheckChatTerminated(v_ueA); //Test Sequence Step 7 // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0007_Rcs_2 - + /** * @desc Switching to 1-to-many chat - interworking. * IMS network supports 1-to-many IM/Chat service and messages exchange between two users in their home network can be performed. @@ -1226,12 +1231,12 @@ module AtsImsIot_TestCases_RCS { f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0007 - + } //end testcase TC_IMS_CHAT_0007 + /** * @desc IMS network supports instant messaging (IM) service and messages exchange - * between two users, one user in its home network and one user roaming can - * be performed. User B rejects the chat invitation. + * between two users, one user in its home network and one user roaming can + * be performed. User B rejects the chat invitation. * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.8 */ testcase TC_IMS_CHAT_0008_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -1248,39 +1253,39 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_StartAllTrafficCapture(); - + f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - + f_mtc_userCheckChatInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userInformedNoAnswer(v_ueB); //Test Sequence Step 5 + f_mtc_userInformedNoAnswer(v_ueB); //Test Sequence Step 5 // check 1 (CANCEL) f_mtc_check_TP_IMS_5107_03_gm(v_gmA, false); // Check 1 f_mtc_check_cancel_mx(v_mxA); f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check 1 f_mtc_check_cancel_mx(v_mxB); - + f_mtc_userCheckChatCancelled(v_ueA); //Test Sequence Step 6 f_mtc_userCheckChatTerminated(v_ueB); //Test Sequence Step 7 // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -1397,11 +1402,11 @@ module AtsImsIot_TestCases_RCS { f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0008 - + /** * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users in their home network can be performed. - * User B must explicitly accept the chat invitation + * exchange between two users in their home network can be performed. + * User B must explicitly accept the chat invitation * @see TS 102 901-2 V2.1.2 clause 4.5.3.1.1 */ testcase TC_IMS_CHAT_0009_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -1418,30 +1423,30 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - + // check 1,2 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 2 f_mtc_check_invite_mx(v_mxB); f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 2 - + f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 @@ -1464,7 +1469,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -1525,7 +1530,7 @@ module AtsImsIot_TestCases_RCS { // test body f_mtc_userInitiateFt(v_ueA, v_userInfoB); // Step 2 // Check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 @@ -1563,12 +1568,12 @@ module AtsImsIot_TestCases_RCS { f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0009 - + /** * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users, one user in its home network and one - * user roaming can be performed. User B must explicitly accept the - * chat invitation. + * exchange between two users, one user in its home network and one + * user roaming can be performed. User B must explicitly accept the + * chat invitation. * @see TS 102 901-2 V2.1.2 clause 4.5.3.1.2 */ testcase TC_IMS_CHAT_0010_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -1585,20 +1590,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 // check 1 (INVITE) @@ -1606,7 +1611,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5046_01_ic(v_ic, false); // Check1 f_mtc_check_invite_mx(v_mxB); - + f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 @@ -1629,7 +1634,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -1690,7 +1695,7 @@ module AtsImsIot_TestCases_RCS { // test body f_mtc_userInitiateFt(v_ueB, v_userInfoA); // Step 2 // Check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmB, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmB, false); // Check1 f_mtc_check_invite_mx(v_mxB); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 @@ -1730,10 +1735,10 @@ module AtsImsIot_TestCases_RCS { } //end testcase TC_IMS_CHAT_0010 - + /** * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during extension - * of 1-to-1 session to an Ad-hoc IM Conferences between users in their home network + * of 1-to-1 session to an Ad-hoc IM Conferences between users in their home network * @see TS 102 901-2 V2.1.2 clause 4.5.3.2.1 */ testcase TC_IMS_CHAT_0011_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -1750,32 +1755,32 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - + f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 f_mtc_userCheckChating(v_ueB,v_ueA); //Test Sequence Step 3 f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 4 - + // check 1 (INVITE) f_mtc_check_invite_mx(v_mxB); f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 1); // Check 1 - skip one INVITE when call is established f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5108_03_isc(v_iscA, false, 2); // Check 1 - - skip two INVITE when call is established - + f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 6 f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 7 @@ -1795,7 +1800,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -1856,7 +1861,7 @@ module AtsImsIot_TestCases_RCS { // test body f_mtc_userInitiateFt(v_ueA, v_userInfoB); // Step 2 // Check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 @@ -1892,11 +1897,11 @@ module AtsImsIot_TestCases_RCS { f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0011 - + /** * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during extension - * of 1-to-1 session to an Ad-hoc IM Conferences between users, one user in its - * home network and the other user roaming + * of 1-to-1 session to an Ad-hoc IM Conferences between users, one user in its + * home network and the other user roaming * @see TS 102 901-2 V2.1.2 clause 4.5.3.2.2 */ testcase TC_IMS_CHAT_0012_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -1913,31 +1918,31 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 + f_mtc_StartAllTrafficCapture(); + + f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 f_mtc_userCheckChating(v_ueB,v_ueA); //Test Sequence Step 3 - + f_mtc_userInitiateChatConf (v_ueB, v_userInfoA); //Test Sequence Step 4 // check 1 (INVITE from IMS_B to IMS_A and 100 Trying from IMS_A to IMS_B) f_mtc_check_response_mx(v_mxA, c_statusLine100); f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,3); // Check1 skip three packs with INVITE and 100 Trying f_mtc_check_response_mx(v_mxB, c_statusLine100); - + f_mtc_userCheckChatConfInfo(v_ueB); //Test Sequence Step 5 f_mtc_userCheckPeerChatConfInfo(v_ueA); //Test Sequence Step 6 f_mtc_userJoinChatConf(v_ueA); //Test Sequence Step 7 @@ -1955,7 +1960,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -2016,7 +2021,7 @@ module AtsImsIot_TestCases_RCS { // test body f_mtc_userInitiateFt(v_ueA, v_userInfoB); // Step 2 // Check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 @@ -2052,12 +2057,12 @@ module AtsImsIot_TestCases_RCS { f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0012 - + /** * @desc IMS network handles subsequent INVITEs, REFERs and NOTIFYs correctly - * during addition of user C to an Ad-hoc IM Conferences between users - * in their home network - * User B must explicitly accept the chat invitation + * during addition of user C to an Ad-hoc IM Conferences between users + * in their home network + * User B must explicitly accept the chat invitation * @see TS 102 901-2 V2.1.2 clause 4.5.3.3.1 */ testcase TC_IMS_CHAT_0013_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -2076,33 +2081,33 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_user_up(v_ueC); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); f_mtc_userRegistration(v_ueC, v_userInfoC); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - + f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - + f_mtc_userInitiateChatConf (v_ueA, v_userInfoC); //Test Sequence Step 7 - + f_mtc_userCheckPeerChatConfInfo(v_ueC); //Test Sequence Step 8 f_mtc_userJoinChatConf(v_ueC); //Test Sequence Step 9 f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 10 //userC @@ -2131,7 +2136,7 @@ module AtsImsIot_TestCases_RCS { f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_PO_user_home_deregistration(v_ueC); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -2139,7 +2144,7 @@ module AtsImsIot_TestCases_RCS { f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0013_Rcs_2 - + /** * @desc 1-to-many chat - interworking. * IMS network supports 1-to-many IM/Chat service and messages exchange between two users in their home network can be performed. @@ -2253,11 +2258,11 @@ module AtsImsIot_TestCases_RCS { f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0013 - + /** * @desc IMS network handles subsequent INVITEs, REFERs and NOTIFYs correctly during - * addition of user C to an Ad-hoc IM Conferences between users, one user in - * its home network and the other user roaming + * addition of user C to an Ad-hoc IM Conferences between users, one user in + * its home network and the other user roaming * @see TS 102 901-2 V2.1.2 clause 4.5.3.3.2 */ testcase TC_IMS_CHAT_0014_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -2276,31 +2281,31 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_user_up(v_ueC); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); f_mtc_userRegistration(v_ueC, v_userInfoC); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - + f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - + f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 + f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 7 // check 1 (REFER) @@ -2330,7 +2335,7 @@ module AtsImsIot_TestCases_RCS { f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_PO_user_home_deregistration(v_ueC); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -2338,7 +2343,7 @@ module AtsImsIot_TestCases_RCS { f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0014_Rcs_2 - + /** * @desc 1-to-many chat - roaming. * IMS network supports 1-to-many IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. @@ -2451,10 +2456,10 @@ module AtsImsIot_TestCases_RCS { f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0014 - + /** * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during rejoining - * of user B to existing Ad-hoc IM Conferences between users in their home network + * of user B to existing Ad-hoc IM Conferences between users in their home network * @see TS 102 901-2 V2.1.2 clause 4.5.3.4.1 */ testcase TC_IMS_CHAT_0015_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -2471,21 +2476,21 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_StartAllTrafficCapture(); f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - + f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 @@ -2506,7 +2511,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_TP_IMS_5110_01_ic(v_ic); // Check 1 f_mtc_check_response_mx(v_mxA, c_statusLine200); f_mtc_check_TP_IMS_5110_01_isc(v_iscA); // Check 1 - + f_mtc_userCheckChatingConf(v_ueB,v_ueA); //Test Sequence Step 13 f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 14 @@ -2516,7 +2521,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -2560,13 +2565,13 @@ module AtsImsIot_TestCases_RCS { f_cf_user_up(v_ueC); f_cf_user_up(v_ueD); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); f_mtc_userRegistration(v_ueC, v_userInfoC); f_mtc_userRegistration(v_ueD, v_userInfoD); - + // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_6_I steps 1 to 68) f_mtc_StartAllTrafficCapture(); f_mtc_userInitiateChat (v_ueA, v_userInfoB); @@ -2635,7 +2640,7 @@ module AtsImsIot_TestCases_RCS { f_PO_user_home_deregistration(v_ueB); f_PO_user_home_deregistration(v_ueC); f_PO_user_home_deregistration(v_ueD); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -2644,11 +2649,11 @@ module AtsImsIot_TestCases_RCS { f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_0015 - + /** * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during rejoining - * of user B to existing Ad-hoc IM Conferences between users, one user in its - * home network and the other user roaming + * of user B to existing Ad-hoc IM Conferences between users, one user in its + * home network and the other user roaming * @see TS 102 901-2 V2.1.2 clause 4.5.3.4.2 */ testcase TC_IMS_CHAT_0016_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -2665,20 +2670,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_StartAllTrafficCapture(); - + f_mtc_userInitiateChatConf (v_ueB, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckChatConfInfo(v_ueB); //Test Sequence Step 2 @@ -2700,7 +2705,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_userCheckRejoinChatConfInfo(v_ueA); //Test Sequence Step 11 f_mtc_userCheckPeerRejoinChatConfInfo(v_ueB); //Test Sequence Step 12 - + f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 13 f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 14 @@ -2711,7 +2716,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -2755,13 +2760,13 @@ module AtsImsIot_TestCases_RCS { f_cf_user_up(v_ueC); f_cf_user_up(v_ueD); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); f_mtc_userRegistration(v_ueC, v_userInfoC); f_mtc_userRegistration(v_ueD, v_userInfoD); - + // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_6_I steps 1 to 68) f_mtc_StartAllTrafficCapture(); f_mtc_userInitiateChat (v_ueA, v_userInfoB); @@ -2830,7 +2835,7 @@ module AtsImsIot_TestCases_RCS { f_PO_user_home_deregistration(v_ueB); f_PO_user_home_deregistration(v_ueC); f_PO_user_home_deregistration(v_ueD); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -2839,47 +2844,47 @@ module AtsImsIot_TestCases_RCS { f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_CHAT_00165 - - /** - * @desc IMS network supports file transfer service and file between two users - * in their home network can be performed. User B must explicitly accept - * the file transfer. - */ - testcase TC_IMS_FILE_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + /** + * @desc IMS network supports file transfer service and file between two users + * in their home network can be performed. User B must explicitly accept + * the file transfer. + */ + testcase TC_IMS_FILE_0001() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_userInitiateFt (v_ueA, v_userInfoB); //Test Sequence Step 1 - + // check 1 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 f_mtc_check_invite_mx(v_mxB); f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 - + f_mtc_userCheckFtInfo(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerFtInfo(v_ueA); //Test Sequence Step 3 f_mtc_userAcceptsFt(v_ueB); //Test Sequence Step 4 @@ -2896,30 +2901,30 @@ module AtsImsIot_TestCases_RCS { f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 7 f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 8 - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0001 - - /** - * @desc IMS network supports file transfer service and file transfer between - * two users, one user in its home network and one user roaming can be - * performed. User B must explicitly accept the file transfer. - */ - testcase TC_IMS_FILE_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + + /** + * @desc IMS network supports file transfer service and file transfer between + * two users, one user in its home network and one user roaming can be + * performed. User B must explicitly accept the file transfer. + */ + testcase TC_IMS_FILE_0002() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); @@ -2927,59 +2932,59 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - + + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body f_mtc_userInitiateFt (v_ueB, v_userInfoA); //Test Sequence Step 1 - - // check INVITE + + // check INVITE f_mtc_check_TP_IMS_5046_01_gm ( v_gmB, true ); f_mtc_check_invite_mx ( v_mxB ); f_mtc_check_TP_IMS_5046_01_ic ( v_ic, true ); f_mtc_check_TP_IMS_5067_01_ic ( v_ic, true ); f_mtc_check_TP_IMS_5097_09_ic ( v_ic, false ); f_mtc_check_TP_IMS_5097_09_isc ( v_iscA, false ); - f_mtc_userCheckFtInfo ( v_ueB ); - f_mtc_userCheckPeerFtInfo ( v_ueA ); - f_mtc_userAcceptsFt ( v_ueA ); - //check 200 OK + f_mtc_userCheckFtInfo ( v_ueB ); + f_mtc_userCheckPeerFtInfo ( v_ueA ); + f_mtc_userAcceptsFt ( v_ueA ); + //check 200 OK f_mtc_check_response_mx ( v_mxA, c_statusLine200 ); f_mtc_check_response_mx ( v_mxB, c_statusLine200 ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmB ); f_mtc_check_ack_mx ( v_gmA ); - f_mtc_userCheckFileTransferring ( v_ueA, v_ueB ); + f_mtc_userCheckFileTransferring ( v_ueA, v_ueB ); // check BYE f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_bye_mx ( v_gmA ); f_mtc_userCheckFtEnded ( v_ueA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_userCheckFtEnded ( v_ueB ); - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); } //end testcase TC_IMS_FILE_0002 - + /** * @desc IMS network supports file transfer service and file between two users in - * their home network can be performed. Immediate response applies. + * their home network can be performed. Immediate response applies. */ testcase TC_IMS_FILE_0003() runs on ImsTestCoordinator system IotSystemInterface { // create components @@ -2995,23 +3000,23 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_TP_IMS_5097_01_gm ( v_gmA, false ); + f_mtc_StartAllTrafficCapture(); + + f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); + // check INVITE + f_mtc_check_TP_GM_PCSCF_INVITE_01 ( v_gmA, false ); f_mtc_check_invite_mx ( v_mxA ); f_mtc_check_TP_IMS_5097_01_ic ( v_ic, true ); f_mtc_check_TP_IMS_5108_03_ic ( v_ic, false, 0 ); @@ -3019,10 +3024,10 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_TP_IMS_5108_03_isc ( v_iscB, false, 0 ); f_mtc_userCheckFtInfo ( v_ueB ); f_mtc_userTriggerReleaseFtBeforeFileTransfered ( v_ueB ); - //check 603 + //check 603 f_mtc_check_response_mx ( v_mxB, c_statusLine603 ); f_mtc_check_response_mx ( v_mxA, c_statusLine603 ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmB ); f_mtc_check_ack_mx ( v_gmA ); f_mtc_userCheckFtEnded ( v_ueB ); @@ -3031,17 +3036,17 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0003 - + /** * @desc IMS network supports file transfer service and file between two users in - * their home network can be performed. Immediate response applies. + * their home network can be performed. Immediate response applies. * @see TS 102 901-2 V2.1.2 clause 4.5.4.1.3 */ testcase TC_IMS_FILE_0003_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -3058,30 +3063,30 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateFt(v_ueA, v_userInfoB); //Test Sequence Step 1 - + // check 1,2 (INVITE) - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 2 f_mtc_check_invite_mx(v_mxB); f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 2 - + f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 // checks 3 (2xx) @@ -3100,18 +3105,18 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0003_Rcs_2 - + /** * @desc IMS network supports file transfer service and file transfer between two users, - * one user in its home network and one user roaming can be performed. Immediate - * response applies. + * one user in its home network and one user roaming can be performed. Immediate + * response applies. * @see TS 102 901-2 V2.1.2 clause 4.5.4.1.4 */ testcase TC_IMS_FILE_0004() runs on ImsTestCoordinator system IotSystemInterface { @@ -3128,22 +3133,22 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); - // check INVITE + f_mtc_StartAllTrafficCapture(); + + f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); + // check INVITE f_mtc_check_TP_IMS_5046_01_gm ( v_gmA, true ); f_mtc_check_TP_IMS_5067_01_gm ( v_gmA, false ); f_mtc_check_invite_mx ( v_mxA ); @@ -3154,30 +3159,30 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_TP_IMS_5097_09_isc ( v_iscB, false ); f_mtc_userCheckFtInfo ( v_ueB ); f_mtc_userTriggerReleaseFtBeforeFileTransfered ( v_ueB ); - // check 603 + // check 603 f_mtc_check_response_mx ( v_mxB, c_statusLine603 ); f_mtc_check_response_mx ( v_mxA, c_statusLine603 ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmB ); f_mtc_check_ack_mx ( v_gmA ); f_mtc_userCheckFtEnded ( v_ueB ); f_mtc_userCheckFtEnded ( v_ueA ); - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0004 - + /** * @desc IMS network supports file transfer service and file transfer between two users, - * one user in its home network and one user roaming can be performed. Immediate - * response applies. + * one user in its home network and one user roaming can be performed. Immediate + * response applies. * @see TS 102 901-2 V2.1.2 clause 4.5.4.1.4 */ testcase TC_IMS_FILE_0004_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -3194,22 +3199,22 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateFt(v_ueB, v_userInfoA); //Test Sequence Step 1 - + // check 1,2,3 (INVITE) f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 f_mtc_check_TP_IMS_5067_01_gm(v_gmA, false); // Check2 @@ -3219,7 +3224,7 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_TP_IMS_5097_09_ic(v_ic, false); // Check3 f_mtc_check_invite_mx(v_mxB); f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false); // Check3 - + f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 f_mtc_userCheckFt(v_ueB,v_ueA); //Test Sequence Step 3 @@ -3232,7 +3237,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -3242,8 +3247,8 @@ module AtsImsIot_TestCases_RCS { /** * @desc IMS network supports instant File transfer service and messages exchange between - * two users in their home networks can be performed. User A starts file transfer, but - * User B terminates it in the middle of the process + * two users in their home networks can be performed. User A starts file transfer, but + * User B terminates it in the middle of the process */ testcase TC_IMS_FILE_0005 () runs on ImsTestCoordinator system IotSystemInterface { // create components @@ -3259,20 +3264,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); // check INVITE f_mtc_check_invite_mx ( v_mxA ); @@ -3281,9 +3286,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_userAcceptsFt ( v_ueB ); f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckPeerFtInfo ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_userCheckFtInfo ( v_ueA ); @@ -3292,30 +3297,30 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); // check OPTIONS f_mtc_check_options_mx ( v_mxB ); f_mtc_check_options_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_EndFt ( v_ueB ); // check BYE f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_bye_mx ( v_gmA ); f_mtc_userCheckFtEnded ( v_ueA ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckFtEnded ( v_ueB ); // check OPTIONS f_mtc_check_options_mx ( v_mxA ); f_mtc_check_options_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -3325,8 +3330,8 @@ module AtsImsIot_TestCases_RCS { /** * @desc IMS network supports instant File transfer service and messages exchange between - * two users, one user in its home network and one user roaming can be performed. User - * A starts file transfer, but User B terminates it in the middle of the process + * two users, one user in its home network and one user roaming can be performed. User + * A starts file transfer, but User B terminates it in the middle of the process */ testcase TC_IMS_FILE_0006 () runs on ImsTestCoordinator system IotSystemInterface { // create components @@ -3342,20 +3347,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); // check INVITE f_mtc_check_invite_mx ( v_mxA ); @@ -3364,9 +3369,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_userAcceptsFt ( v_ueB ); f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckPeerFtInfo ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_userCheckFtInfo ( v_ueA ); @@ -3375,37 +3380,37 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); // check OPTIONS f_mtc_check_options_mx ( v_mxB ); f_mtc_check_options_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_EndFt ( v_ueB ); // check BYE f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_bye_mx ( v_gmA ); f_mtc_userCheckFtEnded ( v_ueA ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckFtEnded ( v_ueB ); // check OPTIONS f_mtc_check_options_mx ( v_mxA ); f_mtc_check_options_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0006 - + /** * @desc An established file transfer session is cancelled by the initiator of the session * @see TS 102 901-2 V2.1.2 clause 4.5.4.3.1 @@ -3424,28 +3429,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateFt(v_ueA, v_userInfoB); //Test Sequence Step 1 - + f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 f_mtc_userCheckFt(v_ueA,v_ueB); //Test Sequence Step 3 f_mtc_userCheckFtCancel(v_ueA); //Test Sequence Step 4 - + // check 1 (INVITE) f_mtc_check_TP_IMS_5106_01_gm(v_gmA, 0); f_mtc_check_invite_mx(v_mxA); @@ -3476,17 +3481,17 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0011_Rcs_2 - + /** * @desc An established file transfer session is cancelled by the roaming initiator - * of the session. + * of the session. * @see TS 102 901-2 V2.1.2 clause 4.5.4.4.2 */ testcase TC_IMS_FILE_0012_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { @@ -3503,28 +3508,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateFt(v_ueB, v_userInfoA); //Test Sequence Step 1 - + f_mtc_userCheckAutomaticalyAcceptedFt(v_ueA); //Test Sequence Step 2 f_mtc_userCheckFt(v_ueA,v_ueB); //Test Sequence Step 3 f_mtc_userCheckFtCancel(v_ueB); //Test Sequence Step 4 - + // check 1,2 (INVITE) f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 0); // Check1 f_mtc_check_invite_mx(v_mxA); @@ -3544,14 +3549,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0012_Rcs_2 - + /** * @desc An established file transfer session is cancelled by the destination of the file transfer. * @see TS 102 901-2 V2.1.2 clause 4.5.4.4.1 @@ -3570,27 +3575,27 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueA, v_userInfoB); //Test Sequence Step 1 + f_mtc_StartAllTrafficCapture(); + + f_mtc_userInitiateFt(v_ueA, v_userInfoB); //Test Sequence Step 1 f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 f_mtc_userCheckFtInfo(v_ueA); //Test Sequence Step 3 //FT invitation f_mtc_userTriggerFtStart(v_ueA); //Test Sequence Step 4 //File transfer started f_mtc_userTriggerFtAccept(v_ueB); //Test Sequence Step 5 //File transfer accepted by peer - + f_mtc_userCheckFtStarted(v_ueA); //Test Sequence Step 6 f_mtc_userCheckFtStarted(v_ueB); //Test Sequence Step 7 @@ -3614,14 +3619,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0013_Rcs_2 - + /** * @desc An established file transfer session is cancelled by the destination of the file transfer. * @see TS 102 901-2 V2.1.2 clause 4.5.4.4.2 @@ -3640,27 +3645,27 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueB, v_userInfoA); //Test Sequence Step 1 + f_mtc_StartAllTrafficCapture(); + + f_mtc_userInitiateFt(v_ueB, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckAutomaticalyAcceptedFt(v_ueA); //Test Sequence Step 2 f_mtc_userCheckFtInfo(v_ueB); //Test Sequence Step 3 //FT invitation f_mtc_userTriggerFtStart(v_ueB); //Test Sequence Step 4 //File transfer started f_mtc_userTriggerFtAccept(v_ueA); //Test Sequence Step 5 //File transfer accepted by peer - + f_mtc_userCheckFtStarted(v_ueB); //Test Sequence Step 6 f_mtc_userCheckFtStarted(v_ueA); //Test Sequence Step 7 @@ -3679,14 +3684,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_FILE_0014_Rcs_2 - + /** * @desc User A sets up a voice call to user B and shares content with user B. * @see TS 102 901-2 V2.1.2 clause 4.5.5.1.1 @@ -3705,20 +3710,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -3737,7 +3742,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -3763,29 +3768,29 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 @@ -3812,14 +3817,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0001_Rcs_2 - + /** * @desc User A sets up a voice call to user B and shares content with user B. * @see TS 102 901-2 V2.1.2 clause 4.5.5.1.2 @@ -3838,20 +3843,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -3862,9 +3867,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userAcceptsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_EndSharing ( v_ueA ); @@ -3872,32 +3877,32 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); // check OPTIONS f_mtc_check_options_mx ( v_mxB ); f_mtc_check_options_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_EndCall ( v_ueA ); f_mtc_EndSharing ( v_ueB ); // check BYE f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingEnded ( v_ueB ); f_mtc_userCheckSharingEnded ( v_ueA ); // check OPTIONS f_mtc_check_options_mx ( v_mxA ); f_mtc_check_options_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_EndCall ( v_ueB ); // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -3923,29 +3928,29 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 @@ -3971,14 +3976,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0002_Rcs_2 - + /** * @desc Termination of voice call during content sharing * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.1 @@ -3997,20 +4002,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4021,9 +4026,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userAcceptsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); // check BYE @@ -4031,39 +4036,39 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); // check OPTIONS f_mtc_check_options_mx ( v_mxB ); f_mtc_check_options_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_EndCall ( v_ueA ); f_mtc_EndSharing ( v_ueB ); // check BYE f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingEnded ( v_ueB ); f_mtc_userCheckSharingEnded ( v_ueA ); // check OPTIONS f_mtc_check_options_mx ( v_mxA ); f_mtc_check_options_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_EndCall ( v_ueB ); - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0003 - + /** * @desc Termination of voice call during content sharing * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.1 @@ -4082,28 +4087,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 @@ -4125,14 +4130,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0003_Rcs_2 - + /** * @desc Termination of voice call during content sharing * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.2 @@ -4151,20 +4156,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4175,9 +4180,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userAcceptsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_EndSharing ( v_ueA ); @@ -4185,39 +4190,39 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); // check OPTIONS f_mtc_check_options_mx ( v_mxB ); f_mtc_check_options_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_EndCall ( v_ueA ); f_mtc_EndSharing ( v_ueB ); // check BYE f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingEnded ( v_ueB ); f_mtc_userCheckSharingEnded ( v_ueA ); // check OPTIONS f_mtc_check_options_mx ( v_mxA ); f_mtc_check_options_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_EndCall ( v_ueB ); - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0004 - + /** * @desc Termination of voice call during content sharing * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.2 @@ -4236,28 +4241,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 @@ -4280,14 +4285,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0004_Rcs_2 - + /** * @desc User A sets up a voice call to user B and user B shares content with user A. * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.1 @@ -4306,20 +4311,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4330,30 +4335,30 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userAcceptsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); // check BYE f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_EndCall ( v_ueA ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_EndCall ( v_ueA ); f_mtc_EndCall ( v_ueB ); - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0005 - + /** * @desc User A sets up a voice call to user B and user B shares content with user A. * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.1 @@ -4372,28 +4377,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueB, v_userInfoA); //Test Sequence Step 4 @@ -4414,14 +4419,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0005_Rcs_2 - + /** * @desc User A sets up a voice call to user B and user B shares content with user A. * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.2 @@ -4440,20 +4445,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4464,9 +4469,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userAcceptsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_EndSharing ( v_ueA ); @@ -4474,22 +4479,22 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueA ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_userCheckSharingEnded ( v_ueA ); f_mtc_EndCall ( v_ueA ); f_mtc_EndCall ( v_ueB ); - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0006 - + /** * @desc User A sets up a voice call to user B and user B shares content with user A. * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.2 @@ -4508,28 +4513,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueB, v_userInfoA); //Test Sequence Step 4 @@ -4551,14 +4556,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0006_Rcs_2 - + /** * @desc User A receive information that content sharing is not possible with user B. * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.1 @@ -4577,20 +4582,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4600,23 +4605,23 @@ module AtsImsIot_TestCases_RCS { f_mtc_userRejectsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmA, c_statusLine603 ); f_mtc_userCheckSharingRequestRejected ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_EndCall ( v_ueA ); f_mtc_EndCall ( v_ueB ); - + // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0007 - + /** * @desc User A receive information that content sharing is not possible with user B. * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.1 @@ -4635,22 +4640,22 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); @@ -4667,14 +4672,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0007_Rcs_2 - + /** * @desc User A receive information that content sharing is not possible with user B. * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.2 @@ -4693,20 +4698,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4717,9 +4722,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userRejectsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine603 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine603 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine603 ); f_mtc_userCheckSharingRequestRejected ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_EndCall ( v_ueA ); @@ -4728,14 +4733,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0008 - + /** * @desc User A receive information that content sharing is not possible with user B. * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.2 @@ -4754,22 +4759,22 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); @@ -4786,14 +4791,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0008_Rcs_2 - + /** * @desc User B rejects to share content with user A * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.1 @@ -4812,20 +4817,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4836,9 +4841,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userAcceptsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_EndSharing ( v_ueA ); @@ -4846,12 +4851,12 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_check_bye_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); // check OPTIONS f_mtc_check_options_mx ( v_mxB ); f_mtc_check_options_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_EndCall ( v_ueA ); f_mtc_EndSharing ( v_ueB ); // check BYE @@ -4859,26 +4864,26 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_userCheckSharingEnded ( v_ueA ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingEnded ( v_ueB ); // check OPTIONS f_mtc_check_options_mx ( v_mxA ); f_mtc_check_options_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_EndCall ( v_ueB ); // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0009 - + /** * @desc User B rejects to share content with user A * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.1 @@ -4897,28 +4902,28 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 @@ -4942,14 +4947,14 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0009_Rcs_2 - + /** * @desc Content sharing rejection * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.2 @@ -4968,20 +4973,20 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); // check INVITE @@ -4992,9 +4997,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); f_mtc_userAcceptsSharing ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK + // check ACK f_mtc_check_ack_mx ( v_gmA ); f_mtc_check_ack_mx ( v_gmB ); f_mtc_EndSharing ( v_ueA ); @@ -5003,13 +5008,13 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmB ); f_mtc_userCheckSharingEnded ( v_ueB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingEnded ( v_ueA ); // check OPTIONS f_mtc_check_options_mx ( v_mxB ); f_mtc_check_options_mx ( v_gmA ); f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); f_mtc_EndCall ( v_ueA ); f_mtc_EndSharing ( v_ueB ); // check BYE @@ -5017,26 +5022,26 @@ module AtsImsIot_TestCases_RCS { f_mtc_check_bye_mx ( v_gmA ); f_mtc_userCheckSharingEnded ( v_ueA ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_userCheckSharingEnded ( v_ueB ); // check OPTIONS f_mtc_check_options_mx ( v_mxA ); f_mtc_check_options_mx ( v_gmB ); f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); + f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); f_mtc_EndCall ( v_ueB ); // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_as_down(v_config); f_cf_adapter_down(); } //end testcase TC_IMS_SHARE_0010 - + /** * @desc Content sharing rejection * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.2 @@ -5055,29 +5060,29 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - + // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_as_up(v_config); - + // preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - + // test body - f_mtc_StartAllTrafficCapture(); - + f_mtc_StartAllTrafficCapture(); + f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - + // check 1 (OPTIONS) f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 f_mtc_check_options_mx(v_mxA); f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 f_mtc_check_options_mx(v_mxB); - + f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 @@ -5100,7 +5105,7 @@ module AtsImsIot_TestCases_RCS { // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - + //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn index ec13086..4737b04 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn @@ -5,36 +5,20 @@ */ module AtsImsIot_TestCases_REG { - import from AtsImsIot_Behavior { - function all; - } - - import from AtsImsIot_Functions { - function all; - } - - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - - import from LibIms_UpperTester {type ImsUserInfo;} - - import from LibIot_TestConfiguration { - function f_cf_create_IotEquipmentUser; - } - - import from AtsImsIot_TestConfiguration { - const all; - function all; - } - - import from LibSip_SIPTypesAndValues {const c_statusLine200, c_statusLine401, c_statusLine403;} - - import from LibIot_TestInterface {type IotEquipmentUser;} - - import from AtsImsIot_TestSystem { - type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; - } - + // LibIot + import from LibIot_TestInterface all; + import from LibIot_TestConfiguration all; + import from LibIot_PIXITS all; + // LibSip import from LibSip_SIPTypesAndValues all; + import from LibSip_SIPTypesAndValues all; + import from LibIms_UpperTester all; + // AtsImsIot + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_Behavior all; // TODO To be removed + import from AtsImsIot_Functions all; + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; /** * @desc To perform initial IMS registration via the established default bearer. @@ -58,16 +42,91 @@ module AtsImsIot_TestCases_REG { f_mtc_userRegistration(v_ueA, v_anyValidUser); // Test body - f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); - f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); - f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); + f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); // Events 1, 10 + f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); // Events 11, 20 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 21, 24 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_cf_user_down(v_ueA); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_REG_01 + + /** + * @desc To attempt initial IMS registration via the established default bearer. + * In this case, the IMS registration is not successful and IMS will not invoke the PCRF to perform session binding to the underlying bearer. + */ + testcase TC_VxLTE_INT_REG_02() runs on ImsTestCoordinator system IotSystemInterface { + // Local variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_A); + + // Test control + // Test component configuration + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + // Test adapter configuration + + // Preamble + v_anyValidUser.publicId := "Jon Doe"; // Alter publicId to get an invalid registration + f_mtc_userRegistration(v_ueA, v_anyValidUser); + + // Test body + f_mtc_check_TP_GM_PCSCF_REGISTER_03(v_gmA, true); // Events 1, 6 // Postamble + f_PO_user_home_deregistration(v_ueA); + f_cf_user_down(v_ueA); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_REG_02 + + /** + * @desc To perform initial IMS registration via the established default bearer. + * Note that some UEs perform IMS registration automatically on attachment. + */ + testcase TC_VxLTE_INT_REG_03() runs on ImsTestCoordinator system IotSystemInterface { + // Local variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_A); + + // Test control + + // Test component configuration + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + + // Test adapter configuration + + // Preamble + f_mtc_userRegistration(v_ueA, v_anyValidUser); + // Test body + f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); // Events 1, 10 + f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); // Events 11, 24 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 25, 28 - } // End of testcase TC_VxLTE_INT_REG_01() + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_cf_user_down(v_ueA); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_REG_03 + + + + + + + + + + + + + diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn index e323078..3e7bbb6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn @@ -1,704 +1,689 @@ /** - * @author STF 370 + * @author STF 370 * @version $Id: $ - * @desc This module provides ATS specific test case definitions. + * @desc This module provides ATS specific test case definitions. */ module AtsImsIot_TestCases_SS { - - import from AtsImsIot_Behavior { - function all; - } - - import from AtsImsIot_Functions { - function all; - } - - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - - import from LibIms_UpperTester {type ImsUserInfo;} - - import from LibSip_SIPTypesAndValues {const c_statusLine180, c_statusLine200, c_statusLine433;} - import from LibIot_TestConfiguration { - function f_cf_create_IotEquipmentUser; - } - - import from AtsImsIot_TestConfiguration { - const all; - function all; - } - - import from LibIot_TestInterface {type IotEquipmentUser;} - - import from AtsImsIot_TestSystem { - type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface, CF_INT_AS, CF_ROAM_AS; - } - - /** - * @desc Supplementary Service HOLD with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.1 - */ - testcase TC_IMS_SS_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + // LibIms + import from LibIms_UpperTester all; + import from LibSip_SIPTypesAndValues all; + // LibIot + import from LibIot_PIXITS all; + import from LibIot_TestConfiguration all; + import from LibIot_TestInterface all; + // AtsImsIot + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_Behavior all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + + /** + * @desc Supplementary Service HOLD with AS + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.1 + */ + testcase TC_IMS_SS_0001() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getHoldUser(PX_EUT_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getHoldUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueB);//Test Sequence Step 7 - - //check 1 - INVITE(hold) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check1 - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check1 + var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 + + f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 + + f_mtc_userTriggerHold(v_ueB);//Test Sequence Step 7 + + //check 1 - INVITE(hold) + f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check1 + f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA);//Test Sequence Step 8 - - //check 2 - 200 OK + + f_mtc_userCheckUserOnHold(v_ueA);//Test Sequence Step 8 + + //check 2 - 200 OK f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 1); // Check2 + f_mtc_check_TP_IMS_5312_01_ic(v_ic, 1); // Check2 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check2 - - f_mtc_userCheckUserOnHold(v_ueB);//Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueB);//Test Sequence Step 10 - - //check 3 - INVITE(resume) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check3 - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check3 + f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check2 + + f_mtc_userCheckUserOnHold(v_ueB);//Test Sequence Step 9 + + f_mtc_userTriggerResume(v_ueB);//Test Sequence Step 10 + + //check 3 - INVITE(resume) + f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check3 + f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check3 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA);//Test Sequence Step 11 + + f_mtc_userCheckCallResumed(v_ueA);//Test Sequence Step 11 - //check 4 - 200 OK + //check 4 - 200 OK f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 0); // Check4 + f_mtc_check_TP_IMS_5312_01_ic(v_ic, 0); // Check4 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check4 - - f_mtc_userCheckCallResumed(v_ueB);//Test Sequence Step 12 - f_mtc_EndCall(v_ueA);//Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB );//Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0001 - - /** - * @desc Supplementary Service HOLD with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.2 - */ - testcase TC_IMS_SS_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check4 + + f_mtc_userCheckCallResumed(v_ueB);//Test Sequence Step 12 + f_mtc_EndCall(v_ueA);//Test Sequence Step 13 + f_mtc_userCheckCallEnded(v_ueB );//Test Sequence Step 14 + f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 15 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0001 + + /** + * @desc Supplementary Service HOLD with AS in roaming + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.2 + */ + testcase TC_IMS_SS_0002() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getHoldUser(PX_EUT_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getHoldUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueB);//Test Sequence Step 7 - - //check 1 - INVITE(hold) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 1); // Check1 - skip one INVITE when call is established - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check1 + var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 + + f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 + + f_mtc_userTriggerHold(v_ueB);//Test Sequence Step 7 + + //check 1 - INVITE(hold) + f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 1); // Check1 - skip one INVITE when call is established + f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check1 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA);//Test Sequence Step 8 - - //check 2 - 200 OK + + f_mtc_userCheckUserOnHold(v_ueA);//Test Sequence Step 8 + + //check 2 - 200 OK f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 2); // Check2 - skip two 200OK when call is established - because roaming + f_mtc_check_TP_IMS_5312_01_ic(v_ic, 2); // Check2 - skip two 200OK when call is established - because roaming f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check2 - - f_mtc_userCheckUserOnHold(v_ueB);//Test Sequence Step 9 - f_mtc_userTriggerResume(v_ueB);//Test Sequence Step 10 - - //check 3 - INVITE(resume) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check3 - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check3 + f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check2 + + f_mtc_userCheckUserOnHold(v_ueB);//Test Sequence Step 9 + f_mtc_userTriggerResume(v_ueB);//Test Sequence Step 10 + + //check 3 - INVITE(resume) + f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check3 + f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check3 f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA);//Test Sequence Step 11 - - //check 4 - 200 OK + + f_mtc_userCheckCallResumed(v_ueA);//Test Sequence Step 11 + + //check 4 - 200 OK f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 1); // Check4 + f_mtc_check_TP_IMS_5312_01_ic(v_ic, 1); // Check4 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check4 - - f_mtc_userCheckCallResumed(v_ueB);//Test Sequence Step 12 - f_mtc_EndCall(v_ueA);//Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB );//Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0002 - - /** - * @desc Supplementary Service OIP with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.3 - */ - testcase TC_IMS_SS_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); + f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check4 + + f_mtc_userCheckCallResumed(v_ueB);//Test Sequence Step 12 + f_mtc_EndCall(v_ueA);//Test Sequence Step 13 + f_mtc_userCheckCallEnded(v_ueB );//Test Sequence Step 14 + f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 15 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_roam_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0002 + + /** + * @desc Supplementary Service OIP with AS + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.3 + */ + testcase TC_IMS_SS_0003() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - //check 1,2 - INVITE - f_mtc_check_TP_IMS_5097_02_gm(v_gmA, false);// Check1 + var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 + + //check 1,2 - INVITE + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true);// Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_02_ic(v_ic, true);// Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 + f_mtc_check_TP_IMS_5097_02_ic(v_ic, true);// Check1 + f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - - //check 3 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 + f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 + + f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 + + //check 3 - 200 OK + f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check3 + f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check3 f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_EndCall(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0003 - - /** - * @desc Supplementary Service OIP with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.4 - */ - testcase TC_IMS_SS_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); + + f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 + + f_mtc_EndCall(v_ueA);//Test Sequence Step 7 + f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0003 + + /** + * @desc Supplementary Service OIP with AS in roaming + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.4 + */ + testcase TC_IMS_SS_0004() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - //checks 1,2 - INVITE - f_mtc_check_TP_IMS_5097_02_gm(v_gmA, false);// Check1 + var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 + + //checks 1,2 - INVITE + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true);// Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_02_ic(v_ic, true);// Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 + f_mtc_check_TP_IMS_5097_02_ic(v_ic, true);// Check1 + f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - - //check 3 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 + f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 + + f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 + f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 + f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 + + //check 3 - 200 OK + f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 1);// Check3 //skip 200OK IMSA->IMSB + f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 1);// Check3 //skip 200OK IMSA->IMSB f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_EndCall(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0004 - - /** - * @desc Supplementary Service OIR and ACR with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.5 - */ - testcase TC_IMS_SS_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getACRUser(PX_EUT_B); + + f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 + f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 + + f_mtc_EndCall(v_ueA);//Test Sequence Step 7 + f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 + f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 9 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_roam_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0004 + + /** + * @desc Supplementary Service OIR and ACR with AS + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.5 + */ + testcase TC_IMS_SS_0005() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getACRUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - //check 1 - INVITE - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check1 - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check1 + var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 + + //check 1 - INVITE + f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check1 + f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check1 f_mtc_check_invite_mx(v_mxB); - - //check 2 - 433 Anonymity Disallowe + + //check 2 - 433 Anonymity Disallowe f_mtc_check_response_mx(v_mxB, c_statusLine433); - f_mtc_check_TP_IMS_5313_01_ic(v_ic, false);// Check2 + f_mtc_check_TP_IMS_5313_01_ic(v_ic, false);// Check2 f_mtc_check_response_mx(v_mxA, c_statusLine433); - f_mtc_check_TP_IMS_5313_01_isc(v_iscA, false);// Check2 - - f_mtc_userCheckCallRejectedACR(v_ueA);//Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0005 - - /** - * @desc Supplementary Service OIR and ACR with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.6 - */ - testcase TC_IMS_SS_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getACRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIRUser(PX_EUT_B); + f_mtc_check_TP_IMS_5313_01_isc(v_iscA, false);// Check2 + + f_mtc_userCheckCallRejectedACR(v_ueA);//Test Sequence Step 2 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0005 + + /** + * @desc Supplementary Service OIR and ACR with AS in roaming + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.6 + */ + testcase TC_IMS_SS_0006() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getACRUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getOIRUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 - - //checks 1,2,3 - INVITE - f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true);// Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false);// Check2 + var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_StartAllTrafficCapture(); + f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 + + //checks 1,2,3 - INVITE + f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true);// Check1 + f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false);// Check2 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true);// Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true);// Check2 - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false);// Check3 + f_mtc_check_TP_IMS_5046_01_ic(v_ic, true);// Check1 + f_mtc_check_TP_IMS_5067_01_ic(v_ic, true);// Check2 + f_mtc_check_TP_IMS_5097_09_ic(v_ic, false);// Check3 f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false);// Check3 - - f_mtc_userCheckCallRejectedACR(v_ueB);//Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0006 - - /** - * @desc Supplementary Service CFU with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.7 - */ - testcase TC_IMS_SS_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueB2 := f_cf_create_IotEquipmentUser(c_userUE_B2); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsUserInfo v_userInfoB2 := f_getAnyValidUser(PX_EUT_B);//// TODO f_getAnyValidUser2 ? + f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false);// Check3 + + f_mtc_userCheckCallRejectedACR(v_ueB);//Test Sequence Step 2 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_roam_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0006 + + /** + * @desc Supplementary Service CFU with AS + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.7 + */ + testcase TC_IMS_SS_0007() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var IotEquipmentUser v_ueB2 := f_cf_create_IotEquipmentUser(c_userUE_B2); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + var ImsUserInfo v_userInfoB2 := f_getAnyValidUser(PX_EUT_B);//// TODO f_getAnyValidUser2 ? var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueB2); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueB2, v_userInfoB2); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 + var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; + + // map/connect component ports + // f_cf_user_up(v_ueB); + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_user_up(v_ueB2); + f_cf_int_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userRegistration(v_ueB2, v_userInfoB2); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 // checks 1,2 - INVITE - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 + f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 + f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 + f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 - //f_mtc_userCheckRinging(v_ueB2); //possible Test Sequence Step - //f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueB2);//Test Sequence Step 3 + //f_mtc_userCheckRinging(v_ueB2); //possible Test Sequence Step + //f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step + f_mtc_userAnswerCall(v_ueB2);//Test Sequence Step 3 - //check 3 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 + //check 3 - 200 OK + f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check3 + f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check3 f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB2);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueA);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueB2);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueB2); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueB2); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0007 - - /** - * @desc Supplementary Service CFU with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.8 - */ - testcase TC_IMS_SS_0008() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueA2 := f_cf_create_IotEquipmentUser(c_userUE_A2); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsUserInfo v_userInfoA2 := f_getAnyValidUser(PX_EUT_A);//// TODO f_getAnyValidUser2 ? + + f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueB2);//Test Sequence Step 5 + + f_mtc_EndCall(v_ueA);//Test Sequence Step 6 + f_mtc_userCheckCallEnded(v_ueB2);//Test Sequence Step 7 + f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 8 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_PO_user_home_deregistration(v_ueB2); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_user_down(v_ueB2); + f_cf_int_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0007 + + /** + * @desc Supplementary Service CFU with AS in roaming + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.8 + */ + testcase TC_IMS_SS_0008() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var IotEquipmentUser v_ueA2 := f_cf_create_IotEquipmentUser(c_userUE_A2); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + var ImsUserInfo v_userInfoA2 := f_getAnyValidUser(PX_EUT_A);//// TODO f_getAnyValidUser2 ? var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, omit}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueA2); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueA2, v_userInfoA2); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 + var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, omit}; + + // map/connect component ports + // f_cf_user_up(v_ueB); + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_user_up(v_ueA2); + f_cf_roam_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userRegistration(v_ueA2, v_userInfoA2); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 // checks 1,2,3 - INVITE - f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true); // Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false); // Check2 + f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true); // Check1 + f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false); // Check2 f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true); // Check2 - f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,0); // Check3 + f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 + f_mtc_check_TP_IMS_5067_01_ic(v_ic, true); // Check2 + f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,0); // Check3 f_mtc_check_invite_mx(v_mxA); - //f_mtc_userCheckRinging(v_ueA2); //possible Test Sequence Step - //f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueA2);//Test Sequence Step 3 + //f_mtc_userCheckRinging(v_ueA2); //possible Test Sequence Step + //f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step + f_mtc_userAnswerCall(v_ueA2);//Test Sequence Step 3 - //check 4 - 200 OK - f_mtc_check_TP_IMS_5110_01_isc(v_iscA); // Check4 + //check 4 - 200 OK + f_mtc_check_TP_IMS_5110_01_isc(v_iscA); // Check4 f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5110_01_ic(v_ic); // Check4 + f_mtc_check_TP_IMS_5110_01_ic(v_ic); // Check4 f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA2);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueB);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueA2);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueA2); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueA2); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0008 - - /** - * @desc Supplementary Service OIP and OIR with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.9 - */ - testcase TC_IMS_SS_0009() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); + + f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA2);//Test Sequence Step 5 + + f_mtc_EndCall(v_ueB);//Test Sequence Step 6 + f_mtc_userCheckCallEnded(v_ueA2);//Test Sequence Step 7 + f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_PO_user_home_deregistration(v_ueA2); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_user_down(v_ueA2); + f_cf_roam_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0008 + + /** + * @desc Supplementary Service OIP and OIR with AS + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.9 + */ + testcase TC_IMS_SS_0009() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 + var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; + + // map/connect component ports + // f_cf_user_up(v_ueB); + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 // checks 1,2 - INVITE - f_mtc_check_TP_IMS_5097_01_gm(v_gmA, false); // Check1 + f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 + f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 + f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 - - f_mtc_userCheckRinging(v_ueB); //possible Test Sequence Step - f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 3 - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueB);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0009 - - /** - * @desc Supplementary Service OIP and OIR with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.10 - */ - testcase TC_IMS_SS_0010() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); + f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 + + f_mtc_userCheckRinging(v_ueB); //possible Test Sequence Step + f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step + f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 3 + + f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 5 + + f_mtc_EndCall(v_ueB);//Test Sequence Step 6 + f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 7 + f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_SS_0009 + + /** + * @desc Supplementary Service OIP and OIR with AS in roaming + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.10 + */ + testcase TC_IMS_SS_0010() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 - - //checks 1,2,5 - INVITE + var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; + + // map/connect component ports + // f_cf_user_up(v_ueB); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_roam_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 + + //checks 1,2,5 - INVITE f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true);// Check1 f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false);// Check5 f_mtc_check_invite_mx(v_mxB); @@ -708,101 +693,101 @@ module AtsImsIot_TestCases_SS { f_mtc_check_invite_mx(v_mxA); f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false);// Check2 - //check 3 -180 Ringing - f_mtc_check_TP_IMS_5308_01_gm(v_gmA, false);// Check3 - f_mtc_check_TP_IMS_5308_01_isc(v_iscA, false);// Check3 + //check 3 -180 Ringing + f_mtc_check_TP_IMS_5308_01_gm(v_gmA, false);// Check3 + f_mtc_check_TP_IMS_5308_01_isc(v_iscA, false);// Check3 f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //possible Test Sequence Step - f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueA);//Test Sequence Step 3 - - //check 4 -200 OK - f_mtc_check_TP_IMS_5308_02_gm(v_gmA, false);// Check4 - f_mtc_check_TP_IMS_5308_02_isc(v_iscA, false);// Check4 + + f_mtc_userCheckRinging(v_ueB); //possible Test Sequence Step + f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step + f_mtc_userAnswerCall(v_ueA);//Test Sequence Step 3 + + //check 4 -200 OK + f_mtc_check_TP_IMS_5308_02_gm(v_gmA, false);// Check4 + f_mtc_check_TP_IMS_5308_02_isc(v_iscA, false);// Check4 f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueB);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - } //end testcase TC_IMS_SS_0010 - - /** - * @desc IMS network handles subsequent INVITEs, UPDATEs, REFERs and NOTIFYs - * correctly during Ad-Hoc Conference calls - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.11 - */ - testcase TC_IMS_CONF_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); + + f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 4 + f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 + + f_mtc_EndCall(v_ueB);//Test Sequence Step 6 + f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 7 + f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_roam_as_down(v_config); + } //end testcase TC_IMS_SS_0010 + + /** + * @desc IMS network handles subsequent INVITEs, UPDATEs, REFERs and NOTIFYs + * correctly during Ad-Hoc Conference calls + * @see TS 186 011-2 V3.1.1 Clause 4.5.5.11 + */ + testcase TC_IMS_CONF_0001() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); + var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); + var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateConferenceCall (v_ueA);//Test Sequence Step 1 - - f_mtc_userCheckConferenceSetUp(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckConferenceEstablished(v_ueA); //Test Sequence Step 3 - + var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; + + // map/connect component ports + // f_cf_user_up(v_ueB); + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_as_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateConferenceCall (v_ueA);//Test Sequence Step 1 + + f_mtc_userCheckConferenceSetUp(v_ueA); //Test Sequence Step 2 + f_mtc_userCheckConferenceEstablished(v_ueA); //Test Sequence Step 3 + f_mtc_userInviteUserToJoinConferenceCall (v_ueA, v_userInfoB);//Test Sequence Step 4 f_mtc_userCheckConferenceCallRinging(v_ueB); //Test Sequence Step 5 f_mtc_userCheckConferenceCallPeerIsRinging(v_ueA); // Test Sequence Step 6 - - f_mtc_userAnswerConferenceCall(v_ueB);//Test Sequence Step 7 - + + f_mtc_userAnswerConferenceCall(v_ueB);//Test Sequence Step 7 + // check 1 200 OK f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); f_mtc_check_response_mx(v_mxB, c_statusLine200); f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); f_mtc_check_response_mx(v_mxA, c_statusLine200); - + f_mtc_userCheckInfoWhenPeerJoinsConference(v_ueA);//Test Sequence Step 8 - f_mtc_LeaveConferenceCall(v_ueB);//Test Sequence Step 9 - f_mtc_userCheckConferenceCallEnded(v_ueB);//Test Sequence Step 10 - f_mtc_userCheckConferenceCallEnded(v_ueA);//Test Sequence Step 11 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CONF_0001 + f_mtc_LeaveConferenceCall(v_ueB);//Test Sequence Step 9 + f_mtc_userCheckConferenceCallEnded(v_ueB);//Test Sequence Step 10 + f_mtc_userCheckConferenceCallEnded(v_ueA);//Test Sequence Step 11 + + // postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_as_down(v_config); + f_cf_adapter_down(); + } //end testcase TC_IMS_CONF_0001 } diff --git a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn similarity index 100% rename from ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn3 rename to ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index cd7b945..a332212 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -1157,12 +1157,6 @@ module LibIot_PIXITS { }//end group IMS - - - }//end group VxLTEMonitorInterfaces_Templates } - - - -- GitLab From eff8023a684da2d71eefedc6470d51612541e18f Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 16 Jun 2020 12:26:34 +0200 Subject: [PATCH 058/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 473 +++++++++++++++++++++++- 1 file changed, 471 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 3c1228b..50be402 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -11,13 +11,15 @@ module AtsImsIot_Functions { import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType; } + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter; } import from LibIms_UpperTester all; import from LibUpperTester all; import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } import from LibIot_Functions { function f_getE2EVerdict; } import from LibIot_TypesAndValues { type DefaultList; } import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} + + import from LibIot_VxLTE_Functions {function f_SipMonitorInterface_available,f_DiameterMonitorInterface_available;} group ue { @@ -2708,6 +2710,37 @@ module AtsImsIot_Functions { repeat; } } + + altstep a_default_sip(in charstring p_TP) runs on SipInterfaceMonitor { + [] sipPort.receive(Request:?) { + log(self, "### a_default_sip: Request default for " & p_TP ); + repeat; + } + [] sipPort.receive(Response:?) { + log(self, "### a_default_sip: Response default for " & p_TP ); + repeat; + } + [] sipPort.receive { + log(self, "*** a_default_sip: Received/ignored unexpected message when waiting for message complying to " & p_TP ); + //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); + //stop; // YANN: If execution is here, this means that the message was not properly decoded + repeat; + } + } + + altstep a_default_diameter(in charstring p_TP) runs on DiameterInterfaceMonitor { + [] diameterPort.receive(DIAMETER_MSG:?) { + log(self, "### a_default_diameter: Request default for " & p_TP ); + repeat; + } + [] diameterPort.receive { + log(self, "*** a_default_diameter: Received/ignored unexpected message when waiting for message complying to " & p_TP ); + //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); + //stop; // YANN: If execution is here, this means that the message was not properly decoded + repeat; + } + } + /** * @desc This altstep add one alternative checking for a very specifc SIP request. @@ -2744,7 +2777,42 @@ module AtsImsIot_Functions { } } } - + /** + * @desc This altstep add one alternative checking for a very specifc SIP request. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP request + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * * @param p_forwardMtc indicates if the received request should be forwarded to mtc + */ + altstep a_receive_sip_Request( + in template Request p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var Request v_message; + [not p_checkMessage] sipPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.request := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + [p_checkMessage] sipPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.request := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + } + /** * @desc This altstep add one alternative checking for a very specifc SIP response. If it matches then the conformance verdict is set to requested verdict @@ -2766,6 +2834,7 @@ module AtsImsIot_Functions { if(p_forwardMtc) { var SipMessage v_msg; v_msg.response := v_message; + log("### Forwarding message to MTC"); icpPort.send(v_msg); } } @@ -2774,10 +2843,84 @@ module AtsImsIot_Functions { if(p_forwardMtc) { var SipMessage v_msg; v_msg.response := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + } + /** + * @desc This altstep add one alternative checking for a very specifc SIP response. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP response + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc + */ + altstep a_receive_sip_Response( + in template Response p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var Response v_message; + [not p_checkMessage] sipPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.response := v_message; + log("### Forwarding message to MTC"); icpPort.send(v_msg); } } + [p_checkMessage] sipPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.response := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + } + + /** + * @desc This altstep add one alternative checking for a very specifc SIP response. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP response + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc + */ + altstep a_receive_diameter( + in template DIAMETER_MSG p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on DiameterInterfaceMonitor { + var DIAMETER_MSG v_message; + [not p_checkMessage] diameterPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_diameter: Received expected diameter MSG complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var DIAMETER_MSG v_msg; + v_msg := v_message; + log("### Forwarding message to MTC"); + //icpPort.send(v_msg); //TODO: check how to sync diameter with MTC + } + } + [p_checkMessage] diameterPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_diameter: Checked expected diameter_MSG complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var DIAMETER_MSG v_msg; + v_msg := v_message; + log("### Forwarding message to MTC"); + //icpPort.send(v_msg);//TODO: check how to sync diameter with MTC + } + } } + + }// end group @@ -2900,6 +3043,70 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); } + /** + * @desc This function implements skipping of messages as well as timeout handling. + * Prior to calling this function the message to be cheked for should be added + * as defaults. + * This function is independent of a specific interface component. + * @param p_tpId The Test Purpose identifier + * @param p_skipCount Indicate how many messages should be skipped prior to checking + */ + function f_gen_sip_receive( + in charstring p_tpId, + in template SkipType p_skip + ) runs on SipInterfaceMonitor { + var integer skipCount := valueof(p_skip.skipCount); + tc_wait.start; + + alt { + // preamble (consume prior messages) + [skipCount > 0 and ischosen(p_skip.skipMessage.request)] sipPort.receive (p_skip.skipMessage.request) { + skipCount := skipCount - 1; + log("***f_gen_sip_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [skipCount > 0 and ispresent(p_skip.skipMessage) and ischosen(p_skip.skipMessage.response)] sipPort.receive (p_skip.skipMessage.response) { + skipCount := skipCount - 1; + log("***f_gen_sip_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [] tc_wait.timeout { + f_setConformanceVerdict(inconc, "***f_gen_sip_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); + } + } + + } + + /** + * @desc This function implements skipping of messages as well as timeout handling. + * Prior to calling this function the message to be cheked for should be added + * as defaults. + * This function is independent of a specific interface component. + * @param p_tpId The Test Purpose identifier + * @param p_skipCount Indicate how many messages should be skipped prior to checking + */ + function f_gen_diameter_receive( + in charstring p_tpId, + in template SkipTypeDiameter p_skip + ) runs on DiameterInterfaceMonitor { + var integer skipCount := valueof(p_skip.skipCount); + tc_wait.start; + + alt { + // preamble (consume prior messages) + [skipCount > 0 and ispresent(p_skip.skipMessage)] diameterPort.receive (p_skip.skipMessage) { + skipCount := skipCount - 1; + log("***f_gen_diameter_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [] tc_wait.timeout { + f_setConformanceVerdict(inconc, "***f_gen_diameter_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); + } + } + + } + + /** * @desc Activates for each entry in a expected IMS SIP message list a default * for receiving that message and setting the verdict as desired @@ -2937,6 +3144,268 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); } //log ("### f_activateImsSipDefaults: ended"); } + + /** + * @desc Activates for each entry in a expected IMS SIP message list a default + * for receiving that message and setting the verdict as desired + * @param p_default Reference to default array where deaults are to be added + * @param p_startIdx Index into default array after which references for + * defaults created in this function should be added + * @param p_list List of expected messages to be checked in default + * @param p_verdict Verdict to be set in case the incoming message matches + any of the expcted messages + * @param p_tpId Test Purpose identifir + */ + function f_activateSipDefaults( + inout DefaultList p_default, + in integer p_startIdx, + in template SipMessageList p_list, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var integer v_size := lengthof(p_list); + var integer v_idx := p_startIdx; + + for (var integer i := 0; i < v_size; i := i + 1) { + if (ischosen(p_list[i].request)) { + p_default[v_idx] := activate( + a_receive_sip_Request(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } else { + p_default[v_idx] := activate( + a_receive_sip_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } + v_idx := v_idx + 1; + } +//log ("### f_activateImsSipDefaults: ended"); + } + + /** + * @desc Activates for each entry in a expected IMS SIP message list a default + * for receiving that message and setting the verdict as desired + * @param p_default Reference to default array where deaults are to be added + * @param p_startIdx Index into default array after which references for + * defaults created in this function should be added + * @param p_list List of expected messages to be checked in default + * @param p_verdict Verdict to be set in case the incoming message matches + any of the expcted messages + * @param p_tpId Test Purpose identifir + */ + function f_activateDiameterDefaults( + inout DefaultList p_default, + in integer p_startIdx, + in template DiameterMessageList p_list, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on DiameterInterfaceMonitor { + var integer v_size := lengthof(p_list); + var integer v_idx := p_startIdx; + + for (var integer i := 0; i < v_size; i := i + 1) { + if (isvalue(p_list[i])) { + p_default[v_idx] := activate( + a_receive_diameter(p_list[i],p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } +// else { +// p_default[v_idx] := activate( +// a_receive_diameter_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) +// ); +// } + v_idx := v_idx + 1; + } +//log ("### f_activateImsSipDefaults: ended"); + } + + + /** + * @desc + * Generic function for reading and verifying messages on the + * interface associated to the ImsInterfaceMonitor instance. This + * functions works as follows: First, messages are skipped according + * to the p_skip template. The p_skip template contains a message + * template and a counter indicating the number of received messages + * matching the message template to be skipped. If not enough + * messages matching the message template arrive at the interface, + * the function fails after timout. Next, messages are consumed from + * the interface and matched against the p_passCriteria template + * list and the p_failCriteria template list. The function + * terminates with pass if a message is received matching a + * pass-template and terminates with fail if a fail-template + * matches. Matching against pass-templates occurs bevor matching + * agains fail-templates. If neither pass-templates nor + * fail-templates match, then the functions continues reading from + * the interface until a match arises, or timeout. The timeout value + * is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if + * p_forwardMtc is set to true, the last received message is stored + * to be fetched and used later by the main test component. Some + * special use cases: - Set p_skip.skipCounter to 0 to avoid + * skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and + * p_skip.skipMessage to ? to skip exactly one message of any type + * will be skipped. - If the list of fail-templates is empty, then + * the function will wait for the first message maching a + * pass-message, or fail after timeout. + * @param p_passCriteria list of message templates which lead to pass + * @param p_failCriteria list of message templates which lead to fail + * @param p_skip + * Indicate how many messages from a specific sip template should be + * skipped prior to checking + * @param p_tpId The Test Purpose identifier + * @param p_forwardMtc + * indicate if the received Sip message should be forwarded to the + * mtc + * @param p_checkMessage + * indicate if the incomming message should only be checked + * (port.check) or consumed (port.receive). The check operation + * allows read access to the top element of incoming port queues + * without removing the top element from the queue. + */ + function f_Iot_Sip_receive( + in template SipMessageList p_passCriteria, + in template SipMessageList p_failCriteria, + in template SkipType p_skip, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var integer v_size := lengthof(p_failCriteria); + var DefaultList v_defaultArray; + var integer i := 0; + var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); + + log ("### f_Iot_Sip_receive: passCriteria=", p_passCriteria); + log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); + + // check if interface is available + if (ImsTestCoordinator.f_SipMonitorInterface_available(vc_interfaceName)==false){ + setverdict(inconc, self, "******f_Iot_Sip_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); + }else{// Interface is available + v_defaultArray[0] := activate(a_default_sip(p_tpId)); + f_activateSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); + f_activateSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); + f_gen_sip_receive(p_tpId, p_skip); + + for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { + deactivate(v_defaultArray[i]); + } + + } + +// for(i := 0; i < v_size_ai; i := i+1) { +// if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { +// if (PX_AVAILABLE_INTERFACES[i].available == false) { +// setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); +// } else { // Interface is available +// v_defaultArray[0] := activate(a_default(p_tpId)); +// f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); +// f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); +// f_gen_receive(p_tpId, p_skip); +// +// for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { +// deactivate(v_defaultArray[i]); +// } +// } +// break; // Exit loop +// } +// } // 'for' loop + } + + /** + * @desc + * Generic function for reading and verifying messages on the + * interface associated to the ImsInterfaceMonitor instance. This + * functions works as follows: First, messages are skipped according + * to the p_skip template. The p_skip template contains a message + * template and a counter indicating the number of received messages + * matching the message template to be skipped. If not enough + * messages matching the message template arrive at the interface, + * the function fails after timout. Next, messages are consumed from + * the interface and matched against the p_passCriteria template + * list and the p_failCriteria template list. The function + * terminates with pass if a message is received matching a + * pass-template and terminates with fail if a fail-template + * matches. Matching against pass-templates occurs bevor matching + * agains fail-templates. If neither pass-templates nor + * fail-templates match, then the functions continues reading from + * the interface until a match arises, or timeout. The timeout value + * is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if + * p_forwardMtc is set to true, the last received message is stored + * to be fetched and used later by the main test component. Some + * special use cases: - Set p_skip.skipCounter to 0 to avoid + * skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and + * p_skip.skipMessage to ? to skip exactly one message of any type + * will be skipped. - If the list of fail-templates is empty, then + * the function will wait for the first message maching a + * pass-message, or fail after timeout. + * @param p_passCriteria list of message templates which lead to pass + * @param p_failCriteria list of message templates which lead to fail + * @param p_skip + * Indicate how many messages from a specific sip template should be + * skipped prior to checking + * @param p_tpId The Test Purpose identifier + * @param p_forwardMtc + * indicate if the received Sip message should be forwarded to the + * mtc + * @param p_checkMessage + * indicate if the incomming message should only be checked + * (port.check) or consumed (port.receive). The check operation + * allows read access to the top element of incoming port queues + * without removing the top element from the queue. + */ + function f_Iot_Diameter_receive( + in template DiameterMessageList p_passCriteria, + in template DiameterMessageList p_failCriteria, + in template SkipTypeDiameter p_skip, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on DiameterInterfaceMonitor { + var integer v_size := lengthof(p_failCriteria); + var DefaultList v_defaultArray; + var integer i := 0; + var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); + + log ("### f_Iot_Diameter_receive: passCriteria=", p_passCriteria); + log ("### f_Iot_Diameter_receive: failCriteria=", p_failCriteria); + + // check if interface is available + if (f_DiameterMonitorInterface_available(vc_interfaceName)==false){ + setverdict(inconc, self, "******f_Iot_Diameter_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); + }else{// Interface is available + v_defaultArray[0] := activate(a_default_diameter(p_tpId)); + f_activateDiameterDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); + f_activateDiameterDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); + f_gen_diameter_receive(p_tpId, p_skip); + + for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { + deactivate(v_defaultArray[i]); + } + + } + +// for(i := 0; i < v_size_ai; i := i+1) { +// if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { +// if (PX_AVAILABLE_INTERFACES[i].available == false) { +// setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); +// } else { // Interface is available +// v_defaultArray[0] := activate(a_default(p_tpId)); +// f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); +// f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); +// f_gen_receive(p_tpId, p_skip); +// +// for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { +// deactivate(v_defaultArray[i]); +// } +// } +// break; // Exit loop +// } +// } // 'for' loop + } }//end group -- GitLab From c1886e45a5032601414cd67b114b990944c3d8b7 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 16 Jun 2020 12:26:45 +0200 Subject: [PATCH 059/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn b/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn index 6933052..61a232b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn @@ -13,6 +13,7 @@ module AtsImsIot_TypesAndValues { SEND_request, RECEIVE_response }; + import from LibDiameter_TypesAndValues {type DIAMETER_MSG} import from LibCommon_DataStrings {type Bit1, Bit3}; group SIPmessageTypes { @@ -40,6 +41,17 @@ module AtsImsIot_TypesAndValues { SipMessage skipMessage optional } } + + group DiameterMessageTypes{ + /** + * @desc DIAMETER Message List Type + */ + type record of DIAMETER_MSG DiameterMessageList; + type record SkipTypeDiameter { + integer skipCount, + DIAMETER_MSG skipMessage optional + } + } group DnsEnumMessageTypes { /** -- GitLab From 0e4062a2e20bc54e1c205cd6042682bf1d54014e Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 16 Jun 2020 12:27:37 +0200 Subject: [PATCH 060/176] test configuration + init --- ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 712 +++++++++++++----------- 1 file changed, 381 insertions(+), 331 deletions(-) diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn index ed7e3fb..ff797b8 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -25,358 +25,407 @@ module LibIot_VxLTE_Functions { import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; - /** - * @desc Check and create a list of monitor interfaces based on PIXITS - * @param - * @return the created monitor component list in vc_MonIntfList - */ - function f_setVxLteMonIterfacesAvailability(/*inout VxLTEMonitorInterfaceList p_vxlteMonIntfList*/)runs on ImsTestCoordinator{ - + group ConfigurationFunctions{ + /** + * @desc Check and create a list of monitor interfaces based on PIXITS + * @param + * @return the created monitor component list in vc_MonIntfList + */ + function f_setVxLteMonIterfacesAvailability(/*inout VxLTEMonitorInterfaceList p_vxlteMonIntfList*/)runs on ImsTestCoordinator{ + + + if (PX_SIP_GMA_MONITORENABLED == true){ + //p_vxlteMonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); + vc_MonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); + } + if (PX_SIP_GMB_MONITORENABLED == true){ + vc_MonIntfList.gmB := valueof(m_MonIntf_Sip_Gm_B); + } + if (PX_SIP_IC_MONITORENABLED == true){ + vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic); + } + if (PX_SIP_MW_MONITORENABLED == true){ - if (PX_SIP_GMA_MONITORENABLED == true){ - //p_vxlteMonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); - vc_MonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); - } - if (PX_SIP_GMB_MONITORENABLED == true){ - vc_MonIntfList.gmB := valueof(m_MonIntf_Sip_Gm_B); - } - if (PX_SIP_IC_MONITORENABLED == true){ - vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic); - } - if (PX_SIP_MW_MONITORENABLED == true){ + vc_MonIntfList.mwPI := valueof(m_MonIntf_Sip_Mw_PI); + /**/ + vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS); + /**/ + vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS); + /**/ + vc_MonIntfList.mwPB := valueof(m_MonIntf_Sip_Mw_PB); + /**/ + vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB); + } + if (PX_SIP_ISC_MONITORENABLED == true){ + vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC); + } - vc_MonIntfList.mwPI := valueof(m_MonIntf_Sip_Mw_PI); - /**/ - vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS); - /**/ - vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS); - /**/ - vc_MonIntfList.mwPB := valueof(m_MonIntf_Sip_Mw_PB); - /**/ - vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB); - } - if (PX_SIP_ISC_MONITORENABLED == true){ - vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC); - } - - - - if (PX_DIAMETER_CX_MONITORENABLED == true){ - vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH); - /**/ - vc_MonIntfList.cxSH := valueof(m_MonIntf_Diameter_Cx_SH); - } - if (PX_DIAMETER_GX_MONITORENABLED == true){ - vc_MonIntfList.gx := valueof(m_MonIntf_Diameter_Gx); - } - if (PX_DIAMETER_RX_MONITORENABLED == true){ - vc_MonIntfList.rx := valueof(m_MonIntf_Diameter_Rx); - } - if (PX_DIAMETER_S6A_MONITORENABLED == true){ - vc_MonIntfList.s6a := valueof(m_MonIntf_Diameter_S6a); - } - if (PX_DIAMETER_S9_MONITORENABLED == true){ - vc_MonIntfList.s9 := valueof(m_MonIntf_Diameter_S9); - } - if (PX_DIAMETER_SH_MONITORENABLED == true){ - vc_MonIntfList.sh := valueof(m_MonIntf_Diameter_Sh); - } - - } - /** - * @desc Create monitor components based on vc_MonIntfList - * @param - * @return the created monitor components in vc_vxlte_monitor_components - */ - function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{ - - if (isvalue(vc_MonIntfList.gmA)){ - vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA.interfaceName); - } - if (isvalue(vc_MonIntfList.gmB)){ - vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB.interfaceName); - } - - if (isvalue(vc_MonIntfList.ic)){ - vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic.interfaceName); - } - - if (isvalue(vc_MonIntfList.mwPI)){ - vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI.interfaceName); - } - if (isvalue(vc_MonIntfList.mwPS)){ - vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS.interfaceName); - } - if (isvalue(vc_MonIntfList.mwIS)){ - vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS.interfaceName); - } - if (isvalue(vc_MonIntfList.mwPB)){ - vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB.interfaceName); - } - if (isvalue(vc_MonIntfList.mwIB)){ - vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB.interfaceName); + + if (PX_DIAMETER_CX_MONITORENABLED == true){ + vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH); + /**/ + vc_MonIntfList.cxSH := valueof(m_MonIntf_Diameter_Cx_SH); + } + if (PX_DIAMETER_GX_MONITORENABLED == true){ + vc_MonIntfList.gx := valueof(m_MonIntf_Diameter_Gx); + } + if (PX_DIAMETER_RX_MONITORENABLED == true){ + vc_MonIntfList.rx := valueof(m_MonIntf_Diameter_Rx); + } + if (PX_DIAMETER_S6A_MONITORENABLED == true){ + vc_MonIntfList.s6a := valueof(m_MonIntf_Diameter_S6a); + } + if (PX_DIAMETER_S9_MONITORENABLED == true){ + vc_MonIntfList.s9 := valueof(m_MonIntf_Diameter_S9); + } + if (PX_DIAMETER_SH_MONITORENABLED == true){ + vc_MonIntfList.sh := valueof(m_MonIntf_Diameter_Sh); + } + } - if (isvalue(vc_MonIntfList.isc)){ - vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc.interfaceName); + /** + * @desc Create monitor components based on vc_MonIntfList + * @param + * @return the created monitor components in vc_vxlte_monitor_components + */ + function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{ + + if (isvalue(vc_MonIntfList.gmA)){ + vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA.interfaceName); + } + if (isvalue(vc_MonIntfList.gmB)){ + vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB.interfaceName); + } + + if (isvalue(vc_MonIntfList.ic)){ + vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic.interfaceName); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI.interfaceName); + } + if (isvalue(vc_MonIntfList.mwPS)){ + vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS.interfaceName); + } + if (isvalue(vc_MonIntfList.mwIS)){ + vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS.interfaceName); + } + if (isvalue(vc_MonIntfList.mwPB)){ + vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB.interfaceName); + } + if (isvalue(vc_MonIntfList.mwIB)){ + vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB.interfaceName); + } + + if (isvalue(vc_MonIntfList.isc)){ + vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc.interfaceName); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH.interfaceName); + } + if (isvalue(vc_MonIntfList.cxSH)){ + vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH.interfaceName); + } + if (isvalue(vc_MonIntfList.gx)){ + vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx.interfaceName); + } + if (isvalue(vc_MonIntfList.rx)){ + vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx.interfaceName); + } + if (isvalue(vc_MonIntfList.s6a)){ + vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a.interfaceName); + } + if (isvalue(vc_MonIntfList.s9)){ + vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9.interfaceName); + } + if (isvalue(vc_MonIntfList.sh)){ + vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh.interfaceName); + } } - - - if (isvalue(vc_MonIntfList.cxIH)){ - vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH.interfaceName); - } - if (isvalue(vc_MonIntfList.cxSH)){ - vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH.interfaceName); - } - if (isvalue(vc_MonIntfList.gx)){ - vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx.interfaceName); - } - if (isvalue(vc_MonIntfList.rx)){ - vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx.interfaceName); - } - if (isvalue(vc_MonIntfList.s6a)){ - vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a.interfaceName); - } - if (isvalue(vc_MonIntfList.s9)){ - vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9.interfaceName); + /** + * @desc Start monitor components based on vc_MonIntfList + * @param + * @return Created monitor components in vc_vxlte_monitor_components are connected/mapped + */ + function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{ + //Initialize the Adapter (including the TrafficCapture process). + f_cf_initCapture(); + + if (isvalue(vc_MonIntfList.gmA)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA); + //TODO: per each enabled monitor inteface send traffic filter req + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.gmA.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.gmB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.gmB.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.ic)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.ic); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.ic.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPI); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPI.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwPS)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPS); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPS.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwIS)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIS); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwIS.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwPB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPB.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwIB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwIB.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.isc)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.isc); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.isc.interfaceInfo} + ) + ))); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxIH); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.cxIH.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.cxSH)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxSH); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.cxSH.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.gx)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.gx); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.gx.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.rx)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.rx); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.rx.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.s6a)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s6a); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.s6a.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.s9)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s9); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.s9.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.sh)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.sh); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.sh.interfaceInfo} + ) + ))); + } + + f_cf_startCapture(); } - if (isvalue(vc_MonIntfList.sh)){ - vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh.interfaceName); - } - } - - /** - * @desc Start monitor components based on vc_MonIntfList - * @param - * @return Created monitor components in vc_vxlte_monitor_components are connected/mapped - */ - function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{ - //Initialize the Adapter (including the TrafficCapture process). - f_cf_initCapture(); - if (isvalue(vc_MonIntfList.gmA)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA); - //TODO: per each enabled monitor inteface send traffic filter req - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.gmA.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.gmB)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmB); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.gmB.interfaceInfo} - ) - ))); - } + /** + * @desc Stops monitor components based on vc_MonIntfList + * @param + * @return Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped + */ + function f_cf_VxLteMonitor_Down() runs on ImsTestCoordinator{ + //Stop traffic capture processing. + f_cf_stopCapture(); + + if (isvalue(vc_MonIntfList.gmA)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmA); + } + if (isvalue(vc_MonIntfList.gmB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmB); + } - if (isvalue(vc_MonIntfList.ic)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.ic); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.ic.interfaceInfo} - ) - ))); - } + if (isvalue(vc_MonIntfList.ic)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.ic); + } - if (isvalue(vc_MonIntfList.mwPI)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPI); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwPI.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwPS)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPS); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwPS.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwIS)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIS); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwIS.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwPB)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPB); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwPB.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwIB)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIB); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwIB.interfaceInfo} - ) - ))); - } + if (isvalue(vc_MonIntfList.mwPI)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPI); + } + if (isvalue(vc_MonIntfList.mwPS)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPS); + } + if (isvalue(vc_MonIntfList.mwIS)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIS); + } + if (isvalue(vc_MonIntfList.mwPB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPB); + } + if (isvalue(vc_MonIntfList.mwIB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIB); + } - if (isvalue(vc_MonIntfList.isc)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.isc); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.isc.interfaceInfo} - ) - ))); - } + if (isvalue(vc_MonIntfList.isc)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.isc); + } - if (isvalue(vc_MonIntfList.cxIH)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxIH); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.cxIH.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.cxSH)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxSH); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.cxSH.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.gx)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.gx); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.gx.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.rx)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.rx); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.rx.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.s6a)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s6a); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.s6a.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.s9)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s9); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.s9.interfaceInfo} - ) - ))); + if (isvalue(vc_MonIntfList.cxIH)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxIH); + } + if (isvalue(vc_MonIntfList.cxSH)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxSH); + } + if (isvalue(vc_MonIntfList.gx)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.gx); + } + if (isvalue(vc_MonIntfList.rx)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.rx); + } + if (isvalue(vc_MonIntfList.s6a)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s6a); + } + if (isvalue(vc_MonIntfList.s9)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s9); + } + if (isvalue(vc_MonIntfList.sh)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.sh); + } } - if (isvalue(vc_MonIntfList.sh)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.sh); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.sh.interfaceInfo} - ) - ))); + }//end group ConfigurationFunctions + group CheckFunctions{ + /** + * @desc Check monitor component based on interface name + * @param + * @return true - Monitorinteface available/active + * false - Monitorinteface not exists or not available/active + */ + function f_SipMonitorInterface_available(charstring p_interfaceName) runs on ImsTestCoordinator return boolean{ + +// if (vc_vxlte_monitor_components.gmA.vc_interfacename) {return true;} + if ((isvalue(vc_MonIntfList.gmA)) and (vc_MonIntfList.gmA.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.gmB)) and (vc_MonIntfList.gmB.interfaceName==p_interfaceName)){ return true;} + + if ((isvalue(vc_MonIntfList.ic)) and (vc_MonIntfList.ic.interfaceName==p_interfaceName)){ return true;} + + if ((isvalue(vc_MonIntfList.mwPI)) and (vc_MonIntfList.mwPI.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.mwPS)) and (vc_MonIntfList.mwPS.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.mwIS)) and (vc_MonIntfList.mwIS.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.mwPB)) and (vc_MonIntfList.mwPB.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.mwIB)) and (vc_MonIntfList.mwIB.interfaceName==p_interfaceName)){ return true;} + + if ((isvalue(vc_MonIntfList.isc)) and (vc_MonIntfList.isc.interfaceName==p_interfaceName)){ return true;} + + return false; } - f_cf_startCapture(); - } - - /** - * @desc Stops monitor components based on vc_MonIntfList - * @param - * @return Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped - */ - function f_cf_VxLteMonitor_Down() runs on ImsTestCoordinator{ - //Stop traffic capture processing. - f_cf_stopCapture(); - - if (isvalue(vc_MonIntfList.gmA)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmA); - } - if (isvalue(vc_MonIntfList.gmB)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmB); - } - - if (isvalue(vc_MonIntfList.ic)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.ic); - } + /** + * @desc Check monitor component based on interface name + * @param + * @return true - Monitorinteface available/active + * false - Monitorinteface not exists or not available/active + */ + function f_DiameterMonitorInterface_available(charstring p_interfaceName) runs on ImsTestCoordinator return boolean{ + + if ((isvalue(vc_MonIntfList.cxIH)) and (vc_MonIntfList.cxIH.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.cxSH)) and (vc_MonIntfList.cxSH.interfaceName==p_interfaceName)){ return true;} - if (isvalue(vc_MonIntfList.mwPI)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPI); - } - if (isvalue(vc_MonIntfList.mwPS)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPS); - } - if (isvalue(vc_MonIntfList.mwIS)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIS); - } - if (isvalue(vc_MonIntfList.mwPB)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPB); - } - if (isvalue(vc_MonIntfList.mwIB)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIB); - } - - if (isvalue(vc_MonIntfList.isc)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.isc); - } - - - - if (isvalue(vc_MonIntfList.cxIH)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxIH); - } - if (isvalue(vc_MonIntfList.cxSH)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxSH); - } - if (isvalue(vc_MonIntfList.gx)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.gx); - } - if (isvalue(vc_MonIntfList.rx)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.rx); - } - if (isvalue(vc_MonIntfList.s6a)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s6a); - } - if (isvalue(vc_MonIntfList.s9)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s9); - } - if (isvalue(vc_MonIntfList.sh)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.sh); + if ((isvalue(vc_MonIntfList.gx)) and (vc_MonIntfList.gx.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.rx)) and (vc_MonIntfList.rx.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.s6a)) and (vc_MonIntfList.s6a.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.s9)) and (vc_MonIntfList.s9.interfaceName==p_interfaceName)){ return true;} + + if ((isvalue(vc_MonIntfList.sh)) and (vc_MonIntfList.sh.interfaceName==p_interfaceName)){ return true;} + + return false; } - } - + } + group temporary_functions{ function f_check_and_setup_monitor_interfaces() runs on ImsTestCoordinator{ var InterfaceAvailableList v_VxLTE_MonIntf_Available; @@ -516,4 +565,5 @@ module LibIot_VxLTE_Functions { return (v_MI_List_updated); } + } } \ No newline at end of file -- GitLab From ec7097f92713dada3a0625a81a6754ce8d2f5bd1 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 16 Jun 2020 12:30:05 +0200 Subject: [PATCH 061/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 50be402..3513460 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -3282,7 +3282,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); // check if interface is available - if (ImsTestCoordinator.f_SipMonitorInterface_available(vc_interfaceName)==false){ + if (f_SipMonitorInterface_available(vc_interfaceName)==false){ setverdict(inconc, self, "******f_Iot_Sip_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); }else{// Interface is available v_defaultArray[0] := activate(a_default_sip(p_tpId)); -- GitLab From 5060e63258eea12f082959a8e513b13e8b9c6787 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 16 Jun 2020 12:53:36 +0200 Subject: [PATCH 062/176] test configuration + init --- ttcn/LibIot/LibIot_PIXITS.ttcn | 86 +++++++++++++++++----------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index a332212..73c1751 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -36,7 +36,7 @@ module LibIot_PIXITS { monitorInterfaces := { { interfaceName := "Gm", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -59,7 +59,7 @@ module LibIot_PIXITS { }, { interfaceName := "Mx", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -87,7 +87,7 @@ module LibIot_PIXITS { }, { interfaceName := "Ici", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -100,7 +100,7 @@ module LibIot_PIXITS { }, { interfaceName := "ISC", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -119,7 +119,7 @@ module LibIot_PIXITS { }, { interfaceName := "Rx", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -132,7 +132,7 @@ module LibIot_PIXITS { }, { interfaceName := "Sgi", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -145,7 +145,7 @@ module LibIot_PIXITS { }, { interfaceName := "Mw", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -164,7 +164,7 @@ module LibIot_PIXITS { monitorInterfaces := { { interfaceName := "Gm", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -187,7 +187,7 @@ module LibIot_PIXITS { }, { interfaceName := "Mx", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -215,7 +215,7 @@ module LibIot_PIXITS { }, { interfaceName := "Ici", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -228,7 +228,7 @@ module LibIot_PIXITS { }, { interfaceName := "ISC", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -380,7 +380,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_S6a := { interfaceName := "S6a", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -399,7 +399,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_S9 := { interfaceName := "S9", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -418,7 +418,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Gx := { interfaceName := "Gx", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -441,7 +441,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := { interfaceName := "Gm A", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -460,7 +460,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := { interfaceName := "Gm B", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -479,7 +479,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Ic := { interfaceName := "Ic", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -498,7 +498,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := { interfaceName := "Mw PI", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -517,7 +517,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := { interfaceName := "Mw PS", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -536,7 +536,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := { interfaceName := "Mw SI", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -555,7 +555,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Isc := { interfaceName := "Isc", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -574,7 +574,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := { interfaceName := "Mw PB", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -593,7 +593,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := { interfaceName := "Mw IB", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -615,7 +615,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Rx := { interfaceName := "Rx", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -634,7 +634,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := { interfaceName := "Cx IH", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -653,7 +653,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := { interfaceName := "Cx SH", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -672,7 +672,7 @@ module LibIot_PIXITS { modulepar MonitorInterfaceInfo PX_MonIntf_Sh := { interfaceName := "Sh", - available := true, + //available := true, interfaceInfo := { IpInterfaceInfo := { { @@ -828,7 +828,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Diameter_S6a := { interfaceName := "S6a", - available := PX_DIAMETER_S6A_MONITORENABLED, + //available := PX_DIAMETER_S6A_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -848,7 +848,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Diameter_S9 := { interfaceName := "S9", - available := PX_DIAMETER_S9_MONITORENABLED, + //available := PX_DIAMETER_S9_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -868,7 +868,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Diameter_Gx := { interfaceName := "Gx", - available := PX_DIAMETER_GX_MONITORENABLED, + //available := PX_DIAMETER_GX_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -894,7 +894,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Gm_A := { interfaceName := "Gm A", - available := PX_SIP_GMA_MONITORENABLED, + //available := PX_SIP_GMA_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -914,7 +914,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Gm_B := { interfaceName := "Gm B", - available := PX_SIP_GMB_MONITORENABLED, + //available := PX_SIP_GMB_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -934,7 +934,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Ic := { interfaceName := "Ic", - available := PX_SIP_IC_MONITORENABLED, + //available := PX_SIP_IC_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -954,7 +954,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PI:= { interfaceName := "Mw PI", - available := PX_SIP_MW_MONITORENABLED, + //available := PX_SIP_MW_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -974,7 +974,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PS:= { interfaceName := "Mw PS", - available := PX_SIP_MW_MONITORENABLED, + //available := PX_SIP_MW_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -994,7 +994,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Mw_SI:= { interfaceName := "Mw SI", - available := PX_SIP_MW_MONITORENABLED, + //available := PX_SIP_MW_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -1014,7 +1014,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_ISC:= { interfaceName := "Isc", - available := PX_SIP_ISC_MONITORENABLED, + //available := PX_SIP_ISC_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -1034,7 +1034,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PB:= { interfaceName := "Mw PB", - available := PX_SIP_MW_MONITORENABLED, + //available := PX_SIP_MW_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -1054,7 +1054,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IB:= { interfaceName := "Mw IB", - available := PX_SIP_MW_MONITORENABLED, + //available := PX_SIP_MW_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -1076,7 +1076,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Diameter_Rx := { interfaceName := "Rx", - available := PX_DIAMETER_RX_MONITORENABLED, + //available := PX_DIAMETER_RX_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -1096,7 +1096,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_IH := { interfaceName := "Cx IH", - available := PX_DIAMETER_CX_MONITORENABLED, + //available := PX_DIAMETER_CX_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -1116,7 +1116,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_SH := { interfaceName := "Cx SH", - available := PX_DIAMETER_CX_MONITORENABLED, + //available := PX_DIAMETER_CX_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { @@ -1136,7 +1136,7 @@ module LibIot_PIXITS { template MonitorInterfaceInfo m_MonIntf_Diameter_Sh := { interfaceName := "Sh", - available := PX_DIAMETER_SH_MONITORENABLED, + //available := PX_DIAMETER_SH_MONITORENABLED, interfaceInfo := { IpInterfaceInfo := { { -- GitLab From 255800b367e01f17afa68092d284ca4dede1255d Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 16 Jun 2020 13:53:56 +0200 Subject: [PATCH 063/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 3513460..e05768f 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -3271,7 +3271,8 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); in template SkipType p_skip, in charstring p_tpId, in boolean p_forwardMtc, - in boolean p_checkMessage + in boolean p_checkMessage, + in ImsTestCoordinator p_itc ) runs on SipInterfaceMonitor { var integer v_size := lengthof(p_failCriteria); var DefaultList v_defaultArray; @@ -3282,7 +3283,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); // check if interface is available - if (f_SipMonitorInterface_available(vc_interfaceName)==false){ + if (p_itc.f_SipMonitorInterface_available(vc_interfaceName)==false){ setverdict(inconc, self, "******f_Iot_Sip_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); }else{// Interface is available v_defaultArray[0] := activate(a_default_sip(p_tpId)); @@ -3363,7 +3364,8 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); in template SkipTypeDiameter p_skip, in charstring p_tpId, in boolean p_forwardMtc, - in boolean p_checkMessage + in boolean p_checkMessage, + in ImsTestCoordinator p_itc ) runs on DiameterInterfaceMonitor { var integer v_size := lengthof(p_failCriteria); var DefaultList v_defaultArray; @@ -3374,7 +3376,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); log ("### f_Iot_Diameter_receive: failCriteria=", p_failCriteria); // check if interface is available - if (f_DiameterMonitorInterface_available(vc_interfaceName)==false){ + if (p_itc.f_DiameterMonitorInterface_available(vc_interfaceName)==false){ setverdict(inconc, self, "******f_Iot_Diameter_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); }else{// Interface is available v_defaultArray[0] := activate(a_default_diameter(p_tpId)); -- GitLab From ab7e596ccf6c6cb87ba1f987214b94119a80bb84 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 16 Jun 2020 15:57:56 +0200 Subject: [PATCH 064/176] access-network-charging-info added to pChargingVector --- ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 2 ++ ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index 967c291..fa0d816 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -240,6 +240,8 @@ module AtsImsIot_Templates_IC // pAccessNetworkInfo := omit, pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, + *, + complement({id := "access-network-charging-info", paramValue := ?}), * }) } diff --git a/ttcn/LibIms b/ttcn/LibIms index 45bea25..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e diff --git a/ttcn/LibSip b/ttcn/LibSip index 7f6fd81..2acb7ee 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 +Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 -- GitLab From a31096f8df209e65aba565c5d85f625816732be6 Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 17 Jun 2020 13:32:43 +0200 Subject: [PATCH 065/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index e05768f..8c725c4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -11,12 +11,12 @@ module AtsImsIot_Functions { import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter; } + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter;} import from LibIms_UpperTester all; import from LibUpperTester all; import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } import from LibIot_Functions { function f_getE2EVerdict; } - import from LibIot_TypesAndValues { type DefaultList; } + import from LibIot_TypesAndValues { type DefaultList, MonitorInterfaceInfo; } import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} import from LibIot_VxLTE_Functions {function f_SipMonitorInterface_available,f_DiameterMonitorInterface_available;} @@ -2928,6 +2928,10 @@ module AtsImsIot_Functions { function f_setInterfaceNameOnComponent(charstring p_name) runs on InterfaceMonitor{ vc_interfaceName := p_name; } + function f_setInterfaceInfoComponent(MonitorInterfaceInfo p_mii) runs on InterfaceMonitor{ + //vc_interfaceName := p_mii.interfacename; + vc_Interface := p_mii; + } group general_td_functions { @@ -3271,8 +3275,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); in template SkipType p_skip, in charstring p_tpId, in boolean p_forwardMtc, - in boolean p_checkMessage, - in ImsTestCoordinator p_itc + in boolean p_checkMessage ) runs on SipInterfaceMonitor { var integer v_size := lengthof(p_failCriteria); var DefaultList v_defaultArray; @@ -3283,7 +3286,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); // check if interface is available - if (p_itc.f_SipMonitorInterface_available(vc_interfaceName)==false){ + if(not((isvalue(vc_Interface)) and (vc_interfaceName==""))){ setverdict(inconc, self, "******f_Iot_Sip_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); }else{// Interface is available v_defaultArray[0] := activate(a_default_sip(p_tpId)); @@ -3364,8 +3367,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); in template SkipTypeDiameter p_skip, in charstring p_tpId, in boolean p_forwardMtc, - in boolean p_checkMessage, - in ImsTestCoordinator p_itc + in boolean p_checkMessage ) runs on DiameterInterfaceMonitor { var integer v_size := lengthof(p_failCriteria); var DefaultList v_defaultArray; @@ -3376,7 +3378,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); log ("### f_Iot_Diameter_receive: failCriteria=", p_failCriteria); // check if interface is available - if (p_itc.f_DiameterMonitorInterface_available(vc_interfaceName)==false){ + if(not((isvalue(vc_Interface)) and (vc_interfaceName==""))){ setverdict(inconc, self, "******f_Iot_Diameter_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); }else{// Interface is available v_defaultArray[0] := activate(a_default_diameter(p_tpId)); -- GitLab From a02ebe572ae4e3abbc1d457040116fab5c70d95c Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 17 Jun 2020 13:33:00 +0200 Subject: [PATCH 066/176] test configuration + init --- .../AtsImsIot_TestConfiguration.ttcn | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn index 9420e07..4bdb403 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn @@ -14,7 +14,7 @@ module AtsImsIot_TestConfiguration { import from LibIms_UpperTester { modulepar PX_IMS_USER_DATA; } import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_PRODUCTS, PX_MAX_MSG_WAIT; } import from LibIot_TypesAndValues { - type StartTrafficCaptureRsp, StopTrafficCaptureRsp, InterfaceInfo, InterfaceInfoList, Product, + type StartTrafficCaptureRsp, StopTrafficCaptureRsp, MonitorInterfaceInfo, InterfaceInfo, InterfaceInfoList, Product, ProtocolFilter, StartTrafficCaptureRsp, StopTrafficCaptureRsp, SetFilterReq, SetFilterRsp, Status; } /*language "TTCN-3:2008 Amendment 1" - FSCOM/YGA*/ import from LibIot_Functions { altstep a_receiveIOTVerdict; function f_setConformanceVerdict, f_setE2EVerdict; } @@ -27,7 +27,7 @@ module AtsImsIot_TestConfiguration { m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout, m_SetFilterReq, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq, m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any; } - import from AtsImsIot_Functions {function f_setInterfaceNameOnComponent;} + import from AtsImsIot_Functions {function f_setInterfaceNameOnComponent, f_setInterfaceInfoComponent;} group constantDefinitions { //* interface monitor name Gm A @@ -427,9 +427,10 @@ module AtsImsIot_TestConfiguration { * @param p_name name of the monitor component * @return the created monitor component */ - function f_cf_create_monitor_sip(in charstring p_name) runs on ImsTestCoordinator return SipInterfaceMonitor { - var SipInterfaceMonitor v_monitor := SipInterfaceMonitor.create(p_name) alive; - v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + function f_cf_create_monitor_sip(in MonitorInterfaceInfo p_mii) runs on ImsTestCoordinator return SipInterfaceMonitor { + var SipInterfaceMonitor v_monitor := SipInterfaceMonitor.create(p_mii.interfaceName) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_mii.interfaceName)); + v_monitor.start(f_setInterfaceInfoComponent(p_mii)); v_monitor.done; return v_monitor; } @@ -438,9 +439,10 @@ module AtsImsIot_TestConfiguration { * @param p_name name of the monitor component * @return the created monitor component */ - function f_cf_create_monitor_diameter(in charstring p_name) runs on ImsTestCoordinator return DiameterInterfaceMonitor { - var DiameterInterfaceMonitor v_monitor := DiameterInterfaceMonitor.create(p_name) alive; - v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + function f_cf_create_monitor_diameter(in MonitorInterfaceInfo p_mii) runs on ImsTestCoordinator return DiameterInterfaceMonitor { + var DiameterInterfaceMonitor v_monitor := DiameterInterfaceMonitor.create(p_mii.interfaceName) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_mii.interfaceName)); + v_monitor.start(f_setInterfaceInfoComponent(p_mii)); v_monitor.done; return v_monitor; } @@ -449,9 +451,10 @@ module AtsImsIot_TestConfiguration { * @param p_name name of the monitor component * @return the created monitor component */ - function f_cf_create_monitor_naptr(in charstring p_name) runs on ImsTestCoordinator return NaptrInterfaceMonitor { - var NaptrInterfaceMonitor v_monitor := NaptrInterfaceMonitor.create(p_name) alive; - v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + function f_cf_create_monitor_naptr(in MonitorInterfaceInfo p_mii) runs on ImsTestCoordinator return NaptrInterfaceMonitor { + var NaptrInterfaceMonitor v_monitor := NaptrInterfaceMonitor.create(p_mii.interfaceName) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_mii.interfaceName)); + v_monitor.start(f_setInterfaceInfoComponent(p_mii)); v_monitor.done; return v_monitor; } @@ -460,9 +463,10 @@ module AtsImsIot_TestConfiguration { * @param p_name name of the monitor component * @return the created monitor component */ - function f_cf_create_monitor_sgi(in charstring p_name) runs on ImsTestCoordinator return SgiInterfaceMonitor { - var SgiInterfaceMonitor v_monitor := SgiInterfaceMonitor.create(p_name) alive; - v_monitor.start(f_setInterfaceNameOnComponent(p_name)); + function f_cf_create_monitor_sgi(in MonitorInterfaceInfo p_mii) runs on ImsTestCoordinator return SgiInterfaceMonitor { + var SgiInterfaceMonitor v_monitor := SgiInterfaceMonitor.create(p_mii.interfaceName) alive; + v_monitor.start(f_setInterfaceNameOnComponent(p_mii.interfaceName)); + v_monitor.start(f_setInterfaceInfoComponent(p_mii)); v_monitor.done; return v_monitor; } -- GitLab From 26bf28db03bdd5999de07f2a42608200b491a0fb Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 17 Jun 2020 13:33:14 +0200 Subject: [PATCH 067/176] test configuration + init --- ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 64 ++++++++++++------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn index ff797b8..45bb56f 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -93,58 +93,58 @@ module LibIot_VxLTE_Functions { function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{ if (isvalue(vc_MonIntfList.gmA)){ - vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA.interfaceName); + vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA); } if (isvalue(vc_MonIntfList.gmB)){ - vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB.interfaceName); + vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB); } if (isvalue(vc_MonIntfList.ic)){ - vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic.interfaceName); + vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic); } if (isvalue(vc_MonIntfList.mwPI)){ - vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI.interfaceName); + vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI); } if (isvalue(vc_MonIntfList.mwPS)){ - vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS.interfaceName); + vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS); } if (isvalue(vc_MonIntfList.mwIS)){ - vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS.interfaceName); + vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS); } if (isvalue(vc_MonIntfList.mwPB)){ - vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB.interfaceName); + vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB); } if (isvalue(vc_MonIntfList.mwIB)){ - vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB.interfaceName); + vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB); } if (isvalue(vc_MonIntfList.isc)){ - vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc.interfaceName); + vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc); } if (isvalue(vc_MonIntfList.cxIH)){ - vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH.interfaceName); + vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH); } if (isvalue(vc_MonIntfList.cxSH)){ - vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH.interfaceName); + vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH); } if (isvalue(vc_MonIntfList.gx)){ - vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx.interfaceName); + vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx); } if (isvalue(vc_MonIntfList.rx)){ - vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx.interfaceName); + vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx); } if (isvalue(vc_MonIntfList.s6a)){ - vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a.interfaceName); + vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a); } if (isvalue(vc_MonIntfList.s9)){ - vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9.interfaceName); + vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9); } if (isvalue(vc_MonIntfList.sh)){ - vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh.interfaceName); + vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh); } } @@ -437,21 +437,21 @@ module LibIot_VxLTE_Functions { v_InterfaceAvailable.interfaceName := PX_SIP_GMA_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_GMA_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_gmA := f_cf_create_monitor_sip ( PX_SIP_GMA_INTERFACENAME ); + v_gmA := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Gm_A)/*PX_SIP_GMA_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_gmA); } if (PX_SIP_GMB_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_GMB_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_GMB_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_gmB := f_cf_create_monitor_sip ( PX_SIP_GMB_INTERFACENAME ); + v_gmB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Gm_B)/*PX_SIP_GMB_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_gmB); } if (PX_SIP_IC_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_IC_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_IC_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_ic := f_cf_create_monitor_sip ( PX_SIP_IC_INTERFACENAME ); + v_ic := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Ic)/*PX_SIP_IC_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_ic); } if (PX_SIP_MW_MONITORENABLED == true){ @@ -459,38 +459,38 @@ module LibIot_VxLTE_Functions { v_InterfaceAvailable.interfaceName := PX_SIP_MW_PI_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_mwPI := f_cf_create_monitor_sip ( PX_SIP_MW_PI_INTERFACENAME ); + v_mwPI := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PI)/*PX_SIP_MW_PI_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwPI); /**/ v_InterfaceAvailable.interfaceName := PX_SIP_MW_PS_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_mwPS := f_cf_create_monitor_sip ( PX_SIP_MW_PS_INTERFACENAME ); + v_mwPS := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PS)/*PX_SIP_MW_PS_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwPS); /**/ v_InterfaceAvailable.interfaceName := PX_SIP_MW_IS_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_mwSI := f_cf_create_monitor_sip ( PX_SIP_MW_IS_INTERFACENAME ); + v_mwSI := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IS)/*PX_SIP_MW_IS_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwSI); /**/ v_InterfaceAvailable.interfaceName := PX_SIP_MW_PB_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_mwPB := f_cf_create_monitor_sip ( PX_SIP_MW_PB_INTERFACENAME ); + v_mwPB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PB)/*PX_SIP_MW_PB_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwPB); /**/ v_InterfaceAvailable.interfaceName := PX_SIP_MW_IB_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_mwIB := f_cf_create_monitor_sip ( PX_SIP_MW_IB_INTERFACENAME ); + v_mwIB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IB)/*PX_SIP_MW_IB_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwIB); } if (PX_SIP_ISC_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_ISC_INTERFACENAME; v_InterfaceAvailable.available := PX_SIP_ISC_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_isc := f_cf_create_monitor_sip ( PX_SIP_ISC_INTERFACENAME ); + v_isc := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_ISC)/*PX_SIP_ISC_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_isc); } @@ -500,48 +500,48 @@ module LibIot_VxLTE_Functions { v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_IH_INTERFACENAME; v_InterfaceAvailable.available := PX_DIAMETER_CX_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_cxIH := f_cf_create_monitor_diameter ( PX_DIAMETER_CX_IH_INTERFACENAME ); + v_cxIH := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Cx_IH)/*PX_DIAMETER_CX_IH_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_cxIH); /**/ v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_SH_INTERFACENAME; v_InterfaceAvailable.available := PX_DIAMETER_CX_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_cxSH := f_cf_create_monitor_diameter ( PX_DIAMETER_CX_SH_INTERFACENAME ); + v_cxSH := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Cx_SH)/*PX_DIAMETER_CX_SH_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_cxSH); } if (PX_DIAMETER_GX_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_DIAMETER_GX_INTERFACENAME; v_InterfaceAvailable.available := PX_DIAMETER_GX_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_gx := f_cf_create_monitor_diameter ( PX_DIAMETER_GX_INTERFACENAME ); + v_gx := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Gx)/*PX_DIAMETER_GX_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_gx); } if (PX_DIAMETER_RX_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_DIAMETER_RX_INTERFACENAME; v_InterfaceAvailable.available := PX_DIAMETER_RX_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_rx := f_cf_create_monitor_diameter ( PX_DIAMETER_RX_INTERFACENAME ); + v_rx := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Rx)/*PX_DIAMETER_RX_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_rx); } if (PX_DIAMETER_S6A_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_DIAMETER_S6A_INTERFACENAME; v_InterfaceAvailable.available := PX_DIAMETER_S6A_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_s6a := f_cf_create_monitor_diameter ( PX_DIAMETER_S6A_INTERFACENAME ); + v_s6a := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_S6a)/*PX_DIAMETER_S6A_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_s6a); } if (PX_DIAMETER_S9_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_DIAMETER_S9_INTERFACENAME; v_InterfaceAvailable.available := PX_DIAMETER_S9_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_s9 := f_cf_create_monitor_diameter ( PX_DIAMETER_S9_INTERFACENAME ); + v_s9 := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_S9)/*PX_DIAMETER_S9_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_s9); } if (PX_DIAMETER_SH_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_DIAMETER_SH_INTERFACENAME; v_InterfaceAvailable.available := PX_DIAMETER_SH_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); - v_sh := f_cf_create_monitor_diameter ( PX_DIAMETER_SH_INTERFACENAME ); + v_sh := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Sh)/*PX_DIAMETER_SH_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_sh); } } -- GitLab From 51975346405286f16af8ecfd58e283b7ff850ce7 Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 17 Jun 2020 13:48:42 +0200 Subject: [PATCH 068/176] test configuration + init --- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 8c725c4..11cff68 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -3286,7 +3286,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); // check if interface is available - if(not((isvalue(vc_Interface)) and (vc_interfaceName==""))){ + if(not((isvalue(vc_Interface)) /*and (vc_interfaceName=="")*/)){ setverdict(inconc, self, "******f_Iot_Sip_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); }else{// Interface is available v_defaultArray[0] := activate(a_default_sip(p_tpId)); @@ -3378,7 +3378,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); log ("### f_Iot_Diameter_receive: failCriteria=", p_failCriteria); // check if interface is available - if(not((isvalue(vc_Interface)) and (vc_interfaceName==""))){ + if(not((isvalue(vc_Interface)) /*and (vc_interfaceName=="")*/)){ setverdict(inconc, self, "******f_Iot_Diameter_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); }else{// Interface is available v_defaultArray[0] := activate(a_default_diameter(p_tpId)); -- GitLab From 2542afd4b3fffa0a080626677ffef027793c765e Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 19 Jun 2020 09:19:37 +0200 Subject: [PATCH 069/176] Update from Finn on Ic TPs, LibSip and LibDiamter update. --- test_purposes/Diameter_Common.tplan2 | 45 +- test_purposes/Ic/TP_IC.tplan2 | 747 ++++++++++++++++++++++++--- test_purposes/Sip_Common.tplan2 | 34 +- ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 5 files changed, 714 insertions(+), 116 deletions(-) diff --git a/test_purposes/Diameter_Common.tplan2 b/test_purposes/Diameter_Common.tplan2 index 60e4d11..5ccec7f 100644 --- a/test_purposes/Diameter_Common.tplan2 +++ b/test_purposes/Diameter_Common.tplan2 @@ -42,33 +42,34 @@ - create_session_request - delete_session_request - termination_SIP_signalling_session - // CX DIAMETER Requests/Answers - - UAA - - UAR - - MAA - - MAR - - SAA - - SAR - // RX DIAMETER Requests/Answers - - AAA - - AAR - - STA - - STR - // GX DIAMETER Requests/Answers - - RAA - - RAR - - CCA - - CCR - // S6A DIAMETER Requests/Answers - - ULA - - ULR - - CLR - - CLA ; } // End of Domain section Data { type DiameterMessage; + + // CX DIAMETER Requests/Answers + DiameterMessage UAA; + DiameterMessage UAR; + DiameterMessage MAA; + DiameterMessage MAR; + DiameterMessage SAA; + DiameterMessage SAR; + // RX DIAMETER Requests/Answers + DiameterMessage AAA; + DiameterMessage AAR; + DiameterMessage STA; + DiameterMessage STR; + // GX DIAMETER Requests/Answers + DiameterMessage RAA; + DiameterMessage RAR; + DiameterMessage CCA; + DiameterMessage CCR; + // S6A DIAMETER Requests/Answers + DiameterMessage ULA; + DiameterMessage ULR; + DiameterMessage CLR; + DiameterMessage CLA; } // End of Data section Configuration { diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2 index c4232ef..359ca2f 100644 --- a/test_purposes/Ic/TP_IC.tplan2 +++ b/test_purposes/Ic/TP_IC.tplan2 @@ -83,7 +83,7 @@ Package TP_IC { "S-CSCF shall insert orig-ioi parameter, remove access-network-charging-info parameter and P-Access-Network-Info header before sending initial INVITE or a initial request over NNI" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 ¶11 (1st numbered list)" + "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 ¶11 (1st numbered list), clause 5.10.3.2" Config Id CF_VxLTE_INT PICS Selection NONE @@ -103,13 +103,13 @@ Package TP_IC { the IMS_IBCF_A entity forwards the initial INVITE containing Route indicating value not PX_S_CSCF_A_SIP_URI, PChargingVector containing - Icid_AVP, - Orig_Ioi_AVP indicating value PX_IMS_A_ICID, - not Access_Network_Charging_Info_AVP, - not Term_Ioi_AVP + Icid, + Orig_Ioi indicating value PX_IMS_A_ICID, + not Access_Network_Charging_Info, + not Term_Ioi ; , RecordRoute containing - Header_AVP indicating value PX_S_CSCF_A_SIP_URI + Header indicating value PX_S_CSCF_A_SIP_URI ; , not PAccessNetworkInfo ; @@ -188,7 +188,7 @@ Package TP_IC { ; to the IMS_S_CSCF_A entity and the IMS_S_CSCF_A entity sends a NAPTR_Query containing - Query_AVP indicating value PX_UE_B_TEL_URI + Query indicating value PX_UE_B_TEL_URI ; to the Enum_DB entity and the Enum_DB entity sends a NAPTR_Response containing @@ -200,7 +200,7 @@ Package TP_IC { the IMS_IBCF_A entity forwards the initial INVITE containing RequestLine indicating value PX_UE_B_SIP_URI, PChargingVector containing - not Access_Network_Charging_Info_AVP + not Access_Network_Charging_Info ; ; to the IMS_IBCF_B entity @@ -220,7 +220,7 @@ Package TP_IC { an external attached network using static mode of operation" Reference "TS 124 229 (V15.06.0) [1], clause 5.2.6.3.3 (1st numbered list)" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -268,6 +268,43 @@ Package TP_IC { +// "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." + Test Purpose { + TP Id TP_IC_IBCF_INVITE_05 // Former TP_IMS_5046_01 + Test objective + "Verify that the IBCF successfully processes an initial INVITE (Terminating Leg)." + Reference + "TS 124 229 (V15.06.0) [1], clause 5.2.6.3.3 (1st numbered list)" + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_B entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends an intial INVITE "addressed to roaming UE_B" to the IMS_A entity + } + then { + the IMS_IBCF_A entity receives the initial INVITE + from the IMS_IBCF_B entity and + the IMS_IBCF_A entity forwards the initial INVITE + to the IMS_P_CSCF_A entity + } + } + + } // End of TP TP_IC_IBCF_INVITE_05 + + + + + Test Purpose { // Former TP TP_IMS_5115_01 TP Id TP_IC_IBCF_180RESP_01 @@ -295,8 +332,8 @@ Package TP_IC { then { the IMS_IBCF_A entity sends the 180_Ringing response containing P_Charging_Vector_Header containing - Orig_Ioi_AVP indicating value PX_IMS_B_ICID , - Term_Ioi_AVP indicating value PX_IMS_A_ICID + Orig_Ioi indicating value PX_IMS_B_ICID , + Term_Ioi indicating value PX_IMS_A_ICID ; ; to the IMS_IBCF_B entity @@ -412,7 +449,7 @@ Package TP_IC { RouteBody containing NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests ; , - not CompSipUri_AVP + not CompSipUri ; , not PPreferredID , PAssertedID containing @@ -427,6 +464,99 @@ Package TP_IC { + Test Purpose { // Former TP TP_IMS_5055_01 + TP Id TP_IC_IBCF_1XXRESP_03 + Test objective + "The P-CSCF receives a 180 response to an initial request for a dialog from the UE (Originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 180_Ringing response "addressed to UE_A" to the IMS_B entity + } + then { + the IMS_IBCF_B entity receives the 180_Ringing response containing + RecordRoute containing + RouteBody containing + NameAddr indicating value PX_P_CSCF_A_SIP_URI + ; , + RouteBody containing + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests + ; , + not CompSipUri + ; , + not PPreferredID , + PAssertedID containing + PAssertedIDValue indicating value PX_UE_A_SIP_URI + ; + ; + from the IMS_IBCF_A entity and + the IMS_IBCF_B entity sends the 180_Ringing + to the IMS_P_CSCF_B entity + } + } + } // End of TP TP_IC_IBCF_1XXRESP_03 + + + + Test Purpose { // Former TP TP_IMS_5055_01 + TP Id TP_IC_IBCF_1XXRESP_04 + Test objective + "The P-CSCF receives a 180 response to an initial request for a dialog from the UE (Terminating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and + the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 180_Ringing response "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity sends the 180_Ringing response containing + RecordRoute containing + RouteBody containing + NameAddr indicating value PX_P_CSCF_A_SIP_URI + ; , + RouteBody containing + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests + ; , + not CompSipUri + ; , + not PPreferredID , + PAssertedID containing + PAssertedIDValue indicating value PX_UE_A_SIP_URI + ; + ; + to the IMS_IBCF_B entity + } + } + } // End of TP TP_IC_IBCF_1XXRESP_04 + + + + Test Purpose { // Former TP TP_IMS_5115_02 @@ -455,8 +585,8 @@ Package TP_IC { then { the IMS_IBCF_A entity sends the 200_Ok response containing PChargingVector containing - Orig_Ioi_AVP indicating value PX_IMS_B_ICID , - Term_Ioi_AVP indicating value PX_IMS_A_ICID + Orig_Ioi indicating value PX_IMS_B_ICID , + Term_Ioi indicating value PX_IMS_A_ICID ; ; to the IMS_IBCF_B entity @@ -505,6 +635,37 @@ Package TP_IC { + Test Purpose { // Former TP TP_IMS_5131_02 + TP Id TP_IC_IBCF_2XXRESP_03 + Test objective + "I-CSCF shall remove P-Charging-Function-Addresses header from 200 response to initial request" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.3.2.1 (paragraph after note 10)" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a 200_Ok response "addressed to UE_B" to the IMS_A entity + } + then { + the IMS_IBCF_A entity sends the 200_Ok response containing + not PChargingFunctionAddresses + ; + to the IMS_IBCF_B entity + } + + } + } // End of TP TP_IC_IBCF_2XXRESP_03 @@ -535,7 +696,7 @@ Package TP_IC { then { the IMS_IBCF_A entity sends the 200_Ok response containing PChargingVector containing - not AccessNetworkChargingInfo_AVP + not AccessNetworkChargingInfo ; ; to the IMS_IBCF_B entity @@ -549,27 +710,27 @@ Package TP_IC { Test Purpose { // Former TP TP_IMS_5055_02 TP Id TP_IC_IBCF_2XXRESP_05 Test objective - "The P-CSCF receives a 2xx response to an initial request for a dialog from the UE" + "The P-CSCF receives a 2xx response to an initial request for a dialog from the UE (Originating leg)" Reference "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" - Config Id CF_VxLTE_RMI + Config Id CF_VxLTE_RMI_B PICS Selection NONE Initial conditions with { - the UE_A entity isRegisteredTo the IMS_A and + the UE_A entity isRegisteredTo the IMS_B and the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity + the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity } Expected behaviour ensure that { when { - the UE_A entity sends a 200_Ok response "addressed to UE_B" to the IMS_A entity + the UE_B entity sends a 200_Ok response "addressed to UE_A" to the IMS_B entity } then { - the IMS_IBCF_A entity sends the 200_Ok response containing + the IMS_IBCF_B entity receives a 200_Ok response containing RecordRoute containing RouteBody containing NameAddr indicating value PX_P_CSCF_A_SIP_URI @@ -577,20 +738,67 @@ Package TP_IC { RouteBody containing NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests ; , - not CompSipUri_AVP + not CompSipUri ; , not PPreferredID , PAssertedID containing PAssertedIDValue indicating value PX_UE_B_SIP_URI ; ; - to the IMS_IBCF_B entity + from the IMS_IBCF_A entity and + the IMS_IBCF_B entity sends the 200_Ok response + to the IMS_P_CSCF_B entity } } } // End of TP TP_IC_IBCF_2XXRESP_05 + Test Purpose { + TP Id TP_IC_IBCF_2XXRESP_06 + Test objective + "The IBCF forwards a 2xx response to a successful initial request for a dialog from the UE A (Terminating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_A and + the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 200_Ok response "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity sends the 200_Ok response containing + RecordRoute containing + RouteBody containing + NameAddr indicating value PX_P_CSCF_A_SIP_URI + ; , + RouteBody containing + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests + ; , + not CompSipUri + ; , + not PPreferredID , + PAssertedID containing + PAssertedIDValue indicating value PX_UE_B_SIP_URI + ; + ; + to the IMS_IBCF_A entity and + the IMS_IBCF_B entity sends the 200_Ok response + to the IMS_P_CSCF_B entity // MORE TO COME!!!! + } + } + } // End of TP TP_IC_IBCF_2XXRESP_06 + Test Purpose { // Former TP TP_IMS_5106_01 @@ -620,7 +828,7 @@ Package TP_IC { RecordRoute indicating value PX_S_CSCF_A_SIP_URI , Route indicating value not PX_S_CSCF_A_SIP_URI PChargingVector containing - not AccessNetworkChargingInfo_AVP + not AccessNetworkChargingInfo ; ; to the IMS_IBCF_B entity @@ -635,61 +843,90 @@ Package TP_IC { - Test Purpose { // Former TP TP_IMS_5131_02 - TP Id TP_IC_IBCF_2XXRESP_03 - Test objective - "I-CSCF shall remove P-Charging-Function-Addresses header from 200 response to initial request" + + Test Purpose { + TP Id TP_IC_IBCF_BYE_01 // Former TP_IMS_5107_01 + Test objective + "S-CSCF removes its own SIP URI from the route header before sending BYE" Reference - "TS 124 229 (V15.06.0) [1], clause 5.3.2.1 (paragraph after note 10)" - - Config Id CF_VxLTE_INT + "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 1 in 7th numbered list)" + Config Id CF_VxLTE_INT PICS Selection NONE Initial conditions with { - the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity + the UE_A entity isRegisteredTo the IMS_A and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasInitiatedDialogWith the UE_B } - Expected behaviour - ensure that { - when { - the UE_A entity sends a 200_Ok response "addressed to UE_B" to the IMS_A entity + Expected behaviour + ensure that { + when { + the UE_A entity sends a BYE "addressed to UE_B" to the IMS_A entity } then { - the IMS_IBCF_A entity sends the 200_Ok response containing - not PChargingFunctionAddresses + the IMS_IBCF_A entity forwards the BYE containing + Route indicating value not PX_S_CSCF_A_SIP_URI ; - to the IMS_IBCF_B entity + to the IMS_IBCF_B entity } - - } - } // End of TP TP_IC_IBCF_2XXRESP_03 - - - - + } + + } // End of TP TP_IC_IBCF_BYE_01 + Test Purpose { + TP Id TP_IC_IBCF_BYE_02 + Test objective + "IBCF successfully processes a BYE message" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 1 in 7th numbered list)" + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity hasInitiatedDialogWith the UE_B + } + + Expected behaviour + ensure that { + when { + the IMS_IBCF_B entity receives a BYE "addressed to UE_A" + from the IMS_A entity + } + then { + the IMS_IBCF_B entity forwards the BYE + to the IMS_P_CSCF_B entity and + the IMS_IBCF_B entity receives a 200_OK + from the IMS_P_CSCF_B entity and + the IMS_IBCF_B entity sends the 200_OK + to the IMS_A entity + } + } + + } // End of TP TP_IC_IBCF_BYE_02 Test Purpose { - TP Id TP_IC_IBCF_BYE_01 // Former TP_IMS_5107_01 + TP Id TP_IC_IBCF_BYE_03 Test objective - "S-CSCF removes its own SIP URI from the route header before sending BYE" + "IBCF successfully processes a BYE message" Reference "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 1 in 7th numbered list)" - Config Id CF_VxLTE_INT + Config Id CF_VxLTE_RMI_B PICS Selection NONE Initial conditions with { - the UE_A entity isRegisteredTo the IMS_A and + the UE_A entity isRegisteredTo the IMS_B and the UE_B entity isRegisteredTo the IMS_B and the UE_A entity hasInitiatedDialogWith the UE_B } @@ -697,17 +934,22 @@ Package TP_IC { Expected behaviour ensure that { when { - the UE_A entity sends a BYE "addressed to UE_B" to the IMS_A entity + the IMS_IBCF_B entity receives a BYE "addressed to UE_B" + from the IMS_P_CSCF_B entity } then { - the IMS_IBCF_A entity forwards the BYE containing - Route indicating value not PX_S_CSCF_A_SIP_URI - ; - to the IMS_IBCF_B entity + the IMS_IBCF_B entity forwards the BYE + to the IMS_A entity and + the IMS_IBCF_B entity receives a 200_OK + from the IMS_A entity and + the IMS_IBCF_B entity sends the 200_OK + to the IMS_P_CSCF_B entity } } - } // End of TP TP_IC_IBCF_BYE_01 + } // End of TP TP_IC_IBCF_BYE_03 + + Test Purpose { @@ -745,26 +987,28 @@ Package TP_IC { Test Purpose { TP Id TP_IC_IBCF_100TRY_01 // Former TP_IMS_5070_01 Test objective - "The P-CSCF shall respond with a 100 (Trying) provisional response on initial INVITE in - terminating network" + "The IBCF shall respond with a 100 (Trying) provisional response on initial INVITE + (terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.7.3" - Config Id CF_VxLTE_RMI + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2" + Config Id CF_VxLTE_RMI_A PICS Selection NONE Initial conditions with { the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_A and the UE_B entity isAttachedTo the EPC_A } Expected behaviour ensure that { when { - the UE_B entity sends an intial INVITE "addressed to UE_A" to the IMS_A entity + the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity } then { + the IMS_IBCF_A entity receives the INVITE + from the IMS_IBCF_B entity and the IMS_IBCF_A entity sends a 100_Trying response to the IMS_IBCF_B entity } @@ -773,6 +1017,41 @@ Package TP_IC { } // End of TP TP_IC_IBCF_100TRY_01 + Test Purpose { + TP Id TP_IC_IBCF_100TRY_02 + Test objective + "The IBCF shall respond with a 100 (Trying) provisional response on initial INVITE + (originating leg)" + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2" + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity isAttachedTo the EPC_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_B entity + } + then { + the IMS_IBCF_B entity sends the INVITE + to the IMS_IBCF_A entity and + the IMS_IBCF_B entity receives a 100_Trying response + from the IMS_IBCF_A entity + } + } + + } // End of TP TP_IC_IBCF_100TRY_02 + + + + Test Purpose { TP Id TP_IC_IBCF_CANCEL_01 // Former TP_IMS_5107_03 @@ -1042,7 +1321,7 @@ Package TP_IC { then { the IMS_IBCF_A entity receives the 487_INVITE request from the IMS_B entity and - the IMS_IBCF_B entity forwards the 487_INVITE request + the IMS_IBCF_A entity forwards the 487_INVITE request to the IMS_S_CSCF_A entity } } @@ -1151,7 +1430,7 @@ Package TP_IC { then { the IMS_IBCF_B entity receives the ACK response from the IMS_A entity and - the IMS_IBCF_A entity forwards the ACK response + the IMS_IBCF_B entity forwards the ACK response to the IMS_S_CSCF_B entity } } @@ -1224,9 +1503,9 @@ Package TP_IC { the UE_B entity sends a 486_INVITE "addressed to UE_A" to the IMS_B entity } then { - the IMS_S_CSCF_B entity forwards the 486_INVITE - to the IMS_IBCF_B entity and - the IMS_IBCF_B entity sends the 486_INVITE + the IMS_IBCF_B entity receives the 486_INVITE + from the IMS_S_CSCF_B entity and + the IMS_IBCF_B entity forwards the 486_INVITE to the IMS_A entity } } @@ -1234,6 +1513,77 @@ Package TP_IC { + Test Purpose { + TP Id TP_IC_IBCF_486INVITE_03 + Test objective + "Verify that the IBCF successfully processes a 486 INVITE (BUSY) originating leg, roaming case. " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + UE_A isAttachedTo the EPC_B and + UE_B isAttachedTo the EPC_B and + UE_A isRegisteredTo the IMS_B and + UE_B isRegisteredTo the IMS_B and + UE_B isBusy + + + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 486_INVITE "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_B entity receives the 486_INVITE + from the IMS_A entity and + the IMS_IBCF_B entity forwards the 486_INVITE + to the IMS_P_CSCF_B entity + } + } + } // End of TP_IC_IBCF_486INVITE_03 + + + Test Purpose { + TP Id TP_IC_IBCF_486INVITE_04 + Test objective + "Verify that the IBCF successfully processes a 486 INVITE (BUSY) terminating leg, roaming case. " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + + Config Id CF_VxLTE_RMI_A + + PICS Selection NONE + + Initial conditions with { + UE_A isAttachedTo the EPC_A and + UE_B isAttachedTo the EPC_A and + UE_A isRegisteredTo the IMS_A and + UE_B isRegisteredTo the IMS_A and + UE_B isBusy + + + } + + Expected behaviour + ensure that { + when { + the UE_B entity sends a 486_INVITE "addressed to UE_A" to the IMS_A entity + } + then { + the IMS_IBCF_A entity receives the 486_INVITE + from the IMS_P_CSCF_A entity and + the IMS_IBCF_A entity sends the 486_INVITE + to the IMS_IBCF_B entity + } + } + } // End of TP_IC_IBCF_486INVITE_04 + Test Purpose { @@ -1266,8 +1616,8 @@ Package TP_IC { then { the IMS_IBCF_A entity receives the ACK from the IMS_P_CSCF_A entity and - the IMS_IBCF_A entity forwards the ACK - to the IMS_S_CSCF_B entity + the IMS_IBCF_A entity sends the ACK + to the IMS_IBCF_B entity } } } // End of TP_IC_IBCF_486INVITE_ACK_01 @@ -1317,14 +1667,17 @@ Package TP_IC { Test objective "The IBCF shall perform encryption for topology hiding before an initial REGISTER request is sent " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.4.2" + "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" Config Id CF_VxLTE_RMI_B PICS Selection NONE Initial conditions with { - IMS_A isConfiguredForTopologyHiding + IMS_A isConfiguredForTopologyHiding and + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_B and + the UE_B entity isNotRegisteredTo the IMS_B } Expected behaviour @@ -1337,7 +1690,7 @@ Package TP_IC { Via containing ViaBody containing HostPort indicating value PX_IBCF_B_SIP_URI - ; + ; ; , Route indicating value PX_IBCF_B_SIP_URI, Path containing @@ -1355,6 +1708,252 @@ Package TP_IC { + Test Purpose { + TP Id TP_IC_IBCF_REGISTER_02 // + Test objective + "The IBCF shall perform encryption for topology hiding before a second REGISTER request is sent " + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + IMS_A isConfiguredForTopologyHiding and + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isNotRegisteredTo the IMS_B and + the UE_B entity isNotRegisteredTo the IMS_B and + the UE_A entity hasAchieveFirstREGISTER + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a second REGISTER "addressed to home network IMS_A" to the IMS_B entity + } + then { + the IMS_IBCF_B entity sends the REGISTER containing + Via containing + ViaBody containing + HostPort indicating value PX_IBCF_B_SIP_URI + ; + ; , + Route indicating value PX_IBCF_B_SIP_URI, + Path containing + PathValue indicating value PX_IBCF_B_SIP_URI + ; + ; + to the IMS_IBCF_A entity and + the IMS_IBCF_B entity receives the 200_OK + from the IMS_A entity and + the IMS_IBCF_B entity forwards the 200_OK + to the IMS_P_CSCF_B entity + } + } + } // End of TP_IC_IBCF_REGISTER_02 + + + + + Test Purpose { + TP Id TP_IC_IBCF_REGISTER_03 // + Test objective + "Verify that the IBCF successfully processes a user de-registration." + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a REGISTER "addressed to home network IMS_A" containing + Expire indicating value 0; + to the IMS_B entity + } + then { + the IMS_IBCF_B entity receives the REGISTER + from the IMS_P_CSCF_B entity and + the IMS_IBCF_B entity forwards the REGISTER + to the IMS_A entity and + the IMS_IBCF_B entity receives a 200_OK + from the IMS_A entity and + the IMS_IBCF_B entity forwards the 200_OK + to the IMS_P_CSCF_B entity + } + } + } // End of TP_IC_IBCF_REGISTER_03 + + + + Test Purpose { + TP Id TP_IC_IBCF_REGISTER_04 // + Test objective + "Verify that the IBCF successfully processes an IMS de-registration due to expiration of registration timer." + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity sends a REGISTER "addressed to home network IMS_A" containing + Expire indicating value 0; + to the IMS_B entity + } + then { + the IMS_IBCF_B entity receives the REGISTER + from the IMS_P_CSCF_B entity and + the IMS_IBCF_B entity forwards the REGISTER + to the IMS_A entity and + the IMS_IBCF_B entity receives a 200_OK + from the IMS_A entity and + the IMS_IBCF_B entity forwards the 200_OK + to the IMS_P_CSCF_B entity + } + } + } // End of TP_IC_IBCF_REGISTER_04 + + + + + Test Purpose { + TP Id TP_IC_IBCF_REGISTER_05 // + Test objective + "Verify that the IBCF successfully processes an IMS de-registration due user initiated network detachment." + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity sends a REGISTER "addressed to home network IMS_A" containing + Expire indicating value 0; + to the IMS_B entity + } + then { + the IMS_IBCF_B entity receives the REGISTER + from the IMS_P_CSCF_B entity and + the IMS_IBCF_B entity forwards the REGISTER + to the IMS_A entity and + the IMS_IBCF_B entity receives a 200_OK + from the IMS_A entity and + the IMS_IBCF_B entity forwards the 200_OK + to the IMS_P_CSCF_B entity + } + } + } // End of TP_IC_IBCF_REGISTER_05 + + + + + + + Test Purpose { + TP Id TP_IC_IBCF_SUBSCRIBE_01 // + Test objective + "Verify that the IBCF successfully processes a SUBSCRIBE." + Reference + "TS 124 229 (V15.06.0) [1], clause 5.10.3.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity sends a SUBSCRIBE "addressed to home network IMS_A" to the IMS_B entity + } + then { + the IMS_IBCF_B entity sends the SUBSCRIBE containing + Route indicating value PX_IBCF_B_SIP_URI + ; + to the IMS_IBCF_A entity and + the IMS_IBCF_B entity receives the 200_OK + from the IMS_A entity and + the IMS_IBCF_B entity forwards the 200_OK + to the IMS_P_CSCF_B entity + } + } + } // End of TP_IC_IBCF_SUBSCRIBE_01 + + + + + Test Purpose { + TP Id TP_IC_IBCF_NOTIFY_01 + Test objective "Verify that the IBCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + Reference + "TS 124 229 (V15.06.0) [1], Clause 5.10.3.2" + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_IBCF_B entity receives a NOTIFY containing + Event indicating value "reg,de-reg" + ; + from the IMS_A entity + } + then { + the IMS_IBCF_B entity sends the NOTIFY + to the IMS_P_CSCF_B entity and + the IMS_IBCF_B entity receives a 200_OK + from the IMS_P_CSCF_B entity and + the IMS_IBCF_B entity forwards the 200_OK + to the IMS_A entity + + } + } + } // End of TP_IC_IBCF_NOTIFY_01 + + + + + + + + + + diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index f89ec5a..198f536 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -86,25 +86,10 @@ Package Sip_Common { - isNoLongerAvailable - isTriggeredToDetachUser - isRequestedToDetachfromNetwork - // SIP Requests - hasAchieveFirstREGISTER - - REGISTER - - SUBSCRIBE + - hasResponded486INVITE - hasAchieveInitialINVITE - hasAchieveINVITE - - hasResponded486INVITE - - INVITE - - 486_INVITE - - ACK - // SIP Responses - - 401_Unauthorized - - 100_Trying - - 180_Ringing - - 200_Ok - - 2xx_Any - - 404_NotFound - - 403_Forbidden - - 4xx_Any ; } // End of Domain section @@ -133,15 +118,29 @@ Package Sip_Common { // PX_IMS_A_ORIG_IOI, // PX_S_CSCF_A_SIP_URI, // PX_P_CSCF_A_SIP_URI, +// PX_IBCF_B_SIP_URI, // PX_TO_BE_DEFINED // ; // } // End of Const section Data { type SipMessage; - type DiameterMessage; type EnumMessage; + SipMessage REGISTER; + SipMessage SUBSCRIBE; + SipMessage INVITE; + SipMessage 486_INVITE; + SipMessage ACK; + // SIP Responses + SipMessage 401_Unauthorized; + SipMessage 100_Trying; + SipMessage 180_Ringing; + SipMessage 200_Ok; + SipMessage 2xx_Any; + SipMessage 404_NotFound; + SipMessage 403_Forbidden; + SipMessage 4xx_Any; } // End of Data section Configuration { @@ -156,7 +155,6 @@ Package Sip_Common { ; Test Configuration CF_VxLTE_RMI - ; Test Configuration CF_VxLTE_RMI_A ; diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..45bea25 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f diff --git a/ttcn/LibSip b/ttcn/LibSip index 2acb7ee..7f6fd81 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 +Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 -- GitLab From 7c9fc22bf3fb3e5c70e3b8dd0d4de7ed58ac9822 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Fri, 19 Jun 2020 13:10:02 +0200 Subject: [PATCH 070/176] Cx and S6a TPs added --- .gitignore | 24 +- .../AtsImsIot_Diameter_Templates.ttcn | 771 +++++++++++++++++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 562 ++++++++++++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn | 516 +++++++++++- 4 files changed, 1750 insertions(+), 123 deletions(-) diff --git a/.gitignore b/.gitignore index b1f1da9..c12601e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,26 +4,4 @@ .metadata /bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ -/bin/ +/ttcn3build/ diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 9cd5820..2212b40 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -17,21 +17,63 @@ module AtsImsIot_Diameter_Templates { import from LibDiameter_TypesAndValues all; import from LibDiameter_Templates all; import from LibDiameter_Steps all; - import from LibDiameter_Types_Gx_AVPs all; import from LibDiameter_Types_Base_AVPs all; + import from LibDiameter_Types_Gx_AVPs all; import from LibDiameter_Types_Rx_AVPs all; + import from LibDiameter_Types_CxDx_AVPs all; + import from LibDiameter_Types_S6a_AVPs {type Cancellation_Type_AVP, Cancellation_Type_Code}; group DiameterHeaderFields { + group CxHeaderFields{ + + template Auth_Session_State_AVP mw_authSessionState_noStateMaintained := + { + aVP_Header := mw_aVP_Header_any_Code(c_auth_Session_State_AVP_Code), + aVP_Data := NO_STATE_MAINTAINED_E + } + + template Deregistration_Reason_AVP mw_deregistrationReason := + { + aVP_Header := mw_aVP_Header_any_Code(c_deregistration_Reason_AVP_Code), + reason_Code := ?, + reason_Info := *, + aVP_Type := * + } + + template Server_Assignment_Type_AVP mw_serverAssignmentType(Srv_Assgmt_Type_Code p_aVP_Data) := + { + aVP_Header := mw_aVP_Header_any_Code(c_server_Assignment_Type_AVP_Code), + aVP_Data := p_aVP_Data + } + + template User_Authorization_Type_AVP mw_userAuthorizationType (User_Authorization_Type_Code p_aVP_Data) := + { + aVP_Header := mw_aVP_Header_any_Code(c_user_Authorization_Type_AVP_Code), + aVP_Data := p_aVP_Data + } + + template Experimental_Result_AVP mw_experimentalResult (Experimental_Result_Type p_avpData) := + { + aVP_Header := mw_aVP_Header_any_Code(c_experimental_Result_AVP_Code), + vendor_Id := ?, + experimental_Result_Code := + { + aVP_Header := mw_aVP_Header_any_Code(c_experimental_Result_Code_AVP_Code), + aVP_Data := p_avpData + } + } + + } //end group CxHeaderFields group RxHeaderFields{ template Abort_Cause_AVP mw_abortCause(template Abort_Cause_Type p_avpData) := { - aVP_Header := mw_aVP_Header_VMbit1(c_abort_Cause_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_abort_Cause_AVP_Code), aVP_Data := p_avpData }; template Media_Component_Description_AVP mw_mediaComponentDescription := { - aVP_Header := mw_aVP_Header_VMbit1(c_media_Component_Description_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_media_Component_Description_AVP_Code), media_Component_Nr := {aVP_Header := ?, aVP_Data := ?}, media_Sub_component := {mw_mediaSubComponent}, af_Application_Id := *, @@ -47,7 +89,7 @@ module AtsImsIot_Diameter_Templates { template Media_Sub_Component_AVP mw_mediaSubComponent := { - aVP_Header := mw_aVP_Header_VMbit1(c_media_Sub_Component_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_media_Sub_Component_AVP_Code), flow_Number := ?, flow_Description := ?, flow_Status := mw_flowStatus(ENABLED_E), @@ -59,20 +101,19 @@ module AtsImsIot_Diameter_Templates { } template AF_Signalling_Protocol_AVP mw_afSignallingProtocolSIP := { - //Ref: ETSI TS 129 214 AF_Signalling_Protocol AVP - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_aF_Signalling_Protocol_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_aF_Signalling_Protocol_AVP_Code), aVP_Data := SIP_E } template Flow_Status_AVP mw_flowStatus(template (present) Flow_Status_Type p_avpData) := { - aVP_Header := mw_aVP_Header_VMbit1(c_flow_Status_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_flow_Status_AVP_Code), aVP_Data := p_avpData } template Flow_Usage_AVP mw_flowUsage(template (present) Flow_Usage_Type p_avpData) := { - aVP_Header := mw_aVP_Header_VMbit1(c_flow_Usage_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_flow_Usage_AVP_Code), aVP_Data := p_avpData } } //end group RxHeaderFields @@ -80,13 +121,13 @@ module AtsImsIot_Diameter_Templates { template CC_Request_Type_AVP mw_cC_Request_Type(CC_Request_Ty_Type p_avpData):= { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Request_Type_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_cC_Request_Type_AVP_Code), aVP_Data := p_avpData } template QoS_Information_AVP mw_qoS_Information := { - aVP_Header := ?, + aVP_Header := mw_aVP_Header_any_Code(c_qoS_Information_AVP_Code), qoS_Class_Identifier := *, max_Requested_Bandwidth_UL := *, max_Requested_Bandwidth_DL := *, @@ -101,7 +142,7 @@ module AtsImsIot_Diameter_Templates { template QoS_Information_AVP mw_qoS_Information_Audio := { - aVP_Header := ?, + aVP_Header := mw_aVP_Header_any_Code(c_qoS_Information_AVP_Code), qoS_Class_Identifier := mw_QoS_Class_Identifier(QCI_1_E), max_Requested_Bandwidth_UL := ?, max_Requested_Bandwidth_DL := ?, @@ -116,7 +157,7 @@ module AtsImsIot_Diameter_Templates { template QoS_Information_AVP mw_qoS_Information_Video := { - aVP_Header := ?, + aVP_Header := mw_aVP_Header_any_Code(c_qoS_Information_AVP_Code), qoS_Class_Identifier := mw_QoS_Class_Identifier(QCI_2_E), max_Requested_Bandwidth_UL := ?, max_Requested_Bandwidth_DL := ?, @@ -131,7 +172,7 @@ module AtsImsIot_Diameter_Templates { template Default_EPS_Bearer_QoS_AVP mw_default_EPS_Bearer_QoS_Class_5 := { - aVP_Header := ?, + aVP_Header := mw_aVP_Header_any_Code(c_default_EPS_Bearer_QoS_AVP_Code), qoS_Class_Identifier := mw_QoS_Class_Identifier(QCI_5_E), allocation_Retention_Priority := mw_allocation_Retention_Priority, aVP_Type := * @@ -139,7 +180,7 @@ module AtsImsIot_Diameter_Templates { template Allocation_Retention_Priority_AVP mw_allocation_Retention_Priority := { - aVP_Header := ?, + aVP_Header := mw_aVP_Header_any_Code(c_allocation_Retention_Priority_AVP_Code), priority_Level := ?, pre_emption_Capability := ?, pre_emption_Vulnerability := ? @@ -147,32 +188,32 @@ module AtsImsIot_Diameter_Templates { template QoS_Class_Identifier_AVP mw_QoS_Class_Identifier(template QoS_Class_Identifier p_avp_Data) := { - aVP_Header := ?, + aVP_Header := mw_aVP_Header_any_Code(c_qoS_Class_Identifier_AVP_Code), aVP_Data := p_avp_Data } template Bearer_Usage_AVP mw_bearer_Usage(Bearer_Usage p_avpData) := { - aVP_Header := ?, + aVP_Header := mw_aVP_Header_any_Code(c_bearer_Usage_AVP_Code), aVP_Data := p_avpData } template Subscription_Id_AVP mw_subscription_Id(template Subscription_Id_Type_AVP p_typeAVP):= { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_subscription_Id_AVP_Code), subscription_Id_Type := p_typeAVP, subscription_Id_Data := ? } template Subscription_Id_Type_AVP mw_subscription_Id_Type(template Subscription_Id_Ty_Type p_avpData):= { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_Type_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_subscription_Id_Type_AVP_Code), aVP_Data := p_avpData } template Charging_Rule_Install_AVP mw_chrgRuleInstall := { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Install_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_charging_Rule_Install_AVP_Code), charging_Rule_Definition := {mw_chrgRuleDefinition_RuleName_Flows_FlowStatus}, charging_Rule_Name := *, charging_Rule_Base_Name := *, @@ -186,7 +227,7 @@ module AtsImsIot_Diameter_Templates { template Charging_Rule_Install_AVP mw_chrgRuleInstall_Qos := { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Install_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_charging_Rule_Install_AVP_Code), charging_Rule_Definition := {mw_chrgRuleDefinition_RuleName_Flows_FlowStatus_Qos}, charging_Rule_Name := *, charging_Rule_Base_Name := *, @@ -200,7 +241,7 @@ module AtsImsIot_Diameter_Templates { template Charging_Rule_Remove_AVP mw_chrgRuleRemove_Name := { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Remove_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_charging_Rule_Remove_AVP_Code), charging_Rule_Name := ?, charging_Rule_Base_Name := *, aVP_Type := * @@ -208,7 +249,7 @@ module AtsImsIot_Diameter_Templates { template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_RuleName_Flows_FlowStatus := { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Definition_AVP_Code), + aVP_Header := mw_aVP_Header_any_Code(c_charging_Rule_Definition_AVP_Code), charging_Rule_Name := ?, service_Identifier := *, rating_Group := *, @@ -238,7 +279,7 @@ module AtsImsIot_Diameter_Templates { template Flows_AVP mw_flows := { - aVP_Header := ?,// + aVP_Header := mw_aVP_Header_any_Code(c_flows_AVP_Code), media_component_number := {aVP_Header := ?,// aVP_Data := 0 @@ -248,8 +289,191 @@ module AtsImsIot_Diameter_Templates { } } //end group GxHeaderFields + + group CxHeaderFields{ + + template Cancellation_Type_AVP mw_cancellationType(Cancellation_Type_Code p_cancellation_Type) := { + aVP_Header := mw_aVP_Header_any_Code(c_cancellation_Type_AVP_Code), + cancellation_Type := p_cancellation_Type + } // End of template m_cancellationType + + } //end group GxHeaderFields + } //end DiameterHeaderFields + group DiameterTemplates { + group CxMessageTemplates{ + group CxRequestMessageTemplates{ + + template MAR_MSG mw_MAR modifies mw_MAR_dummy := { + mAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := ?, + public_Identity := ?, //required only in TS129 229 + sIP_Number_Auth_Items := ?, + sIP_Auth_Data_Item := ?, + server_Name := ? + } + } + + template RTR_MSG mw_RTR modifies mw_RTR_dummy := { + rTR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := ?, + deregistration_Reason := mw_deregistrationReason + } + } + + template SAR_MSG mw_SAR_UnregisteredUser modifies mw_SAR_dummy := { + sAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := omit, + public_Identity := ?, + server_Name := ?, + server_Assignment_Type := mw_serverAssignmentType(UNREGISTERED_USER_E), + user_Data_Already_Available := ? + } + } + + template SAR_MSG mw_SAR_UserDeregistration modifies mw_SAR_dummy := { + sAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := omit, + public_Identity := ?, + server_Name := ?, + server_Assignment_Type := mw_serverAssignmentType(USER_DEREGISTRATION_E), + user_Data_Already_Available := ? + } + } + + template UAR_MSG mw_UAR_Registration modifies mw_UAR_dummy := { + uAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := omit, + public_Identity := ?, + visited_Network_Identifier := ?, + user_Authorization_Type := mw_userAuthorizationType(REGISTRATION) + } + } + + template UAR_MSG mw_UAR modifies mw_UAR_dummy := { + uAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := ?, + public_Identity := ? + } + } + + template UAR_MSG mw_UAR_unknownPrivateId modifies mw_UAR_dummy := { + uAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := ?,//UNKNOWN PRIVATE USER IDENTITY + public_Identity := ? + } + } + + template UAR_MSG mw_UAR_deRegistration modifies mw_UAR_dummy := { + uAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := ?, + public_Identity := ?, + visited_Network_Identifier := ?, + user_Authorization_Type := mw_userAuthorizationType(DE_REGISTRATION) + } + } + + }// end group CxRequestMessageTemplates + group CxAnswertMessageTemplates{ + + template MAA_MSG mw_MAA modifies mw_MAA_dummy := { + mAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + experimental_Result := omit, + user_Name := ?, + sIP_Number_Auth_Items := ?, + sIP_Auth_Data_Item := ? + } + } + + template RTA_MSG mw_RTA modifies mw_RTA_dummy := { + rTA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + + template SAA_MSG mw_SAA modifies mw_SAA_dummy := { + sAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + + template SAA_MSG mw_SAA_userData modifies mw_SAA_dummy := { + sAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + user_Data := ?, + charging_Information := ? + } + } + + template UAA_MSG mw_UAA_diamFirstRegistration modifies mw_UAA_dummy := { + uAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := omit, + experimental_Result := mw_experimentalResult(DIAMETER_FIRST_REGISTRATION_E) + } + } + + template UAA_MSG mw_UAA_diamSubsequentRegistration modifies mw_UAA_dummy := { + uAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := omit, + experimental_Result := mw_experimentalResult(DIAMETER_SUBSEQUENT_REGISTRATION_E), + server_Name := ?, + server_Capabilities := omit + } + } + + template UAA_MSG mw_UAA_diamErrorUserUnknown modifies mw_UAA_dummy := { + uAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := omit, + experimental_Result := mw_experimentalResult(DIAMETER_ERROR_USER_UNKNOWN_E), + server_Name := omit + } + } + + template UAA_MSG mw_UAA_diamSuccess modifies mw_UAA_dummy := { + uAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + experimental_Result := omit, + server_Name := ?, + server_Capabilities := omit + } + } + + }// end group CxRequestMessageTemplates + }//end group CxMessageTemplates group RxMessageTemplates{ group RxRequestMessageTemplates{ @@ -351,5 +575,506 @@ module AtsImsIot_Diameter_Templates { } }// end group GxRequestMessageTemplates }//end group GxMessageTemplates + + group S6aMessageTemplates{ + group S6aRequestMessageTemplates{ + + template AIR_MSG mw_AIR modifies mw_AIR_dummy := { + aIR_Body :={ + user_Name := ?, + req_EUTRAN_Auth_Info := ?, + visited_PLMN_Id :=? + } + } + + template CLR_MSG mw_CLR_cancelation modifies mw_CLR_dummy := { + cLR_Body :={ + user_Name := ?, + cancellation_Type := mw_cancellationType(SUBSCRIPTION_WITHDRAWAL_E), + cLR_Flags :=? + } + } + + template PUER_MSG mw_PUER_userName modifies mw_PUER_dummy := { + pUER_Body :={ + user_Name := ?, + pUER_Flags :=? + } + } + + template ULR_MSG mw_ULR_userName modifies mw_ULR_dummy := { + uLR_Body :={ + user_Name := ?, + ulr_Flags := ?, + rat_Type := ?, + visited_PLMN_Id := ? + } + } + + + }// end group S6aRequestMessageTemplates + group S6aAnswertMessageTemplates{ + + template AIA_MSG mw_AIA_resultCode modifies mw_AIA_dummy := { + aIA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + authentication_Info := ? + } + } + + template CLA_MSG mw_CLA_resultCode modifies mw_CLA_dummy := { + cLA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + + template PUEA_MSG mw_PUEA_resultCode modifies mw_PUEA_dummy := { + pUEA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + + template ULA_MSG mw_ULA_resultCode modifies mw_ULA_dummy := { + uLA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + + template ULA_MSG mw_ULA_resultCode_flags modifies mw_ULA_dummy := { + uLA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + ula_Flags := ? + } + } + + }// end group S6aRequestMessageTemplates + }//end group S6aMessageTemplates } // end group DiameterTemplates + group DiameterTemplatesDummy + { + + group dummy_request_templates_receive { + + template AIR_MSG mw_AIR_dummy := + { + header := mw_diameterHeaderReq_dummy(AIR_E, ?), + session_Id := ?, + aIR_Body := mw_AIR_Body_dummy + } + + template AIR_Body_AVP mw_AIR_Body_dummy := + { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := *, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + req_EUTRAN_Auth_Info := *, + req_UTRAN_GERAN_Auth_Info := *, + visited_PLMN_Id :=?, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + template (present) CLR_MSG mw_CLR_dummy := { + header := mw_diameterHeaderReq_dummy ( CLR_E, c_applIdS6a ), + session_Id := ?, + cLR_Body := mw_CLR_Body_dummy + } // End of template mw_CLR_dummy + + template (present) CLR_Body_AVP mw_CLR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := ?, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + cancellation_Type := ?, + cLR_Flags := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_CLR_Body_dummy + + template (present) PUER_MSG mw_PUER_dummy := { + header := mw_diameterHeaderReq_dummy ( PUER_E, c_applIdS6a ), + session_Id := ?, + pUER_Body := mw_PUER_Body_dummy + } // End of template mw_PUR_dummy + + template (present) PUER_Body_AVP mw_PUER_Body_dummy := { + vendor_Specific_Application_Id := ?, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := *, + destination_Realm := ?, + supported_Features := *, + user_Name := ?, + pUER_Flags := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_PUER_Body_dummy + + template (present) ULR_MSG mw_ULR_dummy := { + header := mw_diameterHeaderReq_dummy ( ULR_E, c_applIdS6a ), + session_Id := ?, + uLR_Body := mw_ULR_Body_dummy + } // End of template mw_uLR_dummy + + template (present) ULR_Body_AVP mw_ULR_Body_dummy := { + vendor_Specific_Application_Id := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + destination_Host := *, + destination_Realm := ?, + user_Name := ?, + supported_Features := *, + terminal_Information := *, + rat_Type := ?, + ulr_Flags := ?, + ue_SRVCC_Capability := *, + visited_PLMN_Id := ?, + sgsn_Number := *, + homogeneous_Support := *, + gmlc_Address := *, + active_APN := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_ULR_Body_dummy + + }//end group dummy_request_templates_receive + + group dummy_response_templates_receive { + + template AIA_MSG mw_AIA_dummy := { + header := mw_diameterHeaderAns_dummy(AIA_E, ?), + session_Id := ?, + aIA_Body := mw_AIA_Body_dummy + } + + template AIA_Body_AVP mw_AIA_Body_dummy := + { + vendor_Specific_Application_Id := *, + result_Code := ?, + experimental_Result := *, + error_Diagnostic := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + supported_Features := *, + authentication_Info := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + template (present) CLA_MSG mw_CLA_dummy := { + header := mw_diameterHeaderAns_dummy ( CLA_E, c_applIdS6a ), + session_Id := ?, + cLA_Body := mw_CLA_Body_dummy + } + + template (present) CLA_Body_AVP mw_CLA_Body_dummy := { + vendor_Specific_Application_Id := *, + supported_Features := *, + result_Code := *, + experimental_Result := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + template (present) PUEA_MSG mw_PUEA_dummy := { + header := mw_diameterHeaderAns_dummy ( PUEA_E, c_applIdS6a ), + session_Id := ?, + pUEA_Body := mw_PUEA_Body_dummy + } + + template (present) PUEA_Body_AVP mw_PUEA_Body_dummy := { + vendor_Specific_Application_Id := ?, + supported_Features := *, + result_Code := *, + experimental_Result := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + pUEA_Flags := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } + + template (present) ULA_MSG mw_ULA_dummy := { + header := mw_diameterHeaderAns_dummy ( ULA_E, c_applIdS6a ), + session_Id := ?, + uLA_Body := mw_ULA_Body_dummy + } // End of template mw_ULA_dummy + + template (present) ULA_Body_AVP mw_ULA_Body_dummy := { + vendor_Specific_Application_Id := *, + result_Code := *, + experimental_Result := *, + error_Diagnostic := *, + auth_Session_State := ?, + origin_Host := ?, + origin_Realm := ?, + supported_Features := *, + ula_Flags := *, + subscription_Data := *, + failed := *, + proxy_Info := *, + route_Record := *, + aVP_Type := * + } // End of template mw_ULA_Body_dummy + + }//end group dummy_response_templates_receive + + group AVPCodeConstantsTS129_722 { + + const integer c_subscription_Data_AVP_Code := 1400; + // Ref: table 7.3.1/1 + const integer c_terminal_Information_AVP_Code := 1401; + // Ref: table 7.3.1/1 + const integer c_imei_AVP_Code := 1402; + // Ref: table 7.3.1/1 + const integer c_software_Version_AVP_Code := 1403; + // Ref: table 7.3.1/1 + const integer c_qos_Subscribed_AVP_Code := 1404; + // Ref: table 7.3.1/1 + const integer c_ulr_Flags_AVP_Code := 1405; + // Ref: table 7.3.1/1 + const integer c_ula_Flags_AVP_Code := 1406; + // Ref: table 7.3.1/1 + const integer c_visited_PLMN_Id_AVP_Code := 1407; + // Ref: table 7.3.1/1 + const integer c_requested_EUTRAN_Authentication_Info_AVP_Code := 1408; + // Ref: table 7.3.1/1 + const integer c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code := 1409; + // Ref: table 7.3.1/1 + const integer c_number_Of_Requested_Vectors_AVP_Code := 1410; + // Ref: table 7.3.1/1 + const integer c_re_Synchronization_Info_AVP_Code := 1411; + // Ref: table 7.3.1/1 + const integer c_immediate_Response_Preferred_AVP_Code := 1412; + // Ref: table 7.3.1/1 + const integer c_authentication_Info_AVP_Code := 1413; + // Ref: table 7.3.1/1 + const integer c_e_UTRAN_Vector_AVP_Code := 1414; + // Ref: table 7.3.1/1 + const integer c_utran_Vector_AVP_Code := 1415; + // Ref: table 7.3.1/1 + const integer c_geran_Vector_AVP_Code := 1416; + // Ref: table 7.3.1/1 + const integer c_network_Access_Mode_AVP_Code := 1417; + // Ref: table 7.3.1/1 + const integer c_hplmn_ODB_AVP_Code := 1418; + // Ref: table 7.3.1/1 + const integer c_item_Number_AVP_Code := 1419; + // Ref: table 7.3.1/1 + const integer c_cancellation_Type_AVP_Code := 1420; + // Ref: table 7.3.1/1 + const integer c_dsr_Flags_AVP_Code := 1421; + // Ref: table 7.3.1/1 + const integer c_dsa_Flags_AVP_Code := 1422; + // Ref: table 7.3.1/1 + const integer c_context_Identifier_AVP_Code := 1423; + // Ref: table 7.3.1/1 + const integer c_subscriber_Status_AVP_Code := 1424; + // Ref: table 7.3.1/1 + const integer c_operator_Determined_Barring_AVP_Code := 1425; + // Ref: table 7.3.1/1 + const integer c_access_Restriction_Data_AVP_Code := 1426; + // Ref: table 7.3.1/1 + const integer c_apn_OI_Replacement_AVP_Code := 1427; + // Ref: table 7.3.1/1 + const integer c_all_APN_Configurations_Included_Indicator_AVP_Code := 1428; + // Ref: table 7.3.1/1 + const integer c_apn_Configuration_Profile_AVP_Code := 1429; + // Ref: table 7.3.1/1 + const integer c_apn_Configuration_AVP_Code := 1430; + // Ref: table 7.3.1/1 + const integer c_eps_Subscribed_QoS_Profile_AVP_Code := 1431; + // Ref: table 7.3.1/1 + const integer c_vplmn_Dynamic_Address_Allowed_AVP_Code := 1432; + // Ref: table 7.3.1/1 + const integer c_stn_SR_AVP_Code := 1433; + // Ref: table 7.3.1/1 + const integer c_alert_Reason_AVP_Code := 1434; + // Ref: table 7.3.1/1 + const integer c_ambr_AVP_Code := 1435; + // Ref: table 7.3.1/1 + const integer c_csg_Subscription_Data_AVP_Code := 1436; + // Ref: table 7.3.1/1 + const integer c_csg_Id_AVP_Code := 1437; + // Ref: table 7.3.1/1 + const integer c_pdn_GW_Allocation_Type_AVP_Code := 1438; + // Ref: table 7.3.1/1 + const integer c_expiration_Date_AVP_Code := 1439; + // Ref: table 7.3.1/1 + const integer c_rat_Frequency_Selection_Priority_ID_AVP_Code := 1440; + // Ref: table 7.3.1/1 + const integer c_ida_Flags_AVP_Code := 1441; + // Ref: table 7.3.1/1 + const integer c_pua_Flags_AVP_Code := 1442; + // Ref: table 7.3.1/1 + const integer c_nor_Flags_AVP_Code := 1443; + // Ref: table 7.3.1/1 + const integer c_user_Id_AVP_Code := 1444; + // Ref: table 7.3.1/1 + const integer c_equipment_Status_AVP_Code := 1445; + // Ref: table 7.3.1/1 + const integer c_regional_Subscription_Zone_Code_AVP_Code := 1446; + // Ref: table 7.3.1/1 + const integer c_rand_AVP_Code := 1447; + // Ref: table 7.3.1/1 + const integer c_xres_AVP_Code := 1448; + // Ref: table 7.3.1/1 + const integer c_autn_AVP_Code := 1449; + // Ref: table 7.3.1/1 + const integer c_kasme_AVP_Code := 1450; + // Ref: table 7.3.1/1 + const integer c_kc_AVP_Code := 1453; + // Ref: table 7.3.1/1 + const integer c_sres_AVP_Code := 1454; + // Ref: table 7.3.1/1 + const integer c_pdn_Type_AVP_Code := 1456; + // Ref: table 7.3.1/1 + const integer c_roaming_Restricted_Due_To_Unsupported_Feature_AVP_Code := 1457; + // Ref: table 7.3.1/1 + const integer c_omc_Id_AVP_Code := 1466; + // Ref: table 7.3.1/1 + const integer c_gprs_Subscription_Data_AVP_Code := 1467; + // Ref: table 7.3.1/1 + const integer c_complete_Data_List_Included_Indicator_AVP_Code := 1468; + // Ref: table 7.3.1/1 + const integer c_pdp_Context_AVP_Code := 1469; + // Ref: table 7.3.1/1 + const integer c_pdp_Type_AVP_Code := 1470; + // Ref: table 7.3.1/1 + const integer c_3gpp2_MEID_AVP_Code := 1471; + // Ref: table 7.3.1/1 + const integer c_specific_APN_Info_AVP_Code := 1472; + // Ref: table 7.3.1/1 + const integer c_lcs_Info_AVP_Code := 1473; + // Ref: table 7.3.1/1 + const integer c_gmlc_Number_AVP_Code := 1474; + // Ref: table 7.3.1/1 + const integer c_lcs_PrivacyException_AVP_Code := 1475; + // Ref: table 7.3.1/1 + const integer c_ss_Code_AVP_Code := 1476; + // Ref: table 7.3.1/1 + const integer c_ss_Status_AVP_Code := 1477; + // Ref: table 7.3.1/1 + const integer c_notification_To_UE_User_AVP_Code := 1478; + // Ref: table 7.3.1/1 + const integer c_external_Client_AVP_Code := 1479; + // Ref: table 7.3.1/1 + const integer c_client_Identity_AVP_Code := 1480; + // Ref: table 7.3.1/1 + const integer c_gmlc_Restriction_AVP_Code := 1481; + // Ref: table 7.3.1/1 + const integer c_plmn_Client_AVP_Code := 1482; + // Ref: table 7.3.1/1 + const integer c_service_Type_AVP_Code := 1483; + // Ref: table 7.3.1/1 + const integer c_serviceTypeIdentity_AVP_Code := 1484; + // Ref: table 7.3.1/1 + const integer c_mo_LR_AVP_Code := 1485; + // Ref: table 7.3.1/1 + const integer c_teleservice_List_AVP_Code := 1486; + // Ref: table 7.3.1/1 + const integer c_ts_Code_AVP_Code := 1487; + // Ref: table 7.3.1/1 + const integer c_call_Barring_Info_AVP_Code := 1488; + // Ref: table 7.3.1/1 + const integer c_sgsn_Number_AVP_Code := 1489; + // Ref: table 7.3.1/1 + const integer c_idr_Flags_AVP_Code := 1490; + // Ref: table 7.3.1/1 + const integer c_ics_Indicator_AVP_Code := 1491; + // Ref: table 7.3.1/1 + const integer c_ims_Voice_Over_PS_Sessions_Supported_AVP_Code := 1492; + // Ref: table 7.3.1/1 + const integer c_homogeneous_Support_of_IMS_Voice_Over_PS_Sessions_AVP_Code := 1493; + // Ref: table 7.3.1/1 + const integer c_last_UE_Activity_Time_AVP_Code := 1494; + // Ref: table 7.3.1/1 + const integer c_eps_User_State_AVP_Code := 1495; + // Ref: table 7.3.1/1 + const integer c_eps_Location_Information_AVP_Code := 1496; + // Ref: table 7.3.1/1 + const integer c_mme_User_State_AVP_Code := 1497; + // Ref: table 7.3.1/1 + const integer c_sgsn_User_State_AVP_Code := 1498; + // Ref: table 7.3.1/1 + const integer c_user_State_AVP_Code := 1499; + // Ref: table 7.3.1/1 + const integer c_mme_Location_Information_AVP_Code := 1600; + // Ref: table 7.3.1/1 + const integer c_sgsn_Location_Information_AVP_Code := 1601; + // Ref: table 7.3.1/1 + const integer c_service_Area_Identity_AVP_Code := 1607; + // Ref: table 7.3.1/1 + const integer c_geographical_Information_AVP_Code := 1608; + // Ref: table 7.3.1/1 + const integer c_geodetic_Information_AVP_Code := 1609; + // Ref: table 7.3.1/1 + const integer c_current_Location_Retrieved_AVP_Code := 1610; + // Ref: table 7.3.1/1 + const integer c_age_Of_Location_Information_AVP_Code := 1611; + // Ref: table 7.3.1/1 + const integer c_active_APN_AVP_Code := 1612; + // Ref: table 7.3.1/1 + const integer c_error_Diagnostic_AVP_Code := 1614; + // Ref: table 7.3.1/1 + const integer c_ext_PDP_Address_AVP_Code := 1621; + // Ref: table 7.3.1/1 + const integer c_ue_SRVCC_Capability_AVP_Code := 1615; + // Ref: table 7.3.1/1 + const integer c_mps_Priority_AVP_Code := 1616; + // Ref: table 7.3.1/1 + const integer c_vplmn_LIPA_Allowed_AVP_Code := 1617; + // Ref: table 7.3.1/1 + const integer c_lipa_Permission_AVP_Code := 1618; + // Ref: table 7.3.1/1 + const integer c_subscribed_Periodic_RAU_TAU_Timer_AVP_Code := 1619; + // Ref: table 7.3.1/1 + const integer c_ext_PDP_Type_AVP_Code := 1620; + // Ref: table 7.3.1/1 + const integer c_sipto_Permission_AVP_Code := 1613; + // Ref: table 7.3.1/1 + const integer c_mdt_Configuration_AVP_Code := 1622; + // Ref: table 7.3.1/1 + const integer c_job_Type_AVP_Code := 1623; + // Ref: table 7.3.1/1 + const integer c_event_Threshold_RSRP_AVP_Code := 1629; + // Ref: table 7.3.1/1 + const integer c_event_Threshold_RSRQ_AVP_Code := 1630; + // Ref: table 7.3.1/1 + const integer c_relay_Node_Indicator_AVP_Code := 1633; + // Ref: table 7.3.1/1 + const integer c_mdt_User_Consent_AVP_Code := 1634; + // Ref: table 7.3.1/1 + const integer c_puer_Flags_AVP_Code := 1635; + // Ref: table 7.3.1/1 + const integer c_clr_Flags_AVP_Code := 1638; + // Ref: table 7.3.1/1 + } + } }//end module AtsImsIot_Diameter_Templates \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index 0ae200b..d8a3423 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -7,49 +7,535 @@ module AtsImsIot_TP_behavior_CX { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from AtsImsIot_Diameter_Templates all; - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; group g_HSS { + + + /** + * Starts monitor component behavior for TP_CX_HSS_MAA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in a MA-Request received due to S-CSCF registration notification procedure and sends SA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_S_CSCF_A entity sends a MAR containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *                 indicating value NO_STATE_MAINTAINED
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP 
+     *             Destination_Realm_AVP
+     *             Public_Identity_AVP
+     *             User_Name_AVP
+     *             Server_Name_AVP
+     *             SIP_Number_Auth_Items_AVP
+     *             SIP_Auth_Data_Item_AVP containing
+     *                 SIP_Authentication_Scheme_AVP
+     *             ;
+     *         ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the MAA containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP
+     *             not Experimental_Result_AVP
+     *             Result_Code_AVP
+     *                  indicating value DIAMETER_SUCCESS
+     *             User_Name_AVP
+     *             SIP_Number_Auth_Items_AVP
+     *             SIP_Auth_Data_Item_AVP containing
+     *                 SIP_Authentication_Scheme_AVP
+     *             ;
+     *         ;
+     *         to the IMS_S_CSCF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_MAA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { mAR_MSG := mw_MAR }, + "TP_CX_HSS_MAA_01 - MA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { mAA_MSG := mw_MAA }, + "TP_CX_HSS_MAA_01 - MA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_MAA_01 + + + /** + * Starts monitor component behavior for TP_CX_HSS_RTA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in a RT-Request received due to S-CSCF network de-registration notification procedure and sends RT-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_S_CSCF_A entity sends a RTR containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *                 indicating value NO_STATE_MAINTAINED
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP
+     *             Destination_Host_AVP
+     *             Destination_Realm_AVP
+     *             User_Name_AVP
+     *             Deregistration_Reason_AVP containing
+     *                 Reason_Code_AVP
+     *         ;;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the RTA containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the IMS_S_CSCF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_RTA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rTR_MSG := mw_RTR }, + "TP_CX_HSS_RTA_01 - RT Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { rTA_MSG := mw_RTA }, + "TP_CX_HSS_RTA_01 - RT Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_RTA_01 + + + /** + * Starts monitor component behavior for TP_CX_HSS_SAA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in a SA-Request received due to S-CSCF registration notification procedure and sends SA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_S_CSCF_A entity sends a SAR containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *                 indicating value NO_STATE_MAINTAINED,
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP 
+     *             Public_Identity_AVP
+     *             not User_Name_AVP
+     *             Destination_Realm_AVP
+     *             Server_Name_AVP
+     *             Server_Assignment_Type_AVP
+     *                 indicating value UNREGISTERED_USER
+     *             User_Data_Already_Available_AVP 
+     *         ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the SAA containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             User_Data AVP
+     *             Charging_Information_AVP
+     *         ;
+     *         to the IMS_S_CSCF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_SAA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sAR_MSG := mw_SAR_UnregisteredUser }, + "TP_CX_HSS_SAA_01 - SA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sAA_MSG := mw_SAA_userData }, + "TP_CX_HSS_SAA_01 - SA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_SAA_01 + + + /** + * Starts monitor component behavior for TP_CX_HSS_SAA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in an SA-Request received due to S-CSCF de-registration procedure and sends SA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_S_CSCF_A entity sends a SAR containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *                 indicating value NO_STATE_MAINTAINED,
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP 
+     *             Public_Identity_AVP
+     *             User_Name_AVP
+     *             Destination_Realm_AVP
+     *             Server_Name_AVP
+     *             Server_Assignment_Type_AVP
+     *                 indicating value USER_DEREGISTRATION
+     *             User_Data_Already_Available_AVP 
+     *         ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the SAA containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP
+     *             Result_Code_AVP
+     *                indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the IMS_S_CSCF_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_SAA_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sAR_MSG := mw_SAR_UserDeregistration }, + "TP_CX_HSS_SAA_02 - SA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sAA_MSG := mw_SAA}, + "TP_CX_HSS_SAA_02 - SA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_SAA_02 + + + /** + * Starts monitor component behavior for TP_CX_HSS_UAA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in a UA-Request received due to first UE initial registration and sends UA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_I_CSCF_A entity sends a UAR containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *                 indicating value NO_STATE_MAINTAINED,
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP
+     *             Public_Identity_AVP
+     *             Visited_Network_Identifier_AVP
+     *             User_Authorization_Type_AVP 
+     *                 indicating value REGISTRATION,
+     *             User_Name_AVP
+     *             Destination_Host_AVP
+     *             Destination_Realm_AVP
+     *             UAR_Flags_AVP 
+     *                 indicating value IMS_Emergency_Registration_bit_not_set
+     *             ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the UAA containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP 
+     *             not Result_Code_AVP
+     *             Experimental_Result_AVP containing
+     *                 Experimental_Result_Code_AVP 
+     *                     indicating value DIAMETER_FIRST_REGISTRATION
+     *                 ;
+     *             ;
+     *         to the IMS_I_CSCF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_UAA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAR_MSG := mw_UAR_Registration }, + "TP_CX_HSS_UAA_01 - UA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamFirstRegistration }, + "TP_CX_HSS_UAA_01 - UA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_UAA_01 + + /** + * Starts monitor component behavior for TP_CX_HSS_UAA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in a UA-Request received due to protected UE initial registration and sends UA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_I_CSCF_A entity sends a UAR containing
+     *             Public_Identity_AVP
+     *             User_Name_AVP
+     *         ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the UAA containing
+     *             not Result_Code_AVP
+     *             Experimental_Result_AVP containing
+     *                 Experimental_Result_Code_AVP
+     *                     indicating value DIAMETER_SUBSEQUENT_REGISTRATION
+     *                 ;,
+     *             Server_Name_AVP
+     *             not Server_Capabilities_AVP
+     *         ;
+     *         to the IMS_I_CSCF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_UAA_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAR_MSG := mw_UAR }, + "TP_CX_HSS_UAA_02 - UA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamSubsequentRegistration }, + "TP_CX_HSS_UAA_02 - UA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_UAA_02 + + /** + * Starts monitor component behavior for TP_CX_HSS_UAA_03 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that the IUT checks that the Private User Identity and the Public User Identity exists in the HSS and if not then IUT sets the appropriate experimental result code in the UA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_I_CSCF_A entity sends a UAR containing
+     *         User_Name_AVP
+     *             indicating value "an unknown private user identity"
+     *         Public_Identity_AVP
+     *         ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the UAA containing
+     *             not Result_Code_AVP
+     *             Experimental_Result_AVP
+     *                 Experimental_Result_Code_AVP
+     *                     indicating value DIAMETER_ERROR_USER_UNKNOWN
+     *             not Server_Name_AVP
+     *         ;
+     *         to the IMS_I_CSCF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_UAA_03( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAR_MSG := mw_UAR_unknownPrivateId }, + "TP_CX_HSS_UAA_03 - UA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamErrorUserUnknown }, + "TP_CX_HSS_UAA_03 - UA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_UAA_03 + + /** + * Starts monitor component behavior for TP_CX_HSS_UAA_03 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in a UA-Request received due to UE de-registration and sends UA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_I_CSCF_A entity sends a UAR containing
+     *             Public_Identity_AVP
+     *             User_Name_AVP
+     *             User_Authentication_Type_AVP
+     *                 indicating value DE_REGISTRATION
+     *             Visited_Network_Identifier_AVP
+     *         ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the UAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             Server_Name_AVP
+     *             not Server_Capabilities_AVP
+     *         ;
+     *         to the IMS_I_CSCF_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.4 + */ + function f_mtc_check_TP_CX_HSS_UAA_04( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAR_MSG := mw_UAR_deRegistration }, + "TP_CX_HSS_UAA_04 - UA Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamSuccess }, + "TP_CX_HSS_UAA_04 - UA Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_CX_HSS_UAA_04 } // end group g_HSS diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn index b4be673..00946b5 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn @@ -7,54 +7,492 @@ module AtsImsIot_TP_behavior_S6A { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } - - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from AtsImsIot_Diameter_Templates all; + + // LibDiameter + import from LibDiameter_Templates all; group g_HSS { + + /** + * Starts monitor component behavior for TP_S6A_HSS_AIA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of AI-Request sends AI-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_MME_B entity sends a AIR
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the AIA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             Authentication_Info_AVP
+     *             ;
+     *         to the EPC_MME_B entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_HSS_AIA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aIR_MSG := mw_AIR_dummy }, + "TP_S6A_HSS_AIA_01 - AI Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aIA_MSG := mw_AIA_resultCode }, + "TP_S6A_HSS_AIA_01 - AI Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_HSS_AIA_01 + + /** + * Starts monitor component behavior for TP_S6A_HSS_CLR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after termination trigger sends CL-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the EPC_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_HSS_A entity triggers network detachment
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the CLR containing
+     *             User_Name_AVP
+     *                 indicating value IMSI,
+     *             Cancellation_Type_AVP
+     *                 indicating value Subscription_Withdrawal '(2)'
+     *             CLR_Flags_AVP
+     *             ;
+     *         to the EPC_MME_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_HSS_CLR_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cLR_MSG := mw_CLR_cancelation }, + "TP_S6A_HSS_CLR_01", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_HSS_CLR_01 + + /** + * Starts monitor component behavior for TP_S6A_HSS_PUA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of PU-Request sends PU-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+            the UE_A entity isNotRegisteredTo the EPC_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_MME_A entity sends a PUR
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the PUA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             ;
+     *         to the EPC_MME_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_HSS_PUA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { pUER_MSG := mw_PUER_dummy }, + "TP_S6A_HSS_PUA_01 - PU Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { pUEA_MSG := mw_PUEA_resultCode }, + "TP_S6A_HSS_PUA_01 - PU Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_HSS_PUA_01 + + /** + * Starts monitor component behavior for TP_S6A_HSS_ULA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of UL-Request sends UL-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_MME_A entity sends a ULR
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the ULA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             ULA_Flags_AVP
+     *             ;
+     *         to the EPC_MME_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_HSS_ULA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_dummy }, + "TP_S6A_HSS_ULA_01 - UL Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLA_MSG := mw_ULA_resultCode_flags }, + "TP_S6A_HSS_ULA_01 - UL Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_HSS_ULA_01 + + /** + * Starts monitor component behavior for TP_S6A_HSS_ULA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of UL-Request sends UL-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_MME_B entity sends a ULR
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the ULA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             ULA_Flags_AVP
+     *             ;
+     *         to the EPC_MME_B entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_HSS_ULA_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_dummy }, + "TP_S6A_HSS_ULA_02 - UL Request", + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLA_MSG := mw_ULA_resultCode_flags }, + "TP_S6A_HSS_ULA_02 - UL Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_HSS_ULA_02 } // end group g_HSS group g_MME { + + /** + * Starts monitor component behavior for TP_S6A_MME_AIR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of IP-CAN session establishment sends AI-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the UE_A entity sends an IP_CAN session establishment request
+     *         to the EPC_MME_B entity
+     *     }
+     *     then {
+     *         the EPC_MME_B entity sends the AIR containing
+     *             User_Name_AVP
+     *                 indicating value IMSI
+     *             Visited_PLMN_Id_AVP
+     *             Requested_EUTRAN_Authentication_Info_AVP
+     *             ;
+     *         to the IMS_HSS_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_MME_AIR_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aIR_MSG := mw_AIR }, + "TP_S6A_MME_AIR_01", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_MME_AIR_01 + + /** + * Starts monitor component behavior for TP_S6A_MME_CLA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of CL-Request sends CL-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the EPC_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_HSS_A entity sends a CLR
+     *         to the EPC_MME_A entity
+     *     }
+     *     then {
+     *         the EPC_MME_A entity sends the CLA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             ;
+     *         to the IMS_HSS_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_MME_CLA_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cLR_MSG := mw_CLR_dummy }, + "TP_S6A_MME_CLA_01 - CL Request" , + true ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cLA_MSG := mw_CLA_resultCode }, + "TP_S6A_MME_CLA_01 - CL Answer", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_MME_CLA_01 + + /** + * Starts monitor component behavior for TP_S6A_MME_PUR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after termination trigger sends PU-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the EPC_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_MME_A entity triggers purge to perform detachment
+     *     }
+     *     then {
+     *         the EPC_MME_A entity sends the PUR containing
+     *             User_Name_AVP
+     *                 indicating value IMSI,
+     *             PUR_Flags_AVP
+     *             ;
+     *         to the IMS_HSS_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_MME_PUR_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { pUER_MSG := mw_PUER_userName }, + "TP_S6A_MME_PUR_01", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_MME_PUR_01 + + /** + * Starts monitor component behavior for TP_S6A_MME_ULR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of IP-CAN session establishment sends UL-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the UE_A entity sends an IP_CAN session establishment request
+     *         to the EPC_MME_A entity
+     *     }
+     *     then {
+     *         the EPC_MME_A entity sends the ULR containing
+     *             User_Name_AVP
+     *                 indicating value IMSI
+     *             ULR_Flags_AVP
+     *             Visited_PLMN_Id_AVP
+     *             RAT_Type_AVP
+     *             ;
+     *         to the IMS_HSS_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_MME_ULR_01( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_userName }, + "TP_S6A_MME_ULR_01", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_MME_ULR_01 + + /** + * Starts monitor component behavior for TP_S6A_MME_ULR_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after receipt of IP-CAN session establishment sends UL-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the UE_A entity sends an IP_CAN session establishment request
+     *         to the EPC_MME_B entity
+     *     }
+     *     then {
+     *         the EPC_MME_B entity sends the ULR containing
+     *             User_Name_AVP
+     *                 indicating value IMSI
+     *             ULR_Flags_AVP
+     *             Visited_PLMN_Id_AVP
+     *             RAT_Type_AVP
+     *             ;
+     *         to the IMS_HSS_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.8 + */ + function f_mtc_check_TP_S6A_MME_ULR_02( + DiameterInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_userName }, + "TP_S6A_MME_ULR_01", + true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S6A_MME_ULR_02 } // end group g_MME -- GitLab From 619efa1265a613afa33c2ff6384ce24387b333cf Mon Sep 17 00:00:00 2001 From: Bostjan Date: Fri, 19 Jun 2020 15:12:49 +0200 Subject: [PATCH 071/176] Diameter templates updated with f_Iot_Diameter_receive function. --- .../AtsImsIot_Diameter_Templates.ttcn | 26 ++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 193 ++++++----- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 305 ++++++++++++------ ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 137 +++++--- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn | 205 ++++++++---- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn | 179 +++++++--- ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn | 120 ++++--- 7 files changed, 795 insertions(+), 370 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 2212b40..e89af0c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -649,6 +649,32 @@ module AtsImsIot_Diameter_Templates { }// end group S6aRequestMessageTemplates }//end group S6aMessageTemplates + group ShMessageTemplates{ + group ShRequestMessageTemplates{ + + template UDR_MSG mw_UDR_userData modifies mw_UDR_dummy := { + uDR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Identity := ?, + data_Reference := ? + } + } + + }// end group ShRequestMessageTemplates + group ShAnswertMessageTemplates{ + + template UDA_MSG mw_UDA_diamSuccess modifies mw_UDA_dummy := { + uDA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + user_Data := ? + } + } + + }// end group ShRequestMessageTemplates + }//end group ShMessageTemplates } // end group DiameterTemplates group DiameterTemplatesDummy { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index d8a3423..381f2c9 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -84,18 +84,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_MAA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { mAR_MSG := mw_MAR }, - "TP_CX_HSS_MAA_01 - MA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { mAA_MSG := mw_MAA }, - "TP_CX_HSS_MAA_01 - MA Answer", - true ) + f_Iot_Diameter_receive( + { + {mAR_MSG := mw_MAR}, + {mAA_MSG := mw_MAA} + }, + {}, + {0, omit}, + "TP_CX_HSS_MAA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_MAA_01 @@ -149,18 +153,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_RTA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rTR_MSG := mw_RTR }, - "TP_CX_HSS_RTA_01 - RT Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rTA_MSG := mw_RTA }, - "TP_CX_HSS_RTA_01 - RT Answer", - true ) + f_Iot_Diameter_receive( + { + {rTR_MSG := mw_RTR}, + {rTA_MSG := mw_RTA} + }, + {}, + {0, omit}, + "TP_CX_HSS_RTA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_RTA_01 @@ -218,18 +226,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_SAA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sAR_MSG := mw_SAR_UnregisteredUser }, - "TP_CX_HSS_SAA_01 - SA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sAA_MSG := mw_SAA_userData }, - "TP_CX_HSS_SAA_01 - SA Answer", - true ) + f_Iot_Diameter_receive( + { + {sAR_MSG := mw_SAR_UnregisteredUser}, + {sAA_MSG := mw_SAA_userData} + }, + {}, + {0, omit}, + "TP_CX_HSS_SAA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_SAA_01 @@ -285,18 +297,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_SAA_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sAR_MSG := mw_SAR_UserDeregistration }, - "TP_CX_HSS_SAA_02 - SA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sAA_MSG := mw_SAA}, - "TP_CX_HSS_SAA_02 - SA Answer", - true ) + f_Iot_Diameter_receive( + { + {sAR_MSG := mw_SAR_UserDeregistration}, + {sAA_MSG := mw_SAA} + }, + {}, + {0, omit}, + "TP_CX_HSS_SAA_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_SAA_02 @@ -357,18 +373,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_UAA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAR_MSG := mw_UAR_Registration }, - "TP_CX_HSS_UAA_01 - UA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamFirstRegistration }, - "TP_CX_HSS_UAA_01 - UA Answer", - true ) + f_Iot_Diameter_receive( + { + {uAR_MSG := mw_UAR_Registration}, + {uAA_MSG := mw_UAA_diamFirstRegistration} + }, + {}, + {0, omit}, + "TP_CX_HSS_UAA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_UAA_01 @@ -412,18 +432,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_UAA_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAR_MSG := mw_UAR }, - "TP_CX_HSS_UAA_02 - UA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamSubsequentRegistration }, - "TP_CX_HSS_UAA_02 - UA Answer", - true ) + f_Iot_Diameter_receive( + { + {uAR_MSG := mw_UAR}, + {uAA_MSG := mw_UAA_diamSubsequentRegistration} + }, + {}, + {0, omit}, + "TP_CX_HSS_UAA_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_UAA_02 @@ -466,19 +490,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_UAA_03( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAR_MSG := mw_UAR_unknownPrivateId }, - "TP_CX_HSS_UAA_03 - UA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamErrorUserUnknown }, - "TP_CX_HSS_UAA_03 - UA Answer", - true ) - ); + f_Iot_Diameter_receive( + { + {uAR_MSG := mw_UAR_unknownPrivateId}, + {uAA_MSG := mw_UAA_diamErrorUserUnknown} + }, + {}, + {0, omit}, + "TP_CX_HSS_UAA_03", + p_forward_to_mtc, + p_checkMessage ) + ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_UAA_03 @@ -521,18 +548,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.4 */ function f_mtc_check_TP_CX_HSS_UAA_04( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAR_MSG := mw_UAR_deRegistration }, - "TP_CX_HSS_UAA_04 - UA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uAA_MSG := mw_UAA_diamSuccess }, - "TP_CX_HSS_UAA_04 - UA Answer", - true ) + f_Iot_Diameter_receive( + { + {uAR_MSG := mw_UAR_deRegistration}, + {uAA_MSG := mw_UAA_diamSuccess} + }, + {}, + {0, omit}, + "TP_CX_HSS_UAA_04", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_CX_HSS_UAA_04 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index 1c826b2..934597a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -81,17 +81,25 @@ group g_PGW { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PGW_CCR_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }, - "TP_RX_PGW_CCR_01", - true ) + f_Iot_Diameter_receive( + { + { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_RX_PGW_CCR_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PGW_CCR_01 - /** * Starts monitor component behavior for TP_GX_PGW_CCR_02 * @param p_monitorCompRef Reference to monitor component @@ -124,12 +132,21 @@ group g_PGW { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PGW_CCR_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, - "TP_RX_PGW_CCR_02", - true ) + f_Iot_Diameter_receive( + { + { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_RX_PGW_CCR_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PGW_CCR_02 @@ -180,18 +197,22 @@ group g_PGW { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PGW_RAA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)}, - "TP_RX_PGW_RAA_01 - RA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, - "TP_RX_PGW_RAA_01 - RA Answer", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)}, + { rAA_MSG := mw_RAA_resultCode} + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PGW_RAA_01 @@ -229,18 +250,22 @@ group g_PGW { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PGW_RAA_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_dummy}, - "TP_RX_PGW_RAA_02 - RA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, - "TP_RX_PGW_RAA_02 - RA Answer", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_dummy }, + { rAA_MSG := mw_RAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PGW_RAA_02 @@ -278,18 +303,22 @@ group g_PGW { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PGW_RAA_03( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_dummy}, - "TP_RX_PGW_RAA_03 - RA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, - "TP_RX_PGW_RAA_03 - RA Answer", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_dummy}, + { rAA_MSG := mw_RAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_03", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PGW_RAA_03 @@ -329,18 +358,22 @@ group g_PGW { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PGW_RAA_04( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleRemove}, - "TP_RX_PGW_RAA_04 - RA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAA_MSG := mw_RAA_resultCode}, - "TP_RX_PGW_RAA_04 - RA Answer", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_ChargingRuleRemove }, + { rAA_MSG := mw_RAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_04", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PGW_RAA_04 @@ -424,18 +457,22 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_CCA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }, - "TP_RX_PCRF_CCA_01 - CC Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_qosInformation_class5 }, - "TP_RX_PCRF_CCA_01 - CC Answer", - true ) + f_Iot_Diameter_receive( + { + { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }, + { cCA_MSG := mw_CCA_qosInformation_class5 } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_CCA_01 @@ -476,18 +513,22 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_CCA_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, - "TP_RX_PCRF_CCA_02 - CC Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_resultCode }, - "TP_RX_PCRF_CCA_02 - CC Answer", - true ) + f_Iot_Diameter_receive( + { + { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, + { cCA_MSG := mw_CCA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_CCA_02 @@ -527,18 +568,22 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_CCA_03( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, - "TP_RX_PCRF_CCA_03 - CC Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_resultCode }, - "TP_RX_PCRF_CCA_03 - CC Answer", - true ) + f_Iot_Diameter_receive( + { + { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, + { cCA_MSG := mw_CCA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_03", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_CCA_03 @@ -590,12 +635,21 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_CCA_04( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_qosInformation_class5 }, - "TP_RX_PCRF_CCA_04 - CC Answer", - true ) + f_Iot_Diameter_receive( + { + { cCA_MSG := mw_CCA_qosInformation_class5 } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_04", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_CCA_04 @@ -634,12 +688,21 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_CCA_05( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_resultCode}, - "TP_RX_PCRF_CCA_05 - CC Answer", - true ) + f_Iot_Diameter_receive( + { + { cCA_MSG := mw_CCA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_05", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_CCA_05 @@ -697,12 +760,21 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_RAR_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)}, - "TP_RX_PCRF_RAR_01 - RA Request", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)} + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_RAR_01 @@ -741,12 +813,21 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_RAR_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleRemove}, - "TP_RX_PCRF_RAR_02", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_ChargingRuleRemove} + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_RAR_02 @@ -802,12 +883,21 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_RAR_03( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)}, //During validation some additions may be required - "TP_RX_PCRF_RAR_03", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) } //During validation some additions may be required + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_03", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_RAR_03 @@ -845,12 +935,21 @@ group g_PCRF { * @see TS 103 653-1 clause 7.7 */ function f_mtc_check_TP_GX_PCRF_RAR_04( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { rAR_MSG := mw_RAR_ChargingRuleRemove},//During validation some additions may be required - "TP_RX_PCRF_RAR_04", - true ) + f_Iot_Diameter_receive( + { + { rAR_MSG := mw_RAR_ChargingRuleRemove } //During validation some additions may be required + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_04", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_GX_PCRF_RAR_04 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index dbaa2b0..3f61e9b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -50,18 +50,22 @@ group g_PCRF_ASA { * @see TS 103 653-1 clause 7.6 */ function f_mtc_check_TP_RX_PCRF_ASA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) }, - "TP_RX_PCRF_ASA_01 - AS Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_resultCode }, - "TP_RX_PCRF_ASA_01 - AS Answer", - true ) + f_Iot_Diameter_receive( + { + { aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) }, + { aSA_MSG := mw_ASA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_ASA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCRF_ASA_01 @@ -109,18 +113,22 @@ group g_PCRF_AAA { * @see TS 103 653-1 clause 7.6 */ function f_mtc_check_TP_RX_PCRF_AAA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy }, - "TP_RX_PCRF_AAA_01 - AA Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_AcceptableService }, - "TP_RX_PCRF_AAA_01 - AA Answer", - true ) + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_dummy }, + { aAA_MSG := mw_AAA_AcceptableService } + }, + {}, + {0, omit}, + "TP_RX_PCRF_AAA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCRF_AAA_01 @@ -149,12 +157,21 @@ group g_PCRF_AAA { * @see TS 103 653-1 clause 7.6 */ function f_mtc_check_TP_RX_PCRF_AAA_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_resultCode }, - "TP_RX_PCRF_AAA_02", - true ) + f_Iot_Diameter_receive( + { + { aAA_MSG := mw_AAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_AAA_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCRF_AAA_02 @@ -178,12 +195,21 @@ group g_PCRF_AAA { * @see TS 103 653-1 clause 7.6 */ function f_mtc_check_TP_RX_PCRF_AAA_03( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_resultCode }, - "TP_RX_PCRF_AAA_03", - true ) + f_Iot_Diameter_receive( + { + { aAA_MSG := mw_AAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_AAA_03", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCRF_AAA_03 @@ -232,10 +258,21 @@ group g_PCSCF_AAR { * @remark source function f_mtc_check_TP_EPC_6013_01 */ function f_mtc_check_TP_RX_PCSCF_AAR_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_RX_PCSCF_AAR_01", true ) + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01 @@ -252,10 +289,21 @@ group g_PCSCF_STR { * @remark source function f_mtc_check_TP_EPC_6034_02 */ function f_mtc_check_TP_RX_PCSCF_STR_03( - DiameterInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_RX_PCSCF_STR_03", true ) + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_03", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCSCF_STR_03 @@ -268,12 +316,23 @@ group g_PCSCF_STR { * @remark source function f_mtc_check_TP_EPC_6034_04 */ function f_mtc_check_TP_RX_PCSCF_STR_06( - DiameterInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_RX_PCSCF_STR_06", true ) - ); - p_monitorCompRef.done; + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_06", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCSCF_STR_06 /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn index 00946b5..f9b1846 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn @@ -59,18 +59,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_HSS_AIA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aIR_MSG := mw_AIR_dummy }, - "TP_S6A_HSS_AIA_01 - AI Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aIA_MSG := mw_AIA_resultCode }, - "TP_S6A_HSS_AIA_01 - AI Answer", - true ) + f_Iot_Diameter_receive( + { + { aIR_MSG := mw_AIR_dummy }, + { aIA_MSG := mw_AIA_resultCode } + }, + {}, + {0, omit}, + "TP_S6A_HSS_AIA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_HSS_AIA_01 @@ -109,12 +113,21 @@ group g_HSS { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_HSS_CLR_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cLR_MSG := mw_CLR_cancelation }, - "TP_S6A_HSS_CLR_01", - true ) + f_Iot_Diameter_receive( + { + { cLR_MSG := mw_CLR_cancelation } + }, + {}, + {0, omit}, + "TP_S6A_HSS_CLR_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_HSS_CLR_01 @@ -151,18 +164,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_HSS_PUA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { pUER_MSG := mw_PUER_dummy }, - "TP_S6A_HSS_PUA_01 - PU Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { pUEA_MSG := mw_PUEA_resultCode }, - "TP_S6A_HSS_PUA_01 - PU Answer", - true ) + f_Iot_Diameter_receive( + { + { pUER_MSG := mw_PUER_dummy }, + { pUEA_MSG := mw_PUEA_resultCode } + }, + {}, + {0, omit}, + "TP_S6A_HSS_PUA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_HSS_PUA_01 @@ -200,18 +217,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_HSS_ULA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_dummy }, - "TP_S6A_HSS_ULA_01 - UL Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLA_MSG := mw_ULA_resultCode_flags }, - "TP_S6A_HSS_ULA_01 - UL Answer", - true ) + f_Iot_Diameter_receive( + { + { uLR_MSG := mw_ULR_dummy }, + { uLA_MSG := mw_ULA_resultCode_flags } + }, + {}, + {0, omit}, + "TP_S6A_HSS_ULA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_HSS_ULA_01 @@ -249,18 +270,22 @@ group g_HSS { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_HSS_ULA_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_dummy }, - "TP_S6A_HSS_ULA_02 - UL Request", - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLA_MSG := mw_ULA_resultCode_flags }, - "TP_S6A_HSS_ULA_02 - UL Answer", - true ) + f_Iot_Diameter_receive( + { + { uLR_MSG := mw_ULR_dummy }, + { uLA_MSG := mw_ULA_resultCode_flags } + }, + {}, + {0, omit}, + "TP_S6A_HSS_ULA_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_HSS_ULA_02 @@ -304,12 +329,21 @@ group g_MME { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_MME_AIR_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aIR_MSG := mw_AIR }, - "TP_S6A_MME_AIR_01", - true ) + f_Iot_Diameter_receive( + { + { aIR_MSG := mw_AIR } + }, + {}, + {0, omit}, + "TP_S6A_MME_AIR_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_MME_AIR_01 @@ -346,18 +380,22 @@ group g_MME { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_MME_CLA_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cLR_MSG := mw_CLR_dummy }, - "TP_S6A_MME_CLA_01 - CL Request" , - true ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cLA_MSG := mw_CLA_resultCode }, - "TP_S6A_MME_CLA_01 - CL Answer", - true ) + f_Iot_Diameter_receive( + { + { cLR_MSG := mw_CLR_dummy }, + { cLA_MSG := mw_CLA_resultCode } + }, + {}, + {0, omit}, + "TP_S6A_MME_CLA_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_MME_CLA_01 @@ -394,12 +432,21 @@ group g_MME { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_MME_PUR_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { pUER_MSG := mw_PUER_userName }, - "TP_S6A_MME_PUR_01", - true ) + f_Iot_Diameter_receive( + { + { pUER_MSG := mw_PUER_userName } + }, + {}, + {0, omit}, + "TP_S6A_MME_PUR_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_MME_PUR_01 @@ -439,12 +486,21 @@ group g_MME { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_MME_ULR_01( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_userName }, - "TP_S6A_MME_ULR_01", - true ) + f_Iot_Diameter_receive( + { + { uLR_MSG := mw_ULR_userName } + }, + {}, + {0, omit}, + "TP_S6A_MME_ULR_01", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_MME_ULR_01 @@ -484,12 +540,21 @@ group g_MME { * @see TS 103 653-1 clause 7.8 */ function f_mtc_check_TP_S6A_MME_ULR_02( - DiameterInterfaceMonitor p_monitorCompRef + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLR_MSG := mw_ULR_userName }, - "TP_S6A_MME_ULR_01", - true ) + f_Iot_Diameter_receive( + { + { uLR_MSG := mw_ULR_userName } + }, + {}, + {0, omit}, + "TP_S6A_MME_ULR_02", + p_forward_to_mtc, + p_checkMessage + ) ); p_monitorCompRef.done; } // End of function f_mtc_check_TP_S6A_MME_ULR_02 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn index 7618b23..9b1a629 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn @@ -7,49 +7,150 @@ module AtsImsIot_TP_behavior_S9 { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } - - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from AtsImsIot_Diameter_Templates all; + // LibDiameter + import from LibDiameter_Templates all; group g_PCRF { + + + /** + * Starts monitor component behavior for TP_S9_PCRF_AAR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives AA-Request from visited P-CSCS and it sends AA-Request towards home PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_B entity sends a AAR
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the AAR 
+     *         to the EPC_PCRF_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_AAR_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_dummy } + }, + {}, + {0, omit}, + "TP_S9_PCRF_AAR_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_AAR_01 + + + /** + * Starts monitor component behavior for TP_S9_PCRF_AAA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify when IUT receives AA-Request from visited PCRF then it sends a AA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_B entity sends a AAR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends a AAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             Acceptable_Service_Info_AVP containing
+     *                 "one or more" Media_Component_Description_AVP containing
+     *                     Media_Component_Number_AVP
+     *                         indicating value 0,
+     *                     Media_Sub_Component_AVP containing
+     *                         Flow_Description_AVP
+     *                             indicating value 
+     *                             "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or
+     *                              permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or
+     *                              permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number)",
+     *                         Flow_Description_AVP
+     *                             indicating value 
+     *                             "permit_out_ip from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or
+     *                              permit_out_udp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or
+     *                              permit_out_tcp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address",
+     *                         Flow_Usage_AVP
+     *                             indicating value AF_SIGNALING,
+     *                         Flow_Status_AVP
+     *                             indicating value ENABLED,
+     *                         AF_Signalling_Protocol_AVP
+     *                             indicating value SIP
+     *                     ;
+     *                 ;
+     *             ;,
+     *             IP_CAN_AVP
+     *             RAT_Type_AVP
+     *         ;
+     *         to the EPC_PCRF_B entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_AAA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAA_MSG := mw_AAA_AcceptableService } + }, + {}, + {0, omit}, + "TP_S9_PCRF_AAA_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_AAA_01 } // end group g_PCRF diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn index 58a2cfc..067cd35 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn @@ -7,49 +7,93 @@ module AtsImsIot_TP_behavior_SH { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from AtsImsIot_Diameter_Templates all; - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; group g_HSS { + + + /** + * Starts monitor component behavior for TP_SH_HSS_UDA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "IUT successfully processes all mandatory AVPs in a UD-Request and sends UD-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_AS_A entity sends a UDR containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *                 indicating value NO_STATE_MAINTAINED
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP
+     *             Destination_Realm_AVP
+     *             User_Identity_AVP
+     *             Data_Reference_AVP
+     *         ;
+     *         to the IMS_HSS_A entity
+     *     }
+     *     then {
+     *         the IMS_HSS_A entity sends the UDA containing
+     *             Session_ID_AVP
+     *             Vendor_Specific_Application_Id_AVP
+     *             Auth_Session_State_AVP
+     *             Origin_Host_AVP
+     *             Origin_Realm_AVP 
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             User_Data_AVP
+     *         ;
+     *         to the IMS_AS_A entity
+     *     }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.10 + */ + function f_mtc_check_TP_SH_HSS_UDA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + {uDR_MSG := mw_UDR_userData}, + {uDA_MSG := mw_UDA_diamSuccess} + }, + {}, + {0, omit}, + "TP_SH_HSS_UDA_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_SH_HSS_UDA_01 } // end group g_HSS -- GitLab From ccf8da7b883dc1f7b26413f6467c68cd6505fe2a Mon Sep 17 00:00:00 2001 From: Bostjan Date: Sat, 20 Jun 2020 21:02:06 +0200 Subject: [PATCH 072/176] TPs for S9 interface and templates added. --- .../AtsImsIot_Diameter_Templates.ttcn | 152 ++++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn | 570 +++++++++++++++++- 2 files changed, 711 insertions(+), 11 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index e89af0c..7778268 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -22,6 +22,7 @@ module AtsImsIot_Diameter_Templates { import from LibDiameter_Types_Rx_AVPs all; import from LibDiameter_Types_CxDx_AVPs all; import from LibDiameter_Types_S6a_AVPs {type Cancellation_Type_AVP, Cancellation_Type_Code}; + import from LibDiameter_Types_S9_AVPs all; group DiameterHeaderFields { group CxHeaderFields{ @@ -290,15 +291,98 @@ module AtsImsIot_Diameter_Templates { } //end group GxHeaderFields - group CxHeaderFields{ + group S6aHeaderFields{ template Cancellation_Type_AVP mw_cancellationType(Cancellation_Type_Code p_cancellation_Type) := { aVP_Header := mw_aVP_Header_any_Code(c_cancellation_Type_AVP_Code), cancellation_Type := p_cancellation_Type } // End of template m_cancellationType - } //end group GxHeaderFields + } //end group S6aHeaderFields + group S9HeaderFields{ + + template Subses_Enforcement_Info_AVP mw_subses_Enforcement_Info(Subsession_Operation_AVP p_subsession_Operation) := { + aVP_Header := mw_aVP_Header_any_Code(2201), + subsession_Id := ?, + subsession_Operation := p_subsession_Operation, + aN_GW_Address := *, + bearer_Identifier := *, + bearer_Operation := *, + packet_Filter_Information := *, + packet_Filter_Operation := *, + qoS_Information := *, + framed_IP_Address := *, + framed_IPv6_Prefix := *, + coA_Information := *, + called_Station_Id := *, + pDN_Connection_ID := *, + bearer_Usage := *, + tFT_Packet_Filter_Information := *, + online := *, + offline := *, + result_Code := *, + experimental_Result := *, + charging_Rule_Report := *, + qoS_Rule_Report := *, + iP_CAN_Type := *, + rat_Type := *, + threeGPP_SGSN_MCC_MNC := *, + threeGPP_SGSN_Address := *, + threeGPP_SGSN_IPv6_Address := *, + rAI := *, + threeGPP_User_Location_Info := *, + threeGPP2_BSID := *, + user_CSG_Information := *, + default_EPS_Bearer_QoS := *, + network_Request_Support := *, + routing_Rule_Install := *, + routing_Rule_Remove := *, + logical_Access_ID := *, + physical_Access_ID := *, + usage_Monitoring_Information := *, + multiple_BBERF_Action := *, + event_Trigger := *, + access_Network_Charging_Address := *, + access_Network_Charging_Id_Gx := *, + session_Linking_Indicator := *, + aVP_Type := * + } + + template Subsession_Operation_AVP mw_subsession_Operation_AVP (Subsession_Operation_Code p_code):= { + aVP_Header := mw_aVP_Header_any_Code(c_subsession_Operation_AVP_Code), + subsession_Operation := p_code + } + + template Subses_Decision_Info_AVP mw_subses_Decision_Info_any := { + aVP_Header := mw_aVP_Header_any_Code(2200), + subsession_Id := ?, + aN_GW_Address := *, + result_Code := *, + experimental_Result := *, + charging_Rule_Remove := *, + charging_Rule_Install := *, + qoS_Rule_Install := *, + qoS_Rule_Remove := *, + default_EPS_Bearer_QoS := *, + usage_Monitoring_Information := *, + session_Release_Cause := *, + bearer_Control_Mode := *, + event_Trigger := *, + revalidation_Time := *, + online := *, + offline := *, + qoS_Information := *, + aVP_Type := * + } + + template Subses_Decision_Info_AVP mw_subses_Decision_Info_qosInfoAndDefaultEpsBearer modifies mw_subses_Decision_Info_any := { + default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5, + qoS_Information := mw_qoS_Information + } + + + } //end group S9HeaderFields } //end DiameterHeaderFields group DiameterTemplates { @@ -506,6 +590,18 @@ module AtsImsIot_Diameter_Templates { } } + template AAA_MSG mw_AAA_resultCode_mediaCopmonentDescription modifies mw_AAA_dummy := { + aAA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + acceptable_service_info := { + media_component_description := + {mw_mediaComponentDescription + } + } + + } + } + template ASA_MSG mw_ASA_resultCode modifies mw_ASA_dummy := { aSA_Body :={ result_Code := mw_resultCode(mw_resultCode_diameterSuccess) @@ -675,6 +771,58 @@ module AtsImsIot_Diameter_Templates { }// end group ShRequestMessageTemplates }//end group ShMessageTemplates + group S9MessageTemplates{ + group S9RequestMessageTemplates{ + + template CCR_MSG mw_CCR_S9_Establishment(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := { + cCR_Body :={ + cC_Request_Type := mw_cC_Request_Type(p_avpData), + subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))}, + iP_CAN_Type := ?, + rat_Type := ?, + called_Station_Id := ?, + pDN_Connection_ID := ?, + framed_IP_Address := ?, + //framed_IPv6_Prefix := *, + bearer_Usage := mw_bearer_Usage(IMS_SIGNALLING_E), + qoS_Information := mw_qoS_Information, + default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5, + subsesion_Enforcement_Info := {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (ESTABLISHMENT_E))} + } + } + + template CCR_MSG mw_CCR_S9_Termination(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := { + cCR_Body :={ + cC_Request_Type := mw_cC_Request_Type(p_avpData), + subsesion_Enforcement_Info := {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (TERMINATION_E))} + } + } + + }// end group S9RequestMessageTemplates + group S9AnswertMessageTemplates{ + + template CCA_MSG mw_CCA_subsessionDecisionAny modifies mw_CCA_dummy := { + cCA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + subsession_Decision_Info := {mw_subses_Decision_Info_any} + } + } + + template CCA_MSG mw_CCA_subsessionDecision_qosInfoAndDefaultEpsBearer modifies mw_CCA_dummy := { + cCA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + subsession_Decision_Info := {mw_subses_Decision_Info_qosInfoAndDefaultEpsBearer} + } + } + + template STA_MSG mw_STA_diamSuccess modifies mw_STA_dummy := { + sTA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } + + }// end group S9RequestMessageTemplates + }//end group S9MessageTemplates } // end group DiameterTemplates group DiameterTemplatesDummy { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn index 9b1a629..2dd2ad5 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn @@ -105,15 +105,6 @@ group g_PCRF { * indicating value 0, * Media_Sub_Component_AVP containing * Flow_Description_AVP - * indicating value - * "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - * permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - * permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number)", - * Flow_Description_AVP - * indicating value - * "permit_out_ip from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - * permit_out_udp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - * permit_out_tcp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address", * Flow_Usage_AVP * indicating value AF_SIGNALING, * Flow_Status_AVP @@ -152,6 +143,567 @@ group g_PCRF { p_monitorCompRef.done; } // End of function f_mtc_check_TP_S9_PCRF_AAA_01 + /** + * Starts monitor component behavior for TP_S9_PCRF_AAA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify when IUT receives AA-Request from visited PCRF then it sends a AA-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_B entity sends a AAR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends a AAA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             Acceptable_Service_Info_AVP containing
+     *                 Media_Component_Description_AVP
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_B entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_AAA_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription } + }, + {}, + {0, omit}, + "TP_S9_PCRF_AAA_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_AAA_02 + + /** + * Starts monitor component behavior for TP_S9_PCRF_ASR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards visited PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity triggers termination_SIP_signalling_session
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the ASR containing
+     *             Session_Id_AVP
+     *             Abort_Cause_AVP
+     *                 indicating value BEARER_RELEASED
+     *         ; 
+     *         to the EPC_PCRF_B entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_ASR_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } + }, + {}, + {0, omit}, + "TP_S9_PCRF_ASR_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_ASR_01 + + /** + * Starts monitor component behavior for TP_S9_PCRF_ASA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives AS-Answer from visited P-CSCF and it sends AS-Answer towards home PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_B entity sends a ASA
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the ASA 
+     *         to the EPC_PCRF_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_ASA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aSA_MSG := mw_ASA_dummy } + }, + {}, + {0, omit}, + "TP_S9_PCRF_ASA_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_ASA_01 + + /** + * Starts monitor component behavior for TP_S9_PCRF_CCR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives CC-Request from P-GW and it sends CC-Request towards home PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PGW_B entity sends an CCR
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *        the EPC_PCRF_B entity sends an CCR containing
+     *             CC_Request_Type_AVP
+     *                 indicating value INITIAL_REQUEST
+     *             Subscription_Id_AVP containing
+     *                 Subscription_Id_Type_AVP
+     *                     indicating value END_USER_IMSI
+     *                 ;,
+     *             IP_CAN_Type_AVP
+     *             RAT_Type_AVP
+     *             Called_Station_Id_AVP
+     *             PDN_Connection_Id_AVP
+     *             Framed_IP_Address_AVP
+     *             "or" Framed_IP6_IP_Address_AVP
+     *             Bearer_Usage_AVP
+     *                 indicating value IMS_SIGNALLING
+     *             QoS_Information_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
+     *                 APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
+     *                 Bearer_Identifier_AVP
+     *             Default_EPS_Bearer_QoS_AVP containing
+     *                 QoS_Class_Identifier_AVP
+     *                     indicating value '5'
+     *                 Allocation_Retention_Priority_AVP containing
+     *                     Priority_Level_AVP
+     *                     Pre_emption_Capablity_AVP
+     *                     Pre_emption_Vulnerability_AVP
+     *                 ;
+     *             ;,
+     *             Subsession_Enforcement_Info_AVP containing
+     *                 Subsession_Id_AVP
+     *                 Subsession_Operation_AVP
+     *                     indicating value ESTABLISHMENT
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_CCR_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { cCR_MSG := mw_CCR_S9_Establishment(INITIAL_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCR_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_CCR_01 + + /** + * Starts monitor component behavior for TP_S9_PCRF_CCR_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives CC-Request from P-GW and it sends CC-Request towards home PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PGW_B entity sends an CCR
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends an CCR containing
+     *             CC_Request_Type_AVP
+     *                 indicating value TERMINATION_REQUEST
+     *             Subsession_Enforcement_Info_AVP containing
+     *                 Subsession_Id_AVP
+     *                 Subsession_Operation_AVP
+     *                     indicating value TERMINATION
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_CCR_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { cCR_MSG := mw_CCR_S9_Termination(INITIAL_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCR_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_CCR_02 + + /** + * Starts monitor component behavior for TP_S9_PCRF_CCA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify when IUT receives CC-Request from visited PCRF then it sends a CC-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_B entity sends a CCR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends a CCA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             Subsession_Decision_Info_AVP containing
+     *                 Subsession_Id_AVP
+     *                 QoS_Information_AVP containing
+     *                     APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
+     *                     APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
+     *                     Bearer_Identifier_AVP;,
+     *                 Default_EPS_Bearer_QoS_AVP containing
+     *                     QoS_Class_Identifier_AVP
+     *                         indicating value '5'
+     *                     Allocation_Retention_Priority_AVP containing
+     *                         Priority_Level_AVP
+     *                         Pre_emption_Capablity_AVP
+     *                         Pre_emption_Vulnerability_AVP
+     *                     ;
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_B entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_CCA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { cCA_MSG := mw_CCA_subsessionDecision_qosInfoAndDefaultEpsBearer } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCA_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_CCA_01 + + /** + * Starts monitor component behavior for TP_S9_PCRF_CCA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify when IUT receives CC-Request from visited PCRF then it sends a CC-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_B entity sends a CCR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends a CCA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *             Subsession_Decision_Info_AVP containing
+     *                 Subsession_Id_AVP
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_B entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_CCA_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { cCA_MSG := mw_CCA_subsessionDecisionAny } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCA_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_CCA_02 + + /** + * Starts monitor component behavior for TP_S9_PCRF_STR_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT receives ST-Request from visited P-CSCS and it sends ST-Request towards home PCRF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_B entity sends a STR
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the STR 
+     *         to the EPC_PCRF_A entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_STR_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_S9_PCRF_STR_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_STR_01 + + /** + * Starts monitor component behavior for TP_S9_PCRF_STA_01 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify when IUT receives ST-Request from visited PCRF then it sends a ST-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_B and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_B entity sends a STR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends a STA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the EPC_PCRF_B entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_STA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_S9_PCRF_STA_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_STA_01 + + /** + * Starts monitor component behavior for TP_S9_PCRF_STA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify when IUT receives ST-Request from visited PCRF then it sends a ST-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_B entity sends a STR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends a STA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the EPC_PCRF_B entity
+     *    }
+     * }
+     * 
+ * @see TS 103 653-1 clause 7.9 + */ + function f_mtc_check_TP_S9_PCRF_STA_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_S9_PCRF_STA_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_S9_PCRF_STA_02 + } // end group g_PCRF -- GitLab From 87839d032b39ff5c31e48ab988dca1e6da0523b5 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 22 Jun 2020 10:03:42 +0200 Subject: [PATCH 073/176] Bugs fixed in TPs --- test_purposes/Gm/TP_GM.tplan2 | 171 +++++++------------ test_purposes/Mw/TP_MW_IS.tplan2 | 2 +- test_purposes/Mw/TP_MW_PS.tplan2 | 263 ++++++++++++++++++----------- test_purposes/Mw/TP_MW_SI.tplan2 | 275 +++++++++++++++++++++---------- 4 files changed, 414 insertions(+), 297 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 55295cb..e8cf92a 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -21,8 +21,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_MESSAGE_01 - // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes" @@ -80,8 +78,6 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_01 Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." - // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" @@ -144,8 +140,6 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_02 Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." - // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" @@ -207,8 +201,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_REGISTER_03 - // TD_IMS_REG_0003 from ETSI TS 186 011-2 V5.1.1 (2013-10) - // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)." @@ -260,8 +252,6 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_04 Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." - // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" @@ -325,8 +315,6 @@ Package TP_GM { TP Id TP_GM_PCSCF_REGISTER_05 Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." - // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Reference "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.13" @@ -389,8 +377,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_REGISTER_06 - // TD_IMS_REG_0003 from ETSI TS 186 011-2 V5.1.1 (2013-10) - // TP_IMST2_GM_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)." @@ -472,8 +458,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_REGISTER_08 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." @@ -547,8 +531,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_SUBSCRIBE_01 - // TP_IMS_5044_01 from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." @@ -576,7 +558,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity and the IMS_P_CSCF_A entity sends a 200_Ok containing @@ -584,7 +565,6 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA - // TODO To be continued ; to the UE_A entity } @@ -594,8 +574,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_SUBSCRIBE_02 - // TP_IMS_5044_01 from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." @@ -623,7 +601,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_B entity and the UE_A entity receives a 200_Ok containing @@ -632,7 +609,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, PVisitedNetwork - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -667,13 +643,48 @@ Package TP_GM { then { the IMS_P_CSCF_A entity sends an NOTIFY containing Event indicating value "reg,de-reg" - // TODO To be continued ; to the UE_A entity } } } // End of TP_GM_PCSCF_NOTIFY_01 + Test Purpose { + + TP Id TP_GM_PCSCF_NOTIFY_02 + + Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity receives a NOTIFY containing + Event indicating value "reg,de-reg" + ; + } + then { + the IMS_P_CSCF_B entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + ; + to the UE_A entity and + the UE_A entity sends a 200_Ok + to the IMS_P_CSCF_B entity + } + } + } // End of TP_GM_PCSCF_NOTIFY_02 + Test Purpose { TP Id TP_GM_PCSCF_200OK_01 @@ -712,8 +723,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_INVITE_01 - // TP_IMS_5046_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." @@ -747,8 +756,7 @@ Package TP_GM { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_A entity } @@ -793,8 +801,7 @@ Package TP_GM { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the UE_B entity } @@ -804,8 +811,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_INVITE_03 - // TP_IMS_5046_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." @@ -839,8 +844,7 @@ Package TP_GM { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_A entity } @@ -850,8 +854,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_INVITE_04 - // TP_IMS_5046_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." @@ -885,8 +887,7 @@ Package TP_GM { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the UE_B entity } @@ -896,8 +897,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_100TRY_01 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." @@ -934,7 +933,7 @@ Package TP_GM { // TP_IMS_5070_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) // TP_IMST2_GM_INI_02 from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" @@ -959,7 +958,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -970,7 +968,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -1044,7 +1041,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -1055,7 +1051,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -1105,8 +1100,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_180RINGING_02 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)." @@ -1136,7 +1129,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -1150,7 +1142,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the UE_B entity } @@ -1231,7 +1222,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -1245,7 +1235,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the UE_B entity } @@ -1326,7 +1315,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -1340,7 +1328,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the UE_B entity } @@ -1421,7 +1408,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -1435,7 +1421,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the UE_B entity } @@ -1477,7 +1462,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -1511,23 +1495,21 @@ Package TP_GM { ensure that { when { the UE_B entity sends an ACK containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; to the IMS_P_CSCF_B entity } then { the IMS_P_CSCF_B entity receives an ACK containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; from the UE_B entity } @@ -1569,7 +1551,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -1608,7 +1589,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_A entity } @@ -1619,7 +1599,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -1630,8 +1609,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_RE_INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." @@ -1666,8 +1643,7 @@ Package TP_GM { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_A entity } @@ -1677,8 +1653,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_RE_INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg)." @@ -1700,21 +1674,20 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend an ReINVITE + the UE_B entity isRequestedToSend an ReINVITE } then { the IMS_P_CSCF_B entity sends an ReINVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_B entity } @@ -1760,8 +1733,7 @@ Package TP_GM { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_B entity } @@ -1807,8 +1779,7 @@ Package TP_GM { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_B entity } @@ -1850,7 +1821,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -1893,7 +1863,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_B entity } @@ -1936,7 +1905,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -1979,7 +1947,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -2022,7 +1989,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -2065,7 +2031,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_B entity } @@ -2377,7 +2342,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -2419,7 +2383,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_B entity } @@ -2461,7 +2424,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -2503,7 +2465,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_B entity } @@ -2587,7 +2548,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the UE_B entity } @@ -2672,7 +2632,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -2714,7 +2673,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -2756,7 +2714,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -2798,7 +2755,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -2840,7 +2796,6 @@ Package TP_GM { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -2881,7 +2836,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -2925,7 +2879,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the UE_B entity } @@ -2966,7 +2919,6 @@ Package TP_GM { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -3010,7 +2962,6 @@ Package TP_GM { not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity - // TODO To be continued ; from the UE_B entity } diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2 index 7dc9559..945555f 100644 --- a/test_purposes/Mw/TP_MW_IS.tplan2 +++ b/test_purposes/Mw/TP_MW_IS.tplan2 @@ -14,7 +14,7 @@ file and shall not imply any sub-license right. */ /* Mw interface at I-CSCF/S-CSCF */ -Package TP_MW_IS { // TODO Rename file into TP_MW_SI.tplan2, interface is MwSI, not MwSS +Package TP_MW_IS { import all from Sip_Common; diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 9850d26..bb4e71b 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -13,7 +13,7 @@ copyright notice shall be included in all copies of whole or part of this file and shall not imply any sub-license right. */ -/* Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used*/ +/* Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used */ Package TP_MW_PS { import all from Sip_Common; @@ -580,7 +580,8 @@ Package TP_MW_PS { PICS Selection NONE Initial conditions with { - the UE_A entity isAttachedTo the EPC_A + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A } Expected behaviour @@ -679,6 +680,79 @@ Package TP_MW_PS { } } // End of TP_MW_PCSCF_REGISTER_11 + Test Purpose { + + TP Id TP_MW_PCSCF_REGISTER_12 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity isTriggeredToDetachUser + } + then { + the IMS_P_CSCF_B entity sends a REGISTER containing + From indicating value PX_IMS_P_CSCF_B_SIP_URI, + To indicating value PX_I_CSCF_A_SIP_URI, + Event indicating value "reg,de-reg", + Expire indicating value 0 + ; + to the IMS_S_CSCF_B entity + } + } + } // End of TP_MW_PCSCF_REGISTER_12 + + Test Purpose { + + TP Id TP_MW_PCSCF_REGISTER_13 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user network detachment." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToDetachfromNetwork + } + then { + the IMS_P_CSCF_B entity sends a REGISTER containing + Expire indicating value 0 + ; + to the IMS_S_CSCF_B entity and + the IMS_P_CSCF_B entity receives a 200_Ok + from the IMS_S_CSCF_B entity + } + } + } // End of TP_MW_PCSCF_REGISTER_13 + Test Purpose { TP Id TP_MW_PCSCF_SUBSCRIBE_01 @@ -710,7 +784,6 @@ Package TP_MW_PS { Route indicating value PX_UE_A_SERVICE_ROUTE, Event, Expires - // TODO To be continued ; from the UE_A entity } @@ -723,7 +796,6 @@ Package TP_MW_PS { Route indicating value PX_UE_A_SERVICE_ROUTE, Event, Expires - // TODO To be continued ; to the IMS_S_CSCF_A entity and the IMS_P_CSCF_A entity receives a 200_Ok containing @@ -731,7 +803,6 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -769,7 +840,6 @@ Package TP_MW_PS { Route indicating value PX_UE_A_SERVICE_ROUTE, Event, Expires - // TODO To be continued ; from the UE_A entity } @@ -782,7 +852,6 @@ Package TP_MW_PS { Route indicating value PX_UE_A_SERVICE_ROUTE, Event, Expires - // TODO To be continued ; to the IMS_S_CSCF_B entity and the IMS_P_CSCF_B entity receives a 200_Ok containing @@ -790,7 +859,6 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA - // TODO To be continued ; to the IMS_S_CSCF_B entity } @@ -828,7 +896,6 @@ Package TP_MW_PS { then { the IMS_P_CSCF_A entity sends an NOTIFY containing Event indicating value "reg,de-reg" - // TODO To be continued ; to the UE_A entity } @@ -870,6 +937,45 @@ Package TP_MW_PS { } } // End of TP_MW_PCSCF_NOTIFY_02 + Test Purpose { + + TP Id TP_MW_PCSCF_NOTIFY_03 + + Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_B entity receives a NOTIFY containing + From indicating value PX_S_CSCF_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + Event indicating value "reg,de-reg" + ; + from the IMS_S_CSCF_B entity + } + then { + the IMS_P_CSCF_A entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + ; + to the UE_A entity and + the IMS_P_CSCF_A entity receives a 200_Ok + from the UE_A entity + } + } + } // End of TP_MW_PCSCF_NOTIFY_03 + Test Purpose { TP Id TP_MW_PCSCF_200OK_NOTIFY_01 @@ -940,8 +1046,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_A entity } @@ -958,8 +1063,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_S_CSCF_A entity } @@ -1001,8 +1105,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_S_CSCF_B entity } @@ -1019,8 +1122,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the UE_B entity } @@ -1062,8 +1164,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_A entity } @@ -1080,8 +1181,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_S_CSCF_B entity } @@ -1123,8 +1223,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_S_CSCF_A entity } @@ -1141,8 +1240,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the UE_B entity } @@ -1645,7 +1743,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -1656,7 +1753,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -1695,7 +1791,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -1706,7 +1801,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -1745,7 +1839,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -1756,7 +1849,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_B entity } @@ -1795,7 +1887,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -1806,7 +1897,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -1850,8 +1940,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_P_CSCF_A entity } @@ -1866,8 +1955,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_S_CSCF_A entity } @@ -1910,8 +1998,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_S_CSCF_B entity } @@ -1926,8 +2013,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_B entity } @@ -1970,8 +2056,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_P_CSCF_B entity } @@ -1986,8 +2071,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_S_CSCF_B entity } @@ -2030,8 +2114,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_S_CSCF_A entity } @@ -2046,8 +2129,7 @@ Package TP_MW_PS { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the UE_B entity } @@ -2086,7 +2168,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -2097,7 +2178,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_A entity } @@ -2137,7 +2217,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_B entity } @@ -2148,7 +2227,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_B entity } @@ -2191,7 +2269,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -2231,7 +2308,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -2242,7 +2318,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_B entity } @@ -2282,7 +2357,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -2293,7 +2367,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_A entity } @@ -2328,18 +2401,53 @@ Package TP_MW_PS { ensure that { when { the IMS_P_CSCF_A entity receives an BYE - // TODO To be continued from the IMS_S_CSCF_A entity } then { the IMS_P_CSCF_A entity sends an BYE - // TODO To be continued from the UE_B entity } } } // End of TP_MW_PCSCF_BYE_06 + Test Purpose { + + TP Id TP_MW_PCSCF_BYE_07 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the P-CSCF successfully processes a user network detachment (with Previously Established IMS Registration & IMS Sessions)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the UE_A entity previouslyEstablishedCallWith the UE_B + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToDetachfromNetwork + } + then { + the IMS_P_CSCF_B entity sends a BYE + to the IMS_S_CSCF_B entity and + the IMS_P_CSCF_B entity receives a 200_Ok + from the IMS_S_CSCF_B entity + } + } + } // End of TP_MW_PCSCF_BYE_07 + Test Purpose { TP Id TP_MW_PCSCF_200OK_BYE_01 @@ -2369,7 +2477,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -2380,7 +2487,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -2417,7 +2523,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_B entity } @@ -2428,7 +2533,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_B entity } @@ -2463,7 +2567,6 @@ Package TP_MW_PS { } then { the IMS_P_CSCF_B entity sends a 200_Ok - // TODO to the IMS_S_CSCF_B entity } } @@ -2499,7 +2602,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_B entity } @@ -2510,7 +2612,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -2547,7 +2648,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -2558,7 +2658,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the UE_B entity } @@ -2595,7 +2694,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -2606,7 +2704,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_A entity } @@ -2647,7 +2744,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -2658,7 +2754,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_A entity } @@ -2699,7 +2794,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -2710,7 +2804,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_B entity } @@ -2751,7 +2844,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -2762,7 +2854,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_B entity } @@ -2803,7 +2894,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -2814,7 +2904,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -2853,7 +2942,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -2864,7 +2952,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -2903,7 +2990,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -2914,7 +3000,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_B entity } @@ -2953,7 +3038,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_B entity } @@ -2964,7 +3048,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -3003,7 +3086,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the UE_A entity } @@ -3014,7 +3096,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_A entity } @@ -3053,7 +3134,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -3064,7 +3144,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -3103,7 +3182,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -3114,7 +3192,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_B entity } @@ -3153,7 +3230,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_B entity } @@ -3164,7 +3240,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the UE_A entity } @@ -3203,7 +3278,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the UE_B entity } @@ -3214,7 +3288,6 @@ Package TP_MW_PS { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_S_CSCF_A entity } diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index b6368ca..47c7ae4 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -441,6 +441,46 @@ Package TP_MW_SI { } } // End of TP_MW_SCSCF_REGISTER_10 + // TP_MW_SCSCF_REGISTER_11 not applicable + + Test Purpose { + + TP Id TP_MW_SCSCF_REGISTER_12 + // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a network de-registration (no SIP session active)." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a REGISTER containing + From indicating value PX_IMS_P_CSCF_B_SIP_URI, + To indicating value PX_I_CSCF_A_SIP_URI, + Event indicating value "reg,de-reg", + Expire indicating value 0 + ; + from the IMS_P_CSCF_B entity + } + then { + the IMS_S_CSCF_B entity forwards a REGISTER + to the IMS_IBCF_B entity + } + } + } // End of TP_MW_SCSCF_REGISTER_12 + Test Purpose { TP Id TP_MW_SCSCF_SUBSCRIBE_01 @@ -472,7 +512,6 @@ Package TP_MW_SI { Route indicating value PX_UA_A_SERVICE_ROUTE, Event, Expires - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -482,7 +521,6 @@ Package TP_MW_SI { To indicating value PX_UA_B_SIP_URI, CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -520,7 +558,6 @@ Package TP_MW_SI { Route indicating value PX_UA_A_SERVICE_ROUTE, Event, Expires - // TODO To be continued ; to the IMS_IBCF_A entity } @@ -530,7 +567,6 @@ Package TP_MW_SI { To indicating value PX_UA_B_SIP_URI, CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA - // TODO To be continued ; to the IMS_IBCF_A entity } @@ -563,14 +599,12 @@ Package TP_MW_SI { then { the IMS_S_CSCF_A entity sends an NOTIFY containing Event indicating value "reg,de-reg" - // TODO To be continued ; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity receives an 200_Ok from the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an NOTIFY containing Event indicating value "de-reg" - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -605,7 +639,6 @@ Package TP_MW_SI { then { the IMS_S_CSCF_A entity sends an NOTIFY containing Event indicating value "de-reg" - // TODO To be continued ; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity receives an 200_Ok @@ -614,6 +647,84 @@ Package TP_MW_SI { } } // End of TP_MW_SCSCF_NOTIFY_02 + Test Purpose { + + TP Id TP_MW_SCSCF_NOTIFY_03 + + Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a NOTIFY containing + From indicating value PX_S_CSCF_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + Event indicating value "reg,de-reg" + ; + from the IMS_IBCF_B entity + } + then { + the IMS_S_CSCF_B entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + ; + to the IMS_P_CSCF_B entity and + the IMS_S_CSCF_B entity receives a 200_Ok + from the IMS_P_CSCF_B entity + } + } + } // End of TP_MW_SCSCF_NOTIFY_03 + + Test Purpose { + + TP Id TP_MW_SCSCF_NOTIFY_04 + + Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." + + Reference + "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B + } + + Expected behaviour + ensure that { + when { + the IMS_S_CSCF_B entity receives a NOTIFY containing + From indicating value PX_A_CSCF_A_SIP_URI, + To indicating value PX_P_CSCF_B_SIP_URI, + Event indicating value "reg,de-reg" + ; + from the IMS_IBCF_B entity + } + then { + the IMS_S_CSCF_B entity sends an NOTIFY containing + Event indicating value "reg,de-reg" + ; + to the IMS_P_CSCF_B entity and + the IMS_S_CSCF_B entity receives a 200_Ok + from the IMS_P_CSCF_B entity + } + } + } // End of TP_MW_SCSCF_NOTIFY_04 + Test Purpose { TP Id TP_MW_SCSCF_INVITE_01 @@ -648,8 +759,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_P_CSCF_A entity } @@ -666,8 +776,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_IBCF_A entity } @@ -709,8 +818,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_IBCF_B entity } @@ -727,8 +835,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_P_CSCF_B entity } @@ -770,8 +877,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_P_CSCF_B entity } @@ -788,8 +894,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_IBCF_B entity } @@ -831,8 +936,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_IBCF_A entity } @@ -849,8 +953,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_P_CSCF_A entity } @@ -1353,7 +1456,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -1364,7 +1466,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -1403,7 +1504,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -1414,7 +1514,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -1453,7 +1552,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -1464,7 +1562,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_B entity } @@ -1503,7 +1600,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -1514,7 +1610,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -1558,8 +1653,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_S_CSCF_A entity } @@ -1574,8 +1668,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_IBCF_A entity } @@ -1618,8 +1711,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_IBCF_B entity } @@ -1634,8 +1726,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_P_CSCF_B entity } @@ -1678,8 +1769,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_P_CSCF_B entity } @@ -1694,8 +1784,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_IBCF_B entity } @@ -1738,8 +1827,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; to the IMS_IBCF_A entity } @@ -1754,8 +1842,7 @@ Package TP_MW_SI { MessageBody containing SDP containing Version indicating value "0" - // TODO To be continued - ; + ; ;; from the IMS_P_CSCF_A entity } @@ -1794,7 +1881,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_S_CSCF_A entity } @@ -1805,7 +1891,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_I_CSCF_A entity } @@ -1845,7 +1930,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_I_CSCF_B entity } @@ -1856,7 +1940,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -1899,7 +1982,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an BYE containing @@ -1908,7 +1990,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_I_CSCF_A entity } @@ -1946,7 +2027,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -1957,7 +2037,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_I_CSCF_B entity } @@ -1995,7 +2074,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -2006,7 +2084,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_I_CSCF_A entity } @@ -2049,7 +2126,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an BYE containing @@ -2058,7 +2134,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_I_CSCF_A entity } @@ -2066,6 +2141,56 @@ Package TP_MW_SI { } // End of TP_MW_SCSCF_BYE_06 + Test Purpose { + + TP Id TP_MW_SCSCF_BYE_07 + // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) + // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) + + Test objective "Verify that the S-CSCF successfully processes a BYE (IMS De-registration with Active SIP Sessions)." + + Reference + "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" + + Config Id CF_VxLTE_RMI_B + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_B entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_B and + the UE_B entity isRegisteredTo the IMS_B and + the IMS_P_CSCF_B entity previouslyEstablishedCallWith the IMS_P_CSCF_A + } + + Expected behaviour + ensure that { + when { + the UE_B entity isNoLongerAvailable + } + then { + the IMS_S_CSCF_A entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE + ; + to the IMS_P_CSCF_A entity + and the IMS_S_CSCF_A entity sends an BYE containing + From indicating value PX_UA_A_SIP_URI, + To indicating value PX_UA_B_SIP_URI, + CallId indicating value PX_UA_A_CALLID, + Via indicating value PX_UA_A_VIA, + Route indicating value PX_UA_A_SERVICE_ROUTE + ; + to the IMS_I_CSCF_A entity + } + } + + } // End of TP_MW_SCSCF_BYE_07 + Test Purpose { TP Id TP_MW_SCSCF_200OK_BYE_01 @@ -2095,7 +2220,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -2106,7 +2230,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -2143,7 +2266,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_B entity } @@ -2154,7 +2276,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -2193,7 +2314,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_B entity } @@ -2204,7 +2324,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -2241,7 +2360,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -2252,7 +2370,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -2295,7 +2412,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -2306,7 +2422,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_IBCF_A entity } @@ -2347,7 +2462,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -2358,7 +2472,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_A_CALLID, Via indicating value PX_UA_A_VIA, Route indicating value PX_UA_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_IBCF_B entity } @@ -2399,7 +2512,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -2410,7 +2522,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_IBCF_B entity } @@ -2451,7 +2562,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -2462,7 +2572,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -2501,7 +2610,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_B_CALLID, Via indicating value PX_UA_B_VIA, Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -2512,7 +2620,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_B_CALLID, Via indicating value PX_UA_B_VIA, Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -2551,7 +2658,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_B_CALLID, Via indicating value PX_UA_B_VIA, Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -2562,7 +2668,6 @@ Package TP_MW_SI { CallId indicating value PX_UA_B_CALLID, Via indicating value PX_UA_B_VIA, Route indicating value PX_UA_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_IBCF_B entity } @@ -2601,7 +2706,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_B entity } @@ -2612,7 +2716,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -2651,7 +2754,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -2662,7 +2764,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_IBCF_A entity } @@ -2701,7 +2802,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_A entity } @@ -2712,7 +2812,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_A entity } @@ -2751,7 +2850,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_B entity } @@ -2762,7 +2860,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_IBCF_B entity } @@ -2801,7 +2898,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_IBCF_B entity } @@ -2812,7 +2908,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_P_CSCF_B entity } @@ -2851,7 +2946,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; from the IMS_P_CSCF_A entity } @@ -2862,7 +2956,6 @@ Package TP_MW_SI { CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE - // TODO To be continued ; to the IMS_IBCF_A entity } -- GitLab From a780a54b1a0cf23d65bf7534b51c5f1d7160e0a2 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 22 Jun 2020 10:07:13 +0200 Subject: [PATCH 074/176] Update GM interface --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 579 ++++++++++++++++++- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 225 ++++++- ttcn/LibSip | 2 +- 3 files changed, 773 insertions(+), 33 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index f51438c..8c5fa62 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -409,10 +409,267 @@ module AtsImsIot_TP_behavior_GM { ) ); p_monitorCompRef.done; - } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_01 + } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend an INVITE + * } + * then { + * the IMS_P_CSCF_B entity sends an INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_02 + + /** + * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend an ReINVITE + * } + * then { + * the IMS_P_CSCF_A entity receives an ReINVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * fomr the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_RE_INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_RE_INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_GM_PCSCF_RE_INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a ReINVITE + * } + * then { + * the IMS_P_CSCF_B entity sends a ReINVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * fomr the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_RE_INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_RE_INVITE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_GM_PCSCF_RE_INVITE_02 + + + } // End of group imsInvite + group ims100Trying { + + /** + * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity sends a 100_Trying + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_100Trying_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_100Trying_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends a 100_Trying containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_B entity receives a 100_Trying containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_100Trying_02( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_100Trying_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_02 + + } // End of group ims100Trying + group ims180Ringing { /** @@ -462,6 +719,326 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_01 + /** + * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_P_CSCF_B entity + * + * } + * then { + * the IMS_P_CSCF_B entity receives a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_180RINGING_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_180RINGING_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_02 + } // End of group ims180Ringing + group ims200Ok { + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_200OK_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_200OK_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the IMS_P_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_200OK_02( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_02 + + } // End of group ims200Ok + + group imsAck { + + /** + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_A entity receives an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_ACK_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_ACK_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_ACK_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_ACK_01 + + /** + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity receives an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_ACK_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_ACK_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_ACK_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_ACK_02 + + } // End of group imsAck + + group imsBye { + + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_BYE_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_BYE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_BYE_01 + + } // End of group imsBye + } // end module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index 2737dfb..7220ee3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -33,11 +33,12 @@ module AtsImsIot_TestCases_CALL { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); - var CF_INT_CALL v_config := {v_gmA, omit, omit, omit, v_gmB, omit}; + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; // map/connect component ports f_cf_adapter_up(); @@ -54,42 +55,146 @@ module AtsImsIot_TestCases_CALL { f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true, true); // Event 1 - f_mtc_check_TP_GM_PCSCF_180RINGING_01(v_gmA, true); // Event 6 + f_mtc_check_TP_GM_PCSCF_100Trying_01(v_gmA, true, true); + f_mtc_check_TP_GM_PCSCF_180RINGING_01(v_gmA, true); // Event 16 + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); - f_mtc_check_TP_IMS_5097_02_gm(v_gmA, true); // Check2 - f_mtc_check_TP_IMS_5097_04_gm(v_gmA, false); // Check3 + f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA, true); // Event 15 + + f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA, true, true); // Event 26 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 30 + f_mtc_userCheckCallEstablished(v_ueB); // Event 30 + + // postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_INI_01 + + } // End of group originatingLeg - // checks 6, 10 (180 Ringing) - f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 6 - f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 7 - f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 10 + group terminatingLeg { + + /** + * @desc To demonstrate the establishment of dedicated bearers at the terminating EPC B due to SIP session establishment. + */ + testcase TC_VxLTE_INT_INI_02() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userTelInfoA := f_getTelUserId(PX_EUT_A); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - - // checks 8, 11 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 8 - f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 9 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 11 - - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - - //check 4 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_int_call_up(v_config); + + // preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // test body + f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); + + f_mtc_check_TP_GM_PCSCF_INVITE_02(v_gmB, true, true); // Event 8 + + f_mtc_check_TP_GM_PCSCF_100Trying_02(v_gmB, true, true); + + f_mtc_check_TP_GM_PCSCF_180RINGING_02(v_gmB, true); // Event 9 + + f_mtc_userCheckRinging(v_ueA); + f_mtc_userCheckPeerIsRinging(v_ueB); + f_mtc_userAnswerCall(v_ueA); + + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB, true); // Event 18 + + f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmB, true, true); // Event 29 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 30 + f_mtc_userCheckCallEstablished(v_ueB); // Event 30 + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_INI_02 + + } // End of group terminatingLeg - // check 5 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 + } // End of group imsSipSessionEstablishment + + group imsSipSessionModification { - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 + group originatedLegs { + + /** + * @desc To demonstrate the modification of an existing media flow mid session. + */ + testcase TD_VxLTE_INT_INI_03() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userAddNewMediaStream(v_ueA); + + // test body + f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(v_gmA); // Event 2 + f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA); // Event 13 + f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 15 + f_mtc_userCheckNewMediaStream(v_ueB); + f_mtc_userCheckNewMediaStream(v_ueA); // postamble + f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); @@ -98,12 +203,70 @@ module AtsImsIot_TestCases_CALL { f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); - } //End of testcase TC_VxLTE_INT_INI_01 + f_cf_adapter_down(); + } // End of testcase TD_VxLTE_INT_INI_03 } // End of group originatingLeg - } // End of imsSipSessionEstablishment - + group terminatingLeg { + + /** + * @desc To demonstrate the modification of an existing media flow mid session. + */ + testcase TD_VxLTE_INT_INI_04() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); + + // variables + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; + + // map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // configuration + f_cf_int_call_up(v_config); + + // preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userAddNewMediaStream(v_ueA); + + // test body + f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB); // Event 6 + f_mtc_check_TP_GM_PCSCF_ACK_02(v_gmB); // Event 17 + f_mtc_userCheckNewMediaStream(v_ueA); + f_mtc_userCheckNewMediaStream(v_ueB); + + // postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } // End of testcase TD_VxLTE_INT_INI_04 + + } + } // End of group imsSipSessionModification /** * @desc Default SIP URI with DNS/ENUM lookup procedure diff --git a/ttcn/LibSip b/ttcn/LibSip index 7f6fd81..a4e8776 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 +Subproject commit a4e87761e7dd070042aff31cfc5a3aeb8d3f5282 -- GitLab From f16ddfc9213a260c998a3c8114e4cc4b8c3dd410 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 22 Jun 2020 13:24:10 +0200 Subject: [PATCH 075/176] Bugs fixed in TPs --- test_purposes/Mw/TP_MW_PS.tplan2 | 60 ++++++++++++-------------------- 1 file changed, 22 insertions(+), 38 deletions(-) diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index bb4e71b..a2c472e 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -21,8 +21,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_MESSAGE_01 - // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes" @@ -70,8 +68,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_01 - // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." @@ -136,8 +132,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_02 - // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." @@ -215,7 +209,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_03 - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)." @@ -756,8 +749,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_SUBSCRIBE_01 - // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." @@ -1015,7 +1006,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_INVITE_01 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." @@ -1096,11 +1086,11 @@ Package TP_MW_PS { ensure that { when { the IMS_P_CSCF_B entity receives an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1111,11 +1101,11 @@ Package TP_MW_PS { } then { the IMS_P_CSCF_B entity sends an INVITE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE, + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE, PAccessNetworkInfo, ContentType indicating value "application/sdp", ContentLength, @@ -1907,8 +1897,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_RE_INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." @@ -1930,7 +1918,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity receives an ReINVITE containing + the IMS_P_CSCF_A entity receives a ReINVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1942,10 +1930,10 @@ Package TP_MW_PS { Version indicating value "0" ; ;; - to the IMS_P_CSCF_A entity + from the UE_A entity } then { - the IMS_P_CSCF_A entity receives an ReINVITE containing + the IMS_P_CSCF_A entity sends a ReINVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -1957,7 +1945,7 @@ Package TP_MW_PS { Version indicating value "0" ; ;; - from the IMS_S_CSCF_A entity + to the IMS_S_CSCF_A entity } } } // End of TP_MW_PCSCF_RE_INVITE_01 @@ -1965,10 +1953,8 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_RE_INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" @@ -2000,10 +1986,10 @@ Package TP_MW_PS { Version indicating value "0" ; ;; - to the IMS_S_CSCF_B entity + from the IMS_S_CSCF_B entity } then { - the IMS_P_CSCF_B entity receives an ReINVITE containing + the IMS_P_CSCF_B entity sends an ReINVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2015,7 +2001,7 @@ Package TP_MW_PS { Version indicating value "0" ; ;; - from the UE_B entity + to the UE_B entity } } } // End of TP_MW_PCSCF_RE_INVITE_02 @@ -2023,8 +2009,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_RE_INVITE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." @@ -2046,7 +2030,7 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity sends an ReINVITE containing + the IMS_P_CSCF_B entity receives a ReINVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2058,10 +2042,10 @@ Package TP_MW_PS { Version indicating value "0" ; ;; - to the IMS_P_CSCF_B entity + from the UE_A entity } then { - the IMS_P_CSCF_B entity sends an ReINVITE containing + the IMS_P_CSCF_B entity sends a ReINVITE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2073,7 +2057,7 @@ Package TP_MW_PS { Version indicating value "0" ; ;; - from the IMS_S_CSCF_B entity + to the IMS_S_CSCF_B entity } } } // End of TP_MW_PCSCF_RE_INVITE_03 -- GitLab From 5c85a1d055786e1c5055ee50c772d9614f943e0a Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 22 Jun 2020 13:25:17 +0200 Subject: [PATCH 076/176] Add AtsImsIot_TP_behavior_MW_PS module --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 80 +- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 1110 +++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 28 +- ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn | 11 +- ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn | 8 +- ttcn/LibSip | 2 +- 6 files changed, 1198 insertions(+), 41 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 8c5fa62..e9c8278 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -34,7 +34,7 @@ module AtsImsIot_TP_behavior_GM { import from DiameterGx_Templates all; // LibDiameter import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; +// import from DiameterRx_Templates all; group imsMessages { @@ -42,17 +42,12 @@ module AtsImsIot_TP_behavior_GM { * @desc Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B + * the UE_A entity isNotRegisteredTo the IMS_A * } * * Expected behaviour * ensure that { * when { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isRegisteredTo the IMS_A - * } - * then { * the UE_A entity isRequestedToSend a MESSAGE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, @@ -61,7 +56,9 @@ module AtsImsIot_TP_behavior_GM { * ContentLength indicating value greater than 1300 bytes * ; * to the IMS_P_CSCF_A entity - * and the UE_A entity receives the MESSAGE containing + * } + * then { + * the IMS_P_CSCF_A entity receives the MESSAGE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -69,17 +66,17 @@ module AtsImsIot_TP_behavior_GM { * ContentLength indicating value greater than 1300 bytes * ; * from the UE_A entity - * and the IMS_P_CSCF_A entity sends a 200_Ok containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * PChargingVector containing - * orig_ioi indicating value PX_OPERATOR_ID_A, - * term_ioi indicating value PX_OPERATOR_ID_B, - * not PAccessNetworkInfo + * and the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * PChargingVector containing + * orig_ioi indicating value PX_OPERATOR_ID_A, + * term_ioi indicating value PX_OPERATOR_ID_B, + * not PAccessNetworkInfo * ;; - * to the UE_A entity + * to the UE_A entity * } * } */ @@ -156,7 +153,6 @@ module AtsImsIot_TP_behavior_GM { * } * } */ - // FIXME To be removed: f_mtc_check_TP_IMS_5203_01_gm function f_mtc_check_TP_GM_PCSCF_REGISTER_01( in ImsInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true @@ -308,7 +304,7 @@ module AtsImsIot_TP_behavior_GM { group imsSubscribe { /** - * @desc Verify that the P-CSCF successfully processes a first registration (Successful) + * @desc Verify that the P-CSCF successfully processes a SUBSCRIBE. * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isRegisteredTo the IMS_A @@ -350,13 +346,13 @@ module AtsImsIot_TP_behavior_GM { }, {}, {0, omit}, - "TP_GM_PCSCF_REGISTER_02", + "TP_GM_PCSCF_SUBSCRIBE_01", false, p_checkMessage ) ); p_monitorCompRef.done; - } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_02 + } // End of function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01 } // End of group imsSubscribe @@ -473,10 +469,22 @@ module AtsImsIot_TP_behavior_GM { * Expected behaviour * ensure that { * when { - * the UE_A entity isRequestedToSend an ReINVITE + * the IMS_P_CSCF_A entity receives a ReINVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the UE_A entity * } * then { - * the IMS_P_CSCF_A entity receives an ReINVITE containing + * the IMS_P_CSCF_A entity sends a ReINVITE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -488,7 +496,7 @@ module AtsImsIot_TP_behavior_GM { * Version indicating value "0" * ; * ;; - * fomr the UE_A entity + * to the IMS_S_CSCF_A entity * } * } */ @@ -523,16 +531,28 @@ module AtsImsIot_TP_behavior_GM { * the UE_B entity isAttachedTo the EPC_B and * the UE_A entity isRegisteredTo the IMS_A and * the UE_B entity isRegisteredTo the IMS_B and - * the UE_A entity previouslyEstablishedCallWith the UE_A + * the UE_B entity previouslyEstablishedCallWith the UE_A * } * * Expected behaviour * ensure that { * when { - * the UE_B entity isRequestedToSend a ReINVITE + * the IMS_P_CSCF_B entity receives an ReINVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the IMS_S_CSCF_B entity * } * then { - * the IMS_P_CSCF_B entity sends a ReINVITE containing + * the IMS_P_CSCF_B entity sends an ReINVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -544,7 +564,7 @@ module AtsImsIot_TP_behavior_GM { * Version indicating value "0" * ; * ;; - * fomr the UE_B entity + * to the UE_B entity * } * } */ @@ -1041,4 +1061,4 @@ module AtsImsIot_TP_behavior_GM { } // End of group imsBye -} // end module AtsImsIot_TP_behavior_GM \ No newline at end of file +} // End of module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn new file mode 100644 index 0000000..c3bb817 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -0,0 +1,1110 @@ +/** + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used + */ + +module AtsImsIot_TP_behavior_MW_PS { + + // LibIms + import from LibIms_Templates all; + import from LibIms_UpperTester all; + // LibIot + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + import from LibSip_SDPTypes all; + // LibMsrp + import from LibMsrp_TypesAndValues all; + import from LibMsrp_Functions all; + import from LibMsrp_Templates all; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + // AtsImsIot + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Functions all; + + group imsMessages { + + /** + * @desc Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives the MESSAGE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ContentLength indicating value greater than 1300 bytes + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity forwards the MESSAGE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * PChargingVector containing + * orig_ioi indicating value PX_OPERATOR_ID_A, + * term_ioi indicating value PX_OPERATOR_ID_B, + * not PAccessNetworkInfo + * ContentLength indicating value greater than 1300 bytes + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_MESSAGE_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c), + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_MESSAGE_01", + false, + false + )); + p_monitorCompRef.done; + } + + } // End of group imsMessages + + // 5.2 IMS Registration + group imsRegistration { + + /** + * @desc Verify that the P-CSCF successfully processes a first registration (Successful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * PChargingVector containing + * icid indicating value PX_TO_BE_DEFINED, + * PVisitedNetworkID indicating value PX_TO_BE_DEFINED, + * Require_HDR indicating value "path", + * Supported indicating value "path" + * ;; + * to the IMS_I_CSCF_A entity + * and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Path, + * Warning, + * PAccessNetworkInfo, + * WwwAuthenticate containing + * Digest, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth" + * ;; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_REGISTER_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_401Unauthorized_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_01 + + /** + * @desc Verify that the P-CSCF successfully processes a full registration (Successful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient + * ;; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient + * PChargingVector + * ;; + * from the IMS_I_CSCF_A entity + * and the IMS_P_CSCF_A entity sends an 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * AuthenticationInfo, + * PAccessNetworkInfo, + * PAssociatedURI indicating value PX_UE_A_SIP_URI, + * PChargingVector, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA" , + * term_ioi_parameter + * indicating value "Operator Identifier Of ImsB" + * Path, + * ServiceRoute + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_REGISTER_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_Response_200onREGISTER_IMS) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_02 + + /** + * @desc Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_INVALID_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "" + * ;; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_INVALID_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "" + * ;; + * to the IMS_I_CSCF_A entity + * and the IMS_I_CSCF_A entity sends an 404_NotFound containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_REGISTER_03( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_03 + + } // End of group imsRegistration + + group imsSubscribe { + + /** + * @desc Verify that the P-CSCF successfully processes a SUBSCRIBE. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an SUBSCRIBE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an SUBSCRIBE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * Event, + * Expires + * ; + * to the IMS_S_CSCF_A entity + * and the IMS_P_CSCF_A entity receives a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA + * ; + * from the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_SUBSCRIBE_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01 + + } // End of group imsSubscribe + + group imsInvite { + + /** + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg).. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives an INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the IMS_S_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends an INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_02 + + /** + * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a ReINVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a ReINVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_RE_INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_RE_INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_PCSCF_RE_INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_B entity previouslyEstablishedCallWith the UE_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a ReINVITE + * } + * then { + * the IMS_P_CSCF_B entity sends a ReINVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * fomr the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_RE_INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_RE_INVITE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_PCSCF_RE_INVITE_02 + + + + + } // End of group imsInvite + + group ims100Trying { + + /** + * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity sends a 100_Trying + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_100Trying_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_100Trying_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends a 100_Trying containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_B entity receives a 100_Trying containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_100Trying_02( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_100Trying_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_02 + + } // End of group ims100Trying + + group ims180Ringing { + + /** + * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity receives a 180_Ringing containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_180RINGING_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_180RINGING_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_P_CSCF_B entity + * + * } + * then { + * the IMS_P_CSCF_B entity receives a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_180RINGING_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_180RINGING_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_02 + + } // End of group ims180Ringing + + group ims200Ok { + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_200OK_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_200OK_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the IMS_P_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_200OK_02( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_02 + + } // End of group ims200Ok + + group imsAck { + + /** + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_A entity receives an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ACK_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_ACK_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_ACK_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_ACK_01 + + /** + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity receives an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ACK_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_ACK_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_ACK_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_ACK_02 + + } // End of group imsAck + + group imsBye { + + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_BYE_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_BYE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_BYE_01 + + } // End of group imsBye + +} // End of module AtsImsIot_TP_behavior_MW_PS diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index 7220ee3..b2e46f3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -13,9 +13,11 @@ module AtsImsIot_TestCases_CALL { import from LibIot_PIXITS all; import from LibIot_TestConfiguration all; import from LibIot_TestInterface all; + import from LibIot_VxLTE_Functions all; // AtsImsIot import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; import from AtsImsIot_Behavior all; // TODO To be removed import from AtsImsIot_Functions all; import from AtsImsIot_TestSystem all; @@ -32,6 +34,7 @@ module AtsImsIot_TestCases_CALL { // create components var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + f_cf_createVxLteMonitor(); var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); @@ -44,9 +47,10 @@ module AtsImsIot_TestCases_CALL { f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); + f_cf_VxLteMonitor_Up(); // preamble + f_cf_int_call_up(v_config); f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); @@ -54,18 +58,22 @@ module AtsImsIot_TestCases_CALL { f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true, true); // Event 1 + f_mtc_check_TP_MW_PCSCF_INVITE_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 6 f_mtc_check_TP_GM_PCSCF_100Trying_01(v_gmA, true, true); f_mtc_check_TP_GM_PCSCF_180RINGING_01(v_gmA, true); // Event 16 + f_mtc_check_TP_MW_PCSCF_180RINGING_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 11 f_mtc_userCheckRinging(v_ueB); f_mtc_userCheckPeerIsRinging(v_ueA); f_mtc_userAnswerCall(v_ueB); - f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA, true); // Event 15 + f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA, true); // Event 25 + f_mtc_check_TP_MW_PCSCF_200OK_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 20 f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA, true, true); // Event 26 + f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 27 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -77,6 +85,7 @@ module AtsImsIot_TestCases_CALL { f_cf_int_call_down(v_config); //unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -115,18 +124,23 @@ module AtsImsIot_TestCases_CALL { f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); f_mtc_check_TP_GM_PCSCF_INVITE_02(v_gmB, true, true); // Event 8 + f_mtc_check_TP_MW_PCSCF_INVITE_02(v_gmB/*FIXME: mwPS*/, true, true); // Event 3 f_mtc_check_TP_GM_PCSCF_100Trying_02(v_gmB, true, true); + f_mtc_check_TP_MW_PCSCF_100Trying_02(v_gmB/*FIXME: mwPS*/, true, true); f_mtc_check_TP_GM_PCSCF_180RINGING_02(v_gmB, true); // Event 9 + f_mtc_check_TP_MW_PCSCF_180RINGING_02(v_gmB/*FIXME: mwPS*/, true); // Event 14 f_mtc_userCheckRinging(v_ueA); f_mtc_userCheckPeerIsRinging(v_ueB); f_mtc_userAnswerCall(v_ueA); f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB, true); // Event 18 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/, true); // Event 23 f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmB, true, true); // Event 29 + f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmB/*FIXME: mwPS*/, true, true); // Event 28 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -188,9 +202,15 @@ module AtsImsIot_TestCases_CALL { // test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(v_gmA); // Event 2 + f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(v_gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA); // Event 13 - f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 15 - f_mtc_userCheckNewMediaStream(v_ueB); + f_mtc_check_TP_MW_PCSCF_200OK_01(v_gmA/*FIXME: mwPS*/); // Event 8 + + f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 14 + f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA); // Event 15 + + f_mtc_userCheckNewMediaStream(v_ueB); f_mtc_userCheckNewMediaStream(v_ueA); // postamble diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn index 1a0a9a6..608dde7 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn @@ -17,7 +17,9 @@ module AtsImsIot_TestCases_MESS { import from LibIot_PIXITS all; // AtsImsIot import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; import from AtsImsIot_Behavior all; // FIXME To be removed + import from LibIot_VxLTE_Functions all; import from AtsImsIot_Functions all; import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; @@ -26,23 +28,23 @@ module AtsImsIot_TestCases_MESS { import from AtsImsIot_TypesAndValues all; /** - * @desc IMS network shall support SIP messages greater than 1500 bytes. + * @desc IMS network shall support SIP messages greater than 1300 bytes. * */ testcase TC_VxLTE_INT_MESSAGE_01() runs on ImsTestCoordinator system IotSystemInterface { // create components var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + f_cf_createVxLteMonitor(); var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); // var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, omit, v_mxB, omit, omit}; + var CF_INT_CALL v_config := {v_gmA, omit, omit, omit, omit, omit}; // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); + f_cf_VxLteMonitor_Up(); // preamble f_cf_int_call_up(v_config); @@ -65,6 +67,7 @@ module AtsImsIot_TestCases_MESS { log("**** TC_IMS_MESS_0001: Postamble done. ****"); //unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn index 7a06baf..dd7f5fe 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn @@ -1,7 +1,7 @@ /** * @author STF 370 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions. + * @version $Id: $ + * @desc This module provides ATS specific test case definitions. */ module AtsImsIot_TestCases_REG { @@ -15,6 +15,7 @@ module AtsImsIot_TestCases_REG { import from LibIms_UpperTester all; // AtsImsIot import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; import from AtsImsIot_Behavior all; // TODO To be removed import from AtsImsIot_Functions all; import from AtsImsIot_TestConfiguration all; @@ -43,8 +44,11 @@ module AtsImsIot_TestCases_REG { // Test body f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); // Events 1, 10 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 2, 9 f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); // Events 11, 20 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(v_gmA/*FIXME: mwPS*/, true); // Events 12, 19 f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 21, 24 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(v_gmA/*FIXME: mwPS*/, true); // Events 22, 23 // Postamble f_PO_user_home_deregistration(v_ueA); diff --git a/ttcn/LibSip b/ttcn/LibSip index a4e8776..7f6fd81 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit a4e87761e7dd070042aff31cfc5a3aeb8d3f5282 +Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 -- GitLab From a410bed824f0019fb7cb5367a1efc4ff3db88e79 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Mon, 22 Jun 2020 16:55:16 +0200 Subject: [PATCH 077/176] inclusion of test steps at Ic --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 8 ++--- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 8 ++--- ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn | 20 ++++++------- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 30 +++++++++++++++++++ ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 6 files changed, 50 insertions(+), 20 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index e9c8278..42f3a50 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -230,7 +230,7 @@ module AtsImsIot_TP_behavior_GM { f_imsIot_receive( { mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_Response_200onREGISTER_IMS) + mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME }, {}, {0, omit}, @@ -955,7 +955,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_ACK_Request_Base) }, + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_ACK_01", @@ -999,7 +999,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_ACK_Request_Base) }, + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_ACK_02", @@ -1048,7 +1048,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base(?)) }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_BYE_01", diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index c3bb817..ec5dd18 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -241,7 +241,7 @@ module AtsImsIot_TP_behavior_MW_PS { f_imsIot_receive( { mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_Response_200onREGISTER_IMS) + mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME }, {}, {0, omit}, @@ -1001,7 +1001,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_ACK_Request_Base) }, + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_ACK_01", @@ -1045,7 +1045,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_ACK_Request_Base) }, + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_ACK_02", @@ -1094,7 +1094,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base(?)) }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_BYE_01", diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn index 036fde3..bef9c87 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn @@ -143,21 +143,21 @@ module AtsImsIot_TestCases_ATT { f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); -// // preamble -// f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile // f_mtc_userRegistration ( v_ueB, v_userInfoB ); -// -// // test body -// // Check that user A can register to IMS A + + // test body + // Check that user A can register to IMS A // f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message // f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check -// f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) -// f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) -// f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); // f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 -// -// // postamble + + // postamble // f_PO_user_home_deregistration ( v_ueB ); // f_PO_user_home_deregistration ( v_ueA ); // f_mtc_userRadioEnabled ( v_ueA, false, true ); diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index b2e46f3..16d569a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -18,6 +18,7 @@ module AtsImsIot_TestCases_CALL { // AtsImsIot import from AtsImsIot_TP_behavior_GM all; import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_Behavior all; // TODO To be removed import from AtsImsIot_Functions all; import from AtsImsIot_TestSystem all; @@ -74,6 +75,17 @@ module AtsImsIot_TestCases_CALL { f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA, true, true); // Event 26 f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 27 + + f_mtc_check_TP_IC_IBCF_INVITE_01(v_ic); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_02(v_ic); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_03(v_ic); // INVITE ENUM Event 8 + f_mtc_check_TP_IC_IBCF_ACK_01(v_ic); // ACK – Event 29 + f_mtc_check_TP_IC_IBCF_180RESP_01(v_ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 18 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -141,6 +153,17 @@ module AtsImsIot_TestCases_CALL { f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmB, true, true); // Event 29 f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmB/*FIXME: mwPS*/, true, true); // Event 28 + + f_mtc_check_TP_IC_IBCF_INVITE_01(v_ic); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_02(v_ic); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_03(v_ic); // INVITE ENUM Event 1 + f_mtc_check_TP_IC_IBCF_ACK_01(v_ic); // ACK – Event 26 + f_mtc_check_TP_IC_IBCF_180RESP_01(v_ic); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 25 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -210,6 +233,9 @@ module AtsImsIot_TestCases_CALL { f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 14 f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA); // Event 15 + f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 5 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 6 + f_mtc_userCheckNewMediaStream(v_ueB); f_mtc_userCheckNewMediaStream(v_ueA); @@ -269,6 +295,10 @@ module AtsImsIot_TestCases_CALL { f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB); // Event 6 f_mtc_check_TP_GM_PCSCF_ACK_02(v_gmB); // Event 17 + + f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 2 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 13 + f_mtc_userCheckNewMediaStream(v_ueA); f_mtc_userCheckNewMediaStream(v_ueB); diff --git a/ttcn/LibIms b/ttcn/LibIms index 45bea25..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e diff --git a/ttcn/LibSip b/ttcn/LibSip index 7f6fd81..2acb7ee 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 +Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 -- GitLab From 6c427d706141439f657f0e51f4e9af9f412982a9 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Mon, 22 Jun 2020 17:26:09 +0200 Subject: [PATCH 078/176] inclusion of test steps for _REG at Ic --- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 4 ++-- ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index 16d569a..badad5d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -191,7 +191,7 @@ module AtsImsIot_TestCases_CALL { /** * @desc To demonstrate the modification of an existing media flow mid session. */ - testcase TD_VxLTE_INT_INI_03() runs on ImsTestCoordinator system IotSystemInterface { + testcase TC_VxLTE_INT_INI_03() runs on ImsTestCoordinator system IotSystemInterface { // create components var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); @@ -259,7 +259,7 @@ module AtsImsIot_TestCases_CALL { /** * @desc To demonstrate the modification of an existing media flow mid session. */ - testcase TD_VxLTE_INT_INI_04() runs on ImsTestCoordinator system IotSystemInterface { + testcase TC_VxLTE_INT_INI_04() runs on ImsTestCoordinator system IotSystemInterface { // create components var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn index dd7f5fe..7c05ec2 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn @@ -49,6 +49,10 @@ module AtsImsIot_TestCases_REG { f_mtc_check_TP_MW_PCSCF_REGISTER_02(v_gmA/*FIXME: mwPS*/, true); // Events 12, 19 f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 21, 24 f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(v_gmA/*FIXME: mwPS*/, true); // Events 22, 23 + + f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 + f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 + f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 // Postamble f_PO_user_home_deregistration(v_ueA); @@ -80,6 +84,10 @@ module AtsImsIot_TestCases_REG { // Test body f_mtc_check_TP_GM_PCSCF_REGISTER_03(v_gmA, true); // Events 1, 6 + + f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 + f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 + f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 // Postamble f_PO_user_home_deregistration(v_ueA); @@ -112,6 +120,10 @@ module AtsImsIot_TestCases_REG { f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); // Events 1, 10 f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); // Events 11, 24 f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 25, 28 + + f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 + f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 30 + f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 35, 38 // Postamble f_PO_user_home_deregistration(v_ueA); -- GitLab From 1e389e95d5500adb8b02dc8864fc5b31568ef60a Mon Sep 17 00:00:00 2001 From: Bostjan Date: Tue, 23 Jun 2020 01:46:32 +0200 Subject: [PATCH 079/176] TPs for Rx addedn and TDL TP update for Rx and S9 interface --- test_purposes/Rx/TP_RX.tplan2 | 56 +- test_purposes/S9/TP_S9.tplan2 | 9 - .../AtsImsIot_Diameter_Templates.ttcn | 146 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 1276 ++++++++++++++++- ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 6 files changed, 1382 insertions(+), 109 deletions(-) diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index 787fc31..28c2b50 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -252,9 +252,10 @@ Package TP_RX { Max_Requested_Bandwidth_DL_AVP RR_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity @@ -301,9 +302,10 @@ Package TP_RX { RR_Bandwidth_AVP RS_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity @@ -350,9 +352,10 @@ Package TP_RX { RR_Bandwidth_AVP RS_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity @@ -397,9 +400,10 @@ Package TP_RX { Max_Requested_Bandwidth_UL_AVP RS_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity @@ -446,9 +450,10 @@ Package TP_RX { RR_Bandwidth_AVP RS_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity @@ -495,9 +500,10 @@ Package TP_RX { RR_Bandwidth_AVP RS_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity @@ -544,9 +550,10 @@ Package TP_RX { RR_Bandwidth_AVP RS_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity @@ -593,9 +600,10 @@ Package TP_RX { RR_Bandwidth_AVP RS_Bandwidth_AVP Codec_Data_AVP - "one or more" Media_Subcomponent_Description_AVP - Flow_Number_AVP - Flow_Description_AVP + "one or more" Media_Subcomponent_Description_AVP containing + Flow_Number_AVP + Flow_Description_AVP + ; ; ; to the EPC_PCRF_A entity diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index c2d6785..06a5dec 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -82,15 +82,6 @@ Package TP_S9 { indicating value 0, Media_Sub_Component_AVP containing Flow_Description_AVP - indicating value - "permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) or - permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number)", - Flow_Description_AVP - indicating value - "permit_out_ip from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - permit_out_udp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address or - permit_out_tcp from (P-CSCF-IP_address P-CSCF_port_number) to UE_A-IP_address", Flow_Usage_AVP indicating value AF_SIGNALING, Flow_Status_AVP diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 7778268..58a688a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -72,11 +72,11 @@ module AtsImsIot_Diameter_Templates { aVP_Data := p_avpData }; - template Media_Component_Description_AVP mw_mediaComponentDescription := + template Media_Component_Description_AVP mw_mediaComponentDescription_SubComponentFlowStatusEnabled := { aVP_Header := mw_aVP_Header_any_Code(c_media_Component_Description_AVP_Code), media_Component_Nr := {aVP_Header := ?, aVP_Data := ?}, - media_Sub_component := {mw_mediaSubComponent}, + media_Sub_component := {mw_mediaSubComponent_flowStatusEnabled_flowUsageAfSignalling_SignallingSip}, af_Application_Id := *, media_type := *, max_Requested_Bw_Ul := *, @@ -88,18 +88,95 @@ module AtsImsIot_Diameter_Templates { codec_data := * } - template Media_Sub_Component_AVP mw_mediaSubComponent := + template Media_Component_Description_AVP mw_mediaComponentDescription_FlowStatusDisabled := + { + aVP_Header := mw_aVP_Header_any_Code(c_media_Component_Description_AVP_Code), + media_Component_Nr := {aVP_Header := ?, aVP_Data := ?}, + media_Sub_component := {mw_mediaSubComponent_FlowDescription}, + af_Application_Id := *, + media_type := ?, + max_Requested_Bw_Ul := *, + max_Requested_Bw_Dl := ?, + flow_Status := mw_flowStatus(DISABLED_E), + reservation_Priority := *, + rs_Bw := *, + rr_Bw := ?, + codec_data := ? + } + + template Media_Component_Description_AVP mw_mediaComponentDescription_FlowStatusEnabledDownlink := + { + aVP_Header := mw_aVP_Header_any_Code(c_media_Component_Description_AVP_Code), + media_Component_Nr := {aVP_Header := ?, aVP_Data := ?}, + media_Sub_component := {mw_mediaSubComponent_FlowDescription}, + af_Application_Id := *, + media_type := ?, + max_Requested_Bw_Ul := ?, + max_Requested_Bw_Dl := ?, + flow_Status := mw_flowStatus(ENABLED_DOWNLINK_E), + reservation_Priority := *, + rs_Bw := ?, + rr_Bw := ?, + codec_data := ? + } + + template Media_Component_Description_AVP mw_mediaComponentDescription_FlowStatusEnabledUplink := + { + aVP_Header := mw_aVP_Header_any_Code(c_media_Component_Description_AVP_Code), + media_Component_Nr := {aVP_Header := ?, aVP_Data := ?}, + media_Sub_component := {mw_mediaSubComponent_FlowDescription}, + af_Application_Id := *, + media_type := ?, + max_Requested_Bw_Ul := ?, + max_Requested_Bw_Dl := ?, + flow_Status := mw_flowStatus(ENABLED_UPLINK_E), + reservation_Priority := *, + rs_Bw := ?, + rr_Bw := ?, + codec_data := ? + } + + template Media_Component_Description_AVP mw_mediaComponentDescription_FlowStatusEnabled := + { + aVP_Header := mw_aVP_Header_any_Code(c_media_Component_Description_AVP_Code), + media_Component_Nr := {aVP_Header := ?, aVP_Data := ?}, + media_Sub_component := {mw_mediaSubComponent_FlowDescription}, + af_Application_Id := *, + media_type := ?, + max_Requested_Bw_Ul := ?, + max_Requested_Bw_Dl := ?, + flow_Status := mw_flowStatus(ENABLED_E), + reservation_Priority := *, + rs_Bw := ?, + rr_Bw := ?, + codec_data := ? + } + + template Media_Sub_Component_AVP mw_mediaSubComponent_any := { aVP_Header := mw_aVP_Header_any_Code(c_media_Sub_Component_AVP_Code), flow_Number := ?, - flow_Description := ?, - flow_Status := mw_flowStatus(ENABLED_E), - flow_Usage := mw_flowUsage(AF_SIGNALLING_E), + flow_Description := *, + flow_Status := *, + flow_Usage := *, max_Requested_Bw_Ul := *, max_Requested_Bw_Dl := *, - af_Signalling_Protocol := mw_afSignallingProtocolSIP, + af_Signalling_Protocol := *, aVP_Type := * } + + template Media_Sub_Component_AVP mw_mediaSubComponent_FlowDescription modifies mw_mediaSubComponent_any := + { + flow_Description := ? + } + + template Media_Sub_Component_AVP mw_mediaSubComponent_flowStatusEnabled_flowUsageAfSignalling_SignallingSip modifies mw_mediaSubComponent_any := + { + flow_Description := ?, + flow_Status := mw_flowStatus(ENABLED_E), + flow_Usage := mw_flowUsage(AF_SIGNALLING_E), + af_Signalling_Protocol := mw_afSignallingProtocolSIP + } template AF_Signalling_Protocol_AVP mw_afSignallingProtocolSIP := { aVP_Header := mw_aVP_Header_any_Code(c_aF_Signalling_Protocol_AVP_Code), @@ -117,6 +194,12 @@ module AtsImsIot_Diameter_Templates { aVP_Header := mw_aVP_Header_any_Code(c_flow_Usage_AVP_Code), aVP_Data := p_avpData } + + template Specific_Action_AVP mw_specificAction (template (present) Specific_Action_Type p_avpData) :={ + aVP_Header := mw_aVP_Header_any_Code(c_specific_Action_AVP_Code),// + aVP_Data := p_avpData + } + } //end group RxHeaderFields group GxHeaderFields{ @@ -561,6 +644,51 @@ module AtsImsIot_Diameter_Templates { group RxMessageTemplates{ group RxRequestMessageTemplates{ + template AAR_MSG mw_AAR_MediaComponent_specificActionLossOfBearer modifies mw_AAR_dummy := { + aAR_Body :={ + media_Component_Description := {mw_mediaComponentDescription_SubComponentFlowStatusEnabled}, + specific_Action := {mw_specificAction(INDICATION_OF_LOSS_OF_BEARER_E)}, + framed_IP_Address := ? + //framed_IPv6_Address := *, + } + } + + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled modifies mw_AAR_dummy := { + aAR_Body :={ + media_Component_Description := {mw_mediaComponentDescription_FlowStatusDisabled}, + specific_Action := *, + framed_IP_Address := ? + //framed_IPv6_Address := *, + } + } + + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink modifies mw_AAR_dummy := { + aAR_Body :={ + media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabledDownlink}, + specific_Action := *, + framed_IP_Address := ? + //framed_IPv6_Address := *, + } + } + + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink modifies mw_AAR_dummy := { + aAR_Body :={ + media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabledUplink}, + specific_Action := *, + framed_IP_Address := ? + //framed_IPv6_Address := *, + } + } + + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled modifies mw_AAR_dummy := { + aAR_Body :={ + media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabled}, + specific_Action := *, + framed_IP_Address := ? + //framed_IPv6_Address := *, + } + } + template ASR_MSG mw_ASR_abortCause(template (present) Abort_Cause_Type p_avpData) modifies mw_ASR_dummy := { aSR_Body :={ abort_cause := mw_abortCause(p_avpData) @@ -575,7 +703,7 @@ module AtsImsIot_Diameter_Templates { result_Code := mw_resultCode(mw_resultCode_diameterSuccess), acceptable_service_info := { media_component_description := - {mw_mediaComponentDescription + {mw_mediaComponentDescription_SubComponentFlowStatusEnabled } }, ip_Can_Type := ?, @@ -595,7 +723,7 @@ module AtsImsIot_Diameter_Templates { result_Code := mw_resultCode(mw_resultCode_diameterSuccess), acceptable_service_info := { media_component_description := - {mw_mediaComponentDescription + {mw_mediaComponentDescription_SubComponentFlowStatusEnabled } } diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index 3f61e9b..78e7d69 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -31,6 +31,17 @@ group g_PCRF_ASA { * Starts monitor component behavior for TP_RX_PCRF_ASA_01 * @param p_monitorCompRef Reference to monitor component *
+     * Test objective  "Verify that IUT sends AA-Answer after RAA is received from PGW."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
      * ensure that {
      *     when { 
      *         the IMS_P_CSCF_A entity sends a ASR containing
@@ -164,7 +175,7 @@ group g_PCRF_AAA {
         p_monitorCompRef.start (
             f_Iot_Diameter_receive(
                 {
-                    { aAA_MSG := mw_AAA_resultCode }
+                    { aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription }
                 },
                 {},
                 {0, omit},
@@ -177,10 +188,20 @@ group g_PCRF_AAA {
     } // End of function f_mtc_check_TP_RX_PCRF_AAA_02
 
     /**
-     * Starts monitor component behavior for TP_RX_PCRF_AAA_03
+     * Starts monitor component behavior for TP_CX_HSS_UAA_01
      * @param p_monitorCompRef Reference to monitor component
      * 
-     * Test objective  "Verify that IUT receives AA-Answer from home PCRF and it sends AA-Answer towards visited P-CSCF."
+     * Test objective  "Verify that IUT after 2XX_Response on REGISTER sends an AA-Request due to provisioning of AF Signalling flow."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
      * ensure that {
      *     when {
      *         the EPC_PCRF_A entity sends a AAA
@@ -216,12 +237,176 @@ group g_PCRF_AAA {
 
 } // end group g_PCRF_AAA
 
+group g_PCRF_STA {
+
+    /**
+     * Starts monitor component behavior for TP_RX_PCRF_STA_01
+     * @param p_monitorCompRef Reference to monitor component
+     * 
+     * Test objective  "Verify that IUT after reception of RA-Request sends ST-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A and 
+     *     the UE_A entity previouslyEstablishedCallWith the UE_B
+     * }
+     * 
+     * ensure that {
+     *     when { 
+     *         the EPC_PGW_A entity sends an RAA
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the STA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the IMS_P_CSCF_A entity
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCRF_STA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_RX_PCRF_STA_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_STA_01 + + /** + * Starts monitor component behavior for TP_RX_PCRF_STA_02 + * @param p_monitorCompRef Reference to monitor component + *
+     * Test objective  "Verify that IUT after reception of ST-Request sends ST-Answer."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when { 
+     *         the IMS_P_CSCF_A entity sends an STR
+     *         to the EPC_PCRF_A entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_A entity sends the STA containing
+     *             Result_Code_AVP
+     *                 indicating value DIAMETER_SUCCESS
+     *         ;
+     *         to the IMS_P_CSCF_A entity
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCRF_STA_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STA_dummy }, + { sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_RX_PCRF_STA_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCRF_STA_02 + +} // end group g_PCRF_STA + } // end group g_PCRF group g_PCSCF { +group g_PCSCF_ASR { + + /** + * Starts monitor component behavior for TP_RX_PCSCF_ASR_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards visited P-CSCF."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_RMI
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_B and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the EPC_PCRF_A entity sends a ASR
+     *         to the EPC_PCRF_B entity
+     *     }
+     *     then {
+     *         the EPC_PCRF_B entity sends the ASR containing
+     *             Session_Id_AVP
+     *             Abort_Cause_AVP
+     *                 indicating value BEARER_RELEASED
+     *         ;
+     *         to the IMS_P_CSCF_B entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_ASR_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_ASR_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_ASR_01 +} //end group g_PCSCF_ASR { + + group g_PCSCF_AAR { /** @@ -230,31 +415,49 @@ group g_PCSCF_AAR { * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. *
+     * Test objective  "Verify that IUT after 2XX_Response on REGISTER sends an AA-Request due to provisioning of AF Signalling flow."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isNotAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
      * ensure that {
-     *     when { 
-     *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
+     *     when {
+     *         the IMS_S_CSCF_A entity sends a 200_Response_REGISTER
+     *         to the IMS_P_CSCF_A entity
      *     }
-     *     then { 
-     *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
-     *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
-     *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
-     *             and one or more Media-Component-Description_AVP containing 
-     *                 Media-Component-Number_AVP indicating value 0
-     *                 and Flow-Description_AVP indicating 
-     *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-     *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-     *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-     *                 and Flow-Description_AVP indicating 
-     *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-     *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-     *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-     *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
-     *                 and Flow-Status_AVP indicating ENABLED(2)
-     *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
+     *     then {
+     *         the IMS_P_CSCF_A entity sends an AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             Specific_Action_AVP
+     *                 indicating value INDICATION_OF_LOSS_OF_BEARER,
+     *             "one or more" Media_Component_Description_AVP containing 
+     *                 Media_Component_Number_AVP
+     *                     indicating value 0,
+     *                 Media_Sub_Component_AVP containing
+     *                     Flow_Description_AVP
+     *                     Flow_Usage_AVP
+     *                         indicating value AF_SIGNALLING,
+     *                     Flow_Status_AVP
+     *                         indicating value ENABLED,
+     *                     AF_Signalling_Protocol_AVP
+     *                         indicating value SIP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
      *     } 
      * } 
      * 
- * @see TS 103 029 V3.1.1 clause 7.2.1.1 + * @see TS 103 653-1 clause 7.6 * @remark source function f_mtc_check_TP_EPC_6013_01 */ function f_mtc_check_TP_RX_PCSCF_AAR_01( @@ -265,7 +468,7 @@ group g_PCSCF_AAR { p_monitorCompRef.start ( f_Iot_Diameter_receive( { - { aAR_MSG := mw_AAR_dummy } + { aAR_MSG := mw_AAR_MediaComponent_specificActionLossOfBearer } }, {}, {0, omit}, @@ -277,79 +480,1022 @@ group g_PCSCF_AAR { p_monitorCompRef.done; } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01 -} // end group g_PCSCF_AAR - -group g_PCSCF_STR { + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "IUT does not send AA-Request if 4XX_Response REGISTER is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isNotRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when { 
+     *         the IMS_P_CSCF_A entity receives an 4XX_Response_REGISTER
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity not sends the AAR
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_dummy }//TODO:check that AAR is NOT sent + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_02 /** - * Starts monitor component behavior for TP_RX_PCSCF_STR_03 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6034_02 - */ - function f_mtc_check_TP_RX_PCSCF_STR_03( - DiameterInterfaceMonitor p_monitorCompRef, + * Starts monitor component behavior for TP_RX_PCSCF_AAR_03 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after INVITE is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives an INVITE_Request_with_SDP_offer
+     *         from the UE_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value DISABLED '(3)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_03( + DiameterInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_Iot_Diameter_receive( { - { sTR_MSG := mw_STR_dummy } + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } }, {}, {0, omit}, - "TP_RX_PCSCF_STR_03", + "TP_RX_PCSCF_AAR_03", p_forward_to_mtc, p_checkMessage ) ); p_monitorCompRef.done; - } // End of function f_mtc_check_TP_RX_PCSCF_STR_03 - - /** - * Starts monitor component behavior for TP_RX_PCSCF_STR_06 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6034_04 - */ - function f_mtc_check_TP_RX_PCSCF_STR_06( - DiameterInterfaceMonitor p_monitorCompRef, + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_03 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_04 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 180 Ringing with SDP is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 180_Response_INVITE_with_SDP_offer
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value ENABLED_DOWNLINK '(1)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 Max_Requested_Bandwidth_UL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 RS_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_04( + DiameterInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_Iot_Diameter_receive( { - { sTR_MSG := mw_STR_dummy } + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } }, {}, {0, omit}, - "TP_RX_PCSCF_STR_06", + "TP_RX_PCSCF_AAR_04", p_forward_to_mtc, p_checkMessage ) ); p_monitorCompRef.done; - } // End of function f_mtc_check_TP_RX_PCSCF_STR_06 + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_04 /** - * Starts monitor component behavior for TP_RX_PCSCF_STR_07 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6012_02 - */ - function f_mtc_check_TP_RX_PCSCF_STR_07( - DiameterInterfaceMonitor p_monitorCompRef, - DiameterInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { -// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); -// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); -// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_RX_PCSCF_STR_07 + * Starts monitor component behavior for TP_RX_PCSCF_AAR_05 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 200 OK with SDP is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value ENABLED '(2)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 Max_Requested_Bandwidth_UL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 RS_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_05( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_05", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_05 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_06 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after INVITE is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives an INVITE_Request_with_SDP_offer
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value DISABLED '(3)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_06( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_06", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_06 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_07 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 180 Ringing with SDP is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 180_Response_INVITE_with_SDP_offer
+     *         from the UE_B entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value ENABLED_UPLINK '(0)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 Max_Requested_Bandwidth_UL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 RS_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_07( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_07", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_07 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_08 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 200 OK with SDP is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer
+     *         from the UE_B entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value ENABLED '(2)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 Max_Requested_Bandwidth_UL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 RS_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_08( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_08", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_08 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_09 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after 200 OK on re-INVITE is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value ENABLED_UPLINK '(0)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 Max_Requested_Bandwidth_UL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 RS_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *                 ;
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_09( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_09", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_09 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_AAR_10 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after 200 OK on re-INVITE is received."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer
+     *         from the UE_B entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the AAR containing
+     *             Framed_IPv4_Address_AVP 
+     *                 indicating value "IPv4_Address of UE_A",
+     *             "or" Framed_IPv6_Address_AVP 
+     *                 indicating value "IPv6_Address of UE_A",
+     *             "one or more" Media_Component_Description_AVP containing
+     *                 Media_Component_Number_AVP
+     *                 Media_Type_AVP
+     *                 Flow_Status_AVP
+     *                     indicating value ENABLED_DOWNLINK '(1)'
+     *                 Max_Requested_Bandwidth_DL_AVP
+     *                 Max_Requested_Bandwidth_UL_AVP
+     *                 RR_Bandwidth_AVP
+     *                 RS_Bandwidth_AVP
+     *                 Codec_Data_AVP
+     *                 "one or more" Media_Subcomponent_Description_AVP containing
+     *                     Flow_Number_AVP
+     *                     Flow_Description_AVP
+     *             ;
+     *         ;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_AAR_10( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_10", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_AAR_10 + +} // end group g_PCSCF_AAR + +group g_PCSCF_STR { + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of BYE sends an ST-Request at originating leg."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A and 
+     *     the UE_A entity previouslyEstablishedCallWith the UE_B
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a BYE
+     *         from the UE_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the STR containing
+     *             Session_Id_AVP;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_01 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of BYE sends an ST-Request at terminating leg.
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_B entity isAttachedTo the EPC_B and
+     *     the UE_B entity isRegisteredTo the IMS_B and 
+     *     the UE_B entity previouslyEstablishedCallWith the UE_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_B entity receives a BYE
+     *         from the IMS_S_CSCF_B entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_B entity sends the STR containing
+     *             Session_Id_AVP;
+     *         to the EPC_PCRF_B entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_02 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_03 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of CANCEL sends an ST-Request at originating leg."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a CANCEL
+     *         from the UE_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the STR containing
+     *             Session_Id_AVP;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_03( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_03 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_04 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of CANCEL sends an ST-Request at terminating leg."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_B entity isAttachedTo the EPC_B and
+     *     the UE_B entity isRegisteredTo the IMS_B
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_B entity receives a CANCEL
+     *         from the IMS_S_CSCF_B entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_B entity sends the STR containing
+     *             Session_Id_AVP;
+     *         to the EPC_PCRF_B entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_04( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_04 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_05 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of 486 response sends an ST-Request at originating leg."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 486_Response_INVITE
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the STR containing
+     *             Session_Id_AVP;
+     *         to the EPC_PCRF_A entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_05( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_05", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_05 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_06 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of 486 response sends an ST-Request at terminating leg."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_B entity isAttachedTo the EPC_B and
+     *     the UE_B entity isRegisteredTo the IMS_B
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_B entity receives a 486_Response_INVITE
+     *         from the IMS_S_CSCF_B entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_B entity sends the STR containing
+     *             Session_Id_AVP;
+     *          to the EPC_PCRF_B entity
+     *     } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_06( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_06", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_06 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_07 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of 200 response REGISTER sends an ST-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a 200_Response_REGISTER
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the STR containing
+     *             Session_Id_AVP;
+     *         to the EPC_PCRF_A entity
+     *    } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_07( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_07", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_07 + + /** + * Starts monitor component behavior for TP_RX_PCSCF_STR_08 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+     * Test objective  "Verify that IUT after reception of NOTIFY during administrative de-registration sends an ST-Request."
+     *
+     * 
+     * 
+     * Config Id CF_VxLTE_INT
+     * 
+     * Initial conditions with {
+     *     the UE_A entity isAttachedTo the EPC_A and
+     *     the UE_A entity isRegisteredTo the IMS_A
+     * }
+     * 
+     * ensure that {
+     *     when {
+     *         the IMS_P_CSCF_A entity receives a NOTIFY
+     *         from the IMS_S_CSCF_A entity
+     *     }
+     *     then {
+     *         the IMS_P_CSCF_A entity sends the STR containing
+     *             Session_Id_AVP;
+     *         to the EPC_PCRF_A entity
+     *    } 
+     * } 
+     * 
+ * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_STR_08( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + { sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_08", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_RX_PCSCF_STR_08 } // end group g_PCSCF_STR diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..45bea25 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f diff --git a/ttcn/LibSip b/ttcn/LibSip index 2acb7ee..7f6fd81 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 +Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 -- GitLab From c936bfc2f7d5080b7139faad9c573b3c963088aa Mon Sep 17 00:00:00 2001 From: pintar Date: Tue, 23 Jun 2020 01:49:51 +0200 Subject: [PATCH 080/176] TDL-TO configuration updates. --- test_purposes/Diameter_Common.tplan2 | 32 ++++++--- test_purposes/Sip_Common.tplan2 | 104 +++++++++++++++------------ 2 files changed, 82 insertions(+), 54 deletions(-) diff --git a/test_purposes/Diameter_Common.tplan2 b/test_purposes/Diameter_Common.tplan2 index 5ccec7f..a87b9f2 100644 --- a/test_purposes/Diameter_Common.tplan2 +++ b/test_purposes/Diameter_Common.tplan2 @@ -78,20 +78,34 @@ Test Configuration CF_VxLTE_INT containing - Tester component EPC_PGW_A of type DiameterComp - Tester component EPC_PCRF_A of type DiameterComp - - SUT component IMS_A of type DiameterComp + SUT component EPC_PGW_A of type DiameterComp + SUT component EPC_PCRF_A of type DiameterComp + SUT component S_CSCF_A of type DiameterComp + SUT component I_CSCF_A of type DiameterComp + SUT component P_CSCF_A of type DiameterComp + SUT component HSS_A of type DiameterComp + SUT component EPC_MME_A of type DiameterComp + SUT component IMS_AS_A of type DiameterComp + connection between EPC_MME_A.g and HSS_A.g connection between EPC_PGW_A.g and EPC_PCRF_A.g + connection between EPC_PCRF_A.g and P_CSCF_A.g + connection between HSS_A.g and S_CSCF_A.g + connection between HSS_A.g and I_CSCF_A.g + connection between IMS_AS_A.g and HSS_A.g ; Test Configuration CF_VxLTE_RMI containing - Tester component EPC_PCRF_A of type DiameterComp - Tester component EPC_PCRF_B of type DiameterComp - - SUT component IMS_A of type DiameterComp - connection between EPC_PCRF_A.g and EPC_PCRF_A.g + SUT component EPC_PGW_B of type DiameterComp + SUT component EPC_PCRF_A of type DiameterComp + SUT component EPC_PCRF_B of type DiameterComp + SUT component P_CSCF_B of type DiameterComp + SUT component HSS_A of type DiameterComp + SUT component EPC_MME_B of type DiameterComp + connection between EPC_MME_B.g and HSS_A.g + connection between EPC_PGW_B.g and EPC_PCRF_B.g + connection between EPC_PCRF_A.g and EPC_PCRF_B.g + connection between EPC_PCRF_B.g and P_CSCF_B.g ; } // End of Configuration section diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 198f536..d0fdb72 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -152,64 +152,78 @@ Package Sip_Common { Component Type EnumDBComponent with gate gEnum of type enumGT; Test Configuration CF_VxLTE_INT + containing + SUT component UE_A of type SipComponent + SUT component IMS_P_CSCF_A of type SipComponent + SUT component IMS_S_CSCF_A of type SipComponent + SUT component IMS_I_CSCF_A of type SipComponent + SUT component IMS_AS_A of type SipComponent + SUT component IMS_IBCF_A of type SipComponent + SUT component IMS_IBCF_B of type SipComponent + connection between UE_A.g and IMS_P_CSCF_A.g + connection between IMS_P_CSCF_A.g and IMS_S_CSCF_A.g + connection between IMS_S_CSCF_A.g and IMS_I_CSCF_A.g + connection between IMS_I_CSCF_A.g and IMS_IBCF_A.g + connection between IMS_IBCF_A.g and IMS_IBCF_B.g + connection between IMS_S_CSCF_A.g and IMS_AS_A.g ; Test Configuration CF_VxLTE_RMI - - Test Configuration CF_VxLTE_RMI_A - ; - - Test Configuration CF_VxLTE_RMI_B - ; - - Test Configuration CF_VxLTE_RMI_S8HR - ; - - Test Configuration CFG_IC_01 containing - Tester component UE_A of type SipComponent - Tester component NW_UE_B of type SipComponent - - SUT component IMS_A of type SipComponent - connection between UE_A.g and IMS_A.g - connection between IMS_A.g and NW_UE_B.g + SUT component UE_A of type SipComponent + SUT component IMS_P_CSCF_B of type SipComponent + SUT component IMS_S_CSCF_B of type SipComponent + SUT component IMS_AS_B of type SipComponent + SUT component IMS_IBCF_B of type SipComponent + SUT component IMS_IBCF_A of type SipComponent + connection between UE_A.g and IMS_P_CSCF_B.g + connection between IMS_P_CSCF_B.g and IMS_S_CSCF_B.g + connection between IMS_S_CSCF_B.g and IMS_I_CSCF_B.g + connection between IMS_I_CSCF_B.g and IMS_IBCF_B.g + connection between IMS_IBCF_B.g and IMS_IBCF_A.g ; - Test Configuration CFG_IC_02 + Test Configuration CF_VxLTE_RMI_A containing - Tester component UE_A of type SipComponent - Tester component UE_B of type SipComponent - Tester component NW_UE_B of type SipEnumComponent - Tester component Enum_DB of type EnumDBComponent - - SUT component IMS_A of type SipEnumComponent - connection between UE_A.g and IMS_A.gSip - connection between IMS_A.gEnum and Enum_DB.gEnum - connection between NW_UE_B.gEnum and Enum_DB.gEnum - connection between IMS_A.gSip and NW_UE_B.gSip - connection between NW_UE_B.gSip and UE_B.g + SUT component UE_B of type SipComponent + SUT component IMS_P_CSCF_A of type SipComponent + SUT component IMS_S_CSCF_A of type SipComponent + SUT component IMS_IBCF_A of type SipComponent + SUT component IMS_IBCF_B of type SipComponent + connection between UE_B.g and IMS_P_CSCF_A.g + connection between IMS_P_CSCF_A.g and IMS_S_CSCF_A.g + connection between IMS_S_CSCF_A.g and IMS_IBCF_A.g + connection between IMS_IBCF_A.g and IMS_IBCF_B.g ; - Test Configuration CFG_IC_03 + Test Configuration CF_VxLTE_RMI_B containing - Tester component UE_A of type SipComponent - Tester component UE_B of type SipComponent - Tester component IMS_B of type SipComponent - - SUT component IMS_A of type SipComponent - connection between UE_A.g and IMS_A.g - connection between UE_B.g and IMS_A.g - connection between IMS_A.g and IMS_B.g + SUT component UE_A of type SipComponent + SUT component IMS_P_CSCF_B of type SipComponent + SUT component IMS_S_CSCF_B of type SipComponent + SUT component IMS_AS_B of type SipComponent + SUT component IMS_IBCF_B of type SipComponent + SUT component IMS_IBCF_A of type SipComponent + connection between UE_A.g and IMS_P_CSCF_B.g + connection between IMS_P_CSCF_B.g and IMS_S_CSCF_B.g + connection between IMS_S_CSCF_B.g and IMS_I_CSCF_B.g + connection between IMS_I_CSCF_B.g and IMS_IBCF_B.g + connection between IMS_IBCF_B.g and IMS_IBCF_A.g ; - Test Configuration CFG_xxx_02 + Test Configuration CF_VxLTE_RMI_S8HR containing - Tester component UE_A of type SipComponent - Tester component IMS_PCRF_A of type SipComponent - - SUT component IUT of type SipComponent - connection between UE_A.g and IMS_PCRF_A.g - connection between IMS_PCRF_A.g and IMS_xxx_A.g + SUT component UE_A of type SipComponent + SUT component IMS_P_CSCF_A of type SipComponent + SUT component IMS_S_CSCF_A of type SipComponent + SUT component IMS_I_CSCF_A of type SipComponent + SUT component IMS_IBCF_A of type SipComponent + SUT component IMS_IBCF_B of type SipComponent + connection between UE_A.g and IMS_P_CSCF_A.g + connection between IMS_P_CSCF_A.g and IMS_S_CSCF_A.g + connection between IMS_S_CSCF_A.g and IMS_I_CSCF_A.g + connection between IMS_I_CSCF_A.g and IMS_IBCF_A.g + connection between IMS_IBCF_A.g and IMS_IBCF_B.g ; } // End of Configuration section -- GitLab From 60089b5c14902470da0de839ff4db9be427f896e Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 07:44:37 +0200 Subject: [PATCH 081/176] Update MwPS interface --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 89 +++++++--- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 161 +++++++++++++----- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 10 +- ttcn/LibSip | 2 +- 4 files changed, 193 insertions(+), 69 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index e9c8278..509da1a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -611,11 +611,12 @@ module AtsImsIot_TP_behavior_GM { * Expected behaviour * ensure that { * when { - * the UE_A entity hasAchieveInitialINVITE + * the IMS_P_CSCF_A entity receives a 100_Trying + * from the UE_A entity * } * then { - * the IMS_P_CSCF_A entity sends a 100_Trying - * to the UE_A entity + * the IMS_P_CSCF_A entity forwards the 100_Trying + * to the IMS_S_CSCF_A entity * } * } */ @@ -916,7 +917,7 @@ module AtsImsIot_TP_behavior_GM { group imsAck { /** - * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -927,14 +928,7 @@ module AtsImsIot_TP_behavior_GM { * Expected behaviour * ensure that { * when { - * the UE_B entity sends an ACK containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_B entity + * the UE_A entity hasAchieveInitialINVITE * } * then { * the IMS_P_CSCF_A entity receives an ACK containing @@ -946,6 +940,7 @@ module AtsImsIot_TP_behavior_GM { * ; * from the UE_A entity * } + * } * } */ function f_mtc_check_TP_GM_PCSCF_ACK_01( @@ -978,18 +973,17 @@ module AtsImsIot_TP_behavior_GM { * Expected behaviour * ensure that { * when { - * the UE_A entity hasAchieveInitialINVITE + * the UE_B entity hasAchieveInitialINVITE * } * then { - * the IMS_P_CSCF_A entity receives an ACK containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE + * the UE_B entity receives an ACK containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_A entity - * } + * from the IMS_P_CSCF_B entity * } */ function f_mtc_check_TP_GM_PCSCF_ACK_02( @@ -1042,10 +1036,10 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_BYE_01( - ImsInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( { mw_SipRequest(mw_BYE_Request_Base) }, @@ -1059,6 +1053,51 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_BYE_01 + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_B entity receives a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_BYE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_BYE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_BYE_02 + } // End of group imsBye } // End of module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index c3bb817..ee55828 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -702,17 +702,17 @@ module AtsImsIot_TP_behavior_MW_PS { * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * to the IMS_P_CSCF_B entity + * to the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_B entity receives a 100_Trying containing + * the IMS_P_CSCF_A entity forwards the 100_Trying containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_B entity + * from the IMS_S_CSCF_A entity * } * } */ @@ -750,20 +750,24 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_A entity hasAchieveInitialINVITE + * the IMS_P_CSCF_A entity receives a 180_Ringing containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity receives a 180_Ringing containing + * the IMS_P_CSCF_A entity sends a 180_Ringing containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity + * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_A entity + * to the UE_A entity * } * } */ @@ -786,7 +790,7 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_01 /** - * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg). + * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg).. * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -797,21 +801,18 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_B entity sends a 180_Ringing containing + * the IMS_P_CSCF_B entity receives a 180_Ringing containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity + * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * to the IMS_P_CSCF_B entity + * from the UE_B entity * * } * then { - * the IMS_P_CSCF_B entity receives a 180_Ringing containing + * the IMS_P_CSCF_B entity sends a 180_Ringing containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -821,7 +822,7 @@ module AtsImsIot_TP_behavior_MW_PS { * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * from the UE_B entity + * to the IMS_S_CSCF_B entity * } * } */ @@ -859,10 +860,7 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_A entity hasAchieveInitialINVITE - * } - * then { - * the IMS_P_CSCF_A entity sends a 200_Ok containing + * the IMS_P_CSCF_A entity receives a 200_Ok containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -872,7 +870,20 @@ module AtsImsIot_TP_behavior_MW_PS { * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * to the UE_A entity + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PChargingVector, + * PChargingFunctionAddresses, + * PPreferredIdentity + * ; + * to the IMS_S_CSCF_A entity * } * } */ @@ -906,17 +917,17 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_B entity sends a 200_Ok containing + * the IMS_P_CSCF_A entity receives a 200_Ok containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity + * PChargingVector, + * PChargingFunctionAddresses, + * PPreferredIdentity * ; - * from the IMS_P_CSCF_B entity + * from the IMS_S_CSCF_A entity * } * then { * the IMS_P_CSCF_A entity sends a 200_Ok containing @@ -929,7 +940,7 @@ module AtsImsIot_TP_behavior_MW_PS { * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * from the UE_B entity + * from the UE_A entity * } * } */ @@ -962,7 +973,7 @@ module AtsImsIot_TP_behavior_MW_PS { group imsAck { /** - * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -973,24 +984,24 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_B entity sends an ACK containing + * the IMS_P_CSCF_A entity receives an ACK containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * to the IMS_P_CSCF_B entity + * from the UE_A entity * } * then { - * the IMS_P_CSCF_A entity receives an ACK containing + * the IMS_P_CSCF_A entity sends an ACK containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_A entity + * from the IMS_S_CSCF_A entity * } * } */ @@ -1013,7 +1024,7 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of function f_mtc_check_TP_MW_PCSCF_ACK_01 /** - * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1024,17 +1035,24 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_A entity hasAchieveInitialINVITE + * the IMS_P_CSCF_B entity sends an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * to the IMS_S_CSCF_B entity * } * then { - * the IMS_P_CSCF_A entity receives an ACK containing + * the IMS_P_CSCF_A entity sends an ACK containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_A entity + * from the UE_B entity * } * } */ @@ -1073,9 +1091,6 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_A entity isRequestedToSend a BYE - * } - * then { * the IMS_P_CSCF_A entity receives a BYE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, @@ -1084,6 +1099,16 @@ module AtsImsIot_TP_behavior_MW_PS { * Route indicating value PX_UE_A_SERVICE_ROUTE * ; * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity send a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity * } * } */ @@ -1105,6 +1130,58 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_BYE_01 + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * then { + * the IMS_P_CSCF_B entity send a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_BYE_02( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_BYE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_BYE_02 + } // End of group imsBye } // End of module AtsImsIot_TP_behavior_MW_PS diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index b2e46f3..16a81a4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -152,6 +152,7 @@ module AtsImsIot_TestCases_CALL { f_cf_int_call_down(v_config); //unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -185,6 +186,7 @@ module AtsImsIot_TestCases_CALL { f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); + f_cf_VxLteMonitor_Up(); // configuration f_cf_int_call_up(v_config); @@ -208,7 +210,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_check_TP_MW_PCSCF_200OK_01(v_gmA/*FIXME: mwPS*/); // Event 8 f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 14 - f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA); // Event 15 + f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA/*FIXME: mwPS*/); // Event 15 f_mtc_userCheckNewMediaStream(v_ueB); f_mtc_userCheckNewMediaStream(v_ueA); @@ -220,6 +222,7 @@ module AtsImsIot_TestCases_CALL { f_cf_int_call_down(v_config); //unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -250,6 +253,7 @@ module AtsImsIot_TestCases_CALL { f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); + f_cf_VxLteMonitor_Up(); // configuration f_cf_int_call_up(v_config); @@ -267,8 +271,11 @@ module AtsImsIot_TestCases_CALL { // test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 + f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(v_gmB/*FIXME: mwPS*/); // Event 4 f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB); // Event 6 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/); // Event 11 f_mtc_check_TP_GM_PCSCF_ACK_02(v_gmB); // Event 17 + f_mtc_check_TP_MW_PCSCF_ACK_02(v_gmB/*FIXME: mwPS*/); // Event 16 f_mtc_userCheckNewMediaStream(v_ueA); f_mtc_userCheckNewMediaStream(v_ueB); @@ -279,6 +286,7 @@ module AtsImsIot_TestCases_CALL { f_cf_int_call_down(v_config); //unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); diff --git a/ttcn/LibSip b/ttcn/LibSip index 7f6fd81..1968037 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7f6fd81af0912a0d8bdf85bafede9e62b68b1628 +Subproject commit 1968037e8c62d804047c534222ce547764c4b037 -- GitLab From 05038a17206aef82f7885a35f96c4928d755db4a Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 08:00:52 +0200 Subject: [PATCH 082/176] Bugs fixed in TPs --- test_purposes/Gm/TP_GM.tplan2 | 19 ++------ test_purposes/Mw/TP_MW_PS.tplan2 | 74 ++++++++++++-------------------- 2 files changed, 31 insertions(+), 62 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index e8cf92a..dc44a12 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -1431,8 +1431,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_ACK_01 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." @@ -1494,24 +1492,17 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_B entity sends an ACK containing - From indicating value PX_UE_B_SIP_URI, - To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; - to the IMS_P_CSCF_B entity + the UE_B entity hasAchieveInitialINVITE } then { - the IMS_P_CSCF_B entity receives an ACK containing + the UE_B entity receives an ACK containing From indicating value PX_UE_B_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, Route indicating value PX_UE_B_SERVICE_ROUTE ; - from the UE_B entity + from the IMS_P_CSCF_B entity } } @@ -1789,8 +1780,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_BYE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." @@ -1831,8 +1820,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_BYE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index a2c472e..f58e086 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -1385,8 +1385,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_180RINGING_01 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." @@ -1421,10 +1419,8 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_180RINGING_02 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)." Reference "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" @@ -1529,8 +1525,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_200OK_01 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." @@ -1573,8 +1567,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_200OK_02 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." @@ -1596,17 +1588,17 @@ Package TP_MW_PS { ensure that { when { the IMS_P_CSCF_A entity receives a 200_Ok containing - not PChargingVector, - not PChargingFunctionAddresses, - not PPreferredIdentity + PChargingVector, + PChargingFunctionAddresses, + PPreferredIdentity ; from the IMS_S_CSCF_A entity } then { - the IMS_P_CSCF_A entity sends a 200_Ok containing - PChargingVector, - PChargingFunctionAddresses, - PPreferredIdentity + the not IMS_P_CSCF_A entity sends a 200_Ok containing + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity ; to the UE_A entity } @@ -1727,14 +1719,14 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity receives an ACK containing + the IMS_P_CSCF_A entity receives an ACK containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends an ACK containing @@ -1753,10 +1745,8 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_ACK_02 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) - Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" @@ -1775,24 +1765,24 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an ACK containing + the IMS_P_CSCF_B entity receives an ACK containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the IMS_S_CSCF_A entity + from the IMS_S_CSCF_B entity } then { - the IMS_P_CSCF_A entity sends an ACK containing + the IMS_P_CSCF_B entity sends an ACK containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the UE_A entity + from the UE_B entity } } @@ -1801,8 +1791,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_ACK_03 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." @@ -1849,8 +1837,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_ACK_04 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." @@ -2123,8 +2109,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_BYE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." @@ -2146,14 +2130,14 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the UE_A entity receives an BYE containing + the IMS_P_CSCF_A entity receives an BYE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the IMS_P_CSCF_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends an BYE containing @@ -2172,8 +2156,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_BYE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." @@ -2196,23 +2178,23 @@ Package TP_MW_PS { ensure that { when { the IMS_P_CSCF_B entity receives an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; from the IMS_S_CSCF_B entity } then { the IMS_P_CSCF_B entity sends an BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; - to the UE_B entity + to the IMS_S_CSCF_B entity } } -- GitLab From 3ba9ffabcb42b8b98a49ab4792e4cc4ee17a0048 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 09:15:57 +0200 Subject: [PATCH 083/176] Add SIp Session Release TDs --- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 16 +- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 427 ++++++++++++------- 2 files changed, 298 insertions(+), 145 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 11cff68..6cdd4bd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -361,7 +361,21 @@ module AtsImsIot_Functions { return v_status; } - /** + /** + * @desc Trigger UE given by p_ueRef to enter BYE current call + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userTriggerReleaseCall(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** * @desc Trigger UE given by p_ueRef to enter HOLD state * @param p_userCompRef Reference to IMS UE user component * @return diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index 7813d06..c02c369 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -44,18 +44,18 @@ module AtsImsIot_TestCases_CALL { var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_VxLteMonitor_Up(); - // preamble + // Preamble f_cf_int_call_up(v_config); f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true, true); // Event 1 @@ -90,13 +90,13 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 - // postamble + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -122,17 +122,17 @@ module AtsImsIot_TestCases_CALL { var ImsUserInfo v_userTelInfoA := f_getTelUserId(PX_EUT_A); var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); f_mtc_check_TP_GM_PCSCF_INVITE_02(v_gmB, true, true); // Event 8 @@ -174,7 +174,7 @@ module AtsImsIot_TestCases_CALL { f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -205,7 +205,7 @@ module AtsImsIot_TestCases_CALL { var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -214,7 +214,7 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -225,7 +225,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEstablished(v_ueB); // Event 1 f_mtc_userAddNewMediaStream(v_ueA); - // test body + // Test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(v_gmA); // Event 2 f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(v_gmA/*FIXME: mwPS*/); // Event 3 @@ -241,13 +241,13 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckNewMediaStream(v_ueB); f_mtc_userCheckNewMediaStream(v_ueA); - // postamble + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -275,7 +275,7 @@ module AtsImsIot_TestCases_CALL { var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -284,7 +284,7 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -295,7 +295,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEstablished(v_ueB); // Event 1 f_mtc_userAddNewMediaStream(v_ueA); - // test body + // Test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(v_gmB/*FIXME: mwPS*/); // Event 4 f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB); // Event 6 @@ -310,13 +310,13 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckNewMediaStream(v_ueA); f_mtc_userCheckNewMediaStream(v_ueB); - // postamble + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_VxLteMonitor_Down(); f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); @@ -327,6 +327,145 @@ module AtsImsIot_TestCases_CALL { } } // End of group imsSipSessionModification + group imsSipSessionRelease { + + group originatedLegs { + + /** + * @desc To perform originating UE session release and the tear down of related dedicated bearers. + */ + testcase TC_VxLTE_INT_REL_01() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; + + // Map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_VxLteMonitor_Up(); + f_cf_int_call_up(v_config); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userAddNewMediaStream(v_ueA); + + // Test body + f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 + f_mtc_check_TP_GM_PCSCF_BYE_01(v_gmA); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_01(v_gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 +// f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + // Unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_call_down(v_config); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_REL_01 + + } // End of group originatingLeg + + group terminatingLeg { + + /** + * @desc To perform originating UE session release and the tear down of related dedicated bearers. + */ + testcase TC_VxLTE_INT_REL_02() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; + + // Map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_VxLteMonitor_Up(); + f_cf_int_call_up(v_config); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userAddNewMediaStream(v_ueA); + + // Test body + f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 + f_mtc_check_TP_GM_PCSCF_BYE_02(v_gmB); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_02(v_gmB/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 +// f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + // Unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_int_call_down(v_config); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_REL_02 + + } // End of group terminatingLeg + + group networkInitiated { + + } // End of group networkInitiated + + } // End of group TC_VxLTE_INT_REL_01 + + + + + + + + + + + + + + + + /** * @desc Default SIP URI with DNS/ENUM lookup procedure * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.1 @@ -345,17 +484,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); //Test Sequence Step 1 // check 1 (INVITE) @@ -411,12 +550,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -441,20 +580,20 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_user_up(v_ueB2); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); f_mtc_userRegistration(v_ueB2, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // check 1 (INVITE) @@ -519,13 +658,13 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_PO_user_home_deregistration(v_ueB2); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_user_down(v_ueB2); @@ -551,17 +690,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // check 1 (INVITE) @@ -615,12 +754,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -644,17 +783,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 //check 1 (INVITE) @@ -665,12 +804,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -693,15 +832,15 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); - // test body + // Test body v_userInfoB.privateId := ("non_existing_user"); f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // @@ -713,11 +852,11 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_adapter_down(); f_cf_adapter_down(); @@ -739,15 +878,15 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); - // test body + // Test body v_userInfoB.privateId := ("unavailable"); f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // @@ -759,11 +898,11 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_adapter_down(); f_cf_adapter_down(); @@ -785,15 +924,15 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); - // test body + // Test body v_userInfoB.privateId := ("userNOAS_in_IMSB"); f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // @@ -805,11 +944,11 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_adapter_down(); f_cf_adapter_down(); @@ -830,17 +969,17 @@ module AtsImsIot_TestCases_CALL { var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 // checks 1,2 gm @@ -888,12 +1027,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -916,17 +1055,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 @@ -975,12 +1114,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1004,17 +1143,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 @@ -1035,12 +1174,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 9 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1063,17 +1202,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 @@ -1110,12 +1249,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1138,17 +1277,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 @@ -1183,12 +1322,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1211,17 +1350,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 @@ -1256,12 +1395,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 14 f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 15 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1282,17 +1421,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 @@ -1307,12 +1446,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 6 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1336,17 +1475,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 @@ -1363,12 +1502,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userLooseConnection(v_ueB); //Test Sequence Step 7 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1394,18 +1533,18 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_user_up(v_imsA); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 @@ -1420,12 +1559,12 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_user_down(v_imsA); @@ -1453,7 +1592,7 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -1461,11 +1600,11 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); - // test body + // Test body // Test Sequence 1 ---------------------> f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -1526,12 +1665,12 @@ module AtsImsIot_TestCases_CALL { // Test Sequence 15 --------------------> f_mtc_userCheckCallEnded(v_ueA); - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1558,7 +1697,7 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -1566,11 +1705,11 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); - // test body + // Test body // Test Sequence 1 ---------------------> f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -1631,12 +1770,12 @@ module AtsImsIot_TestCases_CALL { // Test Sequence 15 --------------------> f_mtc_userCheckCallEnded(v_ueA); - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1663,7 +1802,7 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -1671,11 +1810,11 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); - // test body + // Test body // Test Sequence 1 ---------------------> f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -1729,12 +1868,12 @@ module AtsImsIot_TestCases_CALL { // Test Sequence 14 --------------------> f_mtc_userCheckCallEnded(v_ueA ); - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1761,7 +1900,7 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -1769,11 +1908,11 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); - // test body + // Test body // Test Sequence 1 ---------------------> f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -1854,12 +1993,12 @@ module AtsImsIot_TestCases_CALL { // Test Sequence 19 --------------------> f_mtc_userCheckCallEnded(v_ueB ); - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -1886,7 +2025,7 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -1894,11 +2033,11 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); - // test body + // Test body // Test Sequence 1 ---------------------> f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -2006,12 +2145,12 @@ module AtsImsIot_TestCases_CALL { // Test Sequence 23 --------------------> f_mtc_userCheckCallEnded(v_ueB ); - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -2038,7 +2177,7 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); @@ -2046,11 +2185,11 @@ module AtsImsIot_TestCases_CALL { // configuration f_cf_int_call_up(v_config); - // preamble + // Preamble f_PR_user_home_registration(v_ueA,v_userInfoA); f_PR_user_home_registration(v_ueB,v_userInfoB); - // test body + // Test body // Test Sequence 1 ---------------------> f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -2162,12 +2301,12 @@ module AtsImsIot_TestCases_CALL { // Test Sequence 23 --------------------> f_mtc_userCheckCallEnded(v_ueB ); - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); f_cf_int_call_down(v_config); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_adapter_down(); @@ -2192,17 +2331,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 //check 1,2,3,6 (INVITE and 100Trying) @@ -2260,11 +2399,11 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_call_down(v_config); @@ -2288,17 +2427,17 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - // map/connect component ports + // Map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_int_call_up(v_config); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 @@ -2313,11 +2452,11 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 f_mtc_userCheckCallTerminated(v_ueA); //Test Sequence Step 6 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_int_call_down(v_config); @@ -2340,16 +2479,16 @@ module AtsImsIot_TestCases_CALL { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // map/connect component ports + // Map/connect component ports f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - // preamble + // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); - // test body + // Test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 @@ -2384,11 +2523,11 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - // postamble + // Postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - //unmap/disconnet component ports + // Unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); -- GitLab From 2f804477bb1f337b39ecc3d89f734faa373c23be Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 09:36:55 +0200 Subject: [PATCH 084/176] Update SIp Session Release TDs --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 45 ++++++++++++ .../AtsImsIot_TP_behavior_MW_PS.ttcn | 72 ++++++++++++++++--- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 58 +++++++++++++-- ttcn/LibIms | 2 +- 4 files changed, 162 insertions(+), 15 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index c5b725f..51ee141 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1098,6 +1098,51 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_BYE_02 + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Network initiated). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isNoLongerAvailable + * } + * then { + * the IMS_P_CSCF_A entity sends a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_BYE_03( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_BYE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_BYE_03 + } // End of group imsBye } // End of module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 5e244e8..c33df27 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -1101,7 +1101,7 @@ module AtsImsIot_TP_behavior_MW_PS { * from the UE_A entity * } * then { - * the IMS_P_CSCF_A entity send a BYE containing + * the IMS_P_CSCF_A entity sends a BYE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -1113,10 +1113,10 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_BYE_01( - ImsInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( { mw_SipRequest(mw_BYE_Request_Base(?)) }, //FIXME @@ -1153,7 +1153,7 @@ module AtsImsIot_TP_behavior_MW_PS { * from the UE_B entity * } * then { - * the IMS_P_CSCF_B entity send a BYE containing + * the IMS_P_CSCF_B entity sends a BYE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -1165,10 +1165,10 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_BYE_02( - ImsInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( { mw_SipRequest(mw_BYE_Request_Base) }, @@ -1182,6 +1182,58 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_BYE_02 + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Originating Network). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_BYE_03( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_BYE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_BYE_03 + } // End of group imsBye } // End of module AtsImsIot_TP_behavior_MW_PS diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index c02c369..8443955 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -293,7 +293,6 @@ module AtsImsIot_TestCases_CALL { f_mtc_userAnswerCall(v_ueB); f_mtc_userCheckCallEstablished(v_ueA); // Event 1 f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - f_mtc_userAddNewMediaStream(v_ueA); // Test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 @@ -361,7 +360,6 @@ module AtsImsIot_TestCases_CALL { f_mtc_userAnswerCall(v_ueB); f_mtc_userCheckCallEstablished(v_ueA); // Event 1 f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - f_mtc_userAddNewMediaStream(v_ueA); // Test body f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 @@ -419,7 +417,6 @@ module AtsImsIot_TestCases_CALL { f_mtc_userAnswerCall(v_ueB); f_mtc_userCheckCallEstablished(v_ueA); // Event 1 f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - f_mtc_userAddNewMediaStream(v_ueA); // Test body f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 @@ -447,9 +444,62 @@ module AtsImsIot_TestCases_CALL { group networkInitiated { + /** + * @desc To perform network session release and the tear down of related dedicated bearers + */ + testcase TC_VxLTE_INT_REL_03() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; + + // Map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + f_cf_VxLteMonitor_Up(); + f_cf_int_call_up(v_config); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueB, v_userInfoA); + f_mtc_userCheckRinging(v_ueA); + f_mtc_userCheckPeerIsRinging(v_ueB); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + + // Test body + + f_mtc_userLooseConnection(v_ueB); + f_mtc_check_TP_GM_PCSCF_BYE_03(v_gmA); // Event 5 + f_mtc_check_TP_MW_PCSCF_BYE_03(v_gmA/*FIXME: mwPS*/); // Event 3 +// f_mtc_check_TP_IMS_5073_01_ic(v_ic); // Event 4 + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + // Unmap/disconnet component ports + f_cf_VxLteMonitor_Down(); + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } // End of testcase TC_VxLTE_INT_REL_03 + } // End of group networkInitiated - } // End of group TC_VxLTE_INT_REL_01 + } // End of group imsSipSessionRelease diff --git a/ttcn/LibIms b/ttcn/LibIms index 45bea25..d640fce 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit 45bea252dd3e62acc56db4e863d9fb6a96b4ee6f +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 -- GitLab From f9987b6f8dc41250c62cce151cc905508191ca57 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 09:38:19 +0200 Subject: [PATCH 085/176] Update SIp Session Release TDs --- test_purposes/Gm/TP_GM.tplan2 | 2 -- test_purposes/Mw/TP_MW_PS.tplan2 | 2 -- 2 files changed, 4 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index dc44a12..7bbd8d6 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -1860,8 +1860,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_BYE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a BYE (Network initiated)." diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index f58e086..386c249 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -2203,8 +2203,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_BYE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Network)." -- GitLab From a31ecf8ed5f5c086afe98415598a97aa4241d8b1 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 23 Jun 2020 10:08:21 +0200 Subject: [PATCH 086/176] inclusion of test steps for _REL at Ic --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 4 ++-- ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn | 4 ++-- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 3 +++ ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 51ee141..f0d8341 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1087,7 +1087,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base(?)) }, {}, { 0, omit }, "TP_GM_PCSCF_BYE_02", @@ -1132,7 +1132,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base(?)) }, {}, { 0, omit }, "TP_GM_PCSCF_BYE_03", diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index c33df27..7461d4f 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -1171,7 +1171,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base(?)) }, {}, { 0, omit }, "TP_MW_PCSCF_BYE_02", @@ -1223,7 +1223,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base(?)) }, {}, { 0, omit }, "TP_MW_PCSCF_BYE_03", diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index 8443955..1dda327 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -365,6 +365,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_01(v_gmA); // Event 2 f_mtc_check_TP_MW_PCSCF_BYE_01(v_gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 // f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 @@ -422,6 +423,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_02(v_gmB); // Event 2 f_mtc_check_TP_MW_PCSCF_BYE_02(v_gmB/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 // f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 @@ -480,6 +482,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_userLooseConnection(v_ueB); f_mtc_check_TP_GM_PCSCF_BYE_03(v_gmA); // Event 5 f_mtc_check_TP_MW_PCSCF_BYE_03(v_gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 // f_mtc_check_TP_IMS_5073_01_ic(v_ic); // Event 4 f_mtc_userCheckCallTerminated(v_ueA); // Event 14 f_mtc_userCheckCallCancelled(v_ueB); // Event 15 diff --git a/ttcn/LibIms b/ttcn/LibIms index d640fce..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e diff --git a/ttcn/LibSip b/ttcn/LibSip index 1968037..2acb7ee 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 1968037e8c62d804047c534222ce547764c4b037 +Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 -- GitLab From d4400cc49d8c0e9a5b51e35b94fde9f43b9ebe74 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 15:36:18 +0200 Subject: [PATCH 087/176] Create SIP Session Abort TDs --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 282 +++++++++++++++ .../AtsImsIot_TP_behavior_MW_PS.ttcn | 326 ++++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 104 ++++++ 3 files changed, 712 insertions(+) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 51ee141..5a5dea0 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1145,4 +1145,286 @@ module AtsImsIot_TP_behavior_GM { } // End of group imsBye + group imsCancel { + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_CANCEL_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_01 + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_B entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_CANCEL_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_02 + + } // End of group imsCancel + + group imsBusy { + + /** + * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_B entity isBusy + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend an 486_INVITE + * } + * then { + * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_486INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_B entity isBusy + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a 486_INVITE + * } + * then { + * the IMS_P_CSCF_B entity receives a CANCEL containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_486INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_02 + + } // End of group imsBusy + + group imsRequestTermination { + + /** + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_A entity receives a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_487INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_B entity receives a 487_INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_487INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_02 + + } // End of group imsRequestTermination + } // End of module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index c33df27..6fc6ff8 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -1236,4 +1236,330 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of group imsBye + group imsCancel { + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_CANCEL_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_01 + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity hasAchieveInitialINVITE and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_CANCEL_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_02 + + } + + group imsBusy { + + /** + * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_B entity isBusy + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_486INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_B entity isBusy + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a CANCEL containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends a CANCEL containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the IMS_S_CSCF_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_486INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_02 + + } // End of group imsBusy + + group imsRequestTermination { + + /** + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_487INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the IMS_S_CSCF_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_487INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_02 + + } // End of group imsRequestTermination + } // End of module AtsImsIot_TP_behavior_MW_PS diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index 8443955..0b8e252 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -501,6 +501,110 @@ module AtsImsIot_TestCases_CALL { } // End of group imsSipSessionRelease + group imsSipSessionAbortReject { + + group originatedLegs { + + /** + * @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A + */ + testcase TC_VxLTE_INT_ABT_01() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; + + // Map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 + f_mtc_userTriggerCancelCall(v_ueA); + + // Test body + f_mtc_check_TP_GM_PCSCF_CANCEL_01(v_gmA); // Event 20 + f_mtc_check_TP_MW_PCSCF_CANCEL_01(v_gmA/*FIXME: mwPS*/); // Event 23 +// f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Event 25 + f_mtc_check_TP_GM_PCSCF_487INVITE_01(v_gmA); // Event 35 + f_mtc_check_TP_MW_PCSCF_487INVITE_01(v_gmA/*FIXME: mwPS*/); // Event 34 + f_mtc_userCheckCallCancelled(v_ueA); // Event 40 + f_mtc_userCheckCallEnded(v_ueB); // Event 41 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + // Unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_VxLTE_INT_ABT_01 + + } // End of group originatedLegs + + group terminatedLegs { + + /** + * @desc To perform SIP session abort (originating side) and the related interactions with PCRF and EPC. + */ + testcase TC_VxLTE_INT_ABT_02() runs on ImsTestCoordinator system IotSystemInterface { + // create components + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); + var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); + var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); + var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; + + // Map/connect component ports + f_cf_adapter_up(); + f_cf_user_up(v_ueA); + f_cf_user_up(v_ueB); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userTriggerCancelCall(v_ueA); + + // Test body + f_mtc_check_TP_GM_PCSCF_CANCEL_02(v_gmB); // Event 20 + f_mtc_check_TP_MW_PCSCF_CANCEL_02(v_gmB/*FIXME: mwPS*/); // Event 23 +// f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check1 + f_mtc_check_TP_MW_PCSCF_487INVITE_02(v_gmB/*FIXME: mwPS*/); // Event 34 + f_mtc_userCheckCallCancelled(v_ueA); // Event 40 + f_mtc_userCheckCallEnded(v_ueB); // Event 41 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + // Unmap/disconnet component ports + f_cf_user_down(v_ueA); + f_cf_user_down(v_ueB); + f_cf_adapter_down(); + f_cf_adapter_down(); + } //end testcase TC_VxLTE_INT_ABT_02 + + } // End of group terminatedLegs + + } // End of group imsSipSessionAbortReject -- GitLab From 0b60e37307d999c60d79171ed1f5e1586fd112ab Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 15:42:06 +0200 Subject: [PATCH 088/176] Bugs fixed in TPs --- test_purposes/Gm/TP_GM.tplan2 | 16 +++++----------- test_purposes/Mw/TP_MW_PS.tplan2 | 26 ++++++++------------------ test_purposes/Mw/TP_MW_SI.tplan2 | 8 ++++---- ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 5 files changed, 19 insertions(+), 35 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 7bbd8d6..45902ff 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -2296,7 +2296,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_CANCEL_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." @@ -2321,7 +2320,7 @@ Package TP_GM { the UE_A entity isRequestedToSend a CANCEL } then { - the IMS_P_CSCF_A entity receives an CANCEL containing + the IMS_P_CSCF_A entity receives a CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2337,7 +2336,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_CANCEL_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." @@ -2362,7 +2360,7 @@ Package TP_GM { the UE_A entity isRequestedToSend a CANCEL } then { - the IMS_P_CSCF_B entity sends an CANCEL containing + the IMS_P_CSCF_B entity sends a CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, @@ -2627,7 +2625,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_486INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." @@ -2668,7 +2665,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_486INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." @@ -2690,7 +2686,7 @@ Package TP_GM { Expected behaviour ensure that { when { - the UE_A entity isRequestedToSend a 486_INVITE + the UE_B entity isRequestedToSend a 486_INVITE } then { the IMS_P_CSCF_B entity receives a 486_INVITE containing @@ -2805,8 +2801,7 @@ Package TP_GM { the UE_A entity isAttachedTo the EPC_A and the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity hasAchieveInitialINVITE + the UE_B entity isRegisteredTo the IMS_B } Expected behaviour @@ -2845,8 +2840,7 @@ Package TP_GM { the UE_A entity isAttachedTo the EPC_A and the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and - the UE_B entity isRegisteredTo the IMS_B and - the UE_A entity isRequestedToSend a CANCEL + the UE_B entity isRegisteredTo the IMS_B } Expected behaviour diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 386c249..40eb67d 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -2243,8 +2243,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_BYE_04 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." @@ -2678,8 +2676,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_CANCEL_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." @@ -2728,8 +2724,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_CANCEL_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." @@ -2752,24 +2746,24 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the IMS_P_CSCF_B entity receives an CANCEL containing + the IMS_P_CSCF_B entity receives a CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the UE_B entity + from the IMS_S_CSCF_B entity } then { - the IMS_P_CSCF_B entity sends an CANCEL containing + the IMS_P_CSCF_B entity sends a CANCEL containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE ; - to the IMS_S_CSCF_B entity + to the UE_B entity } } @@ -2878,7 +2872,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_486INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." @@ -2926,7 +2919,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_486INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." @@ -3070,9 +3062,8 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_487INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" @@ -3118,9 +3109,8 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_487INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" @@ -3168,7 +3158,7 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_487INVITE_03 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" @@ -3216,7 +3206,7 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_487INVITE_04 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index 47c7ae4..7720359 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -2776,7 +2776,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_487INVITE_01 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -2824,7 +2824,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_487INVITE_02 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -2872,7 +2872,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_487INVITE_03 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" @@ -2920,7 +2920,7 @@ Package TP_MW_SI { TP Id TP_MW_SCSCF_487INVITE_04 // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..d640fce 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 diff --git a/ttcn/LibSip b/ttcn/LibSip index 2acb7ee..7d79616 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 2acb7ee656b6be066139a050b072e0d345c10022 +Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d -- GitLab From 7af5ce7b3010bbd3c8e814fa0d5224037a6395c8 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 16:16:19 +0200 Subject: [PATCH 089/176] Update SIP Session Abort TDs --- test_purposes/Mw/TP_MW_PS.tplan2 | 12 --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 90 ++++++++++++++++++ .../AtsImsIot_TP_behavior_MW_PS.ttcn | 93 +++++++++++++++++++ 3 files changed, 183 insertions(+), 12 deletions(-) diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 40eb67d..50da1fd 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -486,8 +486,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_07 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." @@ -523,8 +521,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_08 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." @@ -594,8 +590,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_10 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)." @@ -636,8 +630,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_11 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user network detachment." @@ -676,8 +668,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_12 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)." @@ -713,8 +703,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_13 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user network detachment." diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 33080f7..3b670ce 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -301,6 +301,49 @@ module AtsImsIot_TP_behavior_GM { } // End of group imsRegistration + group imsDeRegistration { + + /** + * @desc Verify that the P-CSCF successfully processes a user de-registration (no SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isTriggeredToDetachUser + * } + * then { + * the UE_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_REGISTER_07( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_07", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_07 + + } // End of group imsDeRegistration + group imsSubscribe { /** @@ -356,6 +399,53 @@ module AtsImsIot_TP_behavior_GM { } // End of group imsSubscribe + group imsNotify { + + /** + * @desc Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * to the IMS_P_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_NOTIFY_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_NOTIFY_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_NOTIFY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_NOTIFY_01 + + } // End of group imsNotify + group imsInvite { /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 8286d1c..608a5fa 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -326,6 +326,52 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of group imsRegistration + group imsDeRegistration { + + /** + * @desc Verify that the P-CSCF successfully processes a user de-registration (no SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * to the IMS_I_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_REGISTER_07( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_07", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_07 + + } // End of group imsDeRegistration + group imsSubscribe { /** @@ -390,6 +436,53 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of group imsSubscribe + group imsNotify { + + /** + * @desc Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_NOTIFY_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_NOTIFY_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_NOTIFY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_NOTIFY_01 + + } // End of group imsNotify + group imsInvite { /** -- GitLab From d4a7d9e6dbe67f7e3c53c335c73500ad817b1265 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 16:23:14 +0200 Subject: [PATCH 090/176] Add TTCN-3 module AtsImsIot_TP_behavior_MW_SI --- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 1658 +++++++++++++++++ 1 file changed, 1658 insertions(+) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn new file mode 100644 index 0000000..aca4110 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -0,0 +1,1658 @@ +/** + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at Mw interface at S-CSCF/IBCF + */ + +module AtsImsIot_TP_behavior_MW_SI { + + // LibIms + import from LibIms_Templates all; + import from LibIms_UpperTester all; + // LibIot + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + import from LibSip_SDPTypes all; + // LibMsrp + import from LibMsrp_TypesAndValues all; + import from LibMsrp_Functions all; + import from LibMsrp_Templates all; + import from DiameterS6a_Templates all; + import from DiameterS6a_PIXITS all; + import from DiameterGx_Templates all; + // LibDiameter + import from LibDiameter_Templates all; +// import from DiameterRx_Templates all; + // AtsImsIot + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Functions all; + + group imsMessages { + + /** + * @desc Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives the MESSAGE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ContentLength indicating value greater than 1300 bytes + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity forwards the MESSAGE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * PChargingVector containing + * orig_ioi indicating value PX_OPERATOR_ID_A, + * term_ioi indicating value PX_OPERATOR_ID_B, + * not PAccessNetworkInfo + * ContentLength indicating value greater than 1300 bytes + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_MESSAGE_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c), + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_MW_SCSCF_MESSAGE_01", + false, + false + )); + p_monitorCompRef.done; + } + + } // End of group imsMessages + + // 5.2 IMS Registration + group imsRegistration { + + /** + * @desc Verify that the P-CSCF successfully processes a first registration (Successful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * PChargingVector containing + * icid indicating value PX_TO_BE_DEFINED, + * PVisitedNetworkID indicating value PX_TO_BE_DEFINED, + * Require_HDR indicating value "path", + * Supported indicating value "path" + * ;; + * to the IMS_I_CSCF_A entity + * and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Path, + * Warning, + * PAccessNetworkInfo, + * WwwAuthenticate containing + * Digest, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth" + * ;; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_REGISTER_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_401Unauthorized_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_01 + + /** + * @desc Verify that the P-CSCF successfully processes a full registration (Successful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient + * ;; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient + * PChargingVector + * ;; + * from the IMS_I_CSCF_A entity + * and the IMS_P_CSCF_A entity sends an 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * AuthenticationInfo, + * PAccessNetworkInfo, + * PAssociatedURI indicating value PX_UE_A_SIP_URI, + * PChargingVector, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA" , + * term_ioi_parameter + * indicating value "Operator Identifier Of ImsB" + * Path, + * ServiceRoute + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_REGISTER_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME + }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_02 + + /** + * @desc Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_INVALID_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "" + * ;; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_INVALID_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "" + * ;; + * to the IMS_I_CSCF_A entity + * and the IMS_I_CSCF_A entity sends an 404_NotFound containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_REGISTER_03( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_03 + + } // End of group imsRegistration + + group imsDeRegistration { + + /** + * @desc Verify that the P-CSCF successfully processes a user de-registration (no SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * to the IMS_I_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_REGISTER_07( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_07", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_07 + + } // End of group imsDeRegistration + + group imsSubscribe { + + /** + * @desc Verify that the P-CSCF successfully processes a SUBSCRIBE. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an SUBSCRIBE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an SUBSCRIBE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * Event, + * Expires + * ; + * to the IMS_S_CSCF_A entity + * and the IMS_P_CSCF_A entity receives a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA + * ; + * from the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_SUBSCRIBE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_SUBSCRIBE_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_SUBSCRIBE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_SUBSCRIBE_01 + + } // End of group imsSubscribe + + group imsNotify { + + /** + * @desc Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_NOTIFY_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_NOTIFY_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_NOTIFY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_NOTIFY_01 + + } // End of group imsNotify + + group imsInvite { + + /** + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg).. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives an INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the IMS_S_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends an INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_INVITE_02 + + /** + * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a ReINVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a ReINVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_RE_INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_SCSCF_RE_INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_SCSCF_RE_INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_B entity previouslyEstablishedCallWith the UE_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a ReINVITE + * } + * then { + * the IMS_P_CSCF_B entity sends a ReINVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * fomr the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_RE_INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_SCSCF_RE_INVITE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_SCSCF_RE_INVITE_02 + + + + + } // End of group imsInvite + + group ims100Trying { + + /** + * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity hasAchieveInitialINVITE + * } + * then { + * the IMS_P_CSCF_A entity sends a 100_Trying + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_100Trying_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_MW_SCSCF_100Trying_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_100Trying_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity sends a 100_Trying containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity forwards the 100_Trying containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_100Trying_02( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_MW_SCSCF_100Trying_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_100Trying_02 + + } // End of group ims100Trying + + group ims180Ringing { + + /** + * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 180_Ringing containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 180_Ringing containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_180RINGING_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_MW_SCSCF_180RINGING_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_180RINGING_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg).. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * + * } + * then { + * the IMS_P_CSCF_B entity sends a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_S_CSCF_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_180RINGING_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_MW_SCSCF_180RINGING_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_180RINGING_02 + + } // End of group ims180Ringing + + group ims200Ok { + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PChargingVector, + * PChargingFunctionAddresses, + * PPreferredIdentity + * ; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_200OK_01( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + { 0, omit }, + "TP_MW_SCSCF_200OK_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_200OK_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PChargingVector, + * PChargingFunctionAddresses, + * PPreferredIdentity + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_200OK_02( + ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_SCSCF_200OK_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_200OK_02 + + } // End of group ims200Ok + + group imsAck { + + /** + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_ACK_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_ACK_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_ACK_01 + + /** + * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity sends an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * to the IMS_S_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_A entity sends an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_ACK_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_ACK_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_ACK_02 + + } // End of group imsAck + + group imsBye { + + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_BYE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_BYE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_BYE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_BYE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base(?)) }, + {}, + { 0, omit }, + "TP_MW_SCSCF_BYE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_BYE_02 + + /** + * @desc Verify that the P-CSCF successfully processes a BYE (Originating Network). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_BYE_03( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_BYE_Request_Base(?)) }, + {}, + { 0, omit }, + "TP_MW_SCSCF_BYE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_BYE_03 + + } // End of group imsBye + + group imsCancel { + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_CANCEL_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_CANCEL_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_CANCEL_01 + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity hasAchieveInitialINVITE and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_CANCEL_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_CANCEL_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_CANCEL_02 + + } + + group imsBusy { + + /** + * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_B entity isBusy + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_486INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_486INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_486INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_B entity isBusy + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a CANCEL containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends a CANCEL containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the IMS_S_CSCF_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_486INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_486INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_486INVITE_02 + + } // End of group imsBusy + + group imsRequestTermination { + + /** + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_S_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_487INVITE_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_487INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B entity receives a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the UE_B entity + * } + * then { + * the IMS_P_CSCF_B entity sends a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * to the IMS_S_CSCF_B entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_487INVITE_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_SCSCF_487INVITE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_02 + + } // End of group imsRequestTermination + +} // End of module AtsImsIot_TP_behavior_MW_SI -- GitLab From d0835e9cc6d422535ea6a8776904c369a835fc6f Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 23 Jun 2020 16:56:49 +0200 Subject: [PATCH 091/176] Update MW_SI --- test_purposes/Mw/TP_MW_SI.tplan2 | 32 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 7 - .../AtsImsIot_TP_behavior_MW_PS.ttcn | 6 - .../AtsImsIot_TP_behavior_MW_SI.ttcn | 293 +++++++----------- 4 files changed, 111 insertions(+), 227 deletions(-) diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index 7720359..6392a9b 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -21,8 +21,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_MESSAGE_01 - // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes" @@ -41,13 +39,15 @@ Package TP_MW_SI { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives a MESSAGE - containing ContentLength indicating value greater than 1300 bytes - ; + the IMS_S_CSCF_A entity receives a MESSAGE containing + ContentLength indicating value greater than 1300 bytes + ; from the IMS_I_CSCF_A entity } then { - the IMS_S_CSCF_A entity forwards the MESSAGE + the IMS_S_CSCF_A entity forwards the MESSAGE containing + ContentLength indicating value greater than 1300 bytes + ; to the IMS_IBCF_A entity } } @@ -56,8 +56,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_REGISTER_01 - // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." @@ -109,8 +107,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_REGISTER_02 - // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." @@ -174,8 +170,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_REGISTER_04 - // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." @@ -242,8 +236,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_REGISTER_05 - // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." @@ -326,8 +318,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_REGISTER_07 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." @@ -352,7 +342,7 @@ Package TP_MW_SI { from the IMS_I_CSCF_A entity } then { - the IMS_S_CSCF_A entity sends a 200 OK + the IMS_S_CSCF_A entity sends a 200_OK to the IMS_I_CSCF_A entity } } @@ -361,8 +351,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_REGISTER_08 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." @@ -484,8 +472,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_SUBSCRIBE_01 - // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." @@ -530,8 +516,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_SUBSCRIBE_02 - // TP_IMS_5044_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_14 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." @@ -728,7 +712,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_INVITE_01 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." @@ -787,7 +770,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_INVITE_02 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 3b670ce..fa76e5d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -29,13 +29,6 @@ module AtsImsIot_TP_behavior_GM { import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; - group imsMessages { /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 608a5fa..91fea3c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -23,12 +23,6 @@ module AtsImsIot_TP_behavior_MW_PS { import from LibMsrp_TypesAndValues all; import from LibMsrp_Functions all; import from LibMsrp_Templates all; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; // AtsImsIot import from AtsImsIot_TestSystem all; import from AtsImsIot_Templates all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index aca4110..149765e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -23,12 +23,6 @@ module AtsImsIot_TP_behavior_MW_SI { import from LibMsrp_TypesAndValues all; import from LibMsrp_Functions all; import from LibMsrp_Templates all; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; // AtsImsIot import from AtsImsIot_TestSystem all; import from AtsImsIot_Templates all; @@ -38,7 +32,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsMessages { /** - * @desc Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes + * @desc Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isNotRegisteredTo the IMS_A @@ -47,28 +41,16 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives the MESSAGE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, + * the IMS_S_CSCF_A entity receives the MESSAGE containing * ContentLength indicating value greater than 1300 bytes * ; - * from the UE_A entity + * from the IMS_I_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity forwards the MESSAGE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * PChargingVector containing - * orig_ioi indicating value PX_OPERATOR_ID_A, - * term_ioi indicating value PX_OPERATOR_ID_B, - * not PAccessNetworkInfo + * the IMS_S_CSCF_A entity forwards the MESSAGE containing * ContentLength indicating value greater than 1300 bytes * ;; - * to the IMS_S_CSCF_A entity + * to the IMS_IBCF_A entity * } * } */ @@ -97,7 +79,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsRegistration { /** - * @desc Verify that the P-CSCF successfully processes a first registration (Successful). + * @desc Verify that the S-CSCF successfully processes a first registration (Successful). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isNotRegisteredTo the IMS_A and @@ -107,28 +89,16 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a REGISTER containing + * the IMS_S_CSCF_A entity receives a REGISTER containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * ; - * from the UE_A entity + * from the IMS_I_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a REGISTER containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * PChargingVector containing - * icid indicating value PX_TO_BE_DEFINED, - * PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - * Require_HDR indicating value "path", - * Supported indicating value "path" - * ;; - * to the IMS_I_CSCF_A entity - * and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing + * the IMS_S_CSCF_A entity sends an 401_Unauthorized containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -143,7 +113,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Nonce indicating value "not empty", * qop indicating value "auth" * ;; - * to the UE_A entity + * to the IMS_I_CSCF_A entity * } * } */ @@ -154,7 +124,6 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.start( f_imsIot_receive( { - mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_401Unauthorized_Base) }, {}, @@ -168,7 +137,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_01 /** - * @desc Verify that the P-CSCF successfully processes a full registration (Successful). + * @desc Verify that the S-CSCF successfully processes a full registration (Successful). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isNotRegisteredTo the IMS_A and @@ -178,7 +147,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a REGISTER containing + * the IMS_S_CSCF_A entity receives a REGISTER containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -193,27 +162,10 @@ module AtsImsIot_TP_behavior_MW_SI { * qop indicating value "auth", * not SecurityClient * ;; - * from the UE_A entity + * from the IMS_I_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a REGISTER containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "not empty", - * qop indicating value "auth", - * not SecurityClient - * PChargingVector - * ;; - * from the IMS_I_CSCF_A entity - * and the IMS_P_CSCF_A entity sends an 200_Ok containing + * the IMS_S_CSCF_A entity sends an 200_Ok containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -229,7 +181,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Path, * ServiceRoute * ; - * to the UE_A entity + * to the IMS_I_CSCF_A entity * } * } */ @@ -253,83 +205,12 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_02 - /** - * @desc Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_P_CSCF_A entity receives a REGISTER containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_INVALID_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "" - * ;; - * from the UE_A entity - * } - * then { - * the IMS_P_CSCF_A entity sends a REGISTER containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_INVALID_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "" - * ;; - * to the IMS_I_CSCF_A entity - * and the IMS_I_CSCF_A entity sends an 404_NotFound containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * ; - * to the UE_A entity - * } - * } - */ - function f_mtc_check_TP_MW_SCSCF_REGISTER_03( - in ImsInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_404NotFound_Base) - }, - {}, - {0, omit}, - "TP_MW_SCSCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_03 - } // End of group imsRegistration group imsDeRegistration { /** - * @desc Verify that the P-CSCF successfully processes a user de-registration (no SIP session active). + * @desc Verify that the S-CSCF successfully processes a user de-registration (no SIP session active). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isRegisteredTo the IMS_A @@ -338,15 +219,13 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity sends a REGISTER containing + * the IMS_S_CSCF_A entity sends a REGISTER containing * Expire indicating value 0 * ; - * from the UE_A entity + * from the IMS_I_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a REGISTER containing - * Expire indicating value 0 - * ; + * the IMS_S_CSCF_A entity sends a 200_OK * to the IMS_I_CSCF_A entity * } * } @@ -358,7 +237,7 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.start( f_imsIot_receive( { - mw_SipRequest(mw_REGISTER_Request_Base) + mw_SipRequest(mw_200OK_Base) }, {}, {0, omit}, @@ -375,7 +254,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsSubscribe { /** - * @desc Verify that the P-CSCF successfully processes a SUBSCRIBE. + * @desc Verify that the S-CSCF successfully processes a SUBSCRIBE. * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isRegisteredTo the IMS_A @@ -384,33 +263,23 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives an SUBSCRIBE containing + * the IMS_S_CSCF_A entity receives an SUBSCRIBE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_A entity + * from the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends an SUBSCRIBE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE, - * Event, - * Expires - * ; - * to the IMS_S_CSCF_A entity - * and the IMS_P_CSCF_A entity receives a 200_Ok containing + * the IMS_S_CSCF_A entity receives a 200_Ok containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA * ; - * from the IMS_S_CSCF_A entity + * from the IMS_P_CSCF_A entity * } * } */ @@ -439,7 +308,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsNotify { /** - * @desc Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration. + * @desc Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration. * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isRegisteredTo the IMS_A @@ -448,16 +317,18 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a NOTIFY containing + * the IMS_S_CSCF_A entity receives a NOTIFY containing * Event indicating value "reg,de-reg" * ; * from the IMS_S_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends an NOTIFY containing + * the IMS_S_CSCF_A entity sends an NOTIFY containing * Event indicating value "reg,de-reg" * ; - * to the UE_A entity + * to the IMS_P_CSCF_A entity and + * the IMS_S_CSCF_A entity receives an 200_Ok + * from the IMS_P_CSCF_A entity * } * } */ @@ -481,12 +352,56 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_SCSCF_NOTIFY_01 + /** + * @desc IMS_P_CSCF_A + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * } + * then { + * the IMS_S_CSCF_A entity sends an NOTIFY containing + * Event indicating value "reg,de-reg" + * ; + * to the IMS_P_CSCF_A entity and + * the IMS_S_CSCF_A entity receives an 200_Ok + * from the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_NOTIFY_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_NOTIFY_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_NOTIFY_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_NOTIFY_02 + } // End of group imsNotify group imsInvite { /** - * @desc Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg).. + * @desc Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -497,7 +412,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives an INVITE containing + * the IMS_S_CSCF_A entity receives an INVITE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -509,10 +424,10 @@ module AtsImsIot_TP_behavior_MW_SI { * Version indicating value "0" * ; * ;; - * from the UE_A entity + * from the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends an INVITE containing + * the IMS_S_CSCF_A entity sends an INVITE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -524,7 +439,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Version indicating value "0" * ; * ;; - * to the IMS_S_CSCF_A entity + * to the IMS_IBCF_A entity * } * } */ @@ -547,7 +462,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_INVITE_01 /** - * @desc Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg). + * @desc Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -558,7 +473,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_B entity receives an INVITE containing + * the IMS_S_CSCF_B entity receives an INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -570,10 +485,10 @@ module AtsImsIot_TP_behavior_MW_SI { * Version indicating value "0" * ; * ;; - * from the IMS_S_CSCF_B entity + * from the IMS_IBCF_B entity * } * then { - * the IMS_P_CSCF_B entity sends an INVITE containing + * the IMS_S_CSCF_B entity sends an INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -585,7 +500,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Version indicating value "0" * ; * ;; - * to the UE_B entity + * to the IMS_P_CSCF_B entity * } * } */ @@ -608,7 +523,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_INVITE_02 /** - * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg). + * @desc Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -676,7 +591,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function TP_MW_SCSCF_RE_INVITE_01 /** - * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg). + * @desc Verify that the S-CSCF successfully processes an initial RE-INVITE (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -739,7 +654,7 @@ module AtsImsIot_TP_behavior_MW_SI { group ims100Trying { /** - * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -777,7 +692,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_100Trying_01 /** - * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg). + * @desc Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -832,7 +747,7 @@ module AtsImsIot_TP_behavior_MW_SI { group ims180Ringing { /** - * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -883,7 +798,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_180RINGING_01 /** - * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg).. + * @desc Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg).. * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -942,7 +857,7 @@ module AtsImsIot_TP_behavior_MW_SI { group ims200Ok { /** - * @desc Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -999,7 +914,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_200OK_01 /** - * @desc Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). + * @desc Verify that the S-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1066,7 +981,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsAck { /** - * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1117,7 +1032,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_ACK_01 /** - * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). + * @desc Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1172,7 +1087,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsBye { /** - * @desc Verify that the P-CSCF successfully processes a BYE (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a BYE (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1224,7 +1139,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_BYE_01 /** - * @desc Verify that the P-CSCF successfully processes a BYE (Terminating Leg). + * @desc Verify that the S-CSCF successfully processes a BYE (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1276,7 +1191,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_BYE_02 /** - * @desc Verify that the P-CSCF successfully processes a BYE (Originating Network). + * @desc Verify that the S-CSCF successfully processes a BYE (Originating Network). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1332,7 +1247,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsCancel { /** - * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a CANCEL (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1385,7 +1300,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_CANCEL_01 /** - * @desc Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg). + * @desc Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1442,7 +1357,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsBusy { /** - * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1494,7 +1409,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_486INVITE_01 /** - * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1550,7 +1465,7 @@ module AtsImsIot_TP_behavior_MW_SI { group imsRequestTermination { /** - * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1602,7 +1517,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_01 /** - * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and -- GitLab From 7b340a1e539fadfb91417a3d18abe95948931f88 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Tue, 23 Jun 2020 17:13:06 +0200 Subject: [PATCH 092/176] Iztok's update. --- ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn | 702 ++-- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 3880 +++++++++--------- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 2 +- ttcn/LibIms | 2 +- ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 1136 ++--- ttcn/LibSip | 2 +- 6 files changed, 2867 insertions(+), 2857 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn index d7cc26c..a225a26 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn @@ -3867,81 +3867,81 @@ group checksTC_IMS_SHARE_0009 { }//end group checksTC_IMS_SHARE_0009 - group checksTC_VxLTE_INT_ATT_01 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_S6A_MME_ULR_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( - md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED - ?, //vc_originHost_IUT, // containing an Origin-Host AVP - ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP - ?, //vc_destinationRealm, // containing a Destination-Realm AVP - m_userName(PX_USR_NAME), // containing a User-Name AVP - DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP - ?, // containing a ULR-Flags AVP with S6a-indicator bit set - m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP - )) } , "TP_S6A_MME_ULR_01", true ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_S6A_HSS_ULA_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( - mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS - md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED - ?, //vc_originHost_IUT, // containing an Origin-Host AVP - ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP - mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set - mw_subscriptionData_dummy // containing a Subscription-Data AVP - ) - ) } , "TP_S6A_MME_ULA_01", true ) - ); - p_monitorCompRef.done; - } //function*/ - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_GX_PCRF_CCA_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, - ?, //vc_originHost, - ?, //vc_originRealm, - ?, //vc_destinationRealm, - mw_cC_Request_Type(INITIAL_REQUEST_E), - *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) - ); - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) - ); - p_monitorCompRef.done; - - } //function*/ - - }//end group checksTC_VxLTE_INT_ATT_01 +// group checksTC_VxLTE_INT_ATT_01 { +// +// /** +// * @desc Starts monitor component behavior +// * @param p_monitorCompRef Reference to monitor component +// */ +// function f_mtc_check_TP_S6A_MME_ULR_01( +// ImsInterfaceMonitor p_monitorCompRef, +// boolean p_checkMessage +// ) runs on ImsTestCoordinator { +// +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( +// md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED +// ?, //vc_originHost_IUT, // containing an Origin-Host AVP +// ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP +// ?, //vc_destinationRealm, // containing a Destination-Realm AVP +// m_userName(PX_USR_NAME), // containing a User-Name AVP +// DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP +// ?, // containing a ULR-Flags AVP with S6a-indicator bit set +// m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP +// )) } , "TP_S6A_MME_ULR_01", true ) +// ); +// p_monitorCompRef.done; +// } +// +// +// /** +// * @desc Starts monitor component behavior +// * @param p_monitorCompRef Reference to monitor component +// */ +// function f_mtc_check_TP_S6A_HSS_ULA_01( +// ImsInterfaceMonitor p_monitorCompRef, +// boolean p_checkMessage +// ) runs on ImsTestCoordinator { +// +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( +// mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS +// md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED +// ?, //vc_originHost_IUT, // containing an Origin-Host AVP +// ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP +// mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set +// mw_subscriptionData_dummy // containing a Subscription-Data AVP +// ) +// ) } , "TP_S6A_MME_ULA_01", true ) +// ); +// p_monitorCompRef.done; +// } //function*/ +// +// /** +// * @desc Starts monitor component behavior +// * @param p_monitorCompRef Reference to monitor component +// */ +// function f_mtc_check_TP_GX_PCRF_CCA_01( +// ImsInterfaceMonitor p_monitorCompRef, +// boolean p_checkMessage +// ) runs on ImsTestCoordinator { +// +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, +// ?, //vc_originHost, +// ?, //vc_originRealm, +// ?, //vc_destinationRealm, +// mw_cC_Request_Type(INITIAL_REQUEST_E), +// *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) +// ); +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) +// ); +// p_monitorCompRef.done; +// +// } //function*/ +// +// }//end group checksTC_VxLTE_INT_ATT_01 group messagingChecks { @@ -5401,127 +5401,127 @@ group checksTC_IMS_SHARE_0009 { f_mtc_userRadioEnabled ( p_ue, false, true ); } // End of function f_mtc_check_TP_EPC_6004_01 - /** - * Starts monitor component behavior for TP_EPC_6005_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         EPC_PCRF triggers_termination of SIP_session 
-         *     }
-         *     then { 
-         *         EPC_PCRF sends Abort-Session-Request to IMS_P-CSCF containing 
-         *             Session-Id_AVP indicating session of SIP_session
-         *             Abort-Cause_AVP indicating BEARER_RELEASED (0)
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6005_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6005_01 - - /** - * Starts monitor component behavior for TP_EPC_6006_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF receives Abort-Session-Request for SIP_session 
-         *     }
-         *     then { 
-         *         IMS_P-CSCF sends 
-         *             Abort-Session-Answer to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
-         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
-         *         and IMS_P-CSCF sends 
-         *             Session-Termination-Request to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
-         *         and IMS_P-CSCF triggers_call_release 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6006_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6006_02 ( p_monitorCompRef ); - f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6006_01 - - /** - * Starts monitor component behavior for TP_EPC_6006_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF receives Abort-Session-Request for IMS_signalling 
-         *     }
-         *     then { 
-         *         IMS_P-CSCF sends 
-         *             Abort-Session-Answer to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
-         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
-         *         and IMS_P-CSCF sends 
-         *             Session-Termination-Request to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
-         *         and IMS_P-CSCF triggers_call_release 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6006_02( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_dummy } , "TP_EPC_6006_02", true ) - ); - p_monitorCompRef.done; - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6006_02 - - /** - * Starts monitor component behavior for TP_EPC_6009_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         EPC_PCRF receives Session-Termination-Request from IMS_P-CSCF containing 
-         *             Session-Id_AVP indicating session for SIP_session
-         *     }
-         *     then { 
-         *         EPC_PCRF sends Session-Termination-Answer to IMS_P-CSCF containing 
-         *             Session-Id_AVP indicating SIP_session value_received in Session-Termination-Request
-         *             Result-Code_AVP indicating DIAMETER_SUCCESS(2001) 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6009_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sTA_MSG := mw_STA_dummy } , "TP_EPC_6009_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6009_01 +// /** +// * Starts monitor component behavior for TP_EPC_6005_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// *
+//         * ensure that {
+//         *     when { 
+//         *         EPC_PCRF triggers_termination of SIP_session 
+//         *     }
+//         *     then { 
+//         *         EPC_PCRF sends Abort-Session-Request to IMS_P-CSCF containing 
+//         *             Session-Id_AVP indicating session of SIP_session
+//         *             Abort-Cause_AVP indicating BEARER_RELEASED (0)
+//         *     } 
+//         * } 
+//         * 
+// * @see TS 103 029 V3.1.1 clause 7.1.2 +// */ +// function f_mtc_check_TP_EPC_6005_01( +// ImsInterfaceMonitor p_monitorCompRef +// ) runs on ImsTestCoordinator { +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) +// ); +// p_monitorCompRef.done; +// } // End of function f_mtc_check_TP_EPC_6005_01 +// +// /** +// * Starts monitor component behavior for TP_EPC_6006_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// *
+//         * ensure that {
+//         *     when { 
+//         *         IMS_P-CSCF receives Abort-Session-Request for SIP_session 
+//         *     }
+//         *     then { 
+//         *         IMS_P-CSCF sends 
+//         *             Abort-Session-Answer to EPC_PCRF containing 
+//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
+//         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
+//         *         and IMS_P-CSCF sends 
+//         *             Session-Termination-Request to EPC_PCRF containing 
+//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
+//         *         and IMS_P-CSCF triggers_call_release 
+//         *     } 
+//         * } 
+//         * 
+// * @see TS 103 029 V3.1.1 clause 7.1.2 +// */ +// function f_mtc_check_TP_EPC_6006_01( +// ImsInterfaceMonitor p_monitorCompRef +// ) runs on ImsTestCoordinator { +// f_mtc_check_TP_EPC_6006_02 ( p_monitorCompRef ); +// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); +// } // End of function f_mtc_check_TP_EPC_6006_01 +// +// /** +// * Starts monitor component behavior for TP_EPC_6006_02 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// *
+//         * ensure that {
+//         *     when { 
+//         *         IMS_P-CSCF receives Abort-Session-Request for IMS_signalling 
+//         *     }
+//         *     then { 
+//         *         IMS_P-CSCF sends 
+//         *             Abort-Session-Answer to EPC_PCRF containing 
+//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
+//         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
+//         *         and IMS_P-CSCF sends 
+//         *             Session-Termination-Request to EPC_PCRF containing 
+//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
+//         *         and IMS_P-CSCF triggers_call_release 
+//         *     } 
+//         * } 
+//         * 
+// * @see TS 103 029 V3.1.1 clause 7.1.2 +// */ +// function f_mtc_check_TP_EPC_6006_02( +// ImsInterfaceMonitor p_monitorCompRef +// ) runs on ImsTestCoordinator { +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_dummy } , "TP_EPC_6006_02", true ) +// ); +// p_monitorCompRef.done; +// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); +// } // End of function f_mtc_check_TP_EPC_6006_02 +// +// /** +// * Starts monitor component behavior for TP_EPC_6009_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// *
+//         * ensure that {
+//         *     when { 
+//         *         EPC_PCRF receives Session-Termination-Request from IMS_P-CSCF containing 
+//         *             Session-Id_AVP indicating session for SIP_session
+//         *     }
+//         *     then { 
+//         *         EPC_PCRF sends Session-Termination-Answer to IMS_P-CSCF containing 
+//         *             Session-Id_AVP indicating SIP_session value_received in Session-Termination-Request
+//         *             Result-Code_AVP indicating DIAMETER_SUCCESS(2001) 
+//         *     } 
+//         * } 
+//         * 
+// * @see TS 103 029 V3.1.1 clause 7.1.2 +// */ +// function f_mtc_check_TP_EPC_6009_01( +// ImsInterfaceMonitor p_monitorCompRef +// ) runs on ImsTestCoordinator { +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { sTA_MSG := mw_STA_dummy } , "TP_EPC_6009_01", true ) +// ); +// p_monitorCompRef.done; +// } // End of function f_mtc_check_TP_EPC_6009_01 /** * Starts monitor component behavior for TP_EPC_6009_02 @@ -5621,76 +5621,76 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6012_01 - /** - * Starts monitor component behavior for TP_EPC_6012_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6012_02( - ImsInterfaceMonitor p_monitorCompRef, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); - f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6012_02 - - /** - * Starts monitor component behavior for TP_EPC_6013_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
-         *     }
-         *     then { 
-         *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
-         *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
-         *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
-         *             and one or more Media-Component-Description_AVP containing 
-         *                 Media-Component-Number_AVP indicating value 0
-         *                 and Flow-Description_AVP indicating 
-         *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-         *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-         *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-         *                 and Flow-Description_AVP indicating 
-         *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-         *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-         *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-         *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
-         *                 and Flow-Status_AVP indicating ENABLED(2)
-         *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.2.1.1 - */ - function f_mtc_check_TP_EPC_6013_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_EPC_6013_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6013_01 - - /** - * Starts monitor component behavior for TP_EPC_6014_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6014_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_EPC_6014_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6014_01 +// /** +// * Starts monitor component behavior for TP_EPC_6012_02 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// */ +// function f_mtc_check_TP_EPC_6012_02( +// ImsInterfaceMonitor p_monitorCompRef, +// ImsInterfaceMonitor p_monitorCompRef_B +// ) runs on ImsTestCoordinator { +// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); +// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); +// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); +// } // End of function f_mtc_check_TP_EPC_6012_02 + +// /** +// * Starts monitor component behavior for TP_EPC_6013_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// *
+//         * ensure that {
+//         *     when { 
+//         *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
+//         *     }
+//         *     then { 
+//         *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
+//         *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
+//         *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
+//         *             and one or more Media-Component-Description_AVP containing 
+//         *                 Media-Component-Number_AVP indicating value 0
+//         *                 and Flow-Description_AVP indicating 
+//         *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+//         *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+//         *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+//         *                 and Flow-Description_AVP indicating 
+//         *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+//         *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+//         *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+//         *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
+//         *                 and Flow-Status_AVP indicating ENABLED(2)
+//         *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
+//         *     } 
+//         * } 
+//         * 
+// * @see TS 103 029 V3.1.1 clause 7.2.1.1 +// */ +// function f_mtc_check_TP_EPC_6013_01( +// ImsInterfaceMonitor p_monitorCompRef +// ) runs on ImsTestCoordinator { +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_EPC_6013_01", true ) +// ); +// p_monitorCompRef.done; +// } // End of function f_mtc_check_TP_EPC_6013_01 +// +// /** +// * Starts monitor component behavior for TP_EPC_6014_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// */ +// function f_mtc_check_TP_EPC_6014_01( +// ImsInterfaceMonitor p_monitorCompRef +// ) runs on ImsTestCoordinator { +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_EPC_6014_01", true ) +// ); +// p_monitorCompRef.done; +// } // End of function f_mtc_check_TP_EPC_6014_01 /** * Starts monitor component behavior for TP_EPC_6015_01 @@ -5724,33 +5724,33 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6016_01 - /** - * Starts monitor component behavior for TP_EPC_6017_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         UE_A sends REGISTER for de-registration to IMS_P-CSCF 
-         *     } 
-         *     then { 
-         *          UE_A receives 2xx_Response from IMS_P-CSCF 
-         *          and IMS_P-CSCF sends Session-Termination-Request to EPC_PCRF containing 
-         *              Session Session-Id_AVP indicating session for IMS_signalling session 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.2.2 - */ - function f_mtc_check_TP_EPC_6017_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6018_01 ( p_monitorCompRef, p_checkMessage ); - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef_B ); - } // End of function f_mtc_check_TP_EPC_6017_01 +// /** +// * Starts monitor component behavior for TP_EPC_6017_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// *
+//         * ensure that {
+//         *     when { 
+//         *         UE_A sends REGISTER for de-registration to IMS_P-CSCF 
+//         *     } 
+//         *     then { 
+//         *          UE_A receives 2xx_Response from IMS_P-CSCF 
+//         *          and IMS_P-CSCF sends Session-Termination-Request to EPC_PCRF containing 
+//         *              Session Session-Id_AVP indicating session for IMS_signalling session 
+//         *     } 
+//         * } 
+//         * 
+// * @see TS 103 029 V3.1.1 clause 7.2.2 +// */ +// function f_mtc_check_TP_EPC_6017_01( +// ImsInterfaceMonitor p_monitorCompRef, +// boolean p_checkMessage, +// ImsInterfaceMonitor p_monitorCompRef_B +// ) runs on ImsTestCoordinator { +// f_mtc_check_TP_EPC_6018_01 ( p_monitorCompRef, p_checkMessage ); +// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef_B ); +// } // End of function f_mtc_check_TP_EPC_6017_01 /** * Starts monitor component behavior for TP_EPC_6018_01 @@ -5787,20 +5787,20 @@ group checksTC_IMS_SHARE_0009 { f_mtc_check_TP_EPC_6010_01 ( p_monitorCompRef, p_checkMessage ); } // End of function f_mtc_check_TP_EPC_6021_01 - /** - * Starts monitor component behavior for TP_EPC_6022_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6022_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_EPC_6022_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6022_01 +// /** +// * Starts monitor component behavior for TP_EPC_6022_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// */ +// function f_mtc_check_TP_EPC_6022_01( +// ImsInterfaceMonitor p_monitorCompRef +// ) runs on ImsTestCoordinator { +// p_monitorCompRef.start ( +// f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_EPC_6022_01", true ) +// ); +// p_monitorCompRef.done; +// } // End of function f_mtc_check_TP_EPC_6022_01 /** * Starts monitor component behavior for TP_EPC_6024_01 @@ -5822,20 +5822,20 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6024_01 - /** - - * Starts monitor component behavior for TP_EPC_6026_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6026_01( - ImsInterfaceMonitor p_monitorCompRef, - IotEquipmentUser p_ue - ) runs on ImsTestCoordinator { - f_mtc_triggerUserCommand ( p_ue, "Trigger registration expiration for UE A"); - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6026_01 +// /** +// +// * Starts monitor component behavior for TP_EPC_6026_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// */ +// function f_mtc_check_TP_EPC_6026_01( +// ImsInterfaceMonitor p_monitorCompRef, +// IotEquipmentUser p_ue +// ) runs on ImsTestCoordinator { +// f_mtc_triggerUserCommand ( p_ue, "Trigger registration expiration for UE A"); +// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); +// } // End of function f_mtc_check_TP_EPC_6026_01 /** * Starts monitor component behavior for TP_EPC_6027_06 @@ -5873,36 +5873,36 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6029_03 - /** - * Starts monitor component behavior for TP_EPC_6033_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { IMS_P-CSCF receives INVITE with no SDP from UE_A }
-         *         then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         *         when { IMS_P-CSCF receives 200_response on INVITE with no SDP from IMS_S-CSCF }
-         *             then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         *             when { IMS_P-CSCF receives ACK with no SDP from UE_A }
-         *                 then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         * }
-         * 
- */ - function f_mtc_check_TP_EPC_6033_01( - ImsInterfaceMonitor p_monitorCompRef_A, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - p_monitorCompRef_A.start( - f_imsIot_receive( - { mw_SipRequest ( mw_INVITE_Request_Base ) }, { }, { 0, omit }, - "TP_EPC_6033_01 INVITE", false, false ) - ); - p_monitorCompRef_A.done; - f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef_A, false ); - f_mtc_check_TP_EPC_6029_03 ( p_monitorCompRef_A, false ); - f_mtc_check_TP_EPC_6013_01 ( p_monitorCompRef_B ); - } // End of function f_mtc_check_TP_EPC_6033_01 +// /** +// * Starts monitor component behavior for TP_EPC_6033_01 +// * @param p_monitorCompRef Reference to monitor component +// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). +// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. +// *
+//         * ensure that {
+//         *     when { IMS_P-CSCF receives INVITE with no SDP from UE_A }
+//         *         then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+//         *         when { IMS_P-CSCF receives 200_response on INVITE with no SDP from IMS_S-CSCF }
+//         *             then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+//         *             when { IMS_P-CSCF receives ACK with no SDP from UE_A }
+//         *                 then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+//         * }
+//         * 
+// */ +// function f_mtc_check_TP_EPC_6033_01( +// ImsInterfaceMonitor p_monitorCompRef_A, +// ImsInterfaceMonitor p_monitorCompRef_B +// ) runs on ImsTestCoordinator { +// p_monitorCompRef_A.start( +// f_imsIot_receive( +// { mw_SipRequest ( mw_INVITE_Request_Base ) }, { }, { 0, omit }, +// "TP_EPC_6033_01 INVITE", false, false ) +// ); +// p_monitorCompRef_A.done; +// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef_A, false ); +// f_mtc_check_TP_EPC_6029_03 ( p_monitorCompRef_A, false ); +// f_mtc_check_TP_EPC_6013_01 ( p_monitorCompRef_B ); +// } // End of function f_mtc_check_TP_EPC_6033_01 /** * Starts monitor component behavior for TP_EPC_6034_02 diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 6cdd4bd..53c1cb5 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -1,65 +1,65 @@ /** - * @author STF 370 + * @author STF 370 * @version $Id: $ - * @desc This module provides common function for TestCoordinator component. + * @desc This module provides common function for TestCoordinator component. */ module AtsImsIot_Functions { - import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; } - import from AtsImsIot_TestSystem all; - import from LibSip_SIPTypesAndValues all; - import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } - import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } - import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter;} + import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; } + import from AtsImsIot_TestSystem all; + import from LibSip_SIPTypesAndValues all; + import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } + import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } + import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter;} import from LibIms_UpperTester all; - import from LibUpperTester all; - import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } - import from LibIot_Functions { function f_getE2EVerdict; } - import from LibIot_TypesAndValues { type DefaultList, MonitorInterfaceInfo; } + import from LibUpperTester all; + import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } + import from LibIot_Functions { function f_getE2EVerdict; } + import from LibIot_TypesAndValues { type DefaultList, MonitorInterfaceInfo; } import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} - import from LibIot_VxLTE_Functions {function f_SipMonitorInterface_available,f_DiameterMonitorInterface_available;} - - group ue { - - /** - * @desc - * Starts user component behavior for triggering the registration - * procedures at the UE from test coordinator. - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userRegistration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) - runs on TestCoordinator - return boolean { - var boolean v_status := true; - // TODO Investigate if f_PR_user_home_registration is to be removed - // Reason: Thre is no difference when triggering UE to register in home or visiting NW - if( p_userInfo.publicId == "dummy" ) { return false; } - - v_status := f_mtc_userRegister(p_userCompRef, p_userInfo.publicId, p_userInfo.privateId, p_userInfo.password); - return v_status; - } - - /** - * @desc - * Starts user component behavior for checking the successful - * registration. - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userCheckRegistration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) - runs on TestCoordinator return boolean { - var boolean v_status := true; - if( p_userInfo.publicId == "dummy" ) { return false; } - v_status := f_mtc_userCheckRegistrationSuccessful(p_userCompRef); - return v_status; - } - + import from LibIot_VxLTE_Functions {function f_SipMonitorInterface_available,f_DiameterMonitorInterface_available;} + + group ue { + + /** + * @desc + * Starts user component behavior for triggering the registration + * procedures at the UE from test coordinator. + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userRegistration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) + runs on TestCoordinator + return boolean { + var boolean v_status := true; + // TODO Investigate if f_PR_user_home_registration is to be removed + // Reason: Thre is no difference when triggering UE to register in home or visiting NW + if( p_userInfo.publicId == "dummy" ) { return false; } + + v_status := f_mtc_userRegister(p_userCompRef, p_userInfo.publicId, p_userInfo.privateId, p_userInfo.password); + return v_status; + } + + /** + * @desc + * Starts user component behavior for checking the successful + * registration. + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userCheckRegistration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) + runs on TestCoordinator return boolean { + var boolean v_status := true; + if( p_userInfo.publicId == "dummy" ) { return false; } + v_status := f_mtc_userCheckRegistrationSuccessful(p_userCompRef); + return v_status; + } + /** * @desc * Starts user component behavior for checking that UE @@ -69,103 +69,103 @@ module AtsImsIot_Functions { * true in case of successfull execution of the trigger command * otherwise false **/ - function f_mtc_userCheckNoRegistration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) - runs on TestCoordinator return boolean { - var boolean v_status := true; - if( p_userInfo.publicId == "dummy" ) { return true; } - v_status := f_mtc_userCheckRegistrationUnsuccessful(p_userCompRef); - return v_status; - } - - /** - * @desc Trigger UE given by p_ueRef to initiate an MO call - * @param p_ueRef Reference to IMS UE user component - * @param p_calledParty ImsUserInfo of called party - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userInitiateCall(EquipmentUser p_ueRef, ImsUserInfo p_calledParty) - runs on TestCoordinator return boolean { - var boolean v_status := true; - if( p_calledParty.publicId == "dummy" ) { return true; } - v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); - return v_status; - } - - /** - * - * @desc Starts user component behaviour for checking that the User - * Call has been initiated - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userInitiateCallSuccessful(EquipmentUser p_userCompRef) - runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_checkUserCallIsInitiated()); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - return v_success; - } - - /** - * @desc Answer call - * @param p_ueRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userAnswerCall(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - v_status := f_mtc_userAnswerCallSuccessful(p_ueRef); - return v_status; - } - - /** - * - * @desc Starts user component behaviour for checking that the User - * Call has been answered - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userAnswerCallSuccessful(EquipmentUser p_userCompRef) - runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_checkUserCallIsAnswered()); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - return v_success; - } - - /** - * @desc End the call - * @param p_ueRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_EndCall(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - v_status := f_mtc_userEndCallSuccessful(p_ueRef); - return v_status; - } + function f_mtc_userCheckNoRegistration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) + runs on TestCoordinator return boolean { + var boolean v_status := true; + if( p_userInfo.publicId == "dummy" ) { return true; } + v_status := f_mtc_userCheckRegistrationUnsuccessful(p_userCompRef); + return v_status; + } + + /** + * @desc Trigger UE given by p_ueRef to initiate an MO call + * @param p_ueRef Reference to IMS UE user component + * @param p_calledParty ImsUserInfo of called party + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userInitiateCall(EquipmentUser p_ueRef, ImsUserInfo p_calledParty) + runs on TestCoordinator return boolean { + var boolean v_status := true; + if( p_calledParty.publicId == "dummy" ) { return true; } + v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); + return v_status; + } + + /** + * + * @desc Starts user component behaviour for checking that the User + * Call has been initiated + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userInitiateCallSuccessful(EquipmentUser p_userCompRef) + runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_checkUserCallIsInitiated()); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; + } + return v_success; + } + + /** + * @desc Answer call + * @param p_ueRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userAnswerCall(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + v_status := f_mtc_userAnswerCallSuccessful(p_ueRef); + return v_status; + } + + /** + * + * @desc Starts user component behaviour for checking that the User + * Call has been answered + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userAnswerCallSuccessful(EquipmentUser p_userCompRef) + runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_checkUserCallIsAnswered()); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; + } + return v_success; + } + + /** + * @desc End the call + * @param p_ueRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_EndCall(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + v_status := f_mtc_userEndCallSuccessful(p_ueRef); + return v_status; + } /** * @desc Trigger UE given by p_ueRef to initiate an MO call @@ -186,303 +186,289 @@ module AtsImsIot_Functions { f_mtc_userCheckCallEstablished(p_ueRefB); if(f_getE2EVerdict() == pass) { - v_success := true; + v_success := true; } return v_success; } - - /** - * - * @desc Starts user component behaviour for checking that the User - * Call has been ended - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userEndCallSuccessful(EquipmentUser p_userCompRef) - runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_checkUserCallIsEnded()); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - return v_success; - } - - /** - * @desc Trigger UE given by p_ueRef to add a new media stream - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userAddNewMediaStream(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - v_status := f_mtc_userAddNewMediaStreamSuccessful(p_ueRef); - return v_status; - } - - /** - * - * @desc Starts user component behaviour for checking that - * a new media stream has been added - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userAddNewMediaStreamSuccessful(EquipmentUser p_userCompRef) - runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_checkUserAddNewMediaStream()); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - return v_success; - } - - /** - * @desc Trigger UE given by p_ueRef to remove a media stream - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userRemoveMediaStream(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - v_status := f_mtc_userRemoveNewMediaStreamSuccessful(p_ueRef); - return v_status; - } - - /** - * - * @desc Starts user component behaviour for checking that - * a new media stream has been added - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userRemoveNewMediaStreamSuccessful(EquipmentUser p_userCompRef) - runs on TestCoordinator return boolean { - var boolean v_success := false; + + /** + * + * @desc Starts user component behaviour for checking that the User + * Call has been ended + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userEndCallSuccessful(EquipmentUser p_userCompRef) + runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_checkUserCallIsEnded()); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; + } + return v_success; + } + + /** + * @desc Trigger UE given by p_ueRef to add a new media stream + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userAddNewMediaStream(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + v_status := f_mtc_userAddNewMediaStreamSuccessful(p_ueRef); + return v_status; + } + + /** + * + * @desc Starts user component behaviour for checking that + * a new media stream has been added + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userAddNewMediaStreamSuccessful(EquipmentUser p_userCompRef) + runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_checkUserAddNewMediaStream()); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; + } + return v_success; + } + + /** + * @desc Trigger UE given by p_ueRef to remove a media stream + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userRemoveMediaStream(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + v_status := f_mtc_userRemoveNewMediaStreamSuccessful(p_ueRef); + return v_status; + } + + /** + * + * @desc Starts user component behaviour for checking that + * a new media stream has been added + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userRemoveNewMediaStreamSuccessful(EquipmentUser p_userCompRef) + runs on TestCoordinator return boolean { + var boolean v_success := false; - p_userCompRef.start(f_checkUserRemoveNewMediaStream()); + p_userCompRef.start(f_checkUserRemoveNewMediaStream()); - p_userCompRef.done; + p_userCompRef.done; - if(f_getE2EVerdict() == pass) { - v_success := true; - } - return v_success; - } - - - /** - * @desc Trigger UE given by p_ueRef to check the remove of a media stream - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userCheckRemoveMediaStream(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Trigger UE given by p_ueRef to add a new media stream - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userModifiyMediaStream(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Trigger UE given by p_ueRef to add a new media stream - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userCheckNewMediaStream(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - - /** - * @desc Trigger UE given by p_ueRef to loose conectifity - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userLooseConnection(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Trigger UE given by p_ueRef to enter CANCEL current call - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userTriggerCancelCall(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Trigger UE given by p_ueRef to enter BYE current call + if(f_getE2EVerdict() == pass) { + v_success := true; + } + return v_success; + } + + + /** + * @desc Trigger UE given by p_ueRef to check the remove of a media stream + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userCheckRemoveMediaStream(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Trigger UE given by p_ueRef to add a new media stream + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userModifiyMediaStream(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Trigger UE given by p_ueRef to add a new media stream + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userCheckNewMediaStream(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + + /** + * @desc Trigger UE given by p_ueRef to loose conectifity + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userLooseConnection(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Trigger UE given by p_ueRef to enter CANCEL current call * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command * otherwise false */ - function f_mtc_userTriggerReleaseCall(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Trigger UE given by p_ueRef to enter HOLD state - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userTriggerHold(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - /** - * @desc Trigger UE given by p_ueRef to leave HOLD state and resume pending call - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userTriggerResume(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Check that UE given by p_ueRef is ringing - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckRinging(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Check that UE given by p_ueRef reports a successfull call establishment - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckCallEstablished(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** + function f_mtc_userTriggerCancelCall(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Trigger UE given by p_ueRef to enter HOLD state + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userTriggerHold(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + /** + * @desc Trigger UE given by p_ueRef to leave HOLD state and resume pending call + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userTriggerResume(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Check that UE given by p_ueRef is ringing + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckRinging(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Check that UE given by p_ueRef reports a successfull call establishment + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckCallEstablished(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** * @desc Check that UE given by p_ueRef reports a not successfull call establishment * @param p_userCompRef Reference to IMS UE user component * @return true or false */ - function f_mtc_userCheckCallCannotBeEstablished(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - - /** - * @desc Check that UE by p_ueRef given reports that its peer is ringing - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckPeerIsRinging(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - /** - * @desc Check that UE by p_ueRef given reports HOLD state - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckUserOnHold(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - /** - * @desc Check that UE by p_ueRef given reports that call has been resumed - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckCallResumed(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - /** - * @desc Check that UE by p_ueRef given reports that call has ended - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckCallEnded(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } + function f_mtc_userCheckCallCannotBeEstablished(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + + /** + * @desc Check that UE by p_ueRef given reports that its peer is ringing + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckPeerIsRinging(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + /** + * @desc Check that UE by p_ueRef given reports HOLD state + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckUserOnHold(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + /** + * @desc Check that UE by p_ueRef given reports that call has been resumed + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckCallResumed(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + /** + * @desc Check that UE by p_ueRef given reports that call has ended + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckCallEnded(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } /** * @desc Check that UE by p_ueRef given reports that call is terminated * @param p_userCompRef Reference to IMS UE user component @@ -492,218 +478,218 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - return v_status; + return v_status; + } + /** + * @desc Check that UE by p_ueRef given reports that call is no longer offered + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckCallNoLongerOffered(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Check that UE by p_ueRef given reports that call has been cancelled + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckCallCancelled(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Check that UE by p_ueRef given reports that call has been rejected due to ACR + * @param p_userCompRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_userCheckCallRejectedACR(EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Start capturing and monitoring traffic on all configured interfaces + * @return true or false + */ + function f_mtc_StartAllTrafficCapture() + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + /** + * @desc Starts user component behaviour for registration from test coordinator + * @param p_userCompRef Reference to IMS UE user component + * @param p_publicId public user identity + * @param p_privateId private user identity + * @param p_pw user password + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userRegister(EquipmentUser p_userCompRef, charstring p_publicId, charstring p_privateId, charstring p_pw) runs on TestCoordinator return boolean { + // TODO server address parameter may needed + var boolean v_success := false; + + p_userCompRef.start(f_userRegistration(p_publicId, p_privateId, p_pw)); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; + } + + return v_success; + } + + function f_mtc_userCheckRegistrationSuccessful(EquipmentUser p_userCompRef) runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_checkUserIsRegistered()); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; + } + + return v_success; + } + /** + * + * @desc Starts user component behaviour for checking that the UE + * is not registered + * @param p_userCompRef Reference to IMS UE user component + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userCheckRegistrationUnsuccessful(EquipmentUser p_userCompRef) + runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_checkUserIsNotRegistered()); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; } - /** - * @desc Check that UE by p_ueRef given reports that call is no longer offered - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckCallNoLongerOffered(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Check that UE by p_ueRef given reports that call has been cancelled - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckCallCancelled(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Check that UE by p_ueRef given reports that call has been rejected due to ACR - * @param p_userCompRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_userCheckCallRejectedACR(EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Start capturing and monitoring traffic on all configured interfaces - * @return true or false - */ - function f_mtc_StartAllTrafficCapture() - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - /** - * @desc Starts user component behaviour for registration from test coordinator - * @param p_userCompRef Reference to IMS UE user component - * @param p_publicId public user identity - * @param p_privateId private user identity - * @param p_pw user password - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userRegister(EquipmentUser p_userCompRef, charstring p_publicId, charstring p_privateId, charstring p_pw) runs on TestCoordinator return boolean { - // TODO server address parameter may needed - var boolean v_success := false; - - p_userCompRef.start(f_userRegistration(p_publicId, p_privateId, p_pw)); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - - return v_success; - } - - function f_mtc_userCheckRegistrationSuccessful(EquipmentUser p_userCompRef) runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_checkUserIsRegistered()); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - - return v_success; - } - /** - * - * @desc Starts user component behaviour for checking that the UE - * is not registered - * @param p_userCompRef Reference to IMS UE user component - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userCheckRegistrationUnsuccessful(EquipmentUser p_userCompRef) - runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_checkUserIsNotRegistered()); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - return v_success; - } - - /** - * @desc Starts user component behaviour for registration from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @param publicId public user identity - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ - function f_mtc_userDeregister(EquipmentUser p_userCompRef, charstring p_publicId) runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_userDeregistration(p_publicId)); - - p_userCompRef.done; - - if( f_getE2EVerdict() == pass) { - v_success := true; - } - - return v_success; - } - - /** - * - * @desc Starts user component behaviour for sending a message from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @param p_content Content of meessage to be sent - */ - function f_mtc_userSendMessage(EquipmentUser p_userCompRef, charstring p_content) runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_userSendMessage(p_content)); - - p_userCompRef.done; - - if(f_getE2EVerdict() == pass) { - v_success := true; - } - - return v_success; - } - - /** - * - * @desc Starts user component behaviour for checking message receipt from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @param p_content Content of meessage to be received - */ - function f_mtc_userCheckMessageReceipt(EquipmentUser p_userCompRef) runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_userCheckMessageReceipt()); - - p_userCompRef.done; - + return v_success; + } + + /** + * @desc Starts user component behaviour for registration from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @param publicId public user identity + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ + function f_mtc_userDeregister(EquipmentUser p_userCompRef, charstring p_publicId) runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_userDeregistration(p_publicId)); + + p_userCompRef.done; + + if( f_getE2EVerdict() == pass) { + v_success := true; + } + + return v_success; + } + + /** + * + * @desc Starts user component behaviour for sending a message from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @param p_content Content of meessage to be sent + */ + function f_mtc_userSendMessage(EquipmentUser p_userCompRef, charstring p_content) runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_userSendMessage(p_content)); + + p_userCompRef.done; + + if(f_getE2EVerdict() == pass) { + v_success := true; + } + + return v_success; + } + + /** + * + * @desc Starts user component behaviour for checking message receipt from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @param p_content Content of meessage to be received + */ + function f_mtc_userCheckMessageReceipt(EquipmentUser p_userCompRef) runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_userCheckMessageReceipt()); + + p_userCompRef.done; + if(f_getE2EVerdict() == pass) { - v_success := true; - } - - return v_success; - } - - /** - * - * @desc Starts user component behaviour for checking message receipt from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @param p_content Content of meessage to be received - */ - function f_mtc_userCheckMessageNotDelivered(EquipmentUser p_userCompRef) runs on TestCoordinator return boolean { - var boolean v_success := false; - - p_userCompRef.start(f_userCheckMessageNotDelivered()); - - p_userCompRef.done; - + v_success := true; + } + + return v_success; + } + + /** + * + * @desc Starts user component behaviour for checking message receipt from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @param p_content Content of meessage to be received + */ + function f_mtc_userCheckMessageNotDelivered(EquipmentUser p_userCompRef) runs on TestCoordinator return boolean { + var boolean v_success := false; + + p_userCompRef.start(f_userCheckMessageNotDelivered()); + + p_userCompRef.done; + if(f_getE2EVerdict() == pass) { - v_success := true; - } - - return v_success; - } - - /** - * @desc Trigger UE given by p_ueRef to send the required message indicated by p_command - * @param p_userCompRef Reference to IMS UE user component - * @param p_command Required Message to be sent - * @return - * true in case of successfull execution of the trigger command - * otherwise false - */ + v_success := true; + } + + return v_success; + } + + /** + * @desc Trigger UE given by p_ueRef to send the required message indicated by p_command + * @param p_userCompRef Reference to IMS UE user component + * @param p_command Required Message to be sent + * @return + * true in case of successfull execution of the trigger command + * otherwise false + */ function f_mtc_triggerUserCommand ( EquipmentUser p_userCompRef, EquipmentCommand p_command ) runs on TestCoordinator return boolean { - var boolean v_success := false; - p_userCompRef.start ( f_sendEquipmentCmd ( valueof ( m_EQ_Request ( p_command, { } ) ) ) ); - p_userCompRef.done; - if ( f_getE2EVerdict( ) == pass ) { v_success := true; } - return v_success; - } + var boolean v_success := false; + p_userCompRef.start ( f_sendEquipmentCmd ( valueof ( m_EQ_Request ( p_command, { } ) ) ) ); + p_userCompRef.done; + if ( f_getE2EVerdict( ) == pass ) { v_success := true; } + return v_success; + } /** * @desc Trigger UE given by p_ueRef to Verify that user is informed - * of its presence status update + * of its presence status update * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -718,7 +704,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to Verify that user is informed - * of peer user presence information + * of peer user presence information * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -733,7 +719,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to Verify that user is not informed - * of peer user presence information + * of peer user presence information * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -748,7 +734,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to subscribes presence - * information from peer user + * information from peer user * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -763,7 +749,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to subscribes to resource list - * userPRES_list containing peer user SIP URI + * userPRES_list containing peer user SIP URI * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -793,8 +779,8 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that originating user - * receives an authorization request from peer user to see - * its own presence information + * receives an authorization request from peer user to see + * its own presence information * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -809,7 +795,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to authorizes peer user to be - * informed of its own presence information + * informed of its own presence information * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -833,7 +819,7 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - //if( p_calledParty.publicId == "dummy" ) { return true; } + //if( p_calledParty.publicId == "dummy" ) { return true; } //v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); return v_status; } @@ -841,7 +827,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that Conference is being set up + * that Conference is being set up * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -856,7 +842,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that Conference is established + * that Conference is established * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -881,7 +867,7 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - //if( p_calledParty.publicId == "dummy" ) { return true; } + //if( p_calledParty.publicId == "dummy" ) { return true; } //v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); return v_status; } @@ -930,7 +916,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify user is alerted when - * peer joins the conference call + * peer joins the conference call * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -983,14 +969,14 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - //if( p_calledParty.publicId == "dummy" ) { return true; } + //if( p_calledParty.publicId == "dummy" ) { return true; } //v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); return v_status; } /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * of incoming chat invitation + * of incoming chat invitation * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1005,7 +991,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to initiate chat 1-to-Many - * of incoming chat invitation + * of incoming chat invitation * @param p_ueRef Reference to IMS UE user component * @param p_calledParty_1 Reference to UE 1 * @param p_calledParty_2 Reference to UE 2 @@ -1022,7 +1008,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to Add a new participant in a chat 1-to-Many - * of incoming chat invitation + * of incoming chat invitation * @param p_ueRef Reference to IMS UE user component * @param p_calledParty Reference to the new participant * @return @@ -1038,7 +1024,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that invitation to 1-to-1 chat session has reached + * that invitation to 1-to-1 chat session has reached * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1053,7 +1039,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that invitation to 1-to-Many chat session has reached + * that invitation to 1-to-Many chat session has reached * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1124,7 +1110,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is - * informed that 1-to-1 chat session has ended + * informed that 1-to-1 chat session has ended * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1139,7 +1125,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to automatically accepts - * 1-to-1 chat invitation + * 1-to-1 chat invitation * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1154,7 +1140,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to rejects the invitation - * to chat session + * to chat session * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1169,7 +1155,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that there is no answer + * that there is no answer * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1184,7 +1170,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef given reports that call has been - * cancelled + * cancelled * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1199,7 +1185,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef given reports that call has been - * terminated + * terminated * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1235,12 +1221,12 @@ module AtsImsIot_Functions { * otherwise false * @see RFC 4976 */ - function f_mtc_userCheckMSRPAuthenticated(EquipmentUser p_ueRef) + function f_mtc_userCheckMSRPAuthenticated(EquipmentUser p_ueRef) runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } + var boolean v_status := true; + // TODO + return v_status; + } /** * @desc Trigger UE given by p_ueRef to initiate chat conference @@ -1254,14 +1240,14 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - //if( p_calledParty.publicId == "dummy" ) { return true; } + //if( p_calledParty.publicId == "dummy" ) { return true; } //v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); return v_status; } /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * of incoming chat conference invitation + * of incoming chat conference invitation * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1276,7 +1262,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that invitation to chat conference session has reached + * that invitation to chat conference session has reached * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1291,7 +1277,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user join to chat - * conference session + * conference session * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1306,7 +1292,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that users perform - * chating conference + * chating conference * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1321,7 +1307,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user leave to chat - * conference session + * conference session * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1336,7 +1322,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is - * informed that conference chat session has ended + * informed that conference chat session has ended * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1351,7 +1337,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that peer user leave chat - * conference session + * conference session * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1366,7 +1352,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user rejoin to chat - * conference session + * conference session * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1376,14 +1362,14 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - //if( p_calledParty.publicId == "dummy" ) { return true; } + //if( p_calledParty.publicId == "dummy" ) { return true; } //v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); return v_status; } /** * @desc Trigger UE given by p_ueRef to verify that user is - * informed that conference chat session has rejoined + * informed that conference chat session has rejoined * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1398,7 +1384,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that peer user rejoin chat - * conference session + * conference session * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1423,14 +1409,14 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - //if( p_calledParty.publicId == "dummy" ) { return true; } + //if( p_calledParty.publicId == "dummy" ) { return true; } //v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); return v_status; } /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * of incoming file transfer invitation + * of incoming file transfer invitation * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1445,7 +1431,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that invitation to file transfer session has reached + * that invitation to file transfer session has reached * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1502,7 +1488,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to automatically accepts - * file transfer invitation + * file transfer invitation * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1573,7 +1559,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is - * informed that file transfer has ended + * informed that file transfer has ended * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1588,7 +1574,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is - * informed that file transfer has terminated + * informed that file transfer has terminated * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1631,7 +1617,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef given reports that file transfer has been - * cancelled + * cancelled * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1656,7 +1642,7 @@ module AtsImsIot_Functions { runs on TestCoordinator return boolean { var boolean v_status := true; // TODO - //if( p_calledParty.publicId == "dummy" ) { return true; } + //if( p_calledParty.publicId == "dummy" ) { return true; } //v_status := f_mtc_userInitiateCallSuccessful(p_ueRef); return v_status; } @@ -1705,7 +1691,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to check that user is informed that - * request has been answered + * request has been answered * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1748,7 +1734,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that connected user cannot share content + * that connected user cannot share content * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1763,7 +1749,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that connected user cannot share content + * that connected user cannot share content * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1806,7 +1792,7 @@ module AtsImsIot_Functions { /** * @desc Trigger UE given by p_ueRef to verify that user is informed - * that request has been rejected + * that request has been rejected * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command @@ -1820,211 +1806,211 @@ module AtsImsIot_Functions { } - /** - * @desc Trigger IMS Network to deregister UE given by p_ueRef - * @param p_imsRef Reference to IMS network component - * @param p_ueRef Reference to IMS UE user component - * @return true or false - */ - function f_mtc_imsTriggerUeDeregistration(EquipmentUser p_imsRef, EquipmentUser p_ueRef) - runs on TestCoordinator return boolean { - var boolean v_status := true; - // TODO - return v_status; - } - - - - - + /** + * @desc Trigger IMS Network to deregister UE given by p_ueRef + * @param p_imsRef Reference to IMS network component + * @param p_ueRef Reference to IMS UE user component + * @return true or false + */ + function f_mtc_imsTriggerUeDeregistration(EquipmentUser p_imsRef, EquipmentUser p_ueRef) + runs on TestCoordinator return boolean { + var boolean v_status := true; + // TODO + return v_status; + } + + + + + /* * * @desc Looks for genUser (any) of a specific product * @param p_productIdx Index of the product * @return genUser */ - function f_getAnyValidUser(integer p_productIdx) return ImsUserInfo { - var integer v_size := lengthof(PX_IMS_USER_DATA); - const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; + function f_getAnyValidUser(integer p_productIdx) return ImsUserInfo { + var integer v_size := lengthof(PX_IMS_USER_DATA); + const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; var ImsUserIdentity v_userid; - - for(var integer i := 0; i < v_size; i := i+1) { - if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { - var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); - for(var integer j := 0; j < v_size_j; j := j+1) { - if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].genUserId )) { - return PX_IMS_USER_DATA[i].userIds[j].genUserId; - } // end if - } // end for j - log("f_getAnyValidUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } // end if - } // end for i - log("f_getAnyValidUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } - + + for(var integer i := 0; i < v_size; i := i+1) { + if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { + var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); + for(var integer j := 0; j < v_size_j; j := j+1) { + if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].genUserId )) { + return PX_IMS_USER_DATA[i].userIds[j].genUserId; + } // end if + } // end for j + log("f_getAnyValidUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } // end if + } // end for i + log("f_getAnyValidUser: Did not find specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } + /* * * @desc Looks for TelUser of a specific product * @param p_productIdx Index of the product * @return TelUser - */ - function f_getTelUserId(integer p_productIdx) return ImsUserInfo { - var integer v_size := lengthof(PX_IMS_USER_DATA); - const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; - var ImsUserIdentity v_userid; - - for(var integer i := 0; i < v_size; i := i+1) { - if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { - var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); - for(var integer j := 0; j < v_size_j; j := j+1) { - if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].telUserId )) { - return PX_IMS_USER_DATA[i].userIds[j].telUserId; - } // end if - } // end for j - log("f_getTelUserId: Did not find specified user id in specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } // end if - } // end for i - log("f_getTelUserId: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } - + */ + function f_getTelUserId(integer p_productIdx) return ImsUserInfo { + var integer v_size := lengthof(PX_IMS_USER_DATA); + const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; + var ImsUserIdentity v_userid; + + for(var integer i := 0; i < v_size; i := i+1) { + if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { + var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); + for(var integer j := 0; j < v_size_j; j := j+1) { + if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].telUserId )) { + return PX_IMS_USER_DATA[i].userIds[j].telUserId; + } // end if + } // end for j + log("f_getTelUserId: Did not find specified user id in specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } // end if + } // end for i + log("f_getTelUserId: Did not find specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } + /* * * @desc Looks for SipUser of a specific product * @param p_productIdx Index of the product * @return SipUser - */ - function f_getSipUserId(integer p_productIdx) return ImsUserInfo { - var integer v_size := lengthof(PX_IMS_USER_DATA); - const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; - var ImsUserIdentity v_userid; - - for(var integer i := 0; i < v_size; i := i+1) { - if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { - var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); - for(var integer j := 0; j < v_size_j; j := j+1) { - if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].sipUserId )) { - return PX_IMS_USER_DATA[i].userIds[j].sipUserId; - } // end if - } // end for j - log("f_getSipUserId: Did not find specified user id in specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } // end if - } // end for i - log("f_getSipUserId: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } - + */ + function f_getSipUserId(integer p_productIdx) return ImsUserInfo { + var integer v_size := lengthof(PX_IMS_USER_DATA); + const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; + var ImsUserIdentity v_userid; + + for(var integer i := 0; i < v_size; i := i+1) { + if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { + var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); + for(var integer j := 0; j < v_size_j; j := j+1) { + if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].sipUserId )) { + return PX_IMS_USER_DATA[i].userIds[j].sipUserId; + } // end if + } // end for j + log("f_getSipUserId: Did not find specified user id in specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } // end if + } // end for i + log("f_getSipUserId: Did not find specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } + /* * * @desc Looks for ARCUser for a specific product * @param p_productIdx Index of the product * @return ARCUser */ - function f_getACRUser(integer p_productIdx) return ImsUserInfo { - var integer v_size := lengthof(PX_IMS_USER_DATA); - const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; - var ImsUserIdentity v_userid; + function f_getACRUser(integer p_productIdx) return ImsUserInfo { + var integer v_size := lengthof(PX_IMS_USER_DATA); + const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; + var ImsUserIdentity v_userid; - for(var integer i := 0; i < v_size; i := i+1) { - if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { - var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); - for(var integer j := 0; j < v_size_j; j := j+1) { - if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].acrUserId )) { - return PX_IMS_USER_DATA[i].userIds[j].acrUserId; - } // end if - } // end for j - log("f_getACRUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } // end if - } // end for i - log("f_getACRUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } - - /* - * + for(var integer i := 0; i < v_size; i := i+1) { + if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { + var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); + for(var integer j := 0; j < v_size_j; j := j+1) { + if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].acrUserId )) { + return PX_IMS_USER_DATA[i].userIds[j].acrUserId; + } // end if + } // end for j + log("f_getACRUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } // end if + } // end for i + log("f_getACRUser: Did not find specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } + + /* + * * @desc Looks for OIPUser for a specific product * @param p_productIdx Index of the product * @return OIPUser */ - function f_getOIPUser(integer p_productIdx) return ImsUserInfo { - var integer v_size := lengthof(PX_IMS_USER_DATA); - const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; - var ImsUserIdentity v_userid; + function f_getOIPUser(integer p_productIdx) return ImsUserInfo { + var integer v_size := lengthof(PX_IMS_USER_DATA); + const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; + var ImsUserIdentity v_userid; - for(var integer i := 0; i < v_size; i := i+1) { - if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { - var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); - for(var integer j := 0; j < v_size_j; j := j+1) { - if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].oipUserId )) { - return PX_IMS_USER_DATA[i].userIds[j].oipUserId; - } // end if - } // end for j - log("f_getOIPUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } // end if - } // end for i - log("f_getOIPUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } - + for(var integer i := 0; i < v_size; i := i+1) { + if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { + var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); + for(var integer j := 0; j < v_size_j; j := j+1) { + if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].oipUserId )) { + return PX_IMS_USER_DATA[i].userIds[j].oipUserId; + } // end if + } // end for j + log("f_getOIPUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } // end if + } // end for i + log("f_getOIPUser: Did not find specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } + /* * * @desc Looks for OIRUser for a specific product * @param p_productIdx Index of the product * @return OIRUser */ - function f_getOIRUser(integer p_productIdx) return ImsUserInfo { - var integer v_size := lengthof(PX_IMS_USER_DATA); - const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; - var ImsUserIdentity v_userid; + function f_getOIRUser(integer p_productIdx) return ImsUserInfo { + var integer v_size := lengthof(PX_IMS_USER_DATA); + const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; + var ImsUserIdentity v_userid; - for(var integer i := 0; i < v_size; i := i+1) { - if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { - var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); - for(var integer j := 0; j < v_size_j; j := j+1) { - if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].oirUserId )) { - return PX_IMS_USER_DATA[i].userIds[j].oirUserId; - } // end if - } // end for j - log("f_getOIRUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } // end if - } // end for i - log("f_getOIRUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } - - /* - * - * @desc Looks for HoldUser for a specific product - * @param p_productIdx Index of the product - * @return HoldUser - */ - function f_getHoldUser(integer p_productIdx) return ImsUserInfo { - var integer v_size := lengthof(PX_IMS_USER_DATA); - const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; - var ImsUserIdentity v_userid; + for(var integer i := 0; i < v_size; i := i+1) { + if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { + var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); + for(var integer j := 0; j < v_size_j; j := j+1) { + if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].oirUserId )) { + return PX_IMS_USER_DATA[i].userIds[j].oirUserId; + } // end if + } // end for j + log("f_getOIRUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } // end if + } // end for i + log("f_getOIRUser: Did not find specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } + + /* + * + * @desc Looks for HoldUser for a specific product + * @param p_productIdx Index of the product + * @return HoldUser + */ + function f_getHoldUser(integer p_productIdx) return ImsUserInfo { + var integer v_size := lengthof(PX_IMS_USER_DATA); + const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; + var ImsUserIdentity v_userid; - for(var integer i := 0; i < v_size; i := i+1) { - if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { - var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); - for(var integer j := 0; j < v_size_j; j := j+1) { - if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].holdUserId )) { - return PX_IMS_USER_DATA[i].userIds[j].holdUserId; - } // end if - } // end for j - log("f_getHoldUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } // end if - } // end for i - log("f_getHoldUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } + for(var integer i := 0; i < v_size; i := i+1) { + if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { + var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); + for(var integer j := 0; j < v_size_j; j := j+1) { + if ( ischosen(PX_IMS_USER_DATA[i].userIds[j].holdUserId )) { + return PX_IMS_USER_DATA[i].userIds[j].holdUserId; + } // end if + } // end for j + log("f_getHoldUser: Did not find specified user id in specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } // end if + } // end for i + log("f_getHoldUser: Did not find specified product in PX_IMS_USER_DATA"); + return c_dummyInfo; + } /* * @@ -2050,8 +2036,8 @@ module AtsImsIot_Functions { } // end if } // end for i log("f_getPresUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } + return c_dummyInfo; + } /* * @@ -2077,8 +2063,8 @@ module AtsImsIot_Functions { } // end if } // end for i log("f_getFtUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } + return c_dummyInfo; + } /* * @@ -2104,8 +2090,8 @@ module AtsImsIot_Functions { } // end if } // end for i log("f_getShareUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } + return c_dummyInfo; + } /* * @@ -2131,316 +2117,316 @@ module AtsImsIot_Functions { } // end if } // end for i log("f_getImUser: Did not find specified product in PX_IMS_USER_DATA"); - return c_dummyInfo; - } - - // TODO - function f_getUEHostname(integer p_ID, out charstring p_hostname) - return boolean { - - // TODO - - return true; - } - - /** - * @desc - * Preamble to handle user registration in home network from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @return true in case of successfull execution otherwise false - */ - function f_PR_user_home_registration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) - runs on TestCoordinator return boolean { - var boolean v_status := true; - if( p_userInfo.publicId == "" ) { return false; } - - v_status := f_mtc_userRegister(p_userCompRef, p_userInfo.publicId, p_userInfo.privateId, p_userInfo.password); - - return v_status; - } - - /** - * @desc - * Postamble to handle user deregistration in home network from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @return true in case of successfull execution otherwise false - */ - function f_PO_user_home_deregistration(EquipmentUser p_userCompRef) runs on ImsTestCoordinator return boolean { - var boolean v_status := true; - - v_status := f_mtc_userDeregister(p_userCompRef, "*"); // deregister all previous users - - return v_status; - } - - /** - * @desc - * Preamble to handle user registration in roaming network from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @return true in case of successfull execution otherwise false - */ - function f_PR_user_roaming_registration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) - runs on TestCoordinator return boolean { - var boolean v_status := true; - if( p_userInfo.publicId == "" ) { return false; } - - // TODO check roaming registration - v_status := f_mtc_userRegister(p_userCompRef, p_userInfo.publicId, p_userInfo.privateId, p_userInfo.password); - - return v_status; - } - - /** - * @desc - * Postamble to handle user deregistration in roaming network from test coordinator - * @param p_userCompRef Reference ot IMS UE user component - * @return true in case of successfull execution otherwise false - */ - function f_PO_user_roaming_deregistration(EquipmentUser p_userCompRef) runs on ImsTestCoordinator return boolean { - var boolean v_status := true; - - // TODO check roaming de-registration - v_status := f_mtc_userDeregister(p_userCompRef, "*"); // deregister all previous users - - return v_status; - } - - /** - * @desc Get the S-CSCF FQDN address of referenced EUT - * @return if a S-CSCF is avaiable, the domainname of the S-CSCF, - * otherwise error_string - */ + return c_dummyInfo; + } + + // TODO + function f_getUEHostname(integer p_ID, out charstring p_hostname) + return boolean { + + // TODO + + return true; + } + + /** + * @desc + * Preamble to handle user registration in home network from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @return true in case of successfull execution otherwise false + */ + function f_PR_user_home_registration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) + runs on TestCoordinator return boolean { + var boolean v_status := true; + if( p_userInfo.publicId == "" ) { return false; } + + v_status := f_mtc_userRegister(p_userCompRef, p_userInfo.publicId, p_userInfo.privateId, p_userInfo.password); + + return v_status; + } + + /** + * @desc + * Postamble to handle user deregistration in home network from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @return true in case of successfull execution otherwise false + */ + function f_PO_user_home_deregistration(EquipmentUser p_userCompRef) runs on ImsTestCoordinator return boolean { + var boolean v_status := true; + + v_status := f_mtc_userDeregister(p_userCompRef, "*"); // deregister all previous users + + return v_status; + } + + /** + * @desc + * Preamble to handle user registration in roaming network from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @return true in case of successfull execution otherwise false + */ + function f_PR_user_roaming_registration(EquipmentUser p_userCompRef, ImsUserInfo p_userInfo) + runs on TestCoordinator return boolean { + var boolean v_status := true; + if( p_userInfo.publicId == "" ) { return false; } + + // TODO check roaming registration + v_status := f_mtc_userRegister(p_userCompRef, p_userInfo.publicId, p_userInfo.privateId, p_userInfo.password); + + return v_status; + } + + /** + * @desc + * Postamble to handle user deregistration in roaming network from test coordinator + * @param p_userCompRef Reference ot IMS UE user component + * @return true in case of successfull execution otherwise false + */ + function f_PO_user_roaming_deregistration(EquipmentUser p_userCompRef) runs on ImsTestCoordinator return boolean { + var boolean v_status := true; + + // TODO check roaming de-registration + v_status := f_mtc_userDeregister(p_userCompRef, "*"); // deregister all previous users + + return v_status; + } + + /** + * @desc Get the S-CSCF FQDN address of referenced EUT + * @return if a S-CSCF is avaiable, the domainname of the S-CSCF, + * otherwise error_string + */ function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring { - var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); - var integer v_size_ipinterfaceinfo; - var integer v_interface := -1; - var integer v_ipinterfaceinfo := -1; - var charstring v_domainname; + var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); + var integer v_size_ipinterfaceinfo; + var integer v_interface := -1; + var integer v_ipinterfaceinfo := -1; + var charstring v_domainname; - for(var integer i := 0; i < v_size_interfaces; i := i+1) { - if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Mm][Ww]")){ - v_interface := i; - break; - } - } - if (v_interface > -1) { - v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); - for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { - if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { - v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; - if (match(substr(v_domainname, 0, 5), pattern "[Ss][Cc][Ss][Cc][Ff]") - or match(substr(v_domainname, 0, 5), pattern "[Ss][Tt][Ee][Cc][Hh]")) { - v_ipinterfaceinfo := i; - break; - } - } - } - } else { - log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - if (v_ipinterfaceinfo > -1) { - return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; - } else { - log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - } - - /** - * @desc Get the S-CSCF FQDN address of referenced EUT - * @return if a S-CSCF is avaiable, the IP Address of the S-CSCF, - * otherwise error_string - */ + for(var integer i := 0; i < v_size_interfaces; i := i+1) { + if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Mm][Ww]")){ + v_interface := i; + break; + } + } + if (v_interface > -1) { + v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); + for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { + if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { + v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; + if (match(substr(v_domainname, 0, 5), pattern "[Ss][Cc][Ss][Cc][Ff]") + or match(substr(v_domainname, 0, 5), pattern "[Ss][Tt][Ee][Cc][Hh]")) { + v_ipinterfaceinfo := i; + break; + } + } + } + } else { + log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + if (v_ipinterfaceinfo > -1) { + return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; + } else { + log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + } + + /** + * @desc Get the S-CSCF FQDN address of referenced EUT + * @return if a S-CSCF is avaiable, the IP Address of the S-CSCF, + * otherwise error_string + */ function f_GetEUTScscfIpAddress(integer p_ProductIdx) return charstring { - var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); - var integer v_size_ipinterfaceinfo; - var integer v_interface := -1; - var integer v_ipinterfaceinfo := -1; - var charstring v_domainname; + var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); + var integer v_size_ipinterfaceinfo; + var integer v_interface := -1; + var integer v_ipinterfaceinfo := -1; + var charstring v_domainname; - for(var integer i := 0; i < v_size_interfaces; i := i+1) { - if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Mm][Ww]")){ - v_interface := i; - } - } - if (v_interface > -1) { - v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); - for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { - if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { - v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; - if (match(substr(v_domainname, 0, 5), pattern "[Ss][Cc][Ss][Cc][Ff]") - or match(substr(v_domainname, 0, 5), pattern "[Ss][Tt][Ee][Cc][Hh]")) { - v_ipinterfaceinfo := i; - } - } - } - } else { - log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - if (v_ipinterfaceinfo > -1) { - return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].IpAddress; - } else { - log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } + for(var integer i := 0; i < v_size_interfaces; i := i+1) { + if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Mm][Ww]")){ + v_interface := i; + } + } + if (v_interface > -1) { + v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); + for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { + if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { + v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; + if (match(substr(v_domainname, 0, 5), pattern "[Ss][Cc][Ss][Cc][Ff]") + or match(substr(v_domainname, 0, 5), pattern "[Ss][Tt][Ee][Cc][Hh]")) { + v_ipinterfaceinfo := i; + } + } + } + } else { + log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + if (v_ipinterfaceinfo > -1) { + return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].IpAddress; + } else { + log ("S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + } + + /** + * @desc Get the P-CSCF FQDN address of referenced EUT + * @return if a PCSCF is avaiable, the domainname of the PCSCF, + * otherwise error_string + */ + function f_GetEUTPcscfAddress(integer p_ProductIdx) return charstring { + var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); + var integer v_size_ipinterfaceinfo; + var integer v_interface := -1; + var integer v_ipinterfaceinfo := -1; + var charstring v_domainname; + + for(var integer i := 0; i < v_size_interfaces; i := i+1) { + if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Gg][Mm]")){ + v_interface := i; + break; + } + } + if (v_interface > -1) { + v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); + for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { + if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { + v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; + if (match(substr(v_domainname, 0, 5), pattern "[Pp][Cc][Ss][Cc][Ff]") + or match(substr(v_domainname, 0, 5), pattern "[Pp][Tt][Ee][Cc][Hh]")) { + v_ipinterfaceinfo := i; + } + } + } + } else { + log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + if (v_ipinterfaceinfo > -1) { + return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; + } else { + log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + } + + /** + * @desc Get the P-CSCF IP address of referenced EUT + * @return if a PCSCF is avaiable, the IP address of the PCSCF, + * otherwise error_string + */ + function f_GetEUTPcscfIpAddress(integer p_ProductIdx) return charstring { + var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); + var integer v_size_ipinterfaceinfo; + var integer v_interface := -1; + var integer v_ipinterfaceinfo := -1; + var charstring v_domainname; + + for(var integer i := 0; i < v_size_interfaces; i := i+1) { + if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Gg][Mm]")){ + v_interface := i; + break; + } + } + if (v_interface > -1) { + v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); + for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { + if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { + v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; + if (match(substr(v_domainname, 0, 5), pattern "[Pp][Cc][Ss][Cc][Ff]") + or match(substr(v_domainname, 0, 5), pattern "[Pp][Tt][Ee][Cc][Hh]")) { + v_ipinterfaceinfo := i; + } + } + } + } else { + log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + if (v_ipinterfaceinfo > -1) { + return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].IpAddress; + } else { + log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + } + + /** + * @desc Get the IBCF FQDN address of referenced EUT + * @return if a IBCF is avaiable, the domainname of the IBCF, + * otherwise error_string + */ + function f_GetEUTIbcfAddress(integer p_ProductIdx) return charstring { + var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); + var integer v_size_ipinterfaceinfo; + var integer v_interface := -1; + var integer v_ipinterfaceinfo := -1; + var charstring v_domainname; + + for(var integer i := 0; i < v_size_interfaces; i := i+1) { + if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Mm][Ww]")){ + v_interface := i; + } + } + if (v_interface > -1) { + v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); + for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { + if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { + v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; + if (match(substr(v_domainname, 0, 5), pattern "[Ii][Bb][Cc][Ff]")) { + v_ipinterfaceinfo := i; + } + } + } + } else { + log ("IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + if (v_ipinterfaceinfo > -1) { + return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; + } else { + log ("IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); + return "IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; + } + } + + /** + * @desc Get the Public Id of referenced UE + * @param p_ProductIdx index of the product the UE belongs to + * @return PublicID of the UE of the productIdx + */ + function f_GetUEPublicId(integer p_ProductIdx) return charstring { + + var ImsUserInfo v_uePublicId := f_getSipUserId(p_ProductIdx); + + return v_uePublicId.publicId; } - /** - * @desc Get the P-CSCF FQDN address of referenced EUT - * @return if a PCSCF is avaiable, the domainname of the PCSCF, - * otherwise error_string - */ - function f_GetEUTPcscfAddress(integer p_ProductIdx) return charstring { - var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); - var integer v_size_ipinterfaceinfo; - var integer v_interface := -1; - var integer v_ipinterfaceinfo := -1; - var charstring v_domainname; - - for(var integer i := 0; i < v_size_interfaces; i := i+1) { - if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Gg][Mm]")){ - v_interface := i; - break; - } - } - if (v_interface > -1) { - v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); - for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { - if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { - v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; - if (match(substr(v_domainname, 0, 5), pattern "[Pp][Cc][Ss][Cc][Ff]") - or match(substr(v_domainname, 0, 5), pattern "[Pp][Tt][Ee][Cc][Hh]")) { - v_ipinterfaceinfo := i; - } - } - } - } else { - log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - if (v_ipinterfaceinfo > -1) { - return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; - } else { - log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - } - - /** - * @desc Get the P-CSCF IP address of referenced EUT - * @return if a PCSCF is avaiable, the IP address of the PCSCF, - * otherwise error_string - */ - function f_GetEUTPcscfIpAddress(integer p_ProductIdx) return charstring { - var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); - var integer v_size_ipinterfaceinfo; - var integer v_interface := -1; - var integer v_ipinterfaceinfo := -1; - var charstring v_domainname; - - for(var integer i := 0; i < v_size_interfaces; i := i+1) { - if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Gg][Mm]")){ - v_interface := i; - break; - } - } - if (v_interface > -1) { - v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); - for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { - if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { - v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; - if (match(substr(v_domainname, 0, 5), pattern "[Pp][Cc][Ss][Cc][Ff]") - or match(substr(v_domainname, 0, 5), pattern "[Pp][Tt][Ee][Cc][Hh]")) { - v_ipinterfaceinfo := i; - } - } - } - } else { - log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - if (v_ipinterfaceinfo > -1) { - return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].IpAddress; - } else { - log ("P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - } - /** - * @desc Get the IBCF FQDN address of referenced EUT - * @return if a IBCF is avaiable, the domainname of the IBCF, - * otherwise error_string - */ - function f_GetEUTIbcfAddress(integer p_ProductIdx) return charstring { - var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); - var integer v_size_ipinterfaceinfo; - var integer v_interface := -1; - var integer v_ipinterfaceinfo := -1; - var charstring v_domainname; - - for(var integer i := 0; i < v_size_interfaces; i := i+1) { - if (match(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName, pattern "[Mm][Ww]")){ - v_interface := i; - } - } - if (v_interface > -1) { - v_size_ipinterfaceinfo := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); - for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { - if(ispresent(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName)) { - v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; - if (match(substr(v_domainname, 0, 5), pattern "[Ii][Bb][Cc][Ff]")) { - v_ipinterfaceinfo := i; - } - } - } - } else { - log ("IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - if (v_ipinterfaceinfo > -1) { - return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; - } else { - log ("IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); - return "IBCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; - } - } - - /** - * @desc Get the Public Id of referenced UE - * @param p_ProductIdx index of the product the UE belongs to - * @return PublicID of the UE of the productIdx - */ - function f_GetUEPublicId(integer p_ProductIdx) return charstring { - - var ImsUserInfo v_uePublicId := f_getSipUserId(p_ProductIdx); - - return v_uePublicId.publicId; - } - - - /** - * @desc Get the UE URI containing the IP address of referenced EUT - */ - function f_getUeIpAddress(integer p_ProductIdx) return template SipUrl { - // TODO - return mw_SIP_URI_Base; - } - - /** - * @desc Get the Public Id of referenced EUT - */ - function f_GetEUTPublicId(integer p_ProductIdx) return charstring { - // TODO - return "TODO"; - } - - /** - * @desc Get the AS server FQDN of referenced EUT - */ - function f_GetEUTASServerAddress(integer p_ProductIdx) return charstring { + /** + * @desc Get the UE URI containing the IP address of referenced EUT + */ + function f_getUeIpAddress(integer p_ProductIdx) return template SipUrl { + // TODO + return mw_SIP_URI_Base; + } + + /** + * @desc Get the Public Id of referenced EUT + */ + function f_GetEUTPublicId(integer p_ProductIdx) return charstring { + // TODO + return "TODO"; + } + + /** + * @desc Get the AS server FQDN of referenced EUT + */ + function f_GetEUTASServerAddress(integer p_ProductIdx) return charstring { var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); var integer v_size_ipinterfaceinfo; var integer v_interface := -1; @@ -2494,32 +2480,32 @@ module AtsImsIot_Functions { function f_mtc_userRadioEnabled(EquipmentUser p_ueRef, boolean p_enableRadio, boolean p_synchronousMode) runs on TestCoordinator return boolean { if ( p_enableRadio ) { - if ( p_synchronousMode ) { - f_mtc_triggerUserCommand ( p_ueRef, "start complete network attachment and return when done."); + if ( p_synchronousMode ) { + f_mtc_triggerUserCommand ( p_ueRef, "start complete network attachment and return when done."); } else { - f_mtc_triggerUserCommand ( p_ueRef, "start complete network attachment, return immediately."); + f_mtc_triggerUserCommand ( p_ueRef, "start complete network attachment, return immediately."); } } else { - if ( p_synchronousMode ) { - f_mtc_triggerUserCommand ( p_ueRef, "start complete network detachment and return when done."); - } - else { - f_mtc_triggerUserCommand ( p_ueRef, "start complete network detachment, return immediately."); - } + if ( p_synchronousMode ) { + f_mtc_triggerUserCommand ( p_ueRef, "start complete network detachment and return when done."); + } + else { + f_mtc_triggerUserCommand ( p_ueRef, "start complete network detachment, return immediately."); + } } return false; } // End of function f_mtc_userRadioEnabled } // End of group epc - } + } - /** - * @desc Get the AS server IP Address of referenced EUT - */ - function f_GetEUTASServerIpAddress(integer p_ProductIdx) return charstring { + /** + * @desc Get the AS server IP Address of referenced EUT + */ + function f_GetEUTASServerIpAddress(integer p_ProductIdx) return charstring { var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); var integer v_size_ipinterfaceinfo; var integer v_interface := -1; @@ -2551,57 +2537,57 @@ module AtsImsIot_Functions { log ("AS of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."); return "AS of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } - } - - group naptrComponent { - /** - * @desc - * This function waits for a given NAPTR message. - * @param p_monitor Reference of NAPTR component - * @param p_msg The NAPTR message - */ - function f_getNaptrMsg ( InterfaceMonitor p_monitor, in template (present) EnumMessage p_enum ) - runs on ImsInterfaceMonitor { - timer t_local := PX_MAX_MSG_WAIT; - var boolean v_loop := true; + } + + group naptrComponent { + /** + * @desc + * This function waits for a given NAPTR message. + * @param p_monitor Reference of NAPTR component + * @param p_msg The NAPTR message + */ + function f_getNaptrMsg ( InterfaceMonitor p_monitor, in template (present) EnumMessage p_enum ) + runs on ImsInterfaceMonitor { + timer t_local := PX_MAX_MSG_WAIT; + var boolean v_loop := true; var NAPTRmessage v_msg; var SipMessage v_sip; t_local.start; while ( v_loop ) { - alt { - [] naptrPort.receive ( mw_EnumQuery_Base ) -> value v_msg { - if ( match (v_msg.enumMessage, p_enum)) { - t_local.stop; - setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***"); - log("### Forwarding message to MTC"); - v_sip := { naptrmessage := v_msg }; - icpPort.send ( v_sip ); - break; - } - t_local.start; - } - [] naptrPort.receive ( mw_EnumResponse_Base ) -> value v_msg { + alt { + [] naptrPort.receive ( mw_EnumQuery_Base ) -> value v_msg { + if ( match (v_msg.enumMessage, p_enum)) { + t_local.stop; + setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***"); + log("### Forwarding message to MTC"); + v_sip := { naptrmessage := v_msg }; + icpPort.send ( v_sip ); + break; + } + t_local.start; + } + [] naptrPort.receive ( mw_EnumResponse_Base ) -> value v_msg { if ( match (v_msg.enumMessage, p_enum)) { t_local.stop; setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***"); - log("### Forwarding message to MTC"); - v_sip := { naptrmessage := v_msg }; - icpPort.send ( v_sip ); + log("### Forwarding message to MTC"); + v_sip := { naptrmessage := v_msg }; + icpPort.send ( v_sip ); break; } t_local.start; } - [] t_local.timeout { - setverdict(fail, self, "***f_getNaptrMsg: expected NAPTR message not received***"); - break; - } - [] naptrPort.receive { - t_local.start; - } + [] t_local.timeout { + setverdict(fail, self, "***f_getNaptrMsg: expected NAPTR message not received***"); + break; + } + [] naptrPort.receive { + t_local.start; + } } - } - } - } + } + } + } group diameterComponent { /** @@ -2614,8 +2600,8 @@ module AtsImsIot_Functions { function f_receiveDiameterMsg (in template (present) DIAMETER_MSG p_diameter, in charstring p_log, in boolean p_bool ) runs on DiameterInterfaceMonitor { - timer t_local := PX_MAX_MSG_WAIT; - var boolean v_loop := true; + timer t_local := PX_MAX_MSG_WAIT; + var boolean v_loop := true; log ( "### " & p_log ); t_local.start; while ( v_loop ) { @@ -2641,315 +2627,315 @@ module AtsImsIot_Functions { break; } } - [] diameterPort.receive { + [] diameterPort.receive { t_local.start; } } - } - } + } + } } - group sgiComponent { - /** - * @desc - * This function waits for a given Sgi message. - * @param p_bool True message expected, False message not expected - * @param p_log The Log message - */ - function f_receiveIpMsg ( boolean p_bool, in charstring p_log ) - runs on ImsInterfaceMonitor { - timer t_local := PX_MAX_MSG_WAIT; - log ( "### " & p_log ); + group sgiComponent { + /** + * @desc + * This function waits for a given Sgi message. + * @param p_bool True message expected, False message not expected + * @param p_log The Log message + */ + function f_receiveIpMsg ( boolean p_bool, in charstring p_log ) + runs on ImsInterfaceMonitor { + timer t_local := PX_MAX_MSG_WAIT; + log ( "### " & p_log ); t_local.start; - alt { - [] sgiPort.receive { - t_local.stop; - if ( p_bool ) { - setverdict ( pass, self, "*** f_receiveIpMsg: expected Sgi message received ***"); - } - else { - setverdict ( fail, self, "*** f_receiveIpMsg: expected Sgi message not received ***"); - } - } - [] t_local.timeout { - if ( p_bool ) { - setverdict ( fail, self, "*** f_receiveIpMsg: Sgi message not received but expected ***"); - } - else { - setverdict ( pass, self, "*** f_receiveIpMsg: Sgi message not received as expected ***"); - } - } - } - } - } + alt { + [] sgiPort.receive { + t_local.stop; + if ( p_bool ) { + setverdict ( pass, self, "*** f_receiveIpMsg: expected Sgi message received ***"); + } + else { + setverdict ( fail, self, "*** f_receiveIpMsg: expected Sgi message not received ***"); + } + } + [] t_local.timeout { + if ( p_bool ) { + setverdict ( fail, self, "*** f_receiveIpMsg: Sgi message not received but expected ***"); + } + else { + setverdict ( pass, self, "*** f_receiveIpMsg: Sgi message not received as expected ***"); + } + } + } + } + } - group interComponent { - /** - * @desc - * This function waits for a sip message send from a given monitor - * component to mtc. - * @param p_monitor Reference of Interface Monitor component - * @param p_msg The Sip message - */ - function f_getSipMsgFromMonitor(InterfaceMonitor p_monitor, out SipMessage p_msg) runs on ImsTestCoordinator { + group interComponent { + /** + * @desc + * This function waits for a sip message send from a given monitor + * component to mtc. + * @param p_monitor Reference of Interface Monitor component + * @param p_msg The Sip message + */ + function f_getSipMsgFromMonitor(InterfaceMonitor p_monitor, out SipMessage p_msg) runs on ImsTestCoordinator { timer t_local := PX_MAX_MSG_WAIT; t_local.start; alt { - []icpPort.receive (SipMessage:?) /*from p_monitor*/ -> value p_msg { - t_local.stop; - setverdict(pass, self, "***f_getMsgFromMonitor: SIP message received***"); - } - []t_local.timeout { - setverdict(fail, self, "***f_getMsgFromMonitor: SIP message not received***"); - } + []icpPort.receive (SipMessage:?) /*from p_monitor*/ -> value p_msg { + t_local.stop; + setverdict(pass, self, "***f_getMsgFromMonitor: SIP message received***"); + } + []t_local.timeout { + setverdict(fail, self, "***f_getMsgFromMonitor: SIP message not received***"); + } + } + } + } + + group altsteps { + + altstep a_default(in charstring p_TP) runs on ImsInterfaceMonitor { + [] dPort.receive(Request:?) { + log(self, "### a_default: Request default for " & p_TP ); + repeat; + } + [] dPort.receive(Response:?) { + log(self, "### a_default: Response default for " & p_TP ); + repeat; + } + [] dPort.receive { + log(self, "*** a_default: Received/ignored unexpected message when waiting for message complying to " & p_TP ); + //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); + //stop; // YANN: If execution is here, this means that the message was not properly decoded + repeat; + } + } + + altstep a_default_sip(in charstring p_TP) runs on SipInterfaceMonitor { + [] sipPort.receive(Request:?) { + log(self, "### a_default_sip: Request default for " & p_TP ); + repeat; + } + [] sipPort.receive(Response:?) { + log(self, "### a_default_sip: Response default for " & p_TP ); + repeat; + } + [] sipPort.receive { + log(self, "*** a_default_sip: Received/ignored unexpected message when waiting for message complying to " & p_TP ); + //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); + //stop; // YANN: If execution is here, this means that the message was not properly decoded + repeat; } - } - } - - group altsteps { - - altstep a_default(in charstring p_TP) runs on ImsInterfaceMonitor { - [] dPort.receive(Request:?) { - log(self, "### a_default: Request default for " & p_TP ); - repeat; - } - [] dPort.receive(Response:?) { - log(self, "### a_default: Response default for " & p_TP ); - repeat; - } - [] dPort.receive { - log(self, "*** a_default: Received/ignored unexpected message when waiting for message complying to " & p_TP ); - //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); - //stop; // YANN: If execution is here, this means that the message was not properly decoded - repeat; - } - } - - altstep a_default_sip(in charstring p_TP) runs on SipInterfaceMonitor { - [] sipPort.receive(Request:?) { - log(self, "### a_default_sip: Request default for " & p_TP ); - repeat; - } - [] sipPort.receive(Response:?) { - log(self, "### a_default_sip: Response default for " & p_TP ); - repeat; - } - [] sipPort.receive { - log(self, "*** a_default_sip: Received/ignored unexpected message when waiting for message complying to " & p_TP ); - //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); - //stop; // YANN: If execution is here, this means that the message was not properly decoded - repeat; - } - } - - altstep a_default_diameter(in charstring p_TP) runs on DiameterInterfaceMonitor { - [] diameterPort.receive(DIAMETER_MSG:?) { - log(self, "### a_default_diameter: Request default for " & p_TP ); - repeat; - } - [] diameterPort.receive { - log(self, "*** a_default_diameter: Received/ignored unexpected message when waiting for message complying to " & p_TP ); - //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); - //stop; // YANN: If execution is here, this means that the message was not properly decoded - repeat; - } - } - + } + + altstep a_default_diameter(in charstring p_TP) runs on DiameterInterfaceMonitor { + [] diameterPort.receive(DIAMETER_MSG:?) { + log(self, "### a_default_diameter: Request default for " & p_TP ); + repeat; + } + [] diameterPort.receive { + log(self, "*** a_default_diameter: Received/ignored unexpected message when waiting for message complying to " & p_TP ); + //setverdict(fail, self, "### YANN: If execution is here, this means that the message was not properly decoded due to sip/sdp-codets exception, check MMagic logs"); + //stop; // YANN: If execution is here, this means that the message was not properly decoded + repeat; + } + } - /** - * @desc This altstep add one alternative checking for a very specifc SIP request. - If it matches then the conformance verdict is set to requested verdict - * @param p_message The expected SIP request - * @param p_verdict Verdict to be used in case of match - * @param p_tpId The test purpose identifier - * * @param p_forwardMtc indicates if the received request should be forwarded to mtc - */ - altstep a_receive_sipRequest( - in template Request p_message, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on ImsInterfaceMonitor { - var Request v_message; - [not p_checkMessage] dPort.receive(p_message) -> value v_message { - f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.request := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - [p_checkMessage] dPort.check(receive(p_message) -> value v_message) { - f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.request := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - } - /** - * @desc This altstep add one alternative checking for a very specifc SIP request. - If it matches then the conformance verdict is set to requested verdict - * @param p_message The expected SIP request - * @param p_verdict Verdict to be used in case of match - * @param p_tpId The test purpose identifier - * * @param p_forwardMtc indicates if the received request should be forwarded to mtc - */ - altstep a_receive_sip_Request( - in template Request p_message, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on SipInterfaceMonitor { - var Request v_message; - [not p_checkMessage] sipPort.receive(p_message) -> value v_message { - f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.request := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - [p_checkMessage] sipPort.check(receive(p_message) -> value v_message) { - f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.request := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - } - - /** - * @desc This altstep add one alternative checking for a very specifc SIP response. - If it matches then the conformance verdict is set to requested verdict - * @param p_message The expected SIP response - * @param p_verdict Verdict to be used in case of match - * @param p_tpId The test purpose identifier - * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc - */ - altstep a_receive_sipResponse( - in template Response p_message, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on ImsInterfaceMonitor { - var Response v_message; - [not p_checkMessage] dPort.receive(p_message) -> value v_message { - f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.response := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - [p_checkMessage] dPort.check(receive(p_message) -> value v_message) { - f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.response := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - } - /** - * @desc This altstep add one alternative checking for a very specifc SIP response. - If it matches then the conformance verdict is set to requested verdict - * @param p_message The expected SIP response - * @param p_verdict Verdict to be used in case of match - * @param p_tpId The test purpose identifier - * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc - */ - altstep a_receive_sip_Response( - in template Response p_message, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on SipInterfaceMonitor { - var Response v_message; - [not p_checkMessage] sipPort.receive(p_message) -> value v_message { - f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.response := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - [p_checkMessage] sipPort.check(receive(p_message) -> value v_message) { - f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var SipMessage v_msg; - v_msg.response := v_message; - log("### Forwarding message to MTC"); - icpPort.send(v_msg); - } - } - } - - /** - * @desc This altstep add one alternative checking for a very specifc SIP response. - If it matches then the conformance verdict is set to requested verdict - * @param p_message The expected SIP response - * @param p_verdict Verdict to be used in case of match - * @param p_tpId The test purpose identifier - * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc - */ - altstep a_receive_diameter( - in template DIAMETER_MSG p_message, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on DiameterInterfaceMonitor { - var DIAMETER_MSG v_message; - [not p_checkMessage] diameterPort.receive(p_message) -> value v_message { - f_setConformanceVerdict(p_verdict, "***a_receive_diameter: Received expected diameter MSG complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var DIAMETER_MSG v_msg; - v_msg := v_message; - log("### Forwarding message to MTC"); - //icpPort.send(v_msg); //TODO: check how to sync diameter with MTC - } - } - [p_checkMessage] diameterPort.check(receive(p_message) -> value v_message) { - f_setConformanceVerdict(p_verdict, "***a_receive_diameter: Checked expected diameter_MSG complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); - if(p_forwardMtc) { - var DIAMETER_MSG v_msg; - v_msg := v_message; - log("### Forwarding message to MTC"); - //icpPort.send(v_msg);//TODO: check how to sync diameter with MTC - } - } - } - - - }// end group - - //function f_setInterfaceNameOnComponent(charstring p_name) runs on ImsInterfaceMonitor{ - function f_setInterfaceNameOnComponent(charstring p_name) runs on InterfaceMonitor{ - vc_interfaceName := p_name; - } - function f_setInterfaceInfoComponent(MonitorInterfaceInfo p_mii) runs on InterfaceMonitor{ - //vc_interfaceName := p_mii.interfacename; - vc_Interface := p_mii; - } - - group general_td_functions { - - /** + /** + * @desc This altstep add one alternative checking for a very specifc SIP request. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP request + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * * @param p_forwardMtc indicates if the received request should be forwarded to mtc + */ + altstep a_receive_sipRequest( + in template Request p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on ImsInterfaceMonitor { + var Request v_message; + [not p_checkMessage] dPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.request := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + [p_checkMessage] dPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.request := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + } + /** + * @desc This altstep add one alternative checking for a very specifc SIP request. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP request + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * * @param p_forwardMtc indicates if the received request should be forwarded to mtc + */ + altstep a_receive_sip_Request( + in template Request p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var Request v_message; + [not p_checkMessage] sipPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.request := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + [p_checkMessage] sipPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.request := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + } + + /** + * @desc This altstep add one alternative checking for a very specifc SIP response. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP response + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc + */ + altstep a_receive_sipResponse( + in template Response p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on ImsInterfaceMonitor { + var Response v_message; + [not p_checkMessage] dPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.response := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + [p_checkMessage] dPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.response := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + } + /** + * @desc This altstep add one alternative checking for a very specifc SIP response. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP response + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc + */ + altstep a_receive_sip_Response( + in template Response p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var Response v_message; + [not p_checkMessage] sipPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.response := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + [p_checkMessage] sipPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Checked expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var SipMessage v_msg; + v_msg.response := v_message; + log("### Forwarding message to MTC"); + icpPort.send(v_msg); + } + } + } + + /** + * @desc This altstep add one alternative checking for a very specifc SIP response. + If it matches then the conformance verdict is set to requested verdict + * @param p_message The expected SIP response + * @param p_verdict Verdict to be used in case of match + * @param p_tpId The test purpose identifier + * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc + */ + altstep a_receive_diameter( + in template DIAMETER_MSG p_message, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on DiameterInterfaceMonitor { + var DIAMETER_MSG v_message; + [not p_checkMessage] diameterPort.receive(p_message) -> value v_message { + f_setConformanceVerdict(p_verdict, "***a_receive_diameter: Received expected diameter MSG complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var DIAMETER_MSG v_msg; + v_msg := v_message; + log("### Forwarding message to MTC"); + //icpPort.send(v_msg); //TODO: check how to sync diameter with MTC + } + } + [p_checkMessage] diameterPort.check(receive(p_message) -> value v_message) { + f_setConformanceVerdict(p_verdict, "***a_receive_diameter: Checked expected diameter_MSG complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); + if(p_forwardMtc) { + var DIAMETER_MSG v_msg; + v_msg := v_message; + log("### Forwarding message to MTC"); + //icpPort.send(v_msg);//TODO: check how to sync diameter with MTC + } + } + } + + + + }// end group + + //function f_setInterfaceNameOnComponent(charstring p_name) runs on ImsInterfaceMonitor{ + function f_setInterfaceNameOnComponent(charstring p_name) runs on InterfaceMonitor{ + vc_interfaceName := p_name; + } + function f_setInterfaceInfoComponent(MonitorInterfaceInfo p_mii) runs on InterfaceMonitor{ + //vc_interfaceName := p_mii.interfacename; + vc_Interface := p_mii; + } + + group general_td_functions { + + /** * @desc * Generic function for reading and verifying messages on the * interface associated to the ImsInterfaceMonitor instance. This @@ -3001,37 +2987,37 @@ module AtsImsIot_Functions { ) runs on ImsInterfaceMonitor { var integer v_size := lengthof(p_failCriteria); var DefaultList v_defaultArray; - var integer i := 0; - var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); + var integer i := 0; + var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); log ("### f_imsIot_receive: passCriteria=", p_passCriteria); log ("### f_imsIot_receive: failCriteria=", p_failCriteria); - - // check if interface is available - for(i := 0; i < v_size_ai; i := i+1) { - if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { - if (PX_AVAILABLE_INTERFACES[i].available == false) { - setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); - } else { // Interface is available - v_defaultArray[0] := activate(a_default(p_tpId)); - f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); - f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); - f_gen_receive(p_tpId, p_skip); - - for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { - deactivate(v_defaultArray[i]); - } - } - break; // Exit loop - } - } // 'for' loop - } - - /** + + // check if interface is available + for(i := 0; i < v_size_ai; i := i+1) { + if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { + if (PX_AVAILABLE_INTERFACES[i].available == false) { + setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); + } else { // Interface is available + v_defaultArray[0] := activate(a_default(p_tpId)); + f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); + f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); + f_gen_receive(p_tpId, p_skip); + + for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { + deactivate(v_defaultArray[i]); + } + } + break; // Exit loop + } + } // 'for' loop + } + + /** * @desc This function implements skipping of messages as well as timeout handling. - * Prior to calling this function the message to be cheked for should be added - * as defaults. - * This function is independent of a specific interface component. + * Prior to calling this function the message to be cheked for should be added + * as defaults. + * This function is independent of a specific interface component. * @param p_tpId The Test Purpose identifier * @param p_skipCount Indicate how many messages should be skipped prior to checking */ @@ -3039,428 +3025,428 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); in charstring p_tpId, in template SkipType p_skip ) runs on ImsInterfaceMonitor { - var integer skipCount := valueof(p_skip.skipCount); - tc_wait.start; - - alt { - // preamble (consume prior messages) - [skipCount > 0 and ischosen(p_skip.skipMessage.request)] dPort.receive (p_skip.skipMessage.request) { - skipCount := skipCount - 1; - log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); - repeat; - } - [skipCount > 0 and ispresent(p_skip.skipMessage) and ischosen(p_skip.skipMessage.response)] dPort.receive (p_skip.skipMessage.response) { - skipCount := skipCount - 1; - log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); - repeat; - } - [] tc_wait.timeout { - f_setConformanceVerdict(inconc, "***f_gen_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); - } + var integer skipCount := valueof(p_skip.skipCount); + tc_wait.start; + + alt { + // preamble (consume prior messages) + [skipCount > 0 and ischosen(p_skip.skipMessage.request)] dPort.receive (p_skip.skipMessage.request) { + skipCount := skipCount - 1; + log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [skipCount > 0 and ispresent(p_skip.skipMessage) and ischosen(p_skip.skipMessage.response)] dPort.receive (p_skip.skipMessage.response) { + skipCount := skipCount - 1; + log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [] tc_wait.timeout { + f_setConformanceVerdict(inconc, "***f_gen_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); + } } } /** - * @desc This function implements skipping of messages as well as timeout handling. - * Prior to calling this function the message to be cheked for should be added - * as defaults. - * This function is independent of a specific interface component. - * @param p_tpId The Test Purpose identifier - * @param p_skipCount Indicate how many messages should be skipped prior to checking - */ - function f_gen_sip_receive( - in charstring p_tpId, - in template SkipType p_skip - ) runs on SipInterfaceMonitor { - var integer skipCount := valueof(p_skip.skipCount); - tc_wait.start; - - alt { - // preamble (consume prior messages) - [skipCount > 0 and ischosen(p_skip.skipMessage.request)] sipPort.receive (p_skip.skipMessage.request) { - skipCount := skipCount - 1; - log("***f_gen_sip_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); - repeat; - } - [skipCount > 0 and ispresent(p_skip.skipMessage) and ischosen(p_skip.skipMessage.response)] sipPort.receive (p_skip.skipMessage.response) { - skipCount := skipCount - 1; - log("***f_gen_sip_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); - repeat; - } - [] tc_wait.timeout { - f_setConformanceVerdict(inconc, "***f_gen_sip_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); - } - } + * @desc This function implements skipping of messages as well as timeout handling. + * Prior to calling this function the message to be cheked for should be added + * as defaults. + * This function is independent of a specific interface component. + * @param p_tpId The Test Purpose identifier + * @param p_skipCount Indicate how many messages should be skipped prior to checking + */ + function f_gen_sip_receive( + in charstring p_tpId, + in template SkipType p_skip + ) runs on SipInterfaceMonitor { + var integer skipCount := valueof(p_skip.skipCount); + tc_wait.start; + + alt { + // preamble (consume prior messages) + [skipCount > 0 and ischosen(p_skip.skipMessage.request)] sipPort.receive (p_skip.skipMessage.request) { + skipCount := skipCount - 1; + log("***f_gen_sip_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [skipCount > 0 and ispresent(p_skip.skipMessage) and ischosen(p_skip.skipMessage.response)] sipPort.receive (p_skip.skipMessage.response) { + skipCount := skipCount - 1; + log("***f_gen_sip_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [] tc_wait.timeout { + f_setConformanceVerdict(inconc, "***f_gen_sip_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); + } + } - } - - /** - * @desc This function implements skipping of messages as well as timeout handling. - * Prior to calling this function the message to be cheked for should be added - * as defaults. - * This function is independent of a specific interface component. - * @param p_tpId The Test Purpose identifier - * @param p_skipCount Indicate how many messages should be skipped prior to checking - */ - function f_gen_diameter_receive( - in charstring p_tpId, - in template SkipTypeDiameter p_skip - ) runs on DiameterInterfaceMonitor { - var integer skipCount := valueof(p_skip.skipCount); - tc_wait.start; - - alt { - // preamble (consume prior messages) - [skipCount > 0 and ispresent(p_skip.skipMessage)] diameterPort.receive (p_skip.skipMessage) { - skipCount := skipCount - 1; - log("***f_gen_diameter_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); - repeat; - } - [] tc_wait.timeout { - f_setConformanceVerdict(inconc, "***f_gen_diameter_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); - } - } + } + + /** + * @desc This function implements skipping of messages as well as timeout handling. + * Prior to calling this function the message to be cheked for should be added + * as defaults. + * This function is independent of a specific interface component. + * @param p_tpId The Test Purpose identifier + * @param p_skipCount Indicate how many messages should be skipped prior to checking + */ + function f_gen_diameter_receive( + in charstring p_tpId, + in template SkipTypeDiameter p_skip + ) runs on DiameterInterfaceMonitor { + var integer skipCount := valueof(p_skip.skipCount); + tc_wait.start; + + alt { + // preamble (consume prior messages) + [skipCount > 0 and ispresent(p_skip.skipMessage)] diameterPort.receive (p_skip.skipMessage) { + skipCount := skipCount - 1; + log("***f_gen_diameter_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); + repeat; + } + [] tc_wait.timeout { + f_setConformanceVerdict(inconc, "***f_gen_diameter_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); + } + } - } + } - /** - * @desc Activates for each entry in a expected IMS SIP message list a default - * for receiving that message and setting the verdict as desired - * @param p_default Reference to default array where deaults are to be added - * @param p_startIdx Index into default array after which references for - * defaults created in this function should be added - * @param p_list List of expected messages to be checked in default - * @param p_verdict Verdict to be set in case the incoming message matches - any of the expcted messages - * @param p_tpId Test Purpose identifir - */ - function f_activateImsSipDefaults( - inout DefaultList p_default, - in integer p_startIdx, - in template SipMessageList p_list, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on ImsInterfaceMonitor { - var integer v_size := lengthof(p_list); - var integer v_idx := p_startIdx; - - for (var integer i := 0; i < v_size; i := i + 1) { - if (ischosen(p_list[i].request)) { - p_default[v_idx] := activate( - a_receive_sipRequest(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) - ); - } else { - p_default[v_idx] := activate( - a_receive_sipResponse(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) - ); - } - v_idx := v_idx + 1; - } + /** + * @desc Activates for each entry in a expected IMS SIP message list a default + * for receiving that message and setting the verdict as desired + * @param p_default Reference to default array where deaults are to be added + * @param p_startIdx Index into default array after which references for + * defaults created in this function should be added + * @param p_list List of expected messages to be checked in default + * @param p_verdict Verdict to be set in case the incoming message matches + any of the expcted messages + * @param p_tpId Test Purpose identifir + */ + function f_activateImsSipDefaults( + inout DefaultList p_default, + in integer p_startIdx, + in template SipMessageList p_list, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on ImsInterfaceMonitor { + var integer v_size := lengthof(p_list); + var integer v_idx := p_startIdx; + + for (var integer i := 0; i < v_size; i := i + 1) { + if (ischosen(p_list[i].request)) { + p_default[v_idx] := activate( + a_receive_sipRequest(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } else { + p_default[v_idx] := activate( + a_receive_sipResponse(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } + v_idx := v_idx + 1; + } //log ("### f_activateImsSipDefaults: ended"); - } - - /** - * @desc Activates for each entry in a expected IMS SIP message list a default - * for receiving that message and setting the verdict as desired - * @param p_default Reference to default array where deaults are to be added - * @param p_startIdx Index into default array after which references for - * defaults created in this function should be added - * @param p_list List of expected messages to be checked in default - * @param p_verdict Verdict to be set in case the incoming message matches - any of the expcted messages - * @param p_tpId Test Purpose identifir - */ - function f_activateSipDefaults( - inout DefaultList p_default, - in integer p_startIdx, - in template SipMessageList p_list, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on SipInterfaceMonitor { - var integer v_size := lengthof(p_list); - var integer v_idx := p_startIdx; - - for (var integer i := 0; i < v_size; i := i + 1) { - if (ischosen(p_list[i].request)) { - p_default[v_idx] := activate( - a_receive_sip_Request(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) - ); - } else { - p_default[v_idx] := activate( - a_receive_sip_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) - ); - } - v_idx := v_idx + 1; - } + } + + /** + * @desc Activates for each entry in a expected IMS SIP message list a default + * for receiving that message and setting the verdict as desired + * @param p_default Reference to default array where deaults are to be added + * @param p_startIdx Index into default array after which references for + * defaults created in this function should be added + * @param p_list List of expected messages to be checked in default + * @param p_verdict Verdict to be set in case the incoming message matches + any of the expcted messages + * @param p_tpId Test Purpose identifir + */ + function f_activateSipDefaults( + inout DefaultList p_default, + in integer p_startIdx, + in template SipMessageList p_list, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var integer v_size := lengthof(p_list); + var integer v_idx := p_startIdx; + + for (var integer i := 0; i < v_size; i := i + 1) { + if (ischosen(p_list[i].request)) { + p_default[v_idx] := activate( + a_receive_sip_Request(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } else { + p_default[v_idx] := activate( + a_receive_sip_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } + v_idx := v_idx + 1; + } //log ("### f_activateImsSipDefaults: ended"); - } - - /** - * @desc Activates for each entry in a expected IMS SIP message list a default - * for receiving that message and setting the verdict as desired - * @param p_default Reference to default array where deaults are to be added - * @param p_startIdx Index into default array after which references for - * defaults created in this function should be added - * @param p_list List of expected messages to be checked in default - * @param p_verdict Verdict to be set in case the incoming message matches - any of the expcted messages - * @param p_tpId Test Purpose identifir - */ - function f_activateDiameterDefaults( - inout DefaultList p_default, - in integer p_startIdx, - in template DiameterMessageList p_list, - in verdicttype p_verdict, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on DiameterInterfaceMonitor { - var integer v_size := lengthof(p_list); - var integer v_idx := p_startIdx; - - for (var integer i := 0; i < v_size; i := i + 1) { - if (isvalue(p_list[i])) { - p_default[v_idx] := activate( - a_receive_diameter(p_list[i],p_verdict, p_tpId, p_forwardMtc, p_checkMessage) - ); - } -// else { -// p_default[v_idx] := activate( -// a_receive_diameter_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) -// ); -// } - v_idx := v_idx + 1; - } + } + + /** + * @desc Activates for each entry in a expected IMS SIP message list a default + * for receiving that message and setting the verdict as desired + * @param p_default Reference to default array where deaults are to be added + * @param p_startIdx Index into default array after which references for + * defaults created in this function should be added + * @param p_list List of expected messages to be checked in default + * @param p_verdict Verdict to be set in case the incoming message matches + any of the expcted messages + * @param p_tpId Test Purpose identifir + */ + function f_activateDiameterDefaults( + inout DefaultList p_default, + in integer p_startIdx, + in template DiameterMessageList p_list, + in verdicttype p_verdict, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on DiameterInterfaceMonitor { + var integer v_size := lengthof(p_list); + var integer v_idx := p_startIdx; + + for (var integer i := 0; i < v_size; i := i + 1) { + if (isvalue(p_list[i])) { + p_default[v_idx] := activate( + a_receive_diameter(p_list[i],p_verdict, p_tpId, p_forwardMtc, p_checkMessage) + ); + } +// else { +// p_default[v_idx] := activate( +// a_receive_diameter_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) +// ); +// } + v_idx := v_idx + 1; + } //log ("### f_activateImsSipDefaults: ended"); - } - - - /** - * @desc - * Generic function for reading and verifying messages on the - * interface associated to the ImsInterfaceMonitor instance. This - * functions works as follows: First, messages are skipped according - * to the p_skip template. The p_skip template contains a message - * template and a counter indicating the number of received messages - * matching the message template to be skipped. If not enough - * messages matching the message template arrive at the interface, - * the function fails after timout. Next, messages are consumed from - * the interface and matched against the p_passCriteria template - * list and the p_failCriteria template list. The function - * terminates with pass if a message is received matching a - * pass-template and terminates with fail if a fail-template - * matches. Matching against pass-templates occurs bevor matching - * agains fail-templates. If neither pass-templates nor - * fail-templates match, then the functions continues reading from - * the interface until a match arises, or timeout. The timeout value - * is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if - * p_forwardMtc is set to true, the last received message is stored - * to be fetched and used later by the main test component. Some - * special use cases: - Set p_skip.skipCounter to 0 to avoid - * skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and - * p_skip.skipMessage to ? to skip exactly one message of any type - * will be skipped. - If the list of fail-templates is empty, then - * the function will wait for the first message maching a - * pass-message, or fail after timeout. - * @param p_passCriteria list of message templates which lead to pass - * @param p_failCriteria list of message templates which lead to fail - * @param p_skip - * Indicate how many messages from a specific sip template should be - * skipped prior to checking - * @param p_tpId The Test Purpose identifier - * @param p_forwardMtc - * indicate if the received Sip message should be forwarded to the - * mtc - * @param p_checkMessage - * indicate if the incomming message should only be checked - * (port.check) or consumed (port.receive). The check operation - * allows read access to the top element of incoming port queues - * without removing the top element from the queue. - */ - function f_Iot_Sip_receive( - in template SipMessageList p_passCriteria, - in template SipMessageList p_failCriteria, - in template SkipType p_skip, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on SipInterfaceMonitor { - var integer v_size := lengthof(p_failCriteria); - var DefaultList v_defaultArray; - var integer i := 0; - var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); - - log ("### f_Iot_Sip_receive: passCriteria=", p_passCriteria); - log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); - - // check if interface is available - if(not((isvalue(vc_Interface)) /*and (vc_interfaceName=="")*/)){ - setverdict(inconc, self, "******f_Iot_Sip_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); - }else{// Interface is available - v_defaultArray[0] := activate(a_default_sip(p_tpId)); - f_activateSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); - f_activateSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); - f_gen_sip_receive(p_tpId, p_skip); - - for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { - deactivate(v_defaultArray[i]); - } - - } - -// for(i := 0; i < v_size_ai; i := i+1) { -// if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { -// if (PX_AVAILABLE_INTERFACES[i].available == false) { -// setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); -// } else { // Interface is available -// v_defaultArray[0] := activate(a_default(p_tpId)); -// f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); -// f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); -// f_gen_receive(p_tpId, p_skip); -// -// for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { -// deactivate(v_defaultArray[i]); -// } -// } -// break; // Exit loop -// } -// } // 'for' loop - } + } + + + /** + * @desc + * Generic function for reading and verifying messages on the + * interface associated to the ImsInterfaceMonitor instance. This + * functions works as follows: First, messages are skipped according + * to the p_skip template. The p_skip template contains a message + * template and a counter indicating the number of received messages + * matching the message template to be skipped. If not enough + * messages matching the message template arrive at the interface, + * the function fails after timout. Next, messages are consumed from + * the interface and matched against the p_passCriteria template + * list and the p_failCriteria template list. The function + * terminates with pass if a message is received matching a + * pass-template and terminates with fail if a fail-template + * matches. Matching against pass-templates occurs bevor matching + * agains fail-templates. If neither pass-templates nor + * fail-templates match, then the functions continues reading from + * the interface until a match arises, or timeout. The timeout value + * is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if + * p_forwardMtc is set to true, the last received message is stored + * to be fetched and used later by the main test component. Some + * special use cases: - Set p_skip.skipCounter to 0 to avoid + * skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and + * p_skip.skipMessage to ? to skip exactly one message of any type + * will be skipped. - If the list of fail-templates is empty, then + * the function will wait for the first message maching a + * pass-message, or fail after timeout. + * @param p_passCriteria list of message templates which lead to pass + * @param p_failCriteria list of message templates which lead to fail + * @param p_skip + * Indicate how many messages from a specific sip template should be + * skipped prior to checking + * @param p_tpId The Test Purpose identifier + * @param p_forwardMtc + * indicate if the received Sip message should be forwarded to the + * mtc + * @param p_checkMessage + * indicate if the incomming message should only be checked + * (port.check) or consumed (port.receive). The check operation + * allows read access to the top element of incoming port queues + * without removing the top element from the queue. + */ + function f_Iot_Sip_receive( + in template SipMessageList p_passCriteria, + in template SipMessageList p_failCriteria, + in template SkipType p_skip, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on SipInterfaceMonitor { + var integer v_size := lengthof(p_failCriteria); + var DefaultList v_defaultArray; + var integer i := 0; + var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); + + log ("### f_Iot_Sip_receive: passCriteria=", p_passCriteria); + log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); + + // check if interface is available + if(not((isvalue(vc_Interface)) /*and (vc_interfaceName=="")*/)){ + setverdict(inconc, self, "******f_Iot_Sip_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); + }else{// Interface is available + v_defaultArray[0] := activate(a_default_sip(p_tpId)); + f_activateSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); + f_activateSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); + f_gen_sip_receive(p_tpId, p_skip); + + for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { + deactivate(v_defaultArray[i]); + } + + } + +// for(i := 0; i < v_size_ai; i := i+1) { +// if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { +// if (PX_AVAILABLE_INTERFACES[i].available == false) { +// setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); +// } else { // Interface is available +// v_defaultArray[0] := activate(a_default(p_tpId)); +// f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); +// f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); +// f_gen_receive(p_tpId, p_skip); +// +// for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { +// deactivate(v_defaultArray[i]); +// } +// } +// break; // Exit loop +// } +// } // 'for' loop + } - /** - * @desc - * Generic function for reading and verifying messages on the - * interface associated to the ImsInterfaceMonitor instance. This - * functions works as follows: First, messages are skipped according - * to the p_skip template. The p_skip template contains a message - * template and a counter indicating the number of received messages - * matching the message template to be skipped. If not enough - * messages matching the message template arrive at the interface, - * the function fails after timout. Next, messages are consumed from - * the interface and matched against the p_passCriteria template - * list and the p_failCriteria template list. The function - * terminates with pass if a message is received matching a - * pass-template and terminates with fail if a fail-template - * matches. Matching against pass-templates occurs bevor matching - * agains fail-templates. If neither pass-templates nor - * fail-templates match, then the functions continues reading from - * the interface until a match arises, or timeout. The timeout value - * is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if - * p_forwardMtc is set to true, the last received message is stored - * to be fetched and used later by the main test component. Some - * special use cases: - Set p_skip.skipCounter to 0 to avoid - * skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and - * p_skip.skipMessage to ? to skip exactly one message of any type - * will be skipped. - If the list of fail-templates is empty, then - * the function will wait for the first message maching a - * pass-message, or fail after timeout. - * @param p_passCriteria list of message templates which lead to pass - * @param p_failCriteria list of message templates which lead to fail - * @param p_skip - * Indicate how many messages from a specific sip template should be - * skipped prior to checking - * @param p_tpId The Test Purpose identifier - * @param p_forwardMtc - * indicate if the received Sip message should be forwarded to the - * mtc - * @param p_checkMessage - * indicate if the incomming message should only be checked - * (port.check) or consumed (port.receive). The check operation - * allows read access to the top element of incoming port queues - * without removing the top element from the queue. - */ - function f_Iot_Diameter_receive( - in template DiameterMessageList p_passCriteria, - in template DiameterMessageList p_failCriteria, - in template SkipTypeDiameter p_skip, - in charstring p_tpId, - in boolean p_forwardMtc, - in boolean p_checkMessage - ) runs on DiameterInterfaceMonitor { - var integer v_size := lengthof(p_failCriteria); - var DefaultList v_defaultArray; - var integer i := 0; - var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); - - log ("### f_Iot_Diameter_receive: passCriteria=", p_passCriteria); - log ("### f_Iot_Diameter_receive: failCriteria=", p_failCriteria); - - // check if interface is available - if(not((isvalue(vc_Interface)) /*and (vc_interfaceName=="")*/)){ - setverdict(inconc, self, "******f_Iot_Diameter_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); - }else{// Interface is available - v_defaultArray[0] := activate(a_default_diameter(p_tpId)); - f_activateDiameterDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); - f_activateDiameterDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); - f_gen_diameter_receive(p_tpId, p_skip); - - for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { - deactivate(v_defaultArray[i]); - } - - } - -// for(i := 0; i < v_size_ai; i := i+1) { -// if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { -// if (PX_AVAILABLE_INTERFACES[i].available == false) { -// setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); -// } else { // Interface is available -// v_defaultArray[0] := activate(a_default(p_tpId)); -// f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); -// f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); -// f_gen_receive(p_tpId, p_skip); -// -// for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { -// deactivate(v_defaultArray[i]); -// } -// } -// break; // Exit loop -// } -// } // 'for' loop - } + /** + * @desc + * Generic function for reading and verifying messages on the + * interface associated to the ImsInterfaceMonitor instance. This + * functions works as follows: First, messages are skipped according + * to the p_skip template. The p_skip template contains a message + * template and a counter indicating the number of received messages + * matching the message template to be skipped. If not enough + * messages matching the message template arrive at the interface, + * the function fails after timout. Next, messages are consumed from + * the interface and matched against the p_passCriteria template + * list and the p_failCriteria template list. The function + * terminates with pass if a message is received matching a + * pass-template and terminates with fail if a fail-template + * matches. Matching against pass-templates occurs bevor matching + * agains fail-templates. If neither pass-templates nor + * fail-templates match, then the functions continues reading from + * the interface until a match arises, or timeout. The timeout value + * is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if + * p_forwardMtc is set to true, the last received message is stored + * to be fetched and used later by the main test component. Some + * special use cases: - Set p_skip.skipCounter to 0 to avoid + * skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and + * p_skip.skipMessage to ? to skip exactly one message of any type + * will be skipped. - If the list of fail-templates is empty, then + * the function will wait for the first message maching a + * pass-message, or fail after timeout. + * @param p_passCriteria list of message templates which lead to pass + * @param p_failCriteria list of message templates which lead to fail + * @param p_skip + * Indicate how many messages from a specific sip template should be + * skipped prior to checking + * @param p_tpId The Test Purpose identifier + * @param p_forwardMtc + * indicate if the received Sip message should be forwarded to the + * mtc + * @param p_checkMessage + * indicate if the incomming message should only be checked + * (port.check) or consumed (port.receive). The check operation + * allows read access to the top element of incoming port queues + * without removing the top element from the queue. + */ + function f_Iot_Diameter_receive( + in template DiameterMessageList p_passCriteria, + in template DiameterMessageList p_failCriteria, + in template SkipTypeDiameter p_skip, + in charstring p_tpId, + in boolean p_forwardMtc, + in boolean p_checkMessage + ) runs on DiameterInterfaceMonitor { + var integer v_size := lengthof(p_failCriteria); + var DefaultList v_defaultArray; + var integer i := 0; + var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); + + log ("### f_Iot_Diameter_receive: passCriteria=", p_passCriteria); + log ("### f_Iot_Diameter_receive: failCriteria=", p_failCriteria); + + // check if interface is available + if(not((isvalue(vc_Interface)) /*and (vc_interfaceName=="")*/)){ + setverdict(inconc, self, "******f_Iot_Diameter_receive: Interface " & vc_interfaceName & " not available and is not evaluated******" ); + }else{// Interface is available + v_defaultArray[0] := activate(a_default_diameter(p_tpId)); + f_activateDiameterDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); + f_activateDiameterDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); + f_gen_diameter_receive(p_tpId, p_skip); + + for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { + deactivate(v_defaultArray[i]); + } + + } + +// for(i := 0; i < v_size_ai; i := i+1) { +// if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { +// if (PX_AVAILABLE_INTERFACES[i].available == false) { +// setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); +// } else { // Interface is available +// v_defaultArray[0] := activate(a_default(p_tpId)); +// f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); +// f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); +// f_gen_receive(p_tpId, p_skip); +// +// for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { +// deactivate(v_defaultArray[i]); +// } +// } +// break; // Exit loop +// } +// } // 'for' loop + } - }//end group - - - group misc { - - /** + }//end group + + + group misc { + + /** * @desc * This function generate a charstring with a given length used as * message body. * @param p_length length of the message body * @return message body (charstring) */ - function f_getMessageBody(in integer p_length) return charstring { - var charstring v_rtn := ""; - - for(var integer i := 0; i < p_length; i:=i+1) { - v_rtn := v_rtn & "a"; - } - - return v_rtn; - } - - function f_getContactAddr(in Contact contact) return SipUrl { - var SipUrl v_SipUrl; - - var ContactAddress addr := contact.contactBody.contactAddresses[0]; - - if (ischosen (addr.addressField.nameAddr)) { - v_SipUrl := addr.addressField.nameAddr.addrSpec; - } else { - v_SipUrl := addr.addressField.addrSpecUnion; - } - - return (v_SipUrl); - } - - } + function f_getMessageBody(in integer p_length) return charstring { + var charstring v_rtn := ""; + + for(var integer i := 0; i < p_length; i:=i+1) { + v_rtn := v_rtn & "a"; + } + + return v_rtn; + } + + function f_getContactAddr(in Contact contact) return SipUrl { + var SipUrl v_SipUrl; + + var ContactAddress addr := contact.contactBody.contactAddresses[0]; + + if (ischosen (addr.addressField.nameAddr)) { + v_SipUrl := addr.addressField.nameAddr.addrSpec; + } else { + v_SipUrl := addr.addressField.addrSpecUnion; + } + + return (v_SipUrl); + } + + } } \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index 78e7d69..9f04228 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -328,7 +328,7 @@ group g_PCRF_STA { p_monitorCompRef.start ( f_Iot_Diameter_receive( { - { sTR_MSG := mw_STA_dummy }, + { sTR_MSG := mw_STR_dummy }, { sTA_MSG := mw_STA_diamSuccess } }, {}, diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..d640fce 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn index 45bb56f..2b827cd 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -1,569 +1,593 @@ /* - * @author STF 574 - * @version $Id: LibIot_VxLTE_Functions.ttcn 1 2020-05-29 15:06:42Z pintar $ - * @desc This module provides Functions parameters which need to be - * changeable within validation + * @author STF 574 + * @version $Id: LibIot_VxLTE_Functions.ttcn 1 2020-05-29 15:06:42Z pintar $ + * @desc This module provides Functions parameters which need to be + * changeable within validation */ -module LibIot_VxLTE_Functions { +module LibIot_VxLTE_Functions { - import from LibIot_TypesAndValues - { - type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, - ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailable, InterfaceAvailableList,MonitorInterfaceInfo, - VxLTEMonitorInterfaceList; + import from LibIot_TypesAndValues + { + type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, + ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailable, InterfaceAvailableList,MonitorInterfaceInfo, + VxLTEMonitorInterfaceList; } import from AtsImsIot_Templates { - template /*m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, - m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout,*/ - m_SetFilterReq/*, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq, - m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any*/; - } - import from LibIot_VxLTE_PIXITS all; - import from LibIot_VxLTE_Templates all; - - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - - group ConfigurationFunctions{ - /** - * @desc Check and create a list of monitor interfaces based on PIXITS - * @param - * @return the created monitor component list in vc_MonIntfList - */ - function f_setVxLteMonIterfacesAvailability(/*inout VxLTEMonitorInterfaceList p_vxlteMonIntfList*/)runs on ImsTestCoordinator{ - - - if (PX_SIP_GMA_MONITORENABLED == true){ - //p_vxlteMonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); - vc_MonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); - } - if (PX_SIP_GMB_MONITORENABLED == true){ - vc_MonIntfList.gmB := valueof(m_MonIntf_Sip_Gm_B); - } - if (PX_SIP_IC_MONITORENABLED == true){ - vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic); - } - if (PX_SIP_MW_MONITORENABLED == true){ - - vc_MonIntfList.mwPI := valueof(m_MonIntf_Sip_Mw_PI); - /**/ - vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS); - /**/ - vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS); - /**/ - vc_MonIntfList.mwPB := valueof(m_MonIntf_Sip_Mw_PB); - /**/ - vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB); - } - if (PX_SIP_ISC_MONITORENABLED == true){ - vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC); - } - - - - if (PX_DIAMETER_CX_MONITORENABLED == true){ - vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH); - /**/ - vc_MonIntfList.cxSH := valueof(m_MonIntf_Diameter_Cx_SH); - } - if (PX_DIAMETER_GX_MONITORENABLED == true){ - vc_MonIntfList.gx := valueof(m_MonIntf_Diameter_Gx); - } - if (PX_DIAMETER_RX_MONITORENABLED == true){ - vc_MonIntfList.rx := valueof(m_MonIntf_Diameter_Rx); - } - if (PX_DIAMETER_S6A_MONITORENABLED == true){ - vc_MonIntfList.s6a := valueof(m_MonIntf_Diameter_S6a); - } - if (PX_DIAMETER_S9_MONITORENABLED == true){ - vc_MonIntfList.s9 := valueof(m_MonIntf_Diameter_S9); - } - if (PX_DIAMETER_SH_MONITORENABLED == true){ - vc_MonIntfList.sh := valueof(m_MonIntf_Diameter_Sh); - } - - } - - /** - * @desc Create monitor components based on vc_MonIntfList - * @param - * @return the created monitor components in vc_vxlte_monitor_components - */ - function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{ - - if (isvalue(vc_MonIntfList.gmA)){ - vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA); - } - if (isvalue(vc_MonIntfList.gmB)){ - vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB); - } - - if (isvalue(vc_MonIntfList.ic)){ - vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic); - } - - if (isvalue(vc_MonIntfList.mwPI)){ - vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI); - } - if (isvalue(vc_MonIntfList.mwPS)){ - vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS); - } - if (isvalue(vc_MonIntfList.mwIS)){ - vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS); - } - if (isvalue(vc_MonIntfList.mwPB)){ - vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB); - } - if (isvalue(vc_MonIntfList.mwIB)){ - vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB); - } - - if (isvalue(vc_MonIntfList.isc)){ - vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc); - } - - - - if (isvalue(vc_MonIntfList.cxIH)){ - vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH); - } - if (isvalue(vc_MonIntfList.cxSH)){ - vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH); - } - if (isvalue(vc_MonIntfList.gx)){ - vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx); - } - if (isvalue(vc_MonIntfList.rx)){ - vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx); - } - if (isvalue(vc_MonIntfList.s6a)){ - vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a); - } - if (isvalue(vc_MonIntfList.s9)){ - vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9); - } - if (isvalue(vc_MonIntfList.sh)){ - vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh); - } - } - - /** - * @desc Start monitor components based on vc_MonIntfList - * @param - * @return Created monitor components in vc_vxlte_monitor_components are connected/mapped - */ - function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{ + template /*m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, + m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout,*/ + m_SetFilterReq/*, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq, + m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any*/; + } + import from LibIot_VxLTE_PIXITS all; + import from LibIot_VxLTE_Templates all; + + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + + type record of charstring InterfaceNamesList; + group ConfigurationFunctions{ + /** + * @desc Check and create a list of monitor interfaces based on PIXITS + * @param + * @return the created monitor component list in vc_MonIntfList + */ + function f_setVxLteMonIterfacesAvailability(/*inout VxLTEMonitorInterfaceList p_vxlteMonIntfList*/)runs on ImsTestCoordinator{ + + + if (PX_SIP_GMA_MONITORENABLED == true){ + //p_vxlteMonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); + vc_MonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A); + } + if (PX_SIP_GMB_MONITORENABLED == true){ + vc_MonIntfList.gmB := valueof(m_MonIntf_Sip_Gm_B); + } + if (PX_SIP_IC_MONITORENABLED == true){ + vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic); + } + if (PX_SIP_MW_MONITORENABLED == true){ + + vc_MonIntfList.mwPI := valueof(m_MonIntf_Sip_Mw_PI); + /**/ + vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS); + /**/ + vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS); + /**/ + vc_MonIntfList.mwPB := valueof(m_MonIntf_Sip_Mw_PB); + /**/ + vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB); + } + if (PX_SIP_ISC_MONITORENABLED == true){ + vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC); + } + + + + if (PX_DIAMETER_CX_MONITORENABLED == true){ + vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH); + /**/ + vc_MonIntfList.cxSH := valueof(m_MonIntf_Diameter_Cx_SH); + } + if (PX_DIAMETER_GX_MONITORENABLED == true){ + vc_MonIntfList.gx := valueof(m_MonIntf_Diameter_Gx); + } + if (PX_DIAMETER_RX_MONITORENABLED == true){ + vc_MonIntfList.rx := valueof(m_MonIntf_Diameter_Rx); + } + if (PX_DIAMETER_S6A_MONITORENABLED == true){ + vc_MonIntfList.s6a := valueof(m_MonIntf_Diameter_S6a); + } + if (PX_DIAMETER_S9_MONITORENABLED == true){ + vc_MonIntfList.s9 := valueof(m_MonIntf_Diameter_S9); + } + if (PX_DIAMETER_SH_MONITORENABLED == true){ + vc_MonIntfList.sh := valueof(m_MonIntf_Diameter_Sh); + } + + } + + /** + * @desc Create monitor components based on vc_MonIntfList + * @param + * @return the created monitor components in vc_vxlte_monitor_components + */ + function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{ + + if (isvalue(vc_MonIntfList.gmA)){ + vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA); + } + if (isvalue(vc_MonIntfList.gmB)){ + vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB); + } + + if (isvalue(vc_MonIntfList.ic)){ + vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI); + } + if (isvalue(vc_MonIntfList.mwPS)){ + vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS); + } + if (isvalue(vc_MonIntfList.mwIS)){ + vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS); + } + if (isvalue(vc_MonIntfList.mwPB)){ + vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB); + } + if (isvalue(vc_MonIntfList.mwIB)){ + vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB); + } + + if (isvalue(vc_MonIntfList.isc)){ + vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH); + } + if (isvalue(vc_MonIntfList.cxSH)){ + vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH); + } + if (isvalue(vc_MonIntfList.gx)){ + vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx); + } + if (isvalue(vc_MonIntfList.rx)){ + vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx); + } + if (isvalue(vc_MonIntfList.s6a)){ + vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a); + } + if (isvalue(vc_MonIntfList.s9)){ + vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9); + } + if (isvalue(vc_MonIntfList.sh)){ + vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh); + } + } + + /** + * @desc Start monitor components based on vc_MonIntfList + * @param + * @return Created monitor components in vc_vxlte_monitor_components are connected/mapped + */ + function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{ //Initialize the Adapter (including the TrafficCapture process). - f_cf_initCapture(); - - if (isvalue(vc_MonIntfList.gmA)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA); - //TODO: per each enabled monitor inteface send traffic filter req - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.gmA.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.gmB)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmB); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.gmB.interfaceInfo} - ) - ))); - } - - if (isvalue(vc_MonIntfList.ic)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.ic); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.ic.interfaceInfo} - ) - ))); - } - - if (isvalue(vc_MonIntfList.mwPI)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPI); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwPI.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwPS)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPS); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwPS.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwIS)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIS); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwIS.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwPB)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPB); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwPB.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.mwIB)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIB); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.mwIB.interfaceInfo} - ) - ))); - } - - if (isvalue(vc_MonIntfList.isc)){ - f_cf_monitor_up_sip(vc_vxlte_monitor_components.isc); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_sip, - {vc_MonIntfList.isc.interfaceInfo} - ) - ))); - } - - - - if (isvalue(vc_MonIntfList.cxIH)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxIH); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.cxIH.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.cxSH)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxSH); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.cxSH.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.gx)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.gx); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.gx.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.rx)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.rx); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.rx.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.s6a)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s6a); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.s6a.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.s9)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s9); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.s9.interfaceInfo} - ) - ))); - } - if (isvalue(vc_MonIntfList.sh)){ - f_cf_monitor_up_diameter(vc_vxlte_monitor_components.sh); - vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( - valueof (m_SetFilterReq( - e_diameter, - {vc_MonIntfList.sh.interfaceInfo} - ) - ))); - } - - f_cf_startCapture(); - } - - /** - * @desc Stops monitor components based on vc_MonIntfList - * @param - * @return Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped - */ - function f_cf_VxLteMonitor_Down() runs on ImsTestCoordinator{ - //Stop traffic capture processing. - f_cf_stopCapture(); - - if (isvalue(vc_MonIntfList.gmA)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmA); - } - if (isvalue(vc_MonIntfList.gmB)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmB); - } - - if (isvalue(vc_MonIntfList.ic)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.ic); - } - - if (isvalue(vc_MonIntfList.mwPI)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPI); - } - if (isvalue(vc_MonIntfList.mwPS)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPS); - } - if (isvalue(vc_MonIntfList.mwIS)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIS); - } - if (isvalue(vc_MonIntfList.mwPB)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPB); - } - if (isvalue(vc_MonIntfList.mwIB)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIB); - } - - if (isvalue(vc_MonIntfList.isc)){ - f_cf_monitor_down_sip(vc_vxlte_monitor_components.isc); - } - - - - if (isvalue(vc_MonIntfList.cxIH)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxIH); - } - if (isvalue(vc_MonIntfList.cxSH)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxSH); - } - if (isvalue(vc_MonIntfList.gx)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.gx); - } - if (isvalue(vc_MonIntfList.rx)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.rx); - } - if (isvalue(vc_MonIntfList.s6a)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s6a); - } - if (isvalue(vc_MonIntfList.s9)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s9); - } - if (isvalue(vc_MonIntfList.sh)){ - f_cf_monitor_down_diameter(vc_vxlte_monitor_components.sh); - } - } - }//end group ConfigurationFunctions - group CheckFunctions{ - /** - * @desc Check monitor component based on interface name - * @param - * @return true - Monitorinteface available/active - * false - Monitorinteface not exists or not available/active - */ - function f_SipMonitorInterface_available(charstring p_interfaceName) runs on ImsTestCoordinator return boolean{ + f_cf_initCapture(); + + if (isvalue(vc_MonIntfList.gmA)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA); + //TODO: per each enabled monitor inteface send traffic filter req + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.gmA.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.gmB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.gmB.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.ic)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.ic); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.ic.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPI); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPI.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwPS)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPS); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPS.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwIS)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIS); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwIS.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwPB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwPB.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.mwIB)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIB); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mwIB.interfaceInfo} + ) + ))); + } + + if (isvalue(vc_MonIntfList.isc)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.isc); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.isc.interfaceInfo} + ) + ))); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxIH); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.cxIH.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.cxSH)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxSH); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.cxSH.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.gx)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.gx); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.gx.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.rx)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.rx); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.rx.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.s6a)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s6a); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.s6a.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.s9)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s9); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.s9.interfaceInfo} + ) + ))); + } + if (isvalue(vc_MonIntfList.sh)){ + f_cf_monitor_up_diameter(vc_vxlte_monitor_components.sh); + vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_diameter, + {vc_MonIntfList.sh.interfaceInfo} + ) + ))); + } + + f_cf_startCapture(); + } + + /** + * @desc Stops monitor components based on vc_MonIntfList + * @param + * @return Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped + */ + function f_cf_VxLteMonitor_Down() runs on ImsTestCoordinator{ + //Stop traffic capture processing. + f_cf_stopCapture(); + + if (isvalue(vc_MonIntfList.gmA)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmA); + } + if (isvalue(vc_MonIntfList.gmB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmB); + } + + if (isvalue(vc_MonIntfList.ic)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.ic); + } + + if (isvalue(vc_MonIntfList.mwPI)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPI); + } + if (isvalue(vc_MonIntfList.mwPS)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPS); + } + if (isvalue(vc_MonIntfList.mwIS)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIS); + } + if (isvalue(vc_MonIntfList.mwPB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPB); + } + if (isvalue(vc_MonIntfList.mwIB)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIB); + } + + if (isvalue(vc_MonIntfList.isc)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.isc); + } + + + + if (isvalue(vc_MonIntfList.cxIH)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxIH); + } + if (isvalue(vc_MonIntfList.cxSH)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxSH); + } + if (isvalue(vc_MonIntfList.gx)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.gx); + } + if (isvalue(vc_MonIntfList.rx)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.rx); + } + if (isvalue(vc_MonIntfList.s6a)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s6a); + } + if (isvalue(vc_MonIntfList.s9)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s9); + } + if (isvalue(vc_MonIntfList.sh)){ + f_cf_monitor_down_diameter(vc_vxlte_monitor_components.sh); + } + } + }//end group ConfigurationFunctions + group CheckFunctions{ + + /** + * @desc Check monitor components based on interfaces names + * @param + * @return true - Monitorinteface available/active + * false - Monitorinteface not exists or not available/active + */ + function f_checkVxLteRequiredMonitorInterface(InterfaceNamesList p_interfaces) runs on ImsTestCoordinator return boolean{ + var integer v_len:=lengthof(p_interfaces); + var integer i:=0; + var boolean v_check := false; + + if (v_len>0){ + for(i:=0;i Date: Tue, 23 Jun 2020 17:29:24 +0200 Subject: [PATCH 093/176] Iztok's update - new TD modules added. --- ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn | 210 +++++ ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 471 +++++++++++ ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 404 ++++++++++ ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 1111 ++++++++++++++++++++++++++ ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 366 +++++++++ ttcn/LibSip | 2 +- 6 files changed, 2563 insertions(+), 1 deletion(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn new file mode 100644 index 0000000..e381d78 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn @@ -0,0 +1,210 @@ +/** + * @author STF 574 + * @version $Id: $ + * @desc This module provides ATS specific test case definitions for Network Attachment. + * @see ETSI TS 103 653-2 (2020) + */ +module AtsImsIot_TD_ATT{ + + // LibCommon + // LibSip + // LibIms + import from LibIms_UpperTester { type ImsUserInfo }; + // LibIot + import from LibIot_TestInterface { type IotEquipmentUser }; + import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; + import from LibIot_PIXITS all; + import from LibIot_VxLTE_PIXITS all; + import from LibIot_VxLTE_Functions all; + // LibImsIot + import from AtsImsIot_Functions { function f_getImUser}; + // ImsIot + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_IC all; + import from AtsImsIot_TP_behavior_CX all; + import from AtsImsIot_TP_behavior_GX all; + import from AtsImsIot_TP_behavior_ISC all; + import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_S6A all; + import from AtsImsIot_TP_behavior_S9 all; + import from AtsImsIot_TP_behavior_SH all; + import from AtsImsIot_Behavior all; // TODO To be removed + + group Interoperability{ + group networkAttachmentAndDefaultBearer { + /** + * @desc Initial Network Attachment and Establishment of the Default Bearer. + * On successful initial network attachment, the UE should discover the P-CSCF IP address. + * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 + */ + testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // test body + // Check that user A can register to IMS A + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_ATT_01 + + } //End of group networkAttachmentAndDefaultBearer + } // End of group Interoperability + group Roaming{ + group networkAttachmentAndDefaultBearer { + /** + * @desc Initial Network Attachment and Establishment of the Default Bearer. + * On successful initial network attachment, the UE should discover the P-CSCF IP address. + * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 + */ + testcase TC_VxLTE_RMI_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // test body + // Check that user A can register to IMS A + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + //f_mtc_check_TP_S6A_MME_AIR_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + //f_mtc_check_TP_S6A_HSS_AIA_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_MME_ULR_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ULA_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PGW_CCR_01 ( vc_vxlte_monitor_components.gx, false ); + f_mtc_check_TP_S9_PCRF_CCR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR, CCA – Events 4, 5) + f_mtc_check_TP_S9_PCRF_CCA_01 ( vc_vxlte_monitor_components.s9, false ); + f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); + //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_ATT_01 + + /** + * @desc Initial Network Attachment and Establishment of the Default Bearer(S8HR). + * On successful initial network attachment, the UE should discover the P-CSCF IP address. + * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 + */ + testcase TC_VxLTE_RMI_ATT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // test body + // Check that user A can register to IMS A + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + //?f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_ATT_02 + } //End of group networkAttachmentAndDefaultBearer + } // End of group Roaming +} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn new file mode 100644 index 0000000..dd33867 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -0,0 +1,471 @@ +/** + * @author STF 574 + * @version $Id: $ + * @desc This module provides ATS specific test case definitions for IMS Registration. + * @see ETSI TS 103 653-2 (2020) + */ +module AtsImsIot_TD_DRG{ + + // LibCommon + // LibSip + // LibIms + import from LibIms_UpperTester { type ImsUserInfo }; + // LibIot + import from LibIot_TestInterface { type IotEquipmentUser }; + import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; + import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_VxLTE_PIXITS all; + import from LibIot_VxLTE_Functions all; + // LibImsIot + import from AtsImsIot_Functions { function f_getImUser }; + // ImsIot + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_IC all; + import from AtsImsIot_TP_behavior_CX all; + import from AtsImsIot_TP_behavior_GX all; + import from AtsImsIot_TP_behavior_ISC all; + import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_S6A all; + import from AtsImsIot_TP_behavior_S9 all; + import from AtsImsIot_TP_behavior_SH all; + import from AtsImsIot_Behavior all; // TODO To be removed + group Interoperability{ + group IMSDeRegistration { + + /** + * @desc IMS DeRegistration - Successful. + * + * @see + */ + testcase TC_VxLTE_INT_DRG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + ////f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DRG_01 + + /** + * @desc IMS DeRegistration - no SIP session active. + * + * @see + */ + testcase TC_VxLTE_INT_DRG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DRG_02 + + /** + * @desc IMS DeRegistration - expiration - no SIP session active.. + * + * @see + */ + testcase TC_VxLTE_INT_DRG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DRG_03 + + /** + * @desc IMS DeRegistration - active SIP sessions. + * + * @see + */ + testcase TC_VxLTE_INT_DRG_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DRG_04 + + } //End of group IMSDeRegistration + + } // End of group Interoperability + group Roaming{ + group IMSDeRegistration { + + /** + * @desc IMS DeRegistration - no SIP session active. + * + * @see + */ + testcase TC_VxLTE_RMI_DRG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DRG_01 + + /** + * @desc IMS DeRegistration - administrative - no SIP session active. + * + * @see + */ + testcase TC_VxLTE_RMI_DRG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DRG_02 + + /** + * @desc IMS Registration - expiration - no SIP session active. + * + * @see + */ + testcase TC_VxLTE_RMI_DRG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DRG_03 + + /** + * @desc IMS DeRegistration - active SIP sessions. + * + * @see + */ + testcase TC_VxLTE_RMI_DRG_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DRG_04 + + } //End of group IMSDeRegistration + } // End of group Roaming +} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn new file mode 100644 index 0000000..2a0f662 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn @@ -0,0 +1,404 @@ +/** + * @author STF 574 + * @version $Id: $ + * @desc This module provides ATS specific test case definitions for Network Detachment. + * @see ETSI TS 103 653-2 (2020) + */ +module AtsImsIot_TD_DTC{ + + // LibCommon + // LibSip + // LibIms + import from LibIms_UpperTester { type ImsUserInfo }; + // LibIot + import from LibIot_TestInterface { type IotEquipmentUser }; + import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; + import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_VxLTE_PIXITS all; + import from LibIot_VxLTE_Functions all; + // LibImsIot + import from AtsImsIot_Functions { function f_getImUser }; + // ImsIot + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_IC all; + import from AtsImsIot_TP_behavior_CX all; + import from AtsImsIot_TP_behavior_GX all; + import from AtsImsIot_TP_behavior_ISC all; + import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_S6A all; + import from AtsImsIot_TP_behavior_S9 all; + import from AtsImsIot_TP_behavior_SH all; + import from AtsImsIot_Behavior all; + + group Interoperability{ + group NetworkDetachment { + /** + * @desc Initial Network Detachment - no IMS registration + * + * @see + */ + testcase TC_VxLTE_INT_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DTC_01 + + /** + * @desc Initial Network Detachment - with previous IMS registration + * + * @see + */ + testcase TC_VxLTE_INT_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DTC_02 + + /** + * @desc Initial Network Detachment - with previous IMS registration and sessions + * + * @see + */ + testcase TC_VxLTE_INT_DTC_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DTC_03 + + /** + * @desc Initial Network Detachment - HSS initiated - no IMS registration + * + * @see + */ + testcase TC_VxLTE_INT_DTC_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DTC_04 + + /** + * @desc Initial Network Detachment - MME purge user data + * + * @see + */ + testcase TC_VxLTE_INT_DTC_05 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DTC_05 + + } //End of group NetworkDeatachment + } // End of group Interoperability + group Roaming{ + group NetworkDetachment{ + /** + * @desc Initial Network Detachment - no IMS registration + * + * @see + */ + testcase TC_VxLTE_RMI_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnet component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DTC_01 + + /** + * @desc Initial Network Detachment - with previous IMS registration + * + * @see + */ + testcase TC_VxLTE_RMI_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DTC_02 + + /** + * @desc Initial Network Detachment - with previous IMS registration and sessions + * + * @see + */ + testcase TC_VxLTE_RMI_DTC_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DTC_03 + + /** + * @desc Initial Network Detachment - HSS initiated - no IMS registration + * + * @see + */ + testcase TC_VxLTE_RMI_DTC_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DTC_04 + + /** + * @desc Initial Network Detachment - MME purge user data + * + * @see + */ + testcase TC_VxLTE_RMI_DTC_05 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DTC_05 + } //End of group networkAttachmentAndDefaultBearer + } // End of group Roaming +} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn new file mode 100644 index 0000000..1ffdd4b --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -0,0 +1,1111 @@ +/** + * @author STF 574 + * @version $Id: $ + * @desc This module provides ATS specific test case definitions for SIP session and dedicated bearer operations. + * @see ETSI TS 103 653-2 (2020) + */ +module AtsImsIot_TD_INI{ + + // LibCommon + // LibSip + // LibIms + import from LibIms_UpperTester { type ImsUserInfo }; + // LibIot + import from LibIot_TestInterface { type IotEquipmentUser }; + import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; + import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_VxLTE_PIXITS all; + import from LibIot_VxLTE_Functions all; + // LibImsIot + import from AtsImsIot_Functions { function f_getImUser }; + // ImsIot + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_IC all; + import from AtsImsIot_TP_behavior_CX all; + import from AtsImsIot_TP_behavior_GX all; + import from AtsImsIot_TP_behavior_ISC all; + import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_S6A all; + import from AtsImsIot_TP_behavior_S9 all; + import from AtsImsIot_TP_behavior_SH all; + import from AtsImsIot_Behavior all; // TODO To be removed + group Interoperability{ + group SIPsessionEstablisment { + group OriginatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_INT_INI_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // Preamble + //f_cf_int_call_up(v_config); + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // Test body + //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); + + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 6 + + f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); + + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, true); // Event 16 + f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 11 + + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 20 + + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 26 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 27 + + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 29 + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 18 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 30 + f_mtc_userCheckCallEstablished(v_ueB); // Event 30 + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + f_cf_adapter_down ( ); + } // End of TC TC_VxLTE_INT_INI_01 + } //End of group OriginatingLeg + group TerminatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_INT_INI_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // Test body + f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); + + f_mtc_check_TP_GM_PCSCF_INVITE_02(v_gmB, true, true); // Event 8 + f_mtc_check_TP_MW_PCSCF_INVITE_02(v_gmB/*FIXME: mwPS*/, true, true); // Event 3 + + f_mtc_check_TP_GM_PCSCF_100Trying_02(v_gmB, true, true); + f_mtc_check_TP_MW_PCSCF_100Trying_02(v_gmB/*FIXME: mwPS*/, true, true); + + f_mtc_check_TP_GM_PCSCF_180RINGING_02(v_gmB, true); // Event 9 + f_mtc_check_TP_MW_PCSCF_180RINGING_02(v_gmB/*FIXME: mwPS*/, true); // Event 14 + + f_mtc_userCheckRinging(v_ueA); + f_mtc_userCheckPeerIsRinging(v_ueB); + f_mtc_userAnswerCall(v_ueA); + + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB, true); // Event 18 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/, true); // Event 23 + + f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmB, true, true); // Event 29 + f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmB/*FIXME: mwPS*/, true, true); // Event 28 + + f_mtc_check_TP_IC_IBCF_INVITE_01(v_ic); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_02(v_ic); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_03(v_ic); // INVITE ENUM Event 1 + f_mtc_check_TP_IC_IBCF_ACK_01(v_ic); // ACK – Event 26 + f_mtc_check_TP_IC_IBCF_180RESP_01(v_ic); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 25 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 30 + f_mtc_userCheckCallEstablished(v_ueB); // Event 30 + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_INI_02 + } //End of group TerminatingLeg + } //End of group SIPsessionEstablisment + + group SIPsessionModification { + group OriginatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_INT_INI_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // configuration + f_cf_int_call_up(v_config); + + // Preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userAddNewMediaStream(v_ueA); + + // Test body + f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(v_gmA); // Event 2 + f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(v_gmA/*FIXME: mwPS*/); // Event 3 + + f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA); // Event 13 + f_mtc_check_TP_MW_PCSCF_200OK_01(v_gmA/*FIXME: mwPS*/); // Event 8 + + f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 14 + f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA/*FIXME: mwPS*/); // Event 15 + + f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 5 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 6 + + f_mtc_userCheckNewMediaStream(v_ueB); + f_mtc_userCheckNewMediaStream(v_ueA); + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_INI_03 + } //End of group OriginatingLeg + group TerminatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_INT_INI_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // configuration + f_cf_int_call_up(v_config); + + // Preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + + // Test body + f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 + f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(v_gmB/*FIXME: mwPS*/); // Event 4 + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB); // Event 6 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/); // Event 11 + f_mtc_check_TP_GM_PCSCF_ACK_02(v_gmB); // Event 17 + + f_mtc_check_TP_MW_PCSCF_ACK_02(v_gmB/*FIXME: mwPS*/); // Event 16 + + f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 2 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 13 + + f_mtc_userCheckNewMediaStream(v_ueA); + f_mtc_userCheckNewMediaStream(v_ueB); + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_INI_04 + } //End of group TerminatingLeg + } //End of group SIPsessionModification + group SIPsessionRelease { + group OriginatingLeg { + + /** + * @desc Initial SIP session release. + * + * @see + */ + testcase TC_VxLTE_INT_REL_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + f_cf_int_call_up(v_config); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + + // Test body + f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 + f_mtc_check_TP_GM_PCSCF_BYE_01(v_gmA); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_01(v_gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 + //f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REL_01 + } //End of group OriginatingLeg + group TerminatingLeg { + + /** + * @desc Initial SIP session release. + * + * @see + */ + testcase TC_VxLTE_INT_REL_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + f_cf_int_call_up(v_config); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + + // Test body + f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 + f_mtc_check_TP_GM_PCSCF_BYE_02(v_gmB); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_02(v_gmB/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 + f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 + // f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REL_02 + } //End of group TerminatingLeg + group NetworkInitiated { + + /** + * @desc Network initiated session release. + * + * @see + */ + testcase TC_VxLTE_INT_REL_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + f_cf_int_call_up(v_config); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueB, v_userInfoA); + f_mtc_userCheckRinging(v_ueA); + f_mtc_userCheckPeerIsRinging(v_ueB); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + + // Test body + + f_mtc_userLooseConnection(v_ueB); + f_mtc_check_TP_GM_PCSCF_BYE_03(v_gmA); // Event 5 + f_mtc_check_TP_MW_PCSCF_BYE_03(v_gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 + // f_mtc_check_TP_IMS_5073_01_ic(v_ic); // Event 4 + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + f_cf_int_call_down(v_config); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REL_03 + } //End of group NetworkInitiated + } //End of group SIPsessionRelease + group SIPsessionAbortReject { + group OriginatingLeg { + /** + * @desc Initial SIP session abort. + * + * @see + */ + testcase TC_VxLTE_INT_ABT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_ABT_01 + + /** + * @desc Initial SIP session reject. + * + * @see + */ + testcase TC_VxLTE_INT_REJ_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REJ_01 + + + } //End of group OriginatingLeg + group TerminatingLeg { + /** + * @desc Initial SIP session abort. + * + * @see + */ + testcase TC_VxLTE_INT_ABT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_ABT_02 + + /** + * @desc Initial SIP session reject. + * + * @see + */ + testcase TC_VxLTE_INT_REJ_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REJ_02 + } //End of group TerminatingLeg + } //End of group SIPsessionAbortReject + } // End of group Interoperability + group Roaming{ + group SIPsessionEstablisment { + group OriginatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_RMI_INI_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_INI_01 + } //End of group OriginatingLeg + group TerminatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_RMI_INI_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_INI_02 + } //End of group TerminatingLeg + + } //End of group SIPsessionEstablisment + group SIPsessionModification { + group OriginatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_RMI_INI_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_INI_03 + } //End of group OriginatingLeg + group TerminatingLeg { + + /** + * @desc Initial SIP session establishment. + * + * @see + */ + testcase TC_VxLTE_RMI_INI_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_INI_04 + } //End of group TerminatingLeg + } //End of group SIPsessionModification + group SIPsessionRelease { + group OriginatingUEInitiatedSessionRelease { + + /** + * @desc Initial SIP session release. + * + * @see + */ + testcase TC_VxLTE_RMI_REL_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REL_01 + } //End of group OriginatingUEInitiatedSessionRelease + group TerminatingUEInitiatedSessionRelease { + + /** + * @desc Initial SIP session release. + * + * @see + */ + testcase TC_VxLTE_RMI_REL_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REL_02 + } //End of group TerminatingUEInitiatedSessionRelease + group OriginatingNetworkInitiatedSessionRelease{ + /** + * @desc Initial SIP session release. + * + * @see + */ + testcase TC_VxLTE_RMI_REL_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REL_03 + } //End of group + } //End of group SIPsessionRelease + group SIPsessionAbortReject { + group OriginatingLeg { + /** + * @desc Initial SIP session abort. + * + * @see + */ + testcase TC_VxLTE_RMI_ABT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_ABT_01 + + /** + * @desc Initial SIP session reject. + * + * @see + */ + testcase TC_VxLTE_RMI_REJ_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REJ_01 + + + } //End of group OriginatingLeg + group TerminatingLeg { + /** + * @desc Initial SIP session abort. + * + * @see + */ + testcase TC_VxLTE_RMI_ABT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_ABT_02 + + /** + * @desc Initial SIP session reject. + * + * @see + */ + testcase TC_VxLTE_RMI_REJ_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + //TODO preambel/test body/postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REJ_02 + } //End of group TerminatingLeg + } //End of group SIPsessionAbortReject + } // End of group Roaming +} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn new file mode 100644 index 0000000..ed53424 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -0,0 +1,366 @@ +/** + * @author STF 574 + * @version $Id: $ + * @desc This module provides ATS specific test case definitions for IMS Registration. + * @see ETSI TS 103 653-2 (2020) + */ +module AtsImsIot_TD_REG{ + + // LibCommon + // LibSip + // LibIms + import from LibIms_UpperTester { type ImsUserInfo }; + // LibIot + import from LibIot_TestInterface { type IotEquipmentUser }; + import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; + import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_VxLTE_PIXITS all; + import from LibIot_VxLTE_Functions all; + // LibImsIot + import from AtsImsIot_Functions { function f_getImUser }; + // ImsIot + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Functions all; + import from AtsImsIot_TP_behavior_GM all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_IC all; + import from AtsImsIot_TP_behavior_CX all; + import from AtsImsIot_TP_behavior_GX all; + import from AtsImsIot_TP_behavior_ISC all; + import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_S6A all; + import from AtsImsIot_TP_behavior_S9 all; + import from AtsImsIot_TP_behavior_SH all; + import from AtsImsIot_Behavior all; + + group Interoperability{ + group IMSRegistration { + + /** + * @desc IMS Registration - Successful. + * + * @see + */ + testcase TC_VxLTE_INT_REG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REG_01 + + /** + * @desc IMS Registration - Unsuccessful. + * + * @see + */ + testcase TC_VxLTE_INT_REG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REG_02 + + /** + * @desc IMS Registration - 3rd party registration to AS. + * + * @see + */ + testcase TC_VxLTE_INT_REG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( );} + else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_REG_03 + + } //End of group IMSRegistration + + } // End of group Interoperability + group Roaming{ + group IMSRegistration { + + /** + * @desc IMS Registration - Successful. + * + * @see + */ + testcase TC_VxLTE_RMI_REG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REG_01 + + /** + * @desc IMS Registration - Unsuccessful. + * + * @see + */ + testcase TC_VxLTE_RMI_REG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REG_02 + + /** + * @desc IMS Registration - 3rd party registration to AS. + * + * @see + */ + testcase TC_VxLTE_RMI_REG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REG_03 + + } //End of group IMSRegistration + } // End of group Roaming +} \ No newline at end of file diff --git a/ttcn/LibSip b/ttcn/LibSip index 7d79616..1968037 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d +Subproject commit 1968037e8c62d804047c534222ce547764c4b037 -- GitLab From 4b536c86fc719fed609442453fd35214af755718 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 23 Jun 2020 18:07:16 +0200 Subject: [PATCH 094/176] replace f_ImsIot_receive by f_Iot_Sip_receive and ImsInterfaceMonitor by SipInterfaceMonitor --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 240 +++++++++---------- ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 3 files changed, 122 insertions(+), 122 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index 12c00a8..233eecc 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -7,7 +7,7 @@ module AtsImsIot_TP_behavior_IC { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from AtsImsIot_TestSystem { type SipInterfaceMonitor , ImsTestCoordinator, SipInterfaceMonitor; } import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } @@ -63,11 +63,11 @@ group g_IBCF { * @remark source function f_mtc_check_TP_IMS_4002_01_ic */ - function f_mtc_check_TP_IC_IBCF_GC_01(ImsInterfaceMonitor p_monitorCompRef) + function f_mtc_check_TP_IC_IBCF_GC_01(SipInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_GC_01)}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, @@ -88,12 +88,12 @@ group g_IBCF_INVITE { * @remark source function f_mtc_check_TP_IMS_5097_01_ic */ function f_mtc_check_TP_IC_IBCF_INVITE_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_01((mw_SipUrl_Host(v_EUT_A_Addr), mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))) ))}, {}, @@ -112,11 +112,11 @@ group g_IBCF_INVITE { * @remark source function f_mtc_check_TP_IMS_5097_02_ic */ function f_mtc_check_TP_IC_IBCF_INVITE_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, @@ -134,12 +134,12 @@ group g_IBCF_INVITE { * @remark source function f_mtc_check_TP_IMS_5097_04_ic */ function f_mtc_check_TP_IC_IBCF_INVITE_03( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_03(v_eutBUri))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, @@ -157,7 +157,7 @@ group g_IBCF_INVITE { * @remark source function f_mtc_check_TP_IMS_5046_01_ic */ function f_mtc_check_TP_IC_IBCF_INVITE_04( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); @@ -179,7 +179,7 @@ group g_IBCF_INVITE { }; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest((mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAUrl, v_UserEutBUrl), mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAIpUrl, v_UserEutBUrl)))}, {mw_SipRequest(mw_INVITE_Request_Base)}, @@ -215,14 +215,14 @@ group g_IBCF_INVITE { * @remark source function f_mtc_check_TP_IMS_5097_02_ic */ function f_mtc_check_TP_IC_IBCF_INVITE_05( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { //TODO: from/to var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, @@ -236,7 +236,7 @@ group g_IBCF_INVITE { v_UEB_PublicId := f_GetUEPublicId(PX_EUT_A); //from v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, @@ -258,7 +258,7 @@ group g_IBCF_REINVITE { * @remark source function f_mtc_check_TP_IMS_5106_01_ic */ function f_mtc_check_TP_IC_IBCF_REINVITE_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, integer p_skipCount ) runs on ImsTestCoordinator { var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)), @@ -271,7 +271,7 @@ group g_IBCF_REINVITE { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_REINVITE_01(v_SCSCF_A_Uri))}, {mw_SipRequest(mw_INVITE_Request_Base)}, v_skip, @@ -294,7 +294,7 @@ group g_IBCF_100TRY { * @remark source function f_mtc_check_TP_IMS_5070_01_ic */ function f_mtc_check_TP_IC_IBCF_100TRY_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, integer p_skipCount ) runs on ImsTestCoordinator { @@ -306,7 +306,7 @@ group g_IBCF_100TRY { } // p_monitorCompRef.start( -// f_imsIot_receive( +// f_Iot_Sip_receive( // {mw_SipRequest(mw_INVITE_Request_Base)}, // {}, // v_skip, @@ -318,7 +318,7 @@ group g_IBCF_100TRY { // p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_100Trying_Base)}, {}, v_skip, @@ -341,12 +341,12 @@ group g_IBCF_180RESP { * @remark source function f_mtc_check_TP_IMS_5115_01_ic */ function f_mtc_check_TP_IC_IBCF_180RESP_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_180RESP_01)}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, @@ -364,12 +364,12 @@ group g_IBCF_180RESP { * @remark source function f_mtc_check_TP_IMS_5131_01_ic */ function f_mtc_check_TP_IC_IBCF_180RESP_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_180RESP_02)}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, @@ -391,12 +391,12 @@ group g_IBCF_1XXRESP { * @remark source function f_mtc_check_TP_IMS_5115_03_ic */ function f_mtc_check_TP_IC_IBCF_1XXRESP_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_01(mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, @@ -414,13 +414,13 @@ group g_IBCF_1XXRESP { * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 */ function f_mtc_check_TP_IC_IBCF_1XXRESP_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template RecordRoute v_recordRoute := ?; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, @@ -438,13 +438,13 @@ group g_IBCF_1XXRESP { * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 */ function f_mtc_check_TP_IC_IBCF_1XXRESP_03( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template RecordRoute v_recordRoute := ?; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, @@ -455,7 +455,7 @@ group g_IBCF_1XXRESP { ); p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, @@ -473,13 +473,13 @@ group g_IBCF_1XXRESP { * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_02 */ function f_mtc_check_TP_IC_IBCF_1XXRESP_04( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template RecordRoute v_recordRoute := ?; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, @@ -501,12 +501,12 @@ group g_IBCF_2XXRESP { * @remark source function f_mtc_check_TP_IMS_5115_02_ic */ function f_mtc_check_TP_IC_IBCF_2XXRESP_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_01)}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, @@ -524,12 +524,12 @@ group g_IBCF_2XXRESP { * @remark source function f_mtc_check_TP_IMS_5115_04_ic */ function f_mtc_check_TP_IC_IBCF_2XXRESP_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, @@ -547,12 +547,12 @@ group g_IBCF_2XXRESP { * @remark source function f_mtc_check_TP_IMS_5131_02_ic */ function f_mtc_check_TP_IC_IBCF_2XXRESP_03( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_03)}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, @@ -570,7 +570,7 @@ group g_IBCF_2XXRESP { * @remark source function f_mtc_check_TP_IMS_5121_02_ic */ function f_mtc_check_TP_IC_IBCF_2XXRESP_04( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, integer p_skipCount ) runs on ImsTestCoordinator { var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); @@ -582,7 +582,7 @@ group g_IBCF_2XXRESP { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)}, {mw_SipResponse(mdw_2XX_Base)}, v_skip, @@ -600,14 +600,14 @@ group g_IBCF_2XXRESP { * @remark source function f_mtc_check_TP_IMS_5121_02_ic */ function f_mtc_check_TP_IC_IBCF_2XXRESP_05( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, integer p_skipCount ) runs on ImsTestCoordinator { var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); var template RecordRoute v_recordRoute := ?; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, {mw_SipResponse(mdw_2XX_Base)}, {0, omit}, @@ -625,7 +625,7 @@ group g_IBCF_2XXRESP { * @remark source function f_mtc_check_TP_IC_IBCF_2XXRESP_05 */ function f_mtc_check_TP_IC_IBCF_2XXRESP_06( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, integer p_skipCount ) runs on ImsTestCoordinator { var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); @@ -633,7 +633,7 @@ group g_IBCF_2XXRESP { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, {mw_SipResponse(mdw_2XX_Base)}, {0, omit}, @@ -645,7 +645,7 @@ group g_IBCF_2XXRESP { p_monitorCompRef.done; //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, {mw_SipResponse(mdw_2XX_Base)}, {0, omit}, @@ -668,13 +668,13 @@ group g_IBCF_ACK { * @remark source function f_mtc_check_TP_IMS_5107_02_ic */ function f_mtc_check_TP_IC_IBCF_ACK_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_ACK_01(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, {}, {0, omit}, @@ -697,13 +697,13 @@ group g_IBCF_BYE { * @remark source function f_mtc_check_TP_IMS_5107_01_ic */ function f_mtc_check_TP_IC_IBCF_BYE_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, {}, {0, omit}, @@ -721,14 +721,14 @@ group g_IBCF_BYE { * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 */ function f_mtc_check_TP_IC_IBCF_BYE_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); //TODO: to/from p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, {}, {0, omit}, @@ -741,7 +741,7 @@ group g_IBCF_BYE { //TODO: to/from p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, {}, {0,omit}, @@ -754,7 +754,7 @@ group g_IBCF_BYE { //TODO: to/from p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, {}, {0,omit}, @@ -773,14 +773,14 @@ group g_IBCF_BYE { * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 */ function f_mtc_check_TP_IC_IBCF_BYE_03( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); //TODO: to/from p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, {}, {0, omit}, @@ -793,7 +793,7 @@ group g_IBCF_BYE { //TODO: to/from p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, {}, {0,omit}, @@ -806,7 +806,7 @@ group g_IBCF_BYE { //TODO: to/from p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, {}, {0,omit}, @@ -829,13 +829,13 @@ group g_IBCF_CANCEL { * @remark source function f_mtc_check_TP_IMS_5107_03_ic */ function f_mtc_check_TP_IC_IBCF_CANCEL_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To {}, {0, omit}, @@ -847,7 +847,7 @@ group g_IBCF_CANCEL { p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To {}, {0, omit}, @@ -861,13 +861,13 @@ group g_IBCF_CANCEL { } //function function f_mtc_check_TP_IC_IBCF_CANCEL_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To {}, {0, omit}, @@ -881,13 +881,13 @@ group g_IBCF_CANCEL { } //function function f_mtc_check_TP_IC_IBCF_CANCEL_03( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsBUrl,?,?))}, {}, {0, omit}, @@ -911,11 +911,11 @@ group g_IBCF_CANCEL_OK { * @remark source function f_mtc_check_response_mx */ function f_mtc_check_TP_IC_IBCF_CANCEL_OK_01( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From {}, {0,omit}, @@ -928,11 +928,11 @@ group g_IBCF_CANCEL_OK { } function f_mtc_check_TP_IC_IBCF_CANCEL_OK_02( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From {}, {0,omit}, @@ -945,10 +945,10 @@ group g_IBCF_CANCEL_OK { } function f_mtc_check_TP_IC_IBCF_CANCEL_OK_03( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From {}, {0,omit}, @@ -972,11 +972,11 @@ group g_IBCF_486INVITE { * @remark source function f_mtc_check_TP_EPC_6034_04 */ function f_mtc_check_TP_IC_IBCF_486INVITE_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { // p_monitorCompRef.start( -// f_imsIot_receive( +// f_Iot_Sip_receive( // { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, // "TP_IC_IBCF_486INVITE_01", false, false ) // ); @@ -984,7 +984,7 @@ group g_IBCF_486INVITE { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, {mw_SipResponse(mdw_4XX_Base)}, {0, omit}, @@ -997,7 +997,7 @@ group g_IBCF_486INVITE { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, {mw_SipResponse(mdw_4XX_Base)}, {0, omit}, @@ -1014,13 +1014,13 @@ group g_IBCF_486INVITE { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IC_IBCF_486INVITE_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, {mw_SipResponse(mdw_4XX_Base)}, {0, omit}, @@ -1033,7 +1033,7 @@ group g_IBCF_486INVITE { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, {mw_SipResponse(mdw_4XX_Base)}, {0, omit}, @@ -1057,17 +1057,17 @@ group g_IBCF_487INVITE { * @remark source function f_mtc_check_TP_EPC_6034_04 */ function f_mtc_check_TP_IC_IBCF_487INVITE_01( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, "TP_IC_IBCF_487INVITE_01", false, false ) ); p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, "TP_IC_IBCF_487INVITE_01", false, false ) ); @@ -1079,13 +1079,13 @@ group g_IBCF_487INVITE { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IC_IBCF_487INVITE_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_487INVITE_02(?,?))}, {mw_SipResponse(mdw_4XX_Base)}, {0, omit}, @@ -1109,14 +1109,14 @@ group g_IBCF_487INVITE_ACK { * @remark source function f_mtc_check_TP_IMS_5052_01_ic */ function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1128,7 +1128,7 @@ group g_IBCF_487INVITE_ACK { p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1148,14 +1148,14 @@ group g_IBCF_487INVITE_ACK { * @remark source function f_mtc_check_TP_IMS_5052_01_ic */ function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1167,7 +1167,7 @@ group g_IBCF_487INVITE_ACK { p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1191,14 +1191,14 @@ group g_IBCF_486INVITE_ACK { * @remark source function f_mtc_check_TP_IMS_5052_01_ic */ function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1211,7 +1211,7 @@ group g_IBCF_486INVITE_ACK { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1232,14 +1232,14 @@ group g_IBCF_486INVITE_ACK { * @remark source function f_mtc_check_TP_IMS_5052_01_ic */ function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1252,7 +1252,7 @@ group g_IBCF_486INVITE_ACK { //TODO: from/to p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, {}, {0, omit}, @@ -1275,7 +1275,7 @@ group g_IBCF_SUBSCRIBE { * @remark source function f_mtc_check_TP_IMS_5044_01_ic */ function f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01( - ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); @@ -1283,7 +1283,7 @@ group g_IBCF_SUBSCRIBE { var charstring v_Epires200OK; var charstring v_EpiresSubscribe; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_SUBSCRIBE_01(?, v_eutAUri, v_UEB_PublicId))}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, @@ -1296,7 +1296,7 @@ group g_IBCF_SUBSCRIBE { // TODO: IBCF_B receives a 200_OK from the IMS_A p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, @@ -1309,7 +1309,7 @@ group g_IBCF_SUBSCRIBE { // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_P_CSCF_B p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, @@ -1332,13 +1332,13 @@ group g_IBCF_NOTIFY { * @remark source function f_mtc_check_TP_IMS_5094_01_IMS */ function f_mtc_check_TP_IC_IBCF_NOTIFY_01( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_NOTIFY_01(?, v_request_uri))}, {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, {0, omit}, @@ -1351,7 +1351,7 @@ group g_IBCF_NOTIFY { // TODO: IBCF_B receives a 200_OK from the IMS_P_CSCF_B p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, @@ -1364,7 +1364,7 @@ group g_IBCF_NOTIFY { // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_A p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, @@ -1386,10 +1386,10 @@ group g_IBCF_REGISTER { * @remark source function f_mtc_check_TP_IMS_5089_01_ic_when */ function f_mtc_check_TP_IC_IBCF_REGISTER_01( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_01)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, @@ -1402,7 +1402,7 @@ group g_IBCF_REGISTER { // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, {mw_SipResponse (mw_401Unauthorized_Base)}, {0, omit}, @@ -1415,7 +1415,7 @@ group g_IBCF_REGISTER { // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, {mw_SipResponse (mw_401Unauthorized_Base)}, {0, omit}, @@ -1433,10 +1433,10 @@ group g_IBCF_REGISTER { * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when */ function f_mtc_check_TP_IC_IBCF_REGISTER_02( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_02)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, @@ -1452,7 +1452,7 @@ group g_IBCF_REGISTER { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, @@ -1468,7 +1468,7 @@ group g_IBCF_REGISTER { v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, @@ -1486,10 +1486,10 @@ group g_IBCF_REGISTER { * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when */ function f_mtc_check_TP_IC_IBCF_REGISTER_03( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: UE_A,IMS_B {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, @@ -1505,7 +1505,7 @@ group g_IBCF_REGISTER { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, @@ -1521,7 +1521,7 @@ group g_IBCF_REGISTER { v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, @@ -1539,10 +1539,10 @@ group g_IBCF_REGISTER { * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when */ function f_mtc_check_TP_IC_IBCF_REGISTER_04( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, @@ -1554,7 +1554,7 @@ group g_IBCF_REGISTER { p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, @@ -1570,7 +1570,7 @@ group g_IBCF_REGISTER { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, @@ -1586,7 +1586,7 @@ group g_IBCF_REGISTER { v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, @@ -1604,7 +1604,7 @@ group g_IBCF_REGISTER { * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when */ function f_mtc_check_TP_IC_IBCF_REGISTER_05( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator {f_mtc_check_TP_IC_IBCF_REGISTER_04(p_monitorCompRef,p_checkMessage) } diff --git a/ttcn/LibIms b/ttcn/LibIms index d640fce..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e diff --git a/ttcn/LibSip b/ttcn/LibSip index 1968037..7d79616 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 1968037e8c62d804047c534222ce547764c4b037 +Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d -- GitLab From 9e3211c318a768030418b1d3d8abb60b349c6971 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Tue, 23 Jun 2020 18:10:45 +0200 Subject: [PATCH 095/176] replace f_ImsIot_receive by f_Iot_Sip_receive and ImsInterfaceMonitor by SipInterfaceMonitor for ISC TPs --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn index 2096f88..dd1c860 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn @@ -7,7 +7,7 @@ module AtsImsIot_TP_behavior_ISC { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } + import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, SipInterfaceMonitor; } import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } @@ -58,12 +58,12 @@ group g_ISC { * @remark source function f_mtc_check_TP_IC_IBCF_REGISTER_02 */ function f_mtc_check_TP_ISC_SCSCF_REGISTER_01( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_ISC_SCSCF_REGISTER_01(?,?,v_request_uri))}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, @@ -79,7 +79,7 @@ group g_ISC { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From // {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, -- GitLab From 52a37aa20e52a5b6ee112494424f1a4455624989 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Wed, 24 Jun 2020 00:10:57 +0200 Subject: [PATCH 096/176] TC_VxLTE_INT_INI_01 done. Error free code. --- ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn | 702 +++++++++--------- ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn | 74 +- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 2 +- ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 2 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 433 +++++------ ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 1 - ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 8 +- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 8 +- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 10 +- ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn | 6 +- ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn | 18 +- ttcn/LibIms | 2 +- ttcn/LibSip | 2 +- 14 files changed, 644 insertions(+), 628 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn index a225a26..d7cc26c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn @@ -3867,81 +3867,81 @@ group checksTC_IMS_SHARE_0009 { }//end group checksTC_IMS_SHARE_0009 -// group checksTC_VxLTE_INT_ATT_01 { -// -// /** -// * @desc Starts monitor component behavior -// * @param p_monitorCompRef Reference to monitor component -// */ -// function f_mtc_check_TP_S6A_MME_ULR_01( -// ImsInterfaceMonitor p_monitorCompRef, -// boolean p_checkMessage -// ) runs on ImsTestCoordinator { -// -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( -// md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED -// ?, //vc_originHost_IUT, // containing an Origin-Host AVP -// ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP -// ?, //vc_destinationRealm, // containing a Destination-Realm AVP -// m_userName(PX_USR_NAME), // containing a User-Name AVP -// DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP -// ?, // containing a ULR-Flags AVP with S6a-indicator bit set -// m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP -// )) } , "TP_S6A_MME_ULR_01", true ) -// ); -// p_monitorCompRef.done; -// } -// -// -// /** -// * @desc Starts monitor component behavior -// * @param p_monitorCompRef Reference to monitor component -// */ -// function f_mtc_check_TP_S6A_HSS_ULA_01( -// ImsInterfaceMonitor p_monitorCompRef, -// boolean p_checkMessage -// ) runs on ImsTestCoordinator { -// -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( -// mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS -// md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED -// ?, //vc_originHost_IUT, // containing an Origin-Host AVP -// ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP -// mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set -// mw_subscriptionData_dummy // containing a Subscription-Data AVP -// ) -// ) } , "TP_S6A_MME_ULA_01", true ) -// ); -// p_monitorCompRef.done; -// } //function*/ -// -// /** -// * @desc Starts monitor component behavior -// * @param p_monitorCompRef Reference to monitor component -// */ -// function f_mtc_check_TP_GX_PCRF_CCA_01( -// ImsInterfaceMonitor p_monitorCompRef, -// boolean p_checkMessage -// ) runs on ImsTestCoordinator { -// -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, -// ?, //vc_originHost, -// ?, //vc_originRealm, -// ?, //vc_destinationRealm, -// mw_cC_Request_Type(INITIAL_REQUEST_E), -// *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) -// ); -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) -// ); -// p_monitorCompRef.done; -// -// } //function*/ -// -// }//end group checksTC_VxLTE_INT_ATT_01 + group checksTC_VxLTE_INT_ATT_01 { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_S6A_MME_ULR_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( + md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED + ?, //vc_originHost_IUT, // containing an Origin-Host AVP + ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP + ?, //vc_destinationRealm, // containing a Destination-Realm AVP + m_userName(PX_USR_NAME), // containing a User-Name AVP + DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP + ?, // containing a ULR-Flags AVP with S6a-indicator bit set + m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP + )) } , "TP_S6A_MME_ULR_01", true ) + ); + p_monitorCompRef.done; + } + + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_S6A_HSS_ULA_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( + mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS + md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED + ?, //vc_originHost_IUT, // containing an Origin-Host AVP + ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP + mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set + mw_subscriptionData_dummy // containing a Subscription-Data AVP + ) + ) } , "TP_S6A_MME_ULA_01", true ) + ); + p_monitorCompRef.done; + } //function*/ + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_GX_PCRF_CCA_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, + ?, //vc_originHost, + ?, //vc_originRealm, + ?, //vc_destinationRealm, + mw_cC_Request_Type(INITIAL_REQUEST_E), + *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) + ); + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) + ); + p_monitorCompRef.done; + + } //function*/ + + }//end group checksTC_VxLTE_INT_ATT_01 group messagingChecks { @@ -5401,127 +5401,127 @@ group checksTC_IMS_SHARE_0009 { f_mtc_userRadioEnabled ( p_ue, false, true ); } // End of function f_mtc_check_TP_EPC_6004_01 -// /** -// * Starts monitor component behavior for TP_EPC_6005_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// *
-//         * ensure that {
-//         *     when { 
-//         *         EPC_PCRF triggers_termination of SIP_session 
-//         *     }
-//         *     then { 
-//         *         EPC_PCRF sends Abort-Session-Request to IMS_P-CSCF containing 
-//         *             Session-Id_AVP indicating session of SIP_session
-//         *             Abort-Cause_AVP indicating BEARER_RELEASED (0)
-//         *     } 
-//         * } 
-//         * 
-// * @see TS 103 029 V3.1.1 clause 7.1.2 -// */ -// function f_mtc_check_TP_EPC_6005_01( -// ImsInterfaceMonitor p_monitorCompRef -// ) runs on ImsTestCoordinator { -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) -// ); -// p_monitorCompRef.done; -// } // End of function f_mtc_check_TP_EPC_6005_01 -// -// /** -// * Starts monitor component behavior for TP_EPC_6006_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// *
-//         * ensure that {
-//         *     when { 
-//         *         IMS_P-CSCF receives Abort-Session-Request for SIP_session 
-//         *     }
-//         *     then { 
-//         *         IMS_P-CSCF sends 
-//         *             Abort-Session-Answer to EPC_PCRF containing 
-//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
-//         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
-//         *         and IMS_P-CSCF sends 
-//         *             Session-Termination-Request to EPC_PCRF containing 
-//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
-//         *         and IMS_P-CSCF triggers_call_release 
-//         *     } 
-//         * } 
-//         * 
-// * @see TS 103 029 V3.1.1 clause 7.1.2 -// */ -// function f_mtc_check_TP_EPC_6006_01( -// ImsInterfaceMonitor p_monitorCompRef -// ) runs on ImsTestCoordinator { -// f_mtc_check_TP_EPC_6006_02 ( p_monitorCompRef ); -// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); -// } // End of function f_mtc_check_TP_EPC_6006_01 -// -// /** -// * Starts monitor component behavior for TP_EPC_6006_02 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// *
-//         * ensure that {
-//         *     when { 
-//         *         IMS_P-CSCF receives Abort-Session-Request for IMS_signalling 
-//         *     }
-//         *     then { 
-//         *         IMS_P-CSCF sends 
-//         *             Abort-Session-Answer to EPC_PCRF containing 
-//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
-//         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
-//         *         and IMS_P-CSCF sends 
-//         *             Session-Termination-Request to EPC_PCRF containing 
-//         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
-//         *         and IMS_P-CSCF triggers_call_release 
-//         *     } 
-//         * } 
-//         * 
-// * @see TS 103 029 V3.1.1 clause 7.1.2 -// */ -// function f_mtc_check_TP_EPC_6006_02( -// ImsInterfaceMonitor p_monitorCompRef -// ) runs on ImsTestCoordinator { -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_dummy } , "TP_EPC_6006_02", true ) -// ); -// p_monitorCompRef.done; -// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); -// } // End of function f_mtc_check_TP_EPC_6006_02 -// -// /** -// * Starts monitor component behavior for TP_EPC_6009_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// *
-//         * ensure that {
-//         *     when { 
-//         *         EPC_PCRF receives Session-Termination-Request from IMS_P-CSCF containing 
-//         *             Session-Id_AVP indicating session for SIP_session
-//         *     }
-//         *     then { 
-//         *         EPC_PCRF sends Session-Termination-Answer to IMS_P-CSCF containing 
-//         *             Session-Id_AVP indicating SIP_session value_received in Session-Termination-Request
-//         *             Result-Code_AVP indicating DIAMETER_SUCCESS(2001) 
-//         *     } 
-//         * } 
-//         * 
-// * @see TS 103 029 V3.1.1 clause 7.1.2 -// */ -// function f_mtc_check_TP_EPC_6009_01( -// ImsInterfaceMonitor p_monitorCompRef -// ) runs on ImsTestCoordinator { -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { sTA_MSG := mw_STA_dummy } , "TP_EPC_6009_01", true ) -// ); -// p_monitorCompRef.done; -// } // End of function f_mtc_check_TP_EPC_6009_01 + /** + * Starts monitor component behavior for TP_EPC_6005_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+         * ensure that {
+         *     when { 
+         *         EPC_PCRF triggers_termination of SIP_session 
+         *     }
+         *     then { 
+         *         EPC_PCRF sends Abort-Session-Request to IMS_P-CSCF containing 
+         *             Session-Id_AVP indicating session of SIP_session
+         *             Abort-Cause_AVP indicating BEARER_RELEASED (0)
+         *     } 
+         * } 
+         * 
+ * @see TS 103 029 V3.1.1 clause 7.1.2 + */ + function f_mtc_check_TP_EPC_6005_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_EPC_6005_01 + + /** + * Starts monitor component behavior for TP_EPC_6006_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+         * ensure that {
+         *     when { 
+         *         IMS_P-CSCF receives Abort-Session-Request for SIP_session 
+         *     }
+         *     then { 
+         *         IMS_P-CSCF sends 
+         *             Abort-Session-Answer to EPC_PCRF containing 
+         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
+         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
+         *         and IMS_P-CSCF sends 
+         *             Session-Termination-Request to EPC_PCRF containing 
+         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
+         *         and IMS_P-CSCF triggers_call_release 
+         *     } 
+         * } 
+         * 
+ * @see TS 103 029 V3.1.1 clause 7.1.2 + */ + function f_mtc_check_TP_EPC_6006_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + f_mtc_check_TP_EPC_6006_02 ( p_monitorCompRef ); + f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); + } // End of function f_mtc_check_TP_EPC_6006_01 + + /** + * Starts monitor component behavior for TP_EPC_6006_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+         * ensure that {
+         *     when { 
+         *         IMS_P-CSCF receives Abort-Session-Request for IMS_signalling 
+         *     }
+         *     then { 
+         *         IMS_P-CSCF sends 
+         *             Abort-Session-Answer to EPC_PCRF containing 
+         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
+         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
+         *         and IMS_P-CSCF sends 
+         *             Session-Termination-Request to EPC_PCRF containing 
+         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
+         *         and IMS_P-CSCF triggers_call_release 
+         *     } 
+         * } 
+         * 
+ * @see TS 103 029 V3.1.1 clause 7.1.2 + */ + function f_mtc_check_TP_EPC_6006_02( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_dummy } , "TP_EPC_6006_02", true ) + ); + p_monitorCompRef.done; + f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); + } // End of function f_mtc_check_TP_EPC_6006_02 + + /** + * Starts monitor component behavior for TP_EPC_6009_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+         * ensure that {
+         *     when { 
+         *         EPC_PCRF receives Session-Termination-Request from IMS_P-CSCF containing 
+         *             Session-Id_AVP indicating session for SIP_session
+         *     }
+         *     then { 
+         *         EPC_PCRF sends Session-Termination-Answer to IMS_P-CSCF containing 
+         *             Session-Id_AVP indicating SIP_session value_received in Session-Termination-Request
+         *             Result-Code_AVP indicating DIAMETER_SUCCESS(2001) 
+         *     } 
+         * } 
+         * 
+ * @see TS 103 029 V3.1.1 clause 7.1.2 + */ + function f_mtc_check_TP_EPC_6009_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sTA_MSG := mw_STA_dummy } , "TP_EPC_6009_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_EPC_6009_01 /** * Starts monitor component behavior for TP_EPC_6009_02 @@ -5621,76 +5621,76 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6012_01 -// /** -// * Starts monitor component behavior for TP_EPC_6012_02 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// */ -// function f_mtc_check_TP_EPC_6012_02( -// ImsInterfaceMonitor p_monitorCompRef, -// ImsInterfaceMonitor p_monitorCompRef_B -// ) runs on ImsTestCoordinator { -// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); -// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); -// f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); -// } // End of function f_mtc_check_TP_EPC_6012_02 - -// /** -// * Starts monitor component behavior for TP_EPC_6013_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// *
-//         * ensure that {
-//         *     when { 
-//         *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
-//         *     }
-//         *     then { 
-//         *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
-//         *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
-//         *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
-//         *             and one or more Media-Component-Description_AVP containing 
-//         *                 Media-Component-Number_AVP indicating value 0
-//         *                 and Flow-Description_AVP indicating 
-//         *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-//         *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-//         *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-//         *                 and Flow-Description_AVP indicating 
-//         *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-//         *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-//         *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-//         *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
-//         *                 and Flow-Status_AVP indicating ENABLED(2)
-//         *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
-//         *     } 
-//         * } 
-//         * 
-// * @see TS 103 029 V3.1.1 clause 7.2.1.1 -// */ -// function f_mtc_check_TP_EPC_6013_01( -// ImsInterfaceMonitor p_monitorCompRef -// ) runs on ImsTestCoordinator { -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_EPC_6013_01", true ) -// ); -// p_monitorCompRef.done; -// } // End of function f_mtc_check_TP_EPC_6013_01 -// -// /** -// * Starts monitor component behavior for TP_EPC_6014_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// */ -// function f_mtc_check_TP_EPC_6014_01( -// ImsInterfaceMonitor p_monitorCompRef -// ) runs on ImsTestCoordinator { -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_EPC_6014_01", true ) -// ); -// p_monitorCompRef.done; -// } // End of function f_mtc_check_TP_EPC_6014_01 + /** + * Starts monitor component behavior for TP_EPC_6012_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + */ + function f_mtc_check_TP_EPC_6012_02( + ImsInterfaceMonitor p_monitorCompRef, + ImsInterfaceMonitor p_monitorCompRef_B + ) runs on ImsTestCoordinator { + f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); + f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); + f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); + } // End of function f_mtc_check_TP_EPC_6012_02 + + /** + * Starts monitor component behavior for TP_EPC_6013_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+         * ensure that {
+         *     when { 
+         *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
+         *     }
+         *     then { 
+         *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
+         *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
+         *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
+         *             and one or more Media-Component-Description_AVP containing 
+         *                 Media-Component-Number_AVP indicating value 0
+         *                 and Flow-Description_AVP indicating 
+         *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+         *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+         *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
+         *                 and Flow-Description_AVP indicating 
+         *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+         *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+         *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
+         *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
+         *                 and Flow-Status_AVP indicating ENABLED(2)
+         *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
+         *     } 
+         * } 
+         * 
+ * @see TS 103 029 V3.1.1 clause 7.2.1.1 + */ + function f_mtc_check_TP_EPC_6013_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_EPC_6013_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_EPC_6013_01 + + /** + * Starts monitor component behavior for TP_EPC_6014_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + */ + function f_mtc_check_TP_EPC_6014_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_EPC_6014_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_EPC_6014_01 /** * Starts monitor component behavior for TP_EPC_6015_01 @@ -5724,33 +5724,33 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6016_01 -// /** -// * Starts monitor component behavior for TP_EPC_6017_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// *
-//         * ensure that {
-//         *     when { 
-//         *         UE_A sends REGISTER for de-registration to IMS_P-CSCF 
-//         *     } 
-//         *     then { 
-//         *          UE_A receives 2xx_Response from IMS_P-CSCF 
-//         *          and IMS_P-CSCF sends Session-Termination-Request to EPC_PCRF containing 
-//         *              Session Session-Id_AVP indicating session for IMS_signalling session 
-//         *     } 
-//         * } 
-//         * 
-// * @see TS 103 029 V3.1.1 clause 7.2.2 -// */ -// function f_mtc_check_TP_EPC_6017_01( -// ImsInterfaceMonitor p_monitorCompRef, -// boolean p_checkMessage, -// ImsInterfaceMonitor p_monitorCompRef_B -// ) runs on ImsTestCoordinator { -// f_mtc_check_TP_EPC_6018_01 ( p_monitorCompRef, p_checkMessage ); -// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef_B ); -// } // End of function f_mtc_check_TP_EPC_6017_01 + /** + * Starts monitor component behavior for TP_EPC_6017_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+         * ensure that {
+         *     when { 
+         *         UE_A sends REGISTER for de-registration to IMS_P-CSCF 
+         *     } 
+         *     then { 
+         *          UE_A receives 2xx_Response from IMS_P-CSCF 
+         *          and IMS_P-CSCF sends Session-Termination-Request to EPC_PCRF containing 
+         *              Session Session-Id_AVP indicating session for IMS_signalling session 
+         *     } 
+         * } 
+         * 
+ * @see TS 103 029 V3.1.1 clause 7.2.2 + */ + function f_mtc_check_TP_EPC_6017_01( + ImsInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + ImsInterfaceMonitor p_monitorCompRef_B + ) runs on ImsTestCoordinator { + f_mtc_check_TP_EPC_6018_01 ( p_monitorCompRef, p_checkMessage ); + f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef_B ); + } // End of function f_mtc_check_TP_EPC_6017_01 /** * Starts monitor component behavior for TP_EPC_6018_01 @@ -5787,20 +5787,20 @@ group checksTC_IMS_SHARE_0009 { f_mtc_check_TP_EPC_6010_01 ( p_monitorCompRef, p_checkMessage ); } // End of function f_mtc_check_TP_EPC_6021_01 -// /** -// * Starts monitor component behavior for TP_EPC_6022_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// */ -// function f_mtc_check_TP_EPC_6022_01( -// ImsInterfaceMonitor p_monitorCompRef -// ) runs on ImsTestCoordinator { -// p_monitorCompRef.start ( -// f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_EPC_6022_01", true ) -// ); -// p_monitorCompRef.done; -// } // End of function f_mtc_check_TP_EPC_6022_01 + /** + * Starts monitor component behavior for TP_EPC_6022_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + */ + function f_mtc_check_TP_EPC_6022_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start ( + f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_EPC_6022_01", true ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_EPC_6022_01 /** * Starts monitor component behavior for TP_EPC_6024_01 @@ -5822,20 +5822,20 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6024_01 -// /** -// -// * Starts monitor component behavior for TP_EPC_6026_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// */ -// function f_mtc_check_TP_EPC_6026_01( -// ImsInterfaceMonitor p_monitorCompRef, -// IotEquipmentUser p_ue -// ) runs on ImsTestCoordinator { -// f_mtc_triggerUserCommand ( p_ue, "Trigger registration expiration for UE A"); -// f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); -// } // End of function f_mtc_check_TP_EPC_6026_01 + /** + + * Starts monitor component behavior for TP_EPC_6026_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + */ + function f_mtc_check_TP_EPC_6026_01( + ImsInterfaceMonitor p_monitorCompRef, + IotEquipmentUser p_ue + ) runs on ImsTestCoordinator { + f_mtc_triggerUserCommand ( p_ue, "Trigger registration expiration for UE A"); + f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); + } // End of function f_mtc_check_TP_EPC_6026_01 /** * Starts monitor component behavior for TP_EPC_6027_06 @@ -5873,36 +5873,36 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } // End of function f_mtc_check_TP_EPC_6029_03 -// /** -// * Starts monitor component behavior for TP_EPC_6033_01 -// * @param p_monitorCompRef Reference to monitor component -// * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). -// * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. -// *
-//         * ensure that {
-//         *     when { IMS_P-CSCF receives INVITE with no SDP from UE_A }
-//         *         then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-//         *         when { IMS_P-CSCF receives 200_response on INVITE with no SDP from IMS_S-CSCF }
-//         *             then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-//         *             when { IMS_P-CSCF receives ACK with no SDP from UE_A }
-//         *                 then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-//         * }
-//         * 
-// */ -// function f_mtc_check_TP_EPC_6033_01( -// ImsInterfaceMonitor p_monitorCompRef_A, -// ImsInterfaceMonitor p_monitorCompRef_B -// ) runs on ImsTestCoordinator { -// p_monitorCompRef_A.start( -// f_imsIot_receive( -// { mw_SipRequest ( mw_INVITE_Request_Base ) }, { }, { 0, omit }, -// "TP_EPC_6033_01 INVITE", false, false ) -// ); -// p_monitorCompRef_A.done; -// f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef_A, false ); -// f_mtc_check_TP_EPC_6029_03 ( p_monitorCompRef_A, false ); -// f_mtc_check_TP_EPC_6013_01 ( p_monitorCompRef_B ); -// } // End of function f_mtc_check_TP_EPC_6033_01 + /** + * Starts monitor component behavior for TP_EPC_6033_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *
+         * ensure that {
+         *     when { IMS_P-CSCF receives INVITE with no SDP from UE_A }
+         *         then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+         *         when { IMS_P-CSCF receives 200_response on INVITE with no SDP from IMS_S-CSCF }
+         *             then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+         *             when { IMS_P-CSCF receives ACK with no SDP from UE_A }
+         *                 then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
+         * }
+         * 
+ */ + function f_mtc_check_TP_EPC_6033_01( + ImsInterfaceMonitor p_monitorCompRef_A, + ImsInterfaceMonitor p_monitorCompRef_B + ) runs on ImsTestCoordinator { + p_monitorCompRef_A.start( + f_imsIot_receive( + { mw_SipRequest ( mw_INVITE_Request_Base ) }, { }, { 0, omit }, + "TP_EPC_6033_01 INVITE", false, false ) + ); + p_monitorCompRef_A.done; + f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef_A, false ); + f_mtc_check_TP_EPC_6029_03 ( p_monitorCompRef_A, false ); + f_mtc_check_TP_EPC_6013_01 ( p_monitorCompRef_B ); + } // End of function f_mtc_check_TP_EPC_6033_01 /** * Starts monitor component behavior for TP_EPC_6034_02 diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn index e381d78..a924d82 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn @@ -32,7 +32,7 @@ module AtsImsIot_TD_ATT{ import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; - import from AtsImsIot_Behavior all; // TODO To be removed + group Interoperability{ group networkAttachmentAndDefaultBearer { @@ -51,43 +51,41 @@ module AtsImsIot_TD_ATT{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - // Check that user A can register to IMS A - //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - //f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // test body + // Check that user A can register to IMS A + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_INT_ATT_01 } //End of group networkAttachmentAndDefaultBearer diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index dd33867..c26ea29 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -32,7 +32,7 @@ module AtsImsIot_TD_DRG{ import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; - import from AtsImsIot_Behavior all; // TODO To be removed + //import from AtsImsIot_Behavior all; // TODO To be removed group Interoperability{ group IMSDeRegistration { diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn index 2a0f662..469550e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn @@ -32,7 +32,7 @@ module AtsImsIot_TD_DTC{ import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; - import from AtsImsIot_Behavior all; + //import from AtsImsIot_Behavior all; group Interoperability{ group NetworkDetachment { diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 1ffdd4b..7ea614d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -32,7 +32,8 @@ module AtsImsIot_TD_INI{ import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; - import from AtsImsIot_Behavior all; // TODO To be removed + import from AtsImsIot_TP_behavior_RX all; + group Interoperability{ group SIPsessionEstablisment { group OriginatingLeg { @@ -61,42 +62,60 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); // Preamble - //f_cf_int_call_up(v_config); f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 - f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 6 + //f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 + //f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); + + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 + + //f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 6 + + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 8 + + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 9 + + //f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mw/*FIXME: mwPS*/, true, true); // Event 11 - f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 14 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 15 - f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, true); // Event 16 - f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 11 + //f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, true); // Event 16 f_mtc_userCheckRinging(v_ueB); f_mtc_userCheckPeerIsRinging(v_ueA); f_mtc_userAnswerCall(v_ueB); - f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 - f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 20 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 18 - f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 26 - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 27 - - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 8 - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 8 - f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8 - f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 29 - f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 18 - f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 18 - f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 18 + //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 20 + + f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 21 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 22 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 23 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 24 + + //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 + //f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 26 + //f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 27 + //f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // ACK – Event 29 + f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -104,7 +123,7 @@ module AtsImsIot_TD_INI{ f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); + //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -142,51 +161,51 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); - - f_mtc_check_TP_GM_PCSCF_INVITE_02(v_gmB, true, true); // Event 8 - f_mtc_check_TP_MW_PCSCF_INVITE_02(v_gmB/*FIXME: mwPS*/, true, true); // Event 3 - - f_mtc_check_TP_GM_PCSCF_100Trying_02(v_gmB, true, true); - f_mtc_check_TP_MW_PCSCF_100Trying_02(v_gmB/*FIXME: mwPS*/, true, true); - - f_mtc_check_TP_GM_PCSCF_180RINGING_02(v_gmB, true); // Event 9 - f_mtc_check_TP_MW_PCSCF_180RINGING_02(v_gmB/*FIXME: mwPS*/, true); // Event 14 - - f_mtc_userCheckRinging(v_ueA); - f_mtc_userCheckPeerIsRinging(v_ueB); - f_mtc_userAnswerCall(v_ueA); - - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB, true); // Event 18 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/, true); // Event 23 - - f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmB, true, true); // Event 29 - f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmB/*FIXME: mwPS*/, true, true); // Event 28 - - f_mtc_check_TP_IC_IBCF_INVITE_01(v_ic); // INVITE Event 1 - f_mtc_check_TP_IC_IBCF_INVITE_02(v_ic); // INVITE Event 1 - f_mtc_check_TP_IC_IBCF_INVITE_03(v_ic); // INVITE ENUM Event 1 - f_mtc_check_TP_IC_IBCF_ACK_01(v_ic); // ACK – Event 26 - f_mtc_check_TP_IC_IBCF_180RESP_01(v_ic); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 25 - f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 25 - f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 25 - - f_mtc_userCheckCallEstablished(v_ueA); // Event 30 - f_mtc_userCheckCallEstablished(v_ueB); // Event 30 - - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); +// // Preamble +// f_mtc_userRegistration(v_ueA, v_userInfoA); +// f_mtc_userRegistration(v_ueB, v_userInfoB); +// +// // Test body +// //f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); +// +// f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 +// f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 3 +// +// f_mtc_check_TP_GM_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); +// f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); +// +// f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 +// f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 +// +// f_mtc_userCheckRinging(v_ueA); +// f_mtc_userCheckPeerIsRinging(v_ueB); +// f_mtc_userAnswerCall(v_ueA); +// +// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 18 +// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 23 +// +// f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 +// f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 +// +// f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 1 +// f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 1 +// f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 1 +// f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 26 +// f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 +// f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 +// f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 +// f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 +// f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 +// f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 +// +// f_mtc_userCheckCallEstablished(v_ueA); // Event 30 +// f_mtc_userCheckCallEstablished(v_ueB); // Event 30 +// +// // Postamble +// f_mtc_EndCall(v_ueA); +// f_PO_user_home_deregistration(v_ueA); +// f_PO_user_home_deregistration(v_ueB); +// //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -228,40 +247,40 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - f_mtc_userAddNewMediaStream(v_ueA); - - // Test body - f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(v_gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(v_gmA/*FIXME: mwPS*/); // Event 3 - - f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA); // Event 13 - f_mtc_check_TP_MW_PCSCF_200OK_01(v_gmA/*FIXME: mwPS*/); // Event 8 - - f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 14 - f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA/*FIXME: mwPS*/); // Event 15 - - f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 5 - f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 6 - - f_mtc_userCheckNewMediaStream(v_ueB); - f_mtc_userCheckNewMediaStream(v_ueA); + //f_cf_int_call_up(v_config); - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); +// // Preamble +// f_PR_user_home_registration(v_ueA,v_userInfoA); +// f_PR_user_home_registration(v_ueB,v_userInfoB); +// f_mtc_userInitiateCall (v_ueA, v_userInfoB); +// f_mtc_userCheckRinging(v_ueB); +// f_mtc_userCheckPeerIsRinging(v_ueA); +// f_mtc_userAnswerCall(v_ueB); +// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 +// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 +// f_mtc_userAddNewMediaStream(v_ueA); +// +// // Test body +// f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 2 +// f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 +// +// f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 13 +// f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 8 +// +// f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 14 +// f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 15 +// +// f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 5 +// f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 6 +// +// f_mtc_userCheckNewMediaStream(v_ueB); +// f_mtc_userCheckNewMediaStream(v_ueA); +// +// // Postamble +// f_mtc_EndCall(v_ueA); +// f_PO_user_home_deregistration(v_ueA); +// f_PO_user_home_deregistration(v_ueB); +// //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -300,38 +319,38 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - - // Test body - f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 - f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(v_gmB/*FIXME: mwPS*/); // Event 4 - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB); // Event 6 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/); // Event 11 - f_mtc_check_TP_GM_PCSCF_ACK_02(v_gmB); // Event 17 - - f_mtc_check_TP_MW_PCSCF_ACK_02(v_gmB/*FIXME: mwPS*/); // Event 16 - - f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 2 - f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 13 - - f_mtc_userCheckNewMediaStream(v_ueA); - f_mtc_userCheckNewMediaStream(v_ueB); + //f_cf_int_call_up(v_config); - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); +// // Preamble +// f_PR_user_home_registration(v_ueA,v_userInfoA); +// f_PR_user_home_registration(v_ueB,v_userInfoB); +// f_mtc_userInitiateCall (v_ueA, v_userInfoB); +// f_mtc_userCheckRinging(v_ueB); +// f_mtc_userCheckPeerIsRinging(v_ueA); +// f_mtc_userAnswerCall(v_ueB); +// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 +// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 +// +// // Test body +// f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 5 +// f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 4 +// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 +// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 11 +// f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 +// +// f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 16 +// +// f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 2 +// f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 13 +// +// f_mtc_userCheckNewMediaStream(v_ueA); +// f_mtc_userCheckNewMediaStream(v_ueB); +// +// // Postamble +// f_mtc_EndCall(v_ueA); +// f_PO_user_home_deregistration(v_ueA); +// f_PO_user_home_deregistration(v_ueB); +// //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -370,32 +389,32 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - - // Test body - f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 - f_mtc_check_TP_GM_PCSCF_BYE_01(v_gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_01(v_gmA/*FIXME: mwPS*/); // Event 3 - f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 - //f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 - f_mtc_userCheckCallTerminated(v_ueA); // Event 14 - f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + //f_cf_int_call_up(v_config); - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); +// // Preamble +// f_mtc_userRegistration(v_ueA, v_userInfoA); +// f_mtc_userRegistration(v_ueB, v_userInfoB); +// f_mtc_userInitiateCall (v_ueA, v_userInfoB); +// f_mtc_userCheckRinging(v_ueB); +// f_mtc_userCheckPeerIsRinging(v_ueA); +// f_mtc_userAnswerCall(v_ueB); +// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 +// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 +// +// // Test body +// //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 +// f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 2 +// f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 +// f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4 +// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 +// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 +// //f_mtc_check_TP_IMS_5107_01_ic(vc_vxlte_monitor_components.ic, false); // Event 5 +// f_mtc_userCheckCallTerminated(v_ueA); // Event 14 +// f_mtc_userCheckCallCancelled(v_ueB); // Event 15 +// +// // Postamble +// f_PO_user_home_deregistration(v_ueA); +// f_PO_user_home_deregistration(v_ueB); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -432,32 +451,32 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - - // Test body - f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 - f_mtc_check_TP_GM_PCSCF_BYE_02(v_gmB); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_02(v_gmB/*FIXME: mwPS*/); // Event 3 - f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 - // f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 - f_mtc_userCheckCallTerminated(v_ueA); // Event 14 - f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + //f_cf_int_call_up(v_config); - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); +// // Preamble +// f_mtc_userRegistration(v_ueA, v_userInfoA); +// f_mtc_userRegistration(v_ueB, v_userInfoB); +// f_mtc_userInitiateCall (v_ueA, v_userInfoB); +// f_mtc_userCheckRinging(v_ueB); +// f_mtc_userCheckPeerIsRinging(v_ueA); +// f_mtc_userAnswerCall(v_ueB); +// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 +// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 +// +// // Test body +// //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 +// f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 2 +// f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 3 +// f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4 +// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 +// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 +// // f_mtc_check_TP_IMS_5107_01_ic(vc_vxlte_monitor_components.ic, false); // Event 5 +// //f_mtc_userCheckCallTerminated(v_ueA); // Event 14 +// //f_mtc_userCheckCallCancelled(v_ueB); // Event 15 +// +// // Postamble +// f_PO_user_home_deregistration(v_ueA); +// f_PO_user_home_deregistration(v_ueB); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -494,32 +513,32 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueB, v_userInfoA); - f_mtc_userCheckRinging(v_ueA); - f_mtc_userCheckPeerIsRinging(v_ueB); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - - // Test body - - f_mtc_userLooseConnection(v_ueB); - f_mtc_check_TP_GM_PCSCF_BYE_03(v_gmA); // Event 5 - f_mtc_check_TP_MW_PCSCF_BYE_03(v_gmA/*FIXME: mwPS*/); // Event 3 - f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 - // f_mtc_check_TP_IMS_5073_01_ic(v_ic); // Event 4 - f_mtc_userCheckCallTerminated(v_ueA); // Event 14 - f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + //f_cf_int_call_up(v_config); - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); +// // Preamble +// f_mtc_userRegistration(v_ueA, v_userInfoA); +// f_mtc_userRegistration(v_ueB, v_userInfoB); +// f_mtc_userInitiateCall (v_ueB, v_userInfoA); +// f_mtc_userCheckRinging(v_ueA); +// f_mtc_userCheckPeerIsRinging(v_ueB); +// f_mtc_userAnswerCall(v_ueB); +// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 +// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 +// +// // Test body +// +// f_mtc_userLooseConnection(v_ueB); +// f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA); // Event 5 +// f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 +// f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4 +// // f_mtc_check_TP_IMS_5073_01_ic(vc_vxlte_monitor_components.ic); // Event 4 +// f_mtc_userCheckCallTerminated(v_ueA); // Event 14 +// f_mtc_userCheckCallCancelled(v_ueB); // Event 15 +// +// // Postamble +// f_PO_user_home_deregistration(v_ueA); +// f_PO_user_home_deregistration(v_ueB); +// //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index ed53424..fc82f78 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -32,7 +32,6 @@ module AtsImsIot_TD_REG{ import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; - import from AtsImsIot_Behavior all; group Interoperability{ group IMSRegistration { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index fa76e5d..42c56c0 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1358,7 +1358,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_486INVITE_01", @@ -1403,7 +1403,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_486INVITE_01", @@ -1452,7 +1452,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_487INVITE_01", @@ -1497,7 +1497,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_487INVITE_01", diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 91fea3c..d77d91e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -1476,7 +1476,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_486INVITE_01", @@ -1528,7 +1528,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_486INVITE_01", @@ -1584,7 +1584,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_487INVITE_01", @@ -1636,7 +1636,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_487INVITE_01", diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index 149765e..8a8647a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -237,7 +237,7 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.start( f_imsIot_receive( { - mw_SipRequest(mw_200OK_Base) + /*mw_SipRequest(mw_200OK_Base)*/ //FIXME }, {}, {0, omit}, @@ -1397,7 +1397,7 @@ module AtsImsIot_TP_behavior_MW_SI { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, "TP_MW_SCSCF_486INVITE_01", @@ -1449,7 +1449,7 @@ module AtsImsIot_TP_behavior_MW_SI { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine486)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, "TP_MW_SCSCF_486INVITE_01", @@ -1505,7 +1505,7 @@ module AtsImsIot_TP_behavior_MW_SI { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, "TP_MW_SCSCF_487INVITE_01", @@ -1557,7 +1557,7 @@ module AtsImsIot_TP_behavior_MW_SI { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipResponse(mw_Response_Base(c_statusLine487)) }, //FIXME + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, "TP_MW_SCSCF_487INVITE_01", diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn index bef9c87..6582032 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn @@ -151,9 +151,9 @@ module AtsImsIot_TestCases_ATT { // Check that user A can register to IMS A // f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message // f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check - f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) - f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + //f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) + //f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) + //f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); // f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn index e71fcae..76f46d2 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn @@ -362,7 +362,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEstablished(v_ueB); // Event 1 // Test body - f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 + //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_01(v_gmA); // Event 2 f_mtc_check_TP_MW_PCSCF_BYE_01(v_gmA/*FIXME: mwPS*/); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 @@ -420,7 +420,7 @@ module AtsImsIot_TestCases_CALL { f_mtc_userCheckCallEstablished(v_ueB); // Event 1 // Test body - f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 + //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_02(v_gmB); // Event 2 f_mtc_check_TP_MW_PCSCF_BYE_02(v_gmB/*FIXME: mwPS*/); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn index 7c05ec2..1e2975f 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn @@ -50,9 +50,9 @@ module AtsImsIot_TestCases_REG { f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 21, 24 f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(v_gmA/*FIXME: mwPS*/, true); // Events 22, 23 - f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 - f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 - f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 + //f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 + //f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 + //f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 // Postamble f_PO_user_home_deregistration(v_ueA); @@ -85,9 +85,9 @@ module AtsImsIot_TestCases_REG { // Test body f_mtc_check_TP_GM_PCSCF_REGISTER_03(v_gmA, true); // Events 1, 6 - f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 - f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 - f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 + //f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 + //f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 + //f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 // Postamble f_PO_user_home_deregistration(v_ueA); @@ -121,9 +121,9 @@ module AtsImsIot_TestCases_REG { f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); // Events 11, 24 f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 25, 28 - f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 - f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 30 - f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 35, 38 + //f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 + //f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 30 + //f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 35, 38 // Postamble f_PO_user_home_deregistration(v_ueA); diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..d640fce 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 diff --git a/ttcn/LibSip b/ttcn/LibSip index 7d79616..1968037 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d +Subproject commit 1968037e8c62d804047c534222ce547764c4b037 -- GitLab From 43b1f5f5526ee78fe4de67d75008abb9a28cf006 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 24 Jun 2020 11:59:08 +0200 Subject: [PATCH 097/176] Update MW interfaces --- test_purposes/Gm/TP_GM.tplan2 | 4 - test_purposes/Mw/TP_MW_PS.tplan2 | 23 +--- test_purposes/Mw/TP_MW_SI.tplan2 | 26 +--- ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn | 3 +- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 3 +- ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 3 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 3 +- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 3 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn | 124 +++++++++--------- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 93 ++++++------- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 113 ++++++++-------- ttcn/LibSip | 2 +- 12 files changed, 190 insertions(+), 210 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 45902ff..dbea036 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -1245,8 +1245,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_200OK_01 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." @@ -1284,8 +1282,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_200OK_02 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_GM_INI_03A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 50da1fd..3401cfb 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -1052,7 +1052,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_INVITE_02 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." @@ -1111,7 +1110,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_INVITE_03 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." @@ -1170,7 +1168,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_INVITE_04 - // TP_IMST2_MW_INI_05 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." @@ -1229,8 +1226,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_100TRY_01 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." @@ -1265,8 +1260,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_100TRY_02 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." @@ -1301,8 +1294,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_100TRY_03 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." @@ -1538,7 +1529,7 @@ Package TP_MW_PS { not PChargingFunctionAddresses, not PPreferredIdentity ; - from the UE_A entity + from the IMS_S_CSCF_A entity } then { the IMS_P_CSCF_A entity sends a 200_Ok containing @@ -1546,7 +1537,7 @@ Package TP_MW_PS { PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_S_CSCF_A entity + to the UE_A entity } } @@ -1575,20 +1566,20 @@ Package TP_MW_PS { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives a 200_Ok containing + the IMS_P_CSCF_B entity receives a 200_Ok containing PChargingVector, PChargingFunctionAddresses, PPreferredIdentity ; - from the IMS_S_CSCF_A entity + from the UE_B entity } then { - the not IMS_P_CSCF_A entity sends a 200_Ok containing + the not IMS_P_CSCF_B entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity ; - to the UE_A entity + to the IMS_S_CSCF_B entity } } @@ -1685,8 +1676,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_ACK_01 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index 6392a9b..2891393 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -946,8 +946,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_100TRY_01 - // TP_IMS_5070_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." @@ -1234,8 +1232,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_200OK_01 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." @@ -1261,7 +1257,7 @@ Package TP_MW_SI { not PChargingFunctionAddresses, not PPreferredIdentity ; - from the IMS_P_CSCF_A entity + from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 200_Ok containing @@ -1269,7 +1265,7 @@ Package TP_MW_SI { PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_IBCF_A entity + to the IMS_P_CSCF_A entity } } @@ -1278,8 +1274,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_200OK_02 - // TP_IMS_5055_02 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_INI_04A from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." @@ -1300,20 +1294,20 @@ Package TP_MW_SI { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity receives a 200_Ok containing + the IMS_S_CSCF_B entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity ; - from the IMS_IBCF_A entity + from the IMS_P_CSCF_B entity } then { - the IMS_S_CSCF_A entity sends a 200_Ok containing + the IMS_S_CSCF_B entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, PPreferredIdentity ; - to the IMS_P_CSCF_A entity + to the IMS_IBCF_B entity } } @@ -1410,8 +1404,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_ACK_01 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." @@ -1458,8 +1450,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_ACK_02 - // TP_IMS_5055_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." @@ -1602,8 +1592,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_RE_INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg)." @@ -1619,7 +1607,7 @@ Package TP_MW_SI { the UE_B entity isAttachedTo the EPC_B and the UE_A entity isRegisteredTo the IMS_A and the UE_B entity isRegisteredTo the IMS_B and - the IMS_P_CSCF_A entity previouslyEstablishedCallWith the IMS_P_CSCF_B + the UE_A entity previouslyEstablishedCallWith the UE_B } Expected behaviour diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn index a924d82..f9ca1d3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn @@ -28,7 +28,8 @@ module AtsImsIot_TD_ATT{ import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index c26ea29..19b19b4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -28,7 +28,8 @@ module AtsImsIot_TD_DRG{ import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn index 469550e..ad5657b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn @@ -28,7 +28,8 @@ module AtsImsIot_TD_DTC{ import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 7ea614d..d86d29d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -28,7 +28,8 @@ module AtsImsIot_TD_INI{ import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index fc82f78..b83c540 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -28,7 +28,8 @@ module AtsImsIot_TD_REG{ import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW all; + import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn index 8adf2aa..69203d7 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW.ttcn @@ -3,65 +3,65 @@ * @version $Id$ * @desc This module provides the TP behaviour functions at MW interface */ - -module AtsImsIot_TP_behavior_MW -{ - - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } - - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; - - - -group g_PCSCF { - - -} // end group g_PCSCF - -group g_ICSCF { - - -} // end group g_ICSCF - -group g_SCSCF { - - -} // end group g_SCSCF - -} // end module AtsImsIot_TP_behavior_MW \ No newline at end of file +// FIXME To be removed, use AtsImsIot_TP_behavior_MW_PS, AtsImsIot_TP_behavior_MW_SI and AtsImsIot_TP_behavior_MW_IS to prevent very huge module +//module AtsImsIot_TP_behavior_MW +//{ +// +// import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } +// import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} +// import from AtsImsIot_Templates {template all;} +// import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } +// import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; +// import from LibIms_UpperTester {type ImsUserInfo;} +// import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} +// import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } +// import from LibSip_SIPTypesAndValues all; +// import from LibSip_Templates all; +// +// import from LibSip_Common { +// type +// GenericParam, +// SemicolonParam_List +// } +// +// import from AtsImsIot_Functions all; +// import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} +// // LibSip +// import from LibSip_SDPTypes { type SDP_media_desc_list }; +// // LibMsrp +// import from LibMsrp_TypesAndValues { type MsrpURI }; +// import from LibMsrp_Functions { function f_str2msrpUri }; +// import from LibMsrp_Templates { +// template +// m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, +// m_msrpReport_Dummy, mw_msrpREPORT_success, +// m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, +// mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, +// m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, +// mw_contentType +// }; +// import from DiameterS6a_Templates all; +// import from DiameterS6a_PIXITS all; +// import from DiameterGx_Templates all; +// // LibDiameter +// import from LibDiameter_Templates all; +//// import from DiameterRx_Templates all; +// +// +// +//group g_PCSCF { +// +// +//} // end group g_PCSCF +// +//group g_ICSCF { +// +// +//} // end group g_ICSCF +// +//group g_SCSCF { +// +// +//} // end group g_SCSCF +// +//} // end module AtsImsIot_TP_behavior_MW \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index d77d91e..ed0e6e7 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -626,7 +626,7 @@ module AtsImsIot_TP_behavior_MW_PS { * Version indicating value "0" * ; * ;; - * to the UE_A entity + * from the UE_A entity * } * then { * the IMS_P_CSCF_A entity sends a ReINVITE containing @@ -682,7 +682,19 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_B entity isRequestedToSend a ReINVITE + * the IMS_P_CSCF_B entity receives a ReINVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the IMS_S_CSCF_B entity * } * then { * the IMS_P_CSCF_B entity sends a ReINVITE containing @@ -697,7 +709,7 @@ module AtsImsIot_TP_behavior_MW_PS { * Version indicating value "0" * ; * ;; - * fomr the UE_B entity + * to the UE_B entity * } * } */ @@ -744,7 +756,8 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_A entity hasAchieveInitialINVITE + * the IMS_P_CSCF_A entity receives a 100_Trying + * from the IMS_S_CSCF_A entity * } * then { * the IMS_P_CSCF_A entity sends a 100_Trying @@ -782,24 +795,12 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the UE_B entity sends a 100_Trying containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity + * the IMS_P_CSCF_B entity receives a 100_Trying + * from the UE_B entity * } * then { - * the IMS_P_CSCF_A entity forwards the 100_Trying containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the IMS_S_CSCF_A entity + * the IMS_P_CSCF_B entity sends a 100_Trying + * to the IMS_S_CSCF_B entity * } * } */ @@ -838,21 +839,21 @@ module AtsImsIot_TP_behavior_MW_PS { * ensure that { * when { * the IMS_P_CSCF_A entity receives a 180_Ringing containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE * ; * from the IMS_S_CSCF_A entity * } * then { * the IMS_P_CSCF_A entity sends a 180_Ringing containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE * ; * to the UE_A entity * } @@ -948,29 +949,29 @@ module AtsImsIot_TP_behavior_MW_PS { * ensure that { * when { * the IMS_P_CSCF_A entity receives a 200_Ok containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE, + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, * not PChargingVector, * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * from the UE_A entity + * from the IMS_S_CSCF_A entity * } * then { * the IMS_P_CSCF_A entity sends a 200_Ok containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE, + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, * PChargingVector, * PChargingFunctionAddresses, * PPreferredIdentity * ; - * to the IMS_S_CSCF_A entity + * to the UE_A entity * } * } */ @@ -1004,7 +1005,7 @@ module AtsImsIot_TP_behavior_MW_PS { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a 200_Ok containing + * the IMS_P_CSCF_B entity receives a 200_Ok containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -1014,10 +1015,10 @@ module AtsImsIot_TP_behavior_MW_PS { * PChargingFunctionAddresses, * PPreferredIdentity * ; - * from the IMS_S_CSCF_A entity + * from the UE_B entity * } * then { - * the IMS_P_CSCF_A entity sends a 200_Ok containing + * the IMS_P_CSCF_B entity sends a 200_Ok containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -1027,7 +1028,7 @@ module AtsImsIot_TP_behavior_MW_PS { * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * from the UE_A entity + * from the IMS_S_CSCF_B entity * } * } */ diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index 8a8647a..9ddc348 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -535,7 +535,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a ReINVITE containing + * the IMS_S_CSCF_A entity receives a ReINVITE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -547,10 +547,10 @@ module AtsImsIot_TP_behavior_MW_SI { * Version indicating value "0" * ; * ;; - * to the UE_A entity + * from the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a ReINVITE containing + * the IMS_S_CSCF_A entity sends a ReINVITE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -562,7 +562,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Version indicating value "0" * ; * ;; - * to the IMS_S_CSCF_A entity + * to the IMS_IBCF_A entity * } * } */ @@ -603,10 +603,22 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the UE_B entity isRequestedToSend a ReINVITE + * the IMS_S_CSCF_B entity receives a ReINVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * PAccessNetworkInfo, + * MessageBody containing + * SDP containing + * Version indicating value "0" + * ; + * ;; + * from the IMS_IBCF_B entity * } * then { - * the IMS_P_CSCF_B entity sends a ReINVITE containing + * the IMS_S_CSCF_B entity sends a ReINVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -618,7 +630,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Version indicating value "0" * ; * ;; - * fomr the UE_B entity + * to the IMS_P_CSCF_B entity * } * } */ @@ -665,11 +677,12 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the UE_A entity hasAchieveInitialINVITE + * the IMS_S_CSCF_A entity receives a 100_Trying + * from the IMS_IBCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a 100_Trying - * to the UE_A entity + * the IMS_S_CSCF_A entity forwards a 100_Trying + * to the IMS_P_CSCF_A entity * } * } */ @@ -703,24 +716,12 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the UE_B entity sends a 100_Trying containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity + * the IMS_S_CSCF_B entity receives a 100_Trying + * from the IMS_P_CSCF_B entity * } * then { - * the IMS_P_CSCF_A entity forwards the 100_Trying containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the IMS_S_CSCF_A entity + * the IMS_S_CSCF_B entity sends a 100_Trying + * to the IMS_IBCF_B entity * } * } */ @@ -758,24 +759,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a 180_Ringing containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE + * the IMS_S_CSCF_A entity receives a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the IMS_S_CSCF_A entity + * from the IMS_IBCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a 180_Ringing containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE + * the IMS_S_CSCF_A entity sends a 180_Ringing containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * to the UE_A entity + * to the IMS_P_CSCF_A entity * } * } */ @@ -809,18 +810,18 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_B entity receives a 180_Ringing containing + * the IMS_S_CSCF_B entity receives a 180_Ringing containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_B entity + * from the IMS_P_CSCF_B entity * * } * then { - * the IMS_P_CSCF_B entity sends a 180_Ringing containing + * the IMS_S_CSCF_B entity sends a 180_Ringing containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -830,7 +831,7 @@ module AtsImsIot_TP_behavior_MW_SI { * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * to the IMS_S_CSCF_B entity + * to the IMS_IBCF_B entity * } * } */ @@ -868,7 +869,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a 200_Ok containing + * the IMS_S_CSCF_A entity receives a 200_Ok containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -878,10 +879,10 @@ module AtsImsIot_TP_behavior_MW_SI { * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * from the UE_A entity + * from the IMS_IBCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a 200_Ok containing + * the IMS_S_CSCF_A entity sends a 200_Ok containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -891,7 +892,7 @@ module AtsImsIot_TP_behavior_MW_SI { * PChargingFunctionAddresses, * PPreferredIdentity * ; - * to the IMS_S_CSCF_A entity + * to the IMS_P_CSCF_A entity * } * } */ @@ -925,7 +926,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a 200_Ok containing + * the IMS_S_CSCF_B entity receives a 200_Ok containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -935,10 +936,10 @@ module AtsImsIot_TP_behavior_MW_SI { * PChargingFunctionAddresses, * PPreferredIdentity * ; - * from the IMS_S_CSCF_A entity + * from the IMS_P_CSCF_B entity * } * then { - * the IMS_P_CSCF_A entity sends a 200_Ok containing + * the IMS_S_CSCF_B entity sends a 200_Ok containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, @@ -948,7 +949,7 @@ module AtsImsIot_TP_behavior_MW_SI { * not PChargingFunctionAddresses, * not PPreferredIdentity * ; - * from the UE_A entity + * to the IMS_IBCF_B entity * } * } */ @@ -992,24 +993,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives an ACK containing + * the IMS_S_CSCF_A entity receives an ACK containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_A entity + * from the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends an ACK containing + * the IMS_S_CSCF_A entity sends an ACK containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the IMS_S_CSCF_A entity + * from the IMS_IBCF_A entity * } * } */ diff --git a/ttcn/LibSip b/ttcn/LibSip index 1968037..7d79616 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 1968037e8c62d804047c534222ce547764c4b037 +Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d -- GitLab From 848e8e571cb968b8994defec0dedb0d12f74a65b Mon Sep 17 00:00:00 2001 From: Bostjan Date: Wed, 24 Jun 2020 15:23:03 +0200 Subject: [PATCH 098/176] TC_VxLTE_INT_REG_01-03 added. --- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 504 ++++++++++++++------------- 1 file changed, 269 insertions(+), 235 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index b83c540..09b4504 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -29,10 +29,11 @@ module AtsImsIot_TD_REG{ import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_MW_SI all; + import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; + import from AtsImsIot_TP_behavior_RX all; group Interoperability{ group IMSRegistration { @@ -45,49 +46,63 @@ module AtsImsIot_TD_REG{ testcase TC_VxLTE_INT_REG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // Test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 + //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 9 + //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 + + f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 + + //f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 20 + //f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 19 + //f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 18 + + f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 13, 14 + f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 + + //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 + //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, true); // Events 22, 23 + + f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 25 + f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 26 + f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 27, 28 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_INT_REG_01 /** @@ -95,52 +110,51 @@ module AtsImsIot_TD_REG{ * * @see */ - testcase TC_VxLTE_INT_REG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + testcase TC_VxLTE_INT_REG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + //test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 + //f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 + //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 5 + + f_mtc_check_TP_CX_HSS_UAA_03(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + + f_mtc_check_TP_RX_PCSCF_AAR_02(vc_vxlte_monitor_components.rx);// Event 7 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_INT_REG_02 /** @@ -151,49 +165,69 @@ module AtsImsIot_TD_REG{ testcase TC_VxLTE_INT_REG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_SH_INTERFACENAME, + PX_SIP_ISC_INTERFACENAME})) + { f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( );} - else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + + //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 + //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 9 + //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 + + f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 + + //f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 24 + //f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 23 + //f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 22 + + f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 13, 14 + f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 + + f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 16, 17 + f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 18, 21 + + //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 25, 28 + //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 26, 27 + + f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 29 + f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 30 + f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 31, 32 + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( );} + else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_INT_REG_03 } //End of group IMSRegistration @@ -215,44 +249,44 @@ module AtsImsIot_TD_REG{ //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_RMI_REG_01 /** @@ -268,44 +302,44 @@ module AtsImsIot_TD_REG{ //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_RMI_REG_02 /** @@ -321,44 +355,44 @@ module AtsImsIot_TD_REG{ //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + + // TODO: test body + // Check that user A can register to IMS A + f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) + // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) + // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + // postamble + //f_PO_user_home_deregistration ( v_ueB ); + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_RMI_REG_03 } //End of group IMSRegistration -- GitLab From 69b82a4c924674746e53db283fdd8b77fe7ca3c8 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 25 Jun 2020 08:23:55 +0200 Subject: [PATCH 099/176] Add TTCN-3 module AtsImsIot_TP_behavior_MW_IS --- test_purposes/Gm/TP_GM.tplan2 | 5 +- test_purposes/Mw/TP_MW_PS.tplan2 | 4 +- test_purposes/Mw/TP_MW_SI.tplan2 | 370 +++++++++--------- ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 34 +- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 16 +- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 89 ++--- 11 files changed, 262 insertions(+), 276 deletions(-) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index dbea036..a8a834d 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -1515,7 +1515,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" - Config Id CF_VxLTE_INT + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2379,7 +2379,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" - Config Id CF_VxLTE_INT + Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -2701,7 +2701,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_486INVITE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 3401cfb..771d57c 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -2897,7 +2897,7 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_486INVITE_02 - Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" @@ -3087,7 +3087,7 @@ Package TP_MW_PS { TP Id TP_MW_PCSCF_487INVITE_02 - Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Terminating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index 2891393..e0a62d7 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -491,11 +491,11 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, Event, Expires ; @@ -503,10 +503,10 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA ; to the IMS_P_CSCF_A entity } @@ -535,11 +535,11 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives an SUBSCRIBE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, Event, Expires ; @@ -547,10 +547,10 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_B entity sends a 200_Ok containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA ; to the IMS_IBCF_A entity } @@ -733,11 +733,11 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -748,11 +748,11 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_A entity sends an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, ContentType indicating value "application/sdp", ContentLength, @@ -791,11 +791,11 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_B entity receives an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -806,11 +806,11 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_B entity sends an INVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, ContentType indicating value "application/sdp", ContentLength, @@ -1425,21 +1425,21 @@ Package TP_MW_SI { ensure that { when { the IMS_P_CSCF_A entity receives an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; from the IMS_S_CSCF_A entity } then { the IMS_S_CSCF_A entity sends an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; from the IMS_IBCF_A entity } @@ -1471,21 +1471,21 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends an ACK containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; from the IMS_P_CSCF_A entity } @@ -1614,11 +1614,11 @@ Package TP_MW_SI { ensure that { when { the IMS_P_CSCF_A entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1629,11 +1629,11 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_A entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1672,11 +1672,11 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_B entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1687,11 +1687,11 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_B entity receives an ReINVITE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, PAccessNetworkInfo, MessageBody containing SDP containing @@ -1822,8 +1822,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_BYE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Leg)." @@ -1845,24 +1843,24 @@ Package TP_MW_SI { Expected behaviour ensure that { when { - the IMS_P_CSCF_A entity receives an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + the IMS_S_CSCF_A entity receives an BYE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the IMS_S_CSCF_A entity + from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -1871,8 +1869,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_BYE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)." @@ -1895,23 +1891,23 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_B entity receives an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the IMS_I_CSCF_B entity + from the IMS_P_CSCF_B entity } then { the IMS_S_CSCF_B entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; - to the IMS_P_CSCF_B entity + to the IMS_IBCF_B entity } } @@ -1920,8 +1916,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_BYE_03 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Network)." @@ -1947,21 +1941,21 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_S_CSCF_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_S_CSCF_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; - to the IMS_I_CSCF_A entity + to the IMS_IBCF_A entity } } @@ -2091,19 +2085,19 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; to the IMS_I_CSCF_A entity } @@ -2141,19 +2135,19 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an BYE containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; to the IMS_I_CSCF_A entity } @@ -2352,8 +2346,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_CANCEL_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." @@ -2377,21 +2369,21 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity sends an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; to the IMS_IBCF_A entity } @@ -2402,8 +2394,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_CANCEL_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." @@ -2427,23 +2417,23 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_B entity receives an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; - from the IMS_P_CSCF_B entity + from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends an CANCEL containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_B_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, - Route indicating value PX_UA_A_SERVICE_ROUTE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE ; - to the IMS_IBCF_B entity + to the IMS_P_CSCF_B entity } } @@ -2552,7 +2542,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_486INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." @@ -2575,21 +2564,21 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; from the IMS_IBCF_A entity } then { the IMS_S_CSCF_A entity sends a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; to the IMS_P_CSCF_A entity } @@ -2600,9 +2589,8 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_486INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" @@ -2623,21 +2611,21 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_B entity receives a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; from the IMS_P_CSCF_B entity } then { the IMS_S_CSCF_B entity sends a 486_INVITE containing - From indicating value PX_UA_B_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_B_CALLID, - Via indicating value PX_UA_B_VIA, - Route indicating value PX_UA_B_SERVICE_ROUTE + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE ; to the IMS_IBCF_B entity } @@ -2744,7 +2732,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_487INVITE_01 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." @@ -2792,9 +2779,8 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_487INVITE_02 - // ??? from ETSI TS 186 011-1 V5.1.1 (2013-10) - Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." + Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Terminating Leg)." Reference "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn index f9ca1d3..ad17613 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn @@ -24,12 +24,12 @@ module AtsImsIot_TD_ATT{ import from AtsImsIot_Functions all; import from AtsImsIot_TP_behavior_GM all; import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; + import from AtsImsIot_TP_behavior_MW_IS all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index 19b19b4..ae75661 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -24,12 +24,12 @@ module AtsImsIot_TD_DRG{ import from AtsImsIot_Functions all; import from AtsImsIot_TP_behavior_GM all; import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; + import from AtsImsIot_TP_behavior_MW_IS all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn index ad5657b..dde6ace 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn @@ -24,12 +24,12 @@ module AtsImsIot_TD_DTC{ import from AtsImsIot_Functions all; import from AtsImsIot_TP_behavior_GM all; import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; + import from AtsImsIot_TP_behavior_MW_IS all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index d86d29d..acb6fe4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -24,12 +24,12 @@ module AtsImsIot_TD_INI{ import from AtsImsIot_Functions all; import from AtsImsIot_TP_behavior_GM all; import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; + import from AtsImsIot_TP_behavior_MW_IS all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index 09b4504..5ce615b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -24,12 +24,12 @@ module AtsImsIot_TD_REG{ import from AtsImsIot_Functions all; import from AtsImsIot_TP_behavior_GM all; import from AtsImsIot_TP_behavior_MW_PS all; + import from AtsImsIot_TP_behavior_MW_SI all; + import from AtsImsIot_TP_behavior_MW_IS all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 42c56c0..36ed6ac 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1125,7 +1125,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, //FIXME + { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME {}, { 0, omit }, "TP_GM_PCSCF_BYE_01", @@ -1170,7 +1170,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, + { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, "TP_GM_PCSCF_BYE_02", @@ -1198,7 +1198,7 @@ module AtsImsIot_TP_behavior_GM { * } * then { * the IMS_P_CSCF_A entity sends a BYE containing - * From indicating value PX_UE_B_SIP_URI, + * From indicating value PX_S_CSCF_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, @@ -1215,7 +1215,7 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, + { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, "TP_GM_PCSCF_BYE_03", @@ -1291,14 +1291,14 @@ module AtsImsIot_TP_behavior_GM { * the UE_A entity isRequestedToSend a CANCEL * } * then { - * the IMS_P_CSCF_B entity receives a CANCEL containing + * the IMS_P_CSCF_B entity sends a CANCEL containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_B entity + * to the UE_B entity * } * } */ @@ -1337,17 +1337,17 @@ module AtsImsIot_TP_behavior_GM { * Expected behaviour * ensure that { * when { - * the UE_B entity isRequestedToSend an 486_INVITE + * the UE_B entity isRequestedToSend a 486_INVITE * } * then { - * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * the IMS_P_CSCF_A entity sends a 486_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_A entity + * to the UE_A entity * } * } */ @@ -1434,14 +1434,14 @@ module AtsImsIot_TP_behavior_GM { * the UE_A entity isRequestedToSend a CANCEL * } * then { - * the IMS_P_CSCF_A entity receives a 487_INVITE containing + * the IMS_P_CSCF_A entity sends a 487_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_A entity + * to the UE_A entity * } * } */ @@ -1480,13 +1480,13 @@ module AtsImsIot_TP_behavior_GM { * } * then { * the IMS_P_CSCF_B entity receives a 487_INVITE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_A entity + * from the UE_B entity * } * } */ diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index ed0e6e7..86a58bc 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -1207,7 +1207,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, //FIXME + { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME {}, { 0, omit }, "TP_MW_PCSCF_BYE_01", @@ -1259,7 +1259,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, + { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, "TP_MW_PCSCF_BYE_02", @@ -1284,7 +1284,7 @@ module AtsImsIot_TP_behavior_MW_PS { * ensure that { * when { * the IMS_P_CSCF_A entity receives a BYE containing - * From indicating value PX_UE_B_SIP_URI, + * From indicating value PX_S_CSCF_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, @@ -1294,7 +1294,7 @@ module AtsImsIot_TP_behavior_MW_PS { * } * then { * the IMS_P_CSCF_A entity sends a BYE containing - * From indicating value PX_UE_B_SIP_URI, + * From indicating value PX_S_CSCF_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, @@ -1311,7 +1311,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, + { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, "TP_MW_PCSCF_BYE_03", @@ -1410,7 +1410,7 @@ module AtsImsIot_TP_behavior_MW_PS { * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_B entity + * to the UE_B entity * } * } */ @@ -1489,7 +1489,7 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_01 /** - * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * @desc Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1597,7 +1597,7 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_01 /** - * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg). + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index 9ddc348..b2cf462 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -1100,24 +1100,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a BYE containing + * the IMS_S_CSCF_A entity receives a BYE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_A entity + * from the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a BYE containing + * the IMS_S_CSCF_A entity sends a BYE containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the IMS_S_CSCF_A entity + * from the IMS_IBCF_A entity * } * } */ @@ -1128,7 +1128,7 @@ module AtsImsIot_TP_behavior_MW_SI { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, //FIXME + { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME {}, { 0, omit }, "TP_MW_SCSCF_BYE_01", @@ -1152,24 +1152,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_B entity receives a BYE containing + * the IMS_S_CSCF_B entity receives a BYE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_B entity + * from the IMS_P_CSCF_B entity * } * then { - * the IMS_P_CSCF_B entity sends a BYE containing + * the IMS_S_CSCF_B entity sends a BYE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the IMS_S_CSCF_B entity + * from the IMS_IBCF_B entity * } * } */ @@ -1180,7 +1180,7 @@ module AtsImsIot_TP_behavior_MW_SI { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, + { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, "TP_MW_SCSCF_BYE_02", @@ -1204,24 +1204,25 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a BYE containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the IMS_S_CSCF_A entity + * the UE_A entity isNoLongerAvailable * } * then { - * the IMS_P_CSCF_A entity sends a BYE containing - * From indicating value PX_UE_B_SIP_URI, + * the IMS_S_CSCF_A entity sends a BYE containing + * From indicating value PX_S_CSCF_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_A entity and + * the IMS_S_CSCF_A entity sends a BYE containing + * From indicating value PX_S_CSCF_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_A entity + * to the IMS_IBCF_A entity * } * } */ @@ -1232,7 +1233,7 @@ module AtsImsIot_TP_behavior_MW_SI { ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( - { mw_SipRequest(mw_BYE_Request_Base(?)) }, + { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, "TP_MW_SCSCF_BYE_03", @@ -1314,24 +1315,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_B entity receives a CANCEL containing + * the IMS_S_CSCF_B entity receives a CANCEL containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the IMS_S_CSCF_B entity + * from the IMS_IBCF_B entity * } * then { - * the IMS_P_CSCF_B entity sends a CANCEL containing + * the IMS_S_CSCF_B entity sends a CANCEL containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_B entity + * to the IMS_P_CSCF_B entity * } * } */ @@ -1370,24 +1371,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * the IMS_S_CSCF_A entity receives a 486_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the IMS_S_CSCF_A entity + * from the IMS_IBCF_A entity * } * then { - * the IMS_P_CSCF_A entity receives a 486_INVITE containing + * the IMS_S_CSCF_A entity receives a 486_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_A entity + * to the IMS_P_CSCF_A entity * } * } */ @@ -1410,7 +1411,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_486INVITE_01 /** - * @desc Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1422,24 +1423,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_B entity receives a CANCEL containing + * the IMS_S_CSCF_B entity receives a CANCEL containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_B entity + * from the IMS_P_CSCF_B entity * } * then { - * the IMS_P_CSCF_B entity sends a CANCEL containing + * the IMS_S_CSCF_B entity sends a CANCEL containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * to the IMS_S_CSCF_B entity + * to the IMS_IBCF_B entity * } * } */ @@ -1478,24 +1479,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a 487_INVITE containing + * the IMS_S_CSCF_A entity receives a 487_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the IMS_S_CSCF_A entity + * from the IMS_IBCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a 487_INVITE containing + * the IMS_S_CSCF_A entity sends a 487_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * to the UE_A entity + * to the IMS_P_CSCF_A entity * } * } */ @@ -1518,7 +1519,7 @@ module AtsImsIot_TP_behavior_MW_SI { } // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_01 /** - * @desc Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg). + * @desc Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Terminating Leg). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_B entity isAttachedTo the EPC_B and @@ -1530,24 +1531,24 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_B entity receives a 487_INVITE containing + * the IMS_S_CSCF_B entity receives a 487_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * from the UE_B entity + * from the IMS_P_CSCF_B entity * } * then { - * the IMS_P_CSCF_B entity sends a 487_INVITE containing + * the IMS_S_CSCF_B entity sends a 487_INVITE containing * From indicating value PX_UE_B_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_B_CALLID, * Via indicating value PX_UE_B_VIA, * Route indicating value PX_UE_B_SERVICE_ROUTE * ; - * to the IMS_S_CSCF_B entity + * to the IMS_IBCF_B entity * } * } */ -- GitLab From e77475007a0e825456ea19e96fd50276b99c9178 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 25 Jun 2020 09:27:21 +0200 Subject: [PATCH 100/176] Update IS interface --- test_purposes/Gm/TP_GM.tplan2 | 8 +- test_purposes/Mw/TP_MW_IS.tplan2 | 148 ++++----- test_purposes/Mw/TP_MW_PS.tplan2 | 4 +- test_purposes/Mw/TP_MW_SI.tplan2 | 2 - ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 50 ++- .../AtsImsIot_TP_behavior_MW_IS.ttcn | 311 ++++++++++++++++++ .../AtsImsIot_TP_behavior_MW_PS.ttcn | 88 ++++- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 92 +++++- 8 files changed, 596 insertions(+), 107 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index a8a834d..933444e 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -424,8 +424,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_REGISTER_07 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." @@ -492,8 +490,6 @@ Package TP_GM { Test Purpose { TP Id TP_GM_PCSCF_REGISTER_10 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)." @@ -636,9 +632,7 @@ Package TP_GM { Expected behaviour ensure that { when { - the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing - Event indicating value "reg,de-reg" - ; + the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY } then { the IMS_P_CSCF_A entity sends an NOTIFY containing diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2 index 945555f..4cb8317 100644 --- a/test_purposes/Mw/TP_MW_IS.tplan2 +++ b/test_purposes/Mw/TP_MW_IS.tplan2 @@ -21,8 +21,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_MESSAGE_01 - // TP_IMS_4002_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_GEN_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes" @@ -56,8 +54,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_01 - // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." @@ -78,26 +74,26 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA ; from the IMS_P_CSCF_A entity } then { the IMS_I_CSCF_A entity sends an 401_Unauthorized containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, Path, Warning, PAccessNetworkInfo, WwwAuthenticate containing Digest, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, + Realm indicating value PX_UE_A_REALM, + Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth" ;; @@ -109,8 +105,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_02 - // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." @@ -132,16 +126,16 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, Authorization containing Authentication_Scheme indicating value PX_TO_BE_DEFINED, Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, + Username indicating value PX_UE_A_USERNAME, + Realm indicating value PX_UE_A_REALM, + Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth" ;; @@ -149,13 +143,13 @@ Package TP_MW_IS { } then { the IMS_I_CSCF_A entity sends an 200_Ok containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, AuthenticationInfo, PAccessNetworkInfo, - PAssociatedURI indicating value PX_UA_A_SIP_URI, + PAssociatedURI indicating value PX_UE_A_SIP_URI, PChargingVector, orig_ioi_parameter indicating value "Operator Identifier Of ImsA" , @@ -172,7 +166,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_03 - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." @@ -223,8 +216,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_04 - // TP_IMS_5005_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." @@ -245,20 +236,20 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, PVisitedNetworkID ; from the IMS_IBCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, Path indicating value PX_P_CSCF_A_SIP_URI, PChargingVector containing icid indicating value PX_TO_BE_DEFINED, @@ -268,18 +259,18 @@ Package TP_MW_IS { ;; to the IMS_S_CSCF_A entity and the IMS_I_CSCF_A entity sends an 401_Unauthorized containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, Path, Warning, PAccessNetworkInfo, PVisitedNetworkID, WwwAuthenticate containing Digest, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, + Realm indicating value PX_UE_A_REALM, + Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth" ;; @@ -291,8 +282,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_05 - // TP_IMS_5092_01 from ETSI TS 186 011-1 V5.1.1 (2013-10) - // TP_IMST2_MW_REG_08 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." @@ -314,16 +303,16 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, Authorization containing Authentication_Scheme indicating value PX_TO_BE_DEFINED, Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, + Username indicating value PX_UE_A_USERNAME, + Realm indicating value PX_UE_A_REALM, + Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth" ;; @@ -331,29 +320,29 @@ Package TP_MW_IS { } then { the IMS_I_CSCF_B entity sends a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, Authorization containing Authentication_Scheme indicating value PX_TO_BE_DEFINED, Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, + Username indicating value PX_UE_A_USERNAME, + Realm indicating value PX_UE_A_REALM, + Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth", PChargingVector ;; to the IMS_S_CSCF_A entity and the IMS_I_CSCF_A entity sends an 200_Ok containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, AuthenticationInfo, PAccessNetworkInfo, - PAssociatedURI indicating value PX_UA_A_SIP_URI, + PAssociatedURI indicating value PX_UE_A_SIP_URI, PChargingVector, orig_ioi_parameter indicating value "Operator Identifier Of ImsA" , @@ -370,7 +359,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_06 - // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." @@ -391,25 +379,25 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a REGISTER containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID, - Via indicating value PX_UA_A_VIA, + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, Authorization containing Authentication_Schema indicating value PX_TO_BE_DEFINED, Authentication_URI indicating value PX_TO_BE_DEFINED, - Username indicating value PX_UA_A_INVALID_USERNAME, - Realm indicating value PX_UA_A_REALM, - Algorithm indicating value PX_UA_A_AUTH_ALG, + Username indicating value PX_UE_A_INVALID_USERNAME, + Realm indicating value PX_UE_A_REALM, + Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "" ;; to the IMS_IBCF_A entity } then { the IMS_I_CSCF_A entity sends an 404_NotFound containing - From indicating value PX_UA_A_SIP_URI, - To indicating value PX_UA_A_SIP_URI, - CallId indicating value PX_UA_A_CALLID + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID ; to the IMS_IBCF_A entity } @@ -419,8 +407,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_07 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)." @@ -456,8 +442,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_08 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)." @@ -493,8 +477,6 @@ Package TP_MW_IS { Test Purpose { TP Id TP_MW_ICSCF_REGISTER_09 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a network de-registration." diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 771d57c..e251423 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -265,7 +265,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID ; - to the UE_A entity + to the IMS_P_CSCF_A entity } } } // End of TP_MW_PCSCF_REGISTER_03 @@ -556,8 +556,6 @@ Package TP_MW_PS { Test Purpose { TP Id TP_MW_PCSCF_REGISTER_09 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)." diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index e0a62d7..c397bd4 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -390,8 +390,6 @@ Package TP_MW_SI { Test Purpose { TP Id TP_MW_SCSCF_REGISTER_10 - // ??? from ETSI TS 186 011-2 V5.1.1 (2013-10) - // ??? from ETSI TS 102 790-2 V3.1.1 (2014-07) Test objective "Verify that the S-CSCF successfully processes a user de-registration (with SIP session active)." diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 36ed6ac..0f09faf 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -335,6 +335,51 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_07 + /** + * @desc Verify that the P-CSCF successfully processes a user de-registration (no SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isTriggeredToDetachUser + * } + * then { + * the UE_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * to the IMS_P_CSCF_A entity and + * the UE_A entity receives a BYE + * from the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_REGISTER_10( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipRequest(mw_BYE_Base), + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_10", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_10 + } // End of group imsDeRegistration group imsSubscribe { @@ -404,10 +449,7 @@ module AtsImsIot_TP_behavior_GM { * Expected behaviour * ensure that { * when { - * the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing - * Event indicating value "reg,de-reg" - * ; - * to the IMS_P_CSCF_A entity + * the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY * } * then { * the IMS_P_CSCF_A entity sends an NOTIFY containing diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn new file mode 100644 index 0000000..797db3b --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -0,0 +1,311 @@ +/** + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at Mw interface at I-CSCF/S-CSCF + */ + +module AtsImsIot_TP_behavior_MW_IS { + + // LibIms + import from LibIms_Templates all; + import from LibIms_UpperTester all; + // LibIot + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + import from LibSip_SDPTypes all; + // LibMsrp + import from LibMsrp_TypesAndValues all; + import from LibMsrp_Functions all; + import from LibMsrp_Templates all; + // AtsImsIot + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Functions all; + + group imsMessages { + + /** + * @desc Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A entity receives the MESSAGE containing + * ContentLength indicating value greater than 1300 bytes + * ; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity forwards the MESSAGE containing + * ContentLength indicating value greater than 1300 bytes + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_ICSCF_MESSAGE_01( + ImsInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c), + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_MW_ICSCF_MESSAGE_01", + false, + false + )); + p_monitorCompRef.done; + } + + } // End of group imsMessages + + // 5.2 IMS Registration + group imsRegistration { + + /** + * @desc Verify that the S-CSCF successfully processes a first registration (Successful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends an 401_Unauthorized containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Path, + * Warning, + * PAccessNetworkInfo, + * WwwAuthenticate containing + * Digest, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth" + * ;; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_ICSCF_REGISTER_01( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipResponse(mw_401Unauthorized_Base) + }, + {}, + {0, omit}, + "TP_MW_ICSCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_01 + + /** + * @desc Verify that the S-CSCF successfully processes a full registration (Successful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient + * ;; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends an 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * AuthenticationInfo, + * PAccessNetworkInfo, + * PAssociatedURI indicating value PX_UE_A_SIP_URI, + * PChargingVector, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA" , + * term_ioi_parameter + * indicating value "Operator Identifier Of ImsB" + * Path, + * ServiceRoute + * ; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_ICSCF_REGISTER_02( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME + }, + {}, + {0, omit}, + "TP_MW_ICSCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02 + + /** + * @desc Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_INVALID_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "" + * ;; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends an 404_NotFound containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_REGISTER_03( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_03 + + } // End of group imsRegistration + + group imsDeRegistration { + + /** + * @desc Verify that the S-CSCF successfully processes a user de-registration (no SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A entity receives a REGISTER containing + * Expire indicating value 0 + * ; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends a REGISTER containing + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_ICSCF_REGISTER_07( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_ICSCF_REGISTER_07", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_07 + + } // End of group imsDeRegistration + +} // End of module AtsImsIot_TP_behavior_MW_IS diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 86a58bc..522ac36 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -294,7 +294,7 @@ module AtsImsIot_TP_behavior_MW_PS { * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * ; - * to the UE_A entity + * to the IMS_P_CSCF_A entity * } * } */ @@ -310,7 +310,7 @@ module AtsImsIot_TP_behavior_MW_PS { }, {}, {0, omit}, - "TP_MW_PCSCF_REGISTER_02", + "TP_MW_PCSCF_REGISTER_03", false, p_checkMessage ) @@ -364,6 +364,90 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_07 + /** + * @desc Verify that the P-CSCF successfully processes a network de-registration (no SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity isTriggeredToDetachUser + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * to the IMS_I_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_REGISTER_09( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_09", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_09 + + /** + * @desc Verify that the P-CSCF successfully processes a user de-registration (with SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a REGISTER containing + * Expire indicating value 0 + * ; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a REGISTER containing + * Expire indicating value 0 + * ; + * to the IMS_I_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_REGISTER_10( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_10", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_10 + } // End of group imsDeRegistration group imsSubscribe { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index b2cf462..872bf63 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -237,7 +237,8 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.start( f_imsIot_receive( { - /*mw_SipRequest(mw_200OK_Base)*/ //FIXME + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_200OK_Base) }, {}, {0, omit}, @@ -249,6 +250,69 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_07 + /** + * @desc Verify that the S-CSCF successfully processes a user de-registration (no SIP session active). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_S_CSCF_A entity receives a REGISTER containing + * Expire indicating value 0 + * ; + * from the IMS_I_CSCF_A entity + * } + * then { + * the IMS_S_CSCF_A entity sends a BYE + * to the IMS_P_CSCF_A entity and + * the IMS_S_CSCF_A entity sends a BYE + * to the IMS_IBCF_A entity and + * the IMS_S_CSCF_A entity sends a 200 OK + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_SCSCF_REGISTER_10( + in ImsInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_10", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_REGISTER_10", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_10 + } // End of group imsDeRegistration group imsSubscribe { @@ -317,10 +381,7 @@ module AtsImsIot_TP_behavior_MW_SI { * Expected behaviour * ensure that { * when { - * the IMS_S_CSCF_A entity receives a NOTIFY containing - * Event indicating value "reg,de-reg" - * ; - * from the IMS_S_CSCF_A entity + * the IMS_S_CSCF_A entity isRequestedToDeregisterUser * } * then { * the IMS_S_CSCF_A entity sends an NOTIFY containing @@ -328,7 +389,11 @@ module AtsImsIot_TP_behavior_MW_SI { * ; * to the IMS_P_CSCF_A entity and * the IMS_S_CSCF_A entity receives an 200_Ok - * from the IMS_P_CSCF_A entity + * from the IMS_P_CSCF_A entity and + * the IMS_S_CSCF_A entity sends an NOTIFY containing + * Event indicating value "de-reg" + * ; + * to the IMS_P_CSCF_A entity * } * } */ @@ -350,6 +415,21 @@ module AtsImsIot_TP_behavior_MW_SI { ) ); p_monitorCompRef.done; + + p_monitorCompRef.start( + f_imsIot_receive( + { + mw_SipRequest(mw_NOTIFY_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_NOTIFY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_SCSCF_NOTIFY_01 /** -- GitLab From 2ba185701556f13de2a441ef8635d511eccf88ab Mon Sep 17 00:00:00 2001 From: Rennoch Date: Thu, 25 Jun 2020 10:31:52 +0200 Subject: [PATCH 101/176] temporary commit in order to allow merge --- .../AtsImsIot_Diameter_Templates.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 82 +++++++++++++++---- ttcn/LibIms | 2 +- 3 files changed, 67 insertions(+), 21 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 58a688a..b702b8b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -915,14 +915,14 @@ module AtsImsIot_Diameter_Templates { bearer_Usage := mw_bearer_Usage(IMS_SIGNALLING_E), qoS_Information := mw_qoS_Information, default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5, - subsesion_Enforcement_Info := {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (ESTABLISHMENT_E))} + subsesion_Enforcement_Info := ? //AXR {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (ESTABLISHMENT_E))} } } template CCR_MSG mw_CCR_S9_Termination(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := { cCR_Body :={ cC_Request_Type := mw_cC_Request_Type(p_avpData), - subsesion_Enforcement_Info := {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (TERMINATION_E))} + subsesion_Enforcement_Info := ? //AXR {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (TERMINATION_E))} } } diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index d86d29d..0992166 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -162,11 +162,57 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); -// // Preamble -// f_mtc_userRegistration(v_ueA, v_userInfoA); -// f_mtc_userRegistration(v_ueB, v_userInfoB); -// -// // Test body + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + + // Test body + + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1 + + TP_MW_PCSCF_INVITE_02 ( Event 3) + TP_RX_PCSCF_AAR_06 (AAR – Events 4) + TP_GX_PCRF_RAR_01 (RAR – Events 5, 11, 20) + TP_GX_PGW_RAA_02 (RAA – Events 6, 12, 21) + TP_RX_PCRF_AAA_02 (AAA – Events 7, 13, 22) + TP_GM_PCSCF_INVITE_02 ( Event 8) +// f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 + TP_GM_PCSCF_180RINGING_02 ( Event 9) +// f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 + TP_RX_PCSCF_AAR_07 (AAR – Events 10) + TP_GX_PCRF_RAR_01 (RAR – Events 5, 11, 20) + TP_GX_PGW_RAA_02 (RAA – Events 6, 12, 21) + TP_RX_PCRF_AAA_02 (AAA – Events 7, 13, 22) + TP_MW_PCSCF_180RINGING_02 ( Event 14) +// f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 + TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) + TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) + TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) +// f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 +// f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 +// f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 + + TP_RX_PCSCF_AAR_08 (AAR – Events 19) + TP_GX_PCRF_RAR_01 (RAR – Events 5, 11, 20) + TP_GX_PGW_RAA_02 (RAA – Events 6, 12, 21) + TP_RX_PCRF_AAA_02 (AAA – Events 7, 13, 22) + TP_IC_IBCF_2XXRESP_01 (200 OK – Event 25) + TP_IC_IBCF_2XXRESP_02 (200 OK – Event 25) + TP_IC_IBCF_2XXRESP_03 (200 OK – Event 25) +// f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 +// f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 +// f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 + TP_MW_PCSCF_ACK_02 (Event 28) +// f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 + + TP_GM_PCSCF_ACK_02 (Event 29) +// f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 + + + + // //f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); // // f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 @@ -175,8 +221,8 @@ module AtsImsIot_TD_INI{ // f_mtc_check_TP_GM_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); // f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // -// f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 -// f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 + // f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 + // f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 // // f_mtc_userCheckRinging(v_ueA); // f_mtc_userCheckPeerIsRinging(v_ueB); @@ -185,19 +231,19 @@ module AtsImsIot_TD_INI{ // f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 18 // f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 23 // -// f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 -// f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 + // f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 + // f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 // -// f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 1 -// f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 1 -// f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 1 + // f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 1 + // f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 1 + // f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 1 // f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 26 -// f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 -// f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 -// f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 -// f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 -// f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 -// f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 + // f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 + // f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 + // f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 + // f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 + // f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 + // f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 // // f_mtc_userCheckCallEstablished(v_ueA); // Event 30 // f_mtc_userCheckCallEstablished(v_ueB); // Event 30 diff --git a/ttcn/LibIms b/ttcn/LibIms index d640fce..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e -- GitLab From a3427b0897098ea7c42d62144a29904a82945b73 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Thu, 25 Jun 2020 20:59:57 +0200 Subject: [PATCH 102/176] TC_Vx_INT_ testcases --- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 679 ++++++++++++++----- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 4 +- 2 files changed, 515 insertions(+), 168 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index abfd1bd..2aff35a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -69,8 +69,8 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - //f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 - //f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); +// f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 +// f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3 @@ -172,43 +172,43 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 1 f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1 - TP_MW_PCSCF_INVITE_02 ( Event 3) - TP_RX_PCSCF_AAR_06 (AAR – Events 4) - TP_GX_PCRF_RAR_01 (RAR – Events 5, 11, 20) - TP_GX_PGW_RAA_02 (RAA – Events 6, 12, 21) - TP_RX_PCRF_AAA_02 (AAA – Events 7, 13, 22) - TP_GM_PCSCF_INVITE_02 ( Event 8) -// f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 - TP_GM_PCSCF_180RINGING_02 ( Event 9) -// f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 - TP_RX_PCSCF_AAR_07 (AAR – Events 10) - TP_GX_PCRF_RAR_01 (RAR – Events 5, 11, 20) - TP_GX_PGW_RAA_02 (RAA – Events 6, 12, 21) - TP_RX_PCRF_AAA_02 (AAA – Events 7, 13, 22) - TP_MW_PCSCF_180RINGING_02 ( Event 14) -// f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 - TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) - TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) - TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) -// f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 -// f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 -// f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true,true); // ( Event 3) + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) + //TP_GM_PCSCF_INVITE_02 ( Event 8) + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 + //TP_GM_PCSCF_180RINGING_02 ( Event 9) + f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 + f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 10) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) + //TP_MW_PCSCF_180RINGING_02 ( Event 14) + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 + //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) + //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) + //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 - TP_RX_PCSCF_AAR_08 (AAR – Events 19) - TP_GX_PCRF_RAR_01 (RAR – Events 5, 11, 20) - TP_GX_PGW_RAA_02 (RAA – Events 6, 12, 21) - TP_RX_PCRF_AAA_02 (AAA – Events 7, 13, 22) - TP_IC_IBCF_2XXRESP_01 (200 OK – Event 25) - TP_IC_IBCF_2XXRESP_02 (200 OK – Event 25) - TP_IC_IBCF_2XXRESP_03 (200 OK – Event 25) -// f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 -// f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 -// f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 - TP_MW_PCSCF_ACK_02 (Event 28) -// f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 + f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 19) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) + //TP_IC_IBCF_2XXRESP_01 (200 OK – Event 25) + //TP_IC_IBCF_2XXRESP_02 (200 OK – Event 25) + //TP_IC_IBCF_2XXRESP_03 (200 OK – Event 25) + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 + //TP_MW_PCSCF_ACK_02 (Event 28) + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 - TP_GM_PCSCF_ACK_02 (Event 29) -// f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 + //TP_GM_PCSCF_ACK_02 (Event 29) + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 @@ -296,38 +296,49 @@ module AtsImsIot_TD_INI{ // configuration //f_cf_int_call_up(v_config); -// // Preamble -// f_PR_user_home_registration(v_ueA,v_userInfoA); -// f_PR_user_home_registration(v_ueB,v_userInfoB); -// f_mtc_userInitiateCall (v_ueA, v_userInfoB); -// f_mtc_userCheckRinging(v_ueB); -// f_mtc_userCheckPeerIsRinging(v_ueA); -// f_mtc_userAnswerCall(v_ueB); -// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 -// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 -// f_mtc_userAddNewMediaStream(v_ueA); -// -// // Test body -// f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 2 -// f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 -// -// f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 13 -// f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 8 -// -// f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 14 -// f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 15 -// -// f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 5 -// f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 6 -// + // Preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userAddNewMediaStream(v_ueA); + + // Test body + f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 2 + f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 4 + + f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 5 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic,1); // 200 OK – Event 6 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 8 + + //TP_RX_PCSCF_AAR_09 (AAR – Event 9) + //TP_GX_PCRF_RAR_01 (RAR – Event 10) + //TP_GX_PGW_RAA_02 (RAA – Event 11) + //TP_RX_PCRF_AAA_02 (AAA – Event 12) + f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); //(AAR – Event 9) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 10) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12) + + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 13 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 14 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 15 + // f_mtc_userCheckNewMediaStream(v_ueB); // f_mtc_userCheckNewMediaStream(v_ueA); -// -// // Postamble -// f_mtc_EndCall(v_ueA); -// f_PO_user_home_deregistration(v_ueA); -// f_PO_user_home_deregistration(v_ueB); -// //f_cf_int_call_down(v_config); + f_mtc_userCheckCallEstablished(v_ueA); // Event 18 + f_mtc_userCheckCallEstablished(v_ueB); // Event 18 + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -368,36 +379,48 @@ module AtsImsIot_TD_INI{ // configuration //f_cf_int_call_up(v_config); -// // Preamble -// f_PR_user_home_registration(v_ueA,v_userInfoA); -// f_PR_user_home_registration(v_ueB,v_userInfoB); -// f_mtc_userInitiateCall (v_ueA, v_userInfoB); -// f_mtc_userCheckRinging(v_ueB); -// f_mtc_userCheckPeerIsRinging(v_ueA); -// f_mtc_userAnswerCall(v_ueB); -// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 -// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 -// -// // Test body -// f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 5 -// f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 4 -// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 + // Preamble + f_PR_user_home_registration(v_ueA,v_userInfoA); + f_PR_user_home_registration(v_ueB,v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + + // Test body + f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 2 + f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 3 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 4 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // Event 5 + + //f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 + + //TP_RX_PCSCF_AAR_10 (AAR – Event 7) + //TP_GX_PCRF_RAR_01 (RAR – Event 8) + //TP_GX_PGW_RAA_02 (RAA – Event 9) + //TP_RX_PCRF_AAA_02 (AAA – Event 10) + f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Event 7) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 8) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10) + + // f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 11 -// f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 -// -// f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 16 -// -// f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 2 -// f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 13 -// +// f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 +// f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 16 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 13 + // f_mtc_userCheckNewMediaStream(v_ueA); // f_mtc_userCheckNewMediaStream(v_ueB); -// -// // Postamble -// f_mtc_EndCall(v_ueA); -// f_PO_user_home_deregistration(v_ueA); -// f_PO_user_home_deregistration(v_ueB); -// //f_cf_int_call_down(v_config); + f_mtc_userCheckCallEstablished(v_ueA); // Event 18 + f_mtc_userCheckCallEstablished(v_ueB); // Event 18 + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -438,30 +461,41 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //f_cf_int_call_up(v_config); -// // Preamble -// f_mtc_userRegistration(v_ueA, v_userInfoA); -// f_mtc_userRegistration(v_ueB, v_userInfoB); -// f_mtc_userInitiateCall (v_ueA, v_userInfoB); -// f_mtc_userCheckRinging(v_ueB); -// f_mtc_userCheckPeerIsRinging(v_ueA); -// f_mtc_userAnswerCall(v_ueB); -// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 -// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 -// -// // Test body -// //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 -// f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 2 -// f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 -// f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4 -// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 -// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 -// //f_mtc_check_TP_IMS_5107_01_ic(vc_vxlte_monitor_components.ic, false); // Event 5 -// f_mtc_userCheckCallTerminated(v_ueA); // Event 14 -// f_mtc_userCheckCallCancelled(v_ueB); // Event 15 -// -// // Postamble -// f_PO_user_home_deregistration(v_ueA); -// f_PO_user_home_deregistration(v_ueB); + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + + // Test body + //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 + f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 + + //TP_RX_PCSCF_STR_01 (STR – Event 6) + //TP_GX_PCRF_RAR_02 (RAR – Event 7) + //TP_GX_PGW_RAA_03 (RAA – Event 8) + //TP_RX_PCRF_STA_01 (STA – Event 9) + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) + + + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 + + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -500,30 +534,40 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //f_cf_int_call_up(v_config); -// // Preamble -// f_mtc_userRegistration(v_ueA, v_userInfoA); -// f_mtc_userRegistration(v_ueB, v_userInfoB); -// f_mtc_userInitiateCall (v_ueA, v_userInfoB); -// f_mtc_userCheckRinging(v_ueB); -// f_mtc_userCheckPeerIsRinging(v_ueA); -// f_mtc_userAnswerCall(v_ueB); -// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 -// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 -// -// // Test body -// //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 -// f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 2 -// f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 3 -// f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4 -// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 -// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 -// // f_mtc_check_TP_IMS_5107_01_ic(vc_vxlte_monitor_components.ic, false); // Event 5 -// //f_mtc_userCheckCallTerminated(v_ueA); // Event 14 -// //f_mtc_userCheckCallCancelled(v_ueB); // Event 15 -// -// // Postamble -// f_PO_user_home_deregistration(v_ueA); -// f_PO_user_home_deregistration(v_ueB); + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + + // Test body + //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 + f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 + + //TP_RX_PCSCF_STR_01 (STR – Event 6) + //TP_GX_PCRF_RAR_02 (RAR – Event 7) + //TP_GX_PGW_RAA_03 (RAA – Event 8) + //TP_RX_PCRF_STA_01 (STA – Event 9) + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) + + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 + + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -562,30 +606,44 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //f_cf_int_call_up(v_config); -// // Preamble -// f_mtc_userRegistration(v_ueA, v_userInfoA); -// f_mtc_userRegistration(v_ueB, v_userInfoB); -// f_mtc_userInitiateCall (v_ueB, v_userInfoA); -// f_mtc_userCheckRinging(v_ueA); -// f_mtc_userCheckPeerIsRinging(v_ueB); -// f_mtc_userAnswerCall(v_ueB); -// f_mtc_userCheckCallEstablished(v_ueB); // Event 1 -// f_mtc_userCheckCallEstablished(v_ueA); // Event 1 -// -// // Test body -// -// f_mtc_userLooseConnection(v_ueB); -// f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA); // Event 5 -// f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 -// f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4 -// // f_mtc_check_TP_IMS_5073_01_ic(vc_vxlte_monitor_components.ic); // Event 4 -// f_mtc_userCheckCallTerminated(v_ueA); // Event 14 -// f_mtc_userCheckCallCancelled(v_ueB); // Event 15 -// -// // Postamble -// f_PO_user_home_deregistration(v_ueA); -// f_PO_user_home_deregistration(v_ueB); -// //f_cf_int_call_down(v_config); + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueB, v_userInfoA); + f_mtc_userCheckRinging(v_ueA); + f_mtc_userCheckPeerIsRinging(v_ueB); + f_mtc_userAnswerCall(v_ueB); + f_mtc_userCheckCallEstablished(v_ueB); // Event 1 + f_mtc_userCheckCallEstablished(v_ueA); // Event 1 + + // Test body + + f_mtc_userLooseConnection(v_ueB); + + f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 2 + f_mtc_check_TP_MW_SCSCF_BYE_03(vc_vxlte_monitor_components.gmA/*FIXME: mwSI*/); // Event 3 + f_mtc_check_TP_MW_SCSCF_BYE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwIB*/); // Event 3 + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 4 + f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA); // Event 5 + + + //TP_RX_PCSCF_STR_01 (STR – Event 6) + //TP_GX_PCRF_RAR_02 (RAR – Event 7) + //TP_GX_PGW_RAA_03 (RAA – Event 8) + //TP_RX_PCRF_STA_01 (STA – Event 9) + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) + + + f_mtc_userCheckCallTerminated(v_ueA); // Event 14 + f_mtc_userCheckCallCancelled(v_ueB); // Event 15 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -625,6 +683,88 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_01 (Event 1) + //Gm TP_GM_PCSCF_INVITE_01 (Event 3) + TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 3) + + //Rx TP_RX_PCSCF_AAR_03 (AAR – Event 4) + //Gx TP_GX_PCRF_RAR_01 (RAR – Event 5) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 6) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 7) + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7) + + //MwPS TP_MW_PCSCF_INVITE_01 (Event 8) + //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 8) + //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) + //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 8) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 8) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 9) + + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) + //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 11) + //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 11) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 11) + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 11) + + //Rx TP_RX_PCSCF_AAR_04 (AAR – Event 14) + //Gx TP_GX_PCRF_RAR_01 (RAR – Event 15) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 16) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 17) + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Event 14) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 15) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 16) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 17) + + //Rtp TP_RTP_02 (Event 19) + f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 + //Gm TP_GM_PCSCF_CANCEL_01 (Event 20) + f_mtc_check_TP_GM_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA); // Event 20 + //Rx TP_RX_PCSCF_STR_03 (STR – Event 21) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 22) + f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 21) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 22) + + //MwPS TP_MW_PCSCF_CANCEL_01 (Event 23) + f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 23 + //MwSI TP_MW_SCSCF_CANCEL_01 (Event 24) + //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) + f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 24) + f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25) + + //Gx TP_GX_PGW_RAA_03 (RAA – Event 26) + //Rx TP_RX_PCRF_STA_01 (STA – Event 27) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 27) + + //Ic TP_IC_IBCF_CANCEL_OK_01 (OK – Event 28) + //MwPS TP_MW_PCSCF_200OK_CANCEL_01 (Event 30) + //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 31) + //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 32) + f_mtc_check_TP_IC_IBCF_CANCEL_OK_01(vc_vxlte_monitor_components.ic); // (OK – Event 28) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA); // (Event 30) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA); // (Event 31) + f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 32) + + //MwPS TP_MW_PCSCF_487INVITE_01 (Event 34) + f_mtc_check_TP_MW_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 34 + //Gm TP_GM_PCSCF_487INVITE_01 (Event 35) + f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA); // Event 35 + //Ic TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 37) + f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 37) + //Rtp TP_RTP_01 (Events 41,42) + f_mtc_userCheckCallCancelled(v_ueA); // Event 40 + f_mtc_userCheckCallEnded(v_ueB); // Event 41 + + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -661,6 +801,60 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_01 (Events 1,2) + + //Gm TP_GM_PCSCF_INVITE_01 (Event 3) + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 3) + + //Rx TP_RX_PCSCF_AAR_03 (AAR – Event 4) + //Gx TP_GX_PCRF_RAR_01 (RAR – Event 5) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 6) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 7) + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7) + + //MwPS TP_MW_PCSCF_INVITE_01 (Event 8) + //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) + //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 10) + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 8) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 10) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + + //Rtp TP_RTP_02 (Event 18) + f_mtc_userCheckPeerIsRinging(v_ueA); // Event 18 + + //Ic TP_IC_IBCF_486INVITE_01 (Event 11) + //MwSI TP_MW_SCSCF_486INVITE_01 (Event 12) + //MwPS TP_MW_PCSCF_486INVITE_01 (Event 13) + //Gm TP_GM_PCSCF_486INVITE_01 (Event 14) + f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic, false); // (Event 11) + f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 12) + f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 14) + + //Rx TP_RX_PCSCF_STR_05 (STR – Event 15) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 16) + //Gx TP_GX_PGW_RAA_03 (RAA – Event 17) + //Rx TP_RX_PCRF_STA_01 (STA – Event 18) + f_mtc_check_TP_RX_PCSCF_STR_05(vc_vxlte_monitor_components.rx); // (STR – Event 15) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18) + + //Ic TP_IC_IBCF_486INVITE_ACK_01 (Event 22) + f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.gmB, false); // (Event 22) + + //Rtp TP_RTP_01 (Events 23,24) + f_mtc_userCheckCallCancelled(v_ueA); // Event 23 + f_mtc_userCheckCallEnded(v_ueB); // Event 24 + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -700,6 +894,110 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userTriggerCancelCall(v_ueA); + + // Test body + + //Rtp TP_RTP_01 (Events 1,2) + + + //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 3) + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 3) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 3) + //MwSI TP_MW_SCSCF_INVITE_02 (Event 4) + //MwPS TP_MW_PCSCF_INVITE_02 (Event 5) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 5) + + //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 6) + //Gx TP_GX_PCRF_RAR_01 (RAR – Event 7) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 8) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 9) + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9) + + //Gm TP_GM_PCSCF_INVITE_02 (Event 10) + //Gm TP_GM_PCSCF_180RINGING_02 (Event 11) + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) + f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB); // (Event 11) + + //Rx TP_RX_PCSCF_AAR_07 (AAR – Event 12) + //Gx TP_GX_PCRF_RAR_01 (RAR – Event 13) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 14) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 15) + f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 12) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 13) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 14) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 15) + + //MwPS TP_MW_PCSCF_180RINGING _02 (Event 16) + //MwSI TP_MW_SCSCF_180RINGING _02 (Event 17) + //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 18) + //Ic TP_IC_IBCF_180RESP_02 (180 Ringing – Event 18) + //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 18) + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB); // (Event 16) + f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB); // (Event 17) + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) + f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) + + //Rtp TP_RTP_02 (Event 19) + f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 + + //Ic TP_IC_IBCF_CANCEL_02 (CANCEL – Event 20) + //MwSI TP_MW_SCSCF_CANCEL_02 (Event 21) + //MwPS TP_MW_PCSCF_CANCEL_02 (Event 22) + //Gm TP_GM_PCSCF_CANCEL_02 (Event 23) + f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 20) + f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB); // (Event 21) + f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB); // (Event 22) + f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB); // (Event 23) + + //Rx TP_RX_PCSCF_STR_04 (STR – Event 24) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 25) + //Gx TP_GX_PGW_RAA_03 (RAA – Event 26) + //Rx TP_RX_PCRF_STA_01 (STA – Event 27) + f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 24) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 25) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 27) + + //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 28) + //MwPS TP_MW_PCSCF_200OK_CANCEL_01 (Event 29) + //Ic TP_IC_IBCF_CANCEL_OK_02 (OK – Event 31) + //Gm TP_GM_PCSCF_487INVITE_02 (Event 32) + //MwPS TP_MW_PCSCF_487INVITE_02 (Event 33) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 28) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 29) + f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 31) + f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 32) + f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 33) + + //Ic TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 35) + //Ic TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 38) + f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 35) + f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 38) + + //Rtp TP_RTP_01 (Events 41,42) + f_mtc_userCheckCallCancelled(v_ueA); // Event 40 + f_mtc_userCheckCallEnded(v_ueB); // Event 41 + + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -736,6 +1034,55 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_01 (Events 1,2) + + //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 3) + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 3) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 3) + //MwSP TP_MW_PCSCF_INVITE_02 (Event 4) + //MwSI TP_MW_SCSCF_INVITE_02 (Event 4) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 4) + + //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 6) + //Gx TP_GX_PCRF_RAR_01 (RAR – Event 7) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 8) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 9) + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9) + + //Gm TP_GM_PCSCF_INVITE_02 (Event 10) + //Gm TP_GM_PCSCF_486INVITE_02 (Event 11) + //MwPS TP_MW_PCSCF_486INVITE_02 (Event 12) + //MwSI TP_MW_SCSCF_486INVITE_02 (Event 13) + //Ic TP_IC_IBCF_486INVITE_02 (486 Busy – Event 14) + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) + f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 11) + f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 12) + f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic, false); // (486 Busy – Event 14) + + //Rx TP_RX_PCSCF_STR_06 (STR – Event 15) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 16) + //Gx TP_GX_PGW_RAA_03 (RAA – Event 17) + //Rx TP_RX_PCRF_STA_01 (STA – Event 18) + f_mtc_check_TP_RX_PCSCF_STR_06(vc_vxlte_monitor_components.rx); // (STR – Event 15) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18) + + //Ic TP_IC_IBCF_486INVITE_ACK_02 (ACK – Event 19) + f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 19) + + //Rtp TP_RTP_01 (Events 23,24) + f_mtc_userCheckCallCancelled(v_ueA); // Event 23 + f_mtc_userCheckCallEnded(v_ueB); // Event 24 //unmap/disconnect component ports f_cf_user_down ( v_ueB ); diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 0f09faf..a0ff09d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -367,8 +367,8 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.start( f_imsIot_receive( { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipRequest(mw_BYE_Base), + mw_SipRequest(mw_REGISTER_Request_Base) + //AXR mw_SipRequest(mw_BYE_Base), }, {}, {0, omit}, -- GitLab From 3e61942cd26bed15ddb3ce178f03ca721eb0ee65 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Thu, 25 Jun 2020 22:56:52 +0200 Subject: [PATCH 103/176] TDs for registration and deregistration added. --- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 789 +++++++++++-------- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 317 ++++---- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 2 +- 3 files changed, 624 insertions(+), 484 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index 19b19b4..f56186a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -29,10 +29,11 @@ module AtsImsIot_TD_DRG{ import from AtsImsIot_TP_behavior_GX all; import from AtsImsIot_TP_behavior_ISC all; import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_MW_SI all; + import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; + import from AtsImsIot_TP_behavior_RX all; //import from AtsImsIot_Behavior all; // TODO To be removed group Interoperability{ group IMSDeRegistration { @@ -45,49 +46,56 @@ module AtsImsIot_TD_DRG{ testcase TC_VxLTE_INT_DRG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME})) + { f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - ////f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_07(vc_vxlte_monitor_components.gmA, false); // Events 1 + //f_mtc_check_TP_MW_PCSCF_REGISTER_07(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 + //f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS, false, true); // Event 5 + //f_mtc_check_TP_MW_SCSCF_REGISTER_07(vc_vxlte_monitor_components.mwIB, false, true); // Event 8 + + f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 6, 7 + + //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, false); // Events 10 + + f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 11 + f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 12 + f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 13, 14 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_INT_DRG_01 /** @@ -95,53 +103,58 @@ module AtsImsIot_TD_DRG{ * * @see */ - testcase TC_VxLTE_INT_DRG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + testcase TC_VxLTE_INT_DRG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VxLTE_INT_DRG_02 + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + + f_mtc_check_TP_CX_HSS_RTA_01(vc_vxlte_monitor_components.cxIH);// Event 1, 8 + + //f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 + //f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA, false); // Events 3 + //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, false); // Events 4 + //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 5 + //f_mtc_check_TP_MW_PCSCF_NOTIFY_02(vc_vxlte_monitor_components.mwPS, false, true); // Event 6, 7 + + f_mtc_check_TP_RX_PCSCF_STR_08(vc_vxlte_monitor_components.rx);// Event 9 + f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 10 + f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 11, 12 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_INT_DRG_02 /** * @desc IMS DeRegistration - expiration - no SIP session active.. @@ -151,49 +164,59 @@ module AtsImsIot_TD_DRG{ testcase TC_VxLTE_INT_DRG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME})) + { f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 1, 14 + + //f_mtc_check_TP_MW_PCSCF_REGISTER_09(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 + + f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + + //f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS, false, true); // Event 5 + + f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 6, 7 + + //f_mtc_check_TP_MW_SCSCF_REGISTER_07(vc_vxlte_monitor_components.mwSI, false, true); // Event 8 + + //f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS, false); // Events 11 + //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 12 + //f_mtc_check_TP_MW_SCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwIB, false, true); // Event 10, 13 + + f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 15, 16 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_INT_DRG_03 /** @@ -204,49 +227,61 @@ module AtsImsIot_TD_DRG{ testcase TC_VxLTE_INT_DRG_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME})) + { f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + + // test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_10(vc_vxlte_monitor_components.gmA, false); // Events 2, 9 + //f_mtc_check_TP_MW_PCSCF_REGISTER_10(vc_vxlte_monitor_components.mwPS, false, true); // Event 3, 7 + //f_mtc_check_TP_MW_SCSCF_REGISTER_10(vc_vxlte_monitor_components.mwIS, false, true); // Event 6, 7, 8 + + f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 4, 5 + f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 10, 11 + + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx);// Event 12 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // Event 13 + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // Event 14 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx);// Event 15 + + //TODO update TD and ATS with BYE check too + + f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 11 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 12 + f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 13, 14 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_INT_DRG_04 } //End of group IMSDeRegistration @@ -260,159 +295,198 @@ module AtsImsIot_TD_DRG{ * * @see */ - testcase TC_VxLTE_RMI_DRG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + testcase TC_VxLTE_RMI_DRG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VxLTE_RMI_DRG_01 + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + + // test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_08(vc_vxlte_monitor_components.gmA, false); // Events 1 + //f_mtc_check_TP_MW_PCSCF_REGISTER_08(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 + f_mtc_check_TP_IC_IBCF_REGISTER_03(vc_vxlte_monitor_components.ic, false); // Event 3 + //f_mtc_check_TP_MW_ICSCF_REGISTER_08(vc_vxlte_monitor_components.mwIS, false, true); // Event 4 + + f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 5, 6 + f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 8, 9 + + f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 15 + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 16 + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 17 + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // Event 18 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 19 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 20 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DRG_01 - /** - * @desc IMS DeRegistration - administrative - no SIP session active. - * - * @see - */ - testcase TC_VxLTE_RMI_DRG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + /** + * @desc IMS DeRegistration - administrative - no SIP session active. + * + * @see + */ + testcase TC_VxLTE_RMI_DRG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VxLTE_RMI_DRG_02 - - /** - * @desc IMS Registration - expiration - no SIP session active. - * - * @see - */ - testcase TC_VxLTE_RMI_DRG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + + f_mtc_check_TP_CX_HSS_RTA_01(vc_vxlte_monitor_components.cxIH);// Event 1, 16 + + //f_mtc_check_TP_MW_SCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 9 + f_mtc_check_TP_IC_IBCF_NOTIFY_01(vc_vxlte_monitor_components.ic, false); // Events 3, 8 + //f_mtc_check_TP_MW_PCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 4, 7 + //f_mtc_check_TP_GM_PCSCF_NOTIFY_02(vc_vxlte_monitor_components.gmA, false); // Events 5, 6 + //f_mtc_check_TP_MW_SCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwIS, false, true); // Event 10, 15 + + f_mtc_check_TP_RX_PCSCF_STR_08(vc_vxlte_monitor_components.rx);// Event 17 + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 18 + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 19 + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // Event 20 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 21 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 22 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DRG_02 + + /** + * @desc IMS Registration - expiration - no SIP session active. + * + * @see + */ + testcase TC_VxLTE_RMI_DRG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME})) + { f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VxLTE_RMI_DRG_03 + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + + // test body + f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 1 + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 2 + + //f_mtc_check_TP_MW_PCSCF_REGISTER_12(vc_vxlte_monitor_components.mwPS, false, true); // Event 3 + f_mtc_check_TP_IC_IBCF_REGISTER_04(vc_vxlte_monitor_components.ic, false); // Event 4, 13 + + f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 6, 7 + + //f_mtc_check_TP_MW_SCSCF_REGISTER_12(vc_vxlte_monitor_components.mwIS, false, true); // Event 8 + + f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 9, 10 + + //f_mtc_check_TP_MW_SCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 22 + f_mtc_check_TP_IC_IBCF_NOTIFY_01(vc_vxlte_monitor_components.ic, false); // Event 16, 21 + //f_mtc_check_TP_MW_PCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 17, 20 + //f_mtc_check_TP_GM_PCSCF_NOTIFY_02(vc_vxlte_monitor_components.gmA, false); // Events 18, 19 + + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 23 + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // Event 24 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 25 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 26 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_DRG_03 /** * @desc IMS DeRegistration - active SIP sessions. @@ -422,51 +496,70 @@ module AtsImsIot_TD_DRG{ testcase TC_VxLTE_RMI_DRG_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - + f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME})) + { f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 - - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_08(vc_vxlte_monitor_components.gmA, false); // Events 2 + //f_mtc_check_TP_MW_PCSCF_REGISTER_08(vc_vxlte_monitor_components.mwPS, false, true); // Event 3 + f_mtc_check_TP_IC_IBCF_REGISTER_03(vc_vxlte_monitor_components.ic, false); // Event 4, 28 + //f_mtc_check_TP_MW_ICSCF_REGISTER_08(vc_vxlte_monitor_components.mwIS, false, true); // Event 5 + //f_mtc_check_TP_MW_ICSCF_BYE_07(vc_vxlte_monitor_components.mwIS, false, true); // Event 9, 13 + f_mtc_check_TP_IC_IBCF_BYE_02(vc_vxlte_monitor_components.ic, false); // Event 10, 24 + + f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 6, 7 + f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 14, 15 + + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx);// Event 16 + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 17 + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 18 + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // Event 19 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 20 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 21 + + f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 31 + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 32 + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 33 + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // Event 34 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 35 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 36 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } } // End of TC TC_VxLTE_RMI_DRG_04 - } //End of group IMSDeRegistration + } //End of group IMSDeRegistration } // End of group Roaming } \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index 09b4504..611de63 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -180,6 +180,16 @@ module AtsImsIot_TD_REG{ PX_SIP_ISC_INTERFACENAME})) { f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 9 @@ -204,17 +214,6 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 29 f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 30 f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 31, 32 - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - - // test body - // postamble f_PO_user_home_deregistration ( v_ueA ); @@ -241,160 +240,208 @@ module AtsImsIot_TD_REG{ * * @see */ - testcase TC_VxLTE_RMI_REG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + testcase TC_VxLTE_RMI_REG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); + //test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA, false); // Events 1, 14 + //f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 13 + f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 + //f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, false, true); // Event 7, 10 + + f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6//may be removed because in other network + f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9//may be removed because in other network + + //f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 28 + //f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 27 + f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 26 + //f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, false, true); // Event 21, 24 + + f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 19, 20 + f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23 + + //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 29, 36 + //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 30, 35 + f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Event 31, 34 + + f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 37 + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // Event 38 + f_mtc_check_TP_S9_PCRF_AAA_01(vc_vxlte_monitor_components.s9); // Event 39 + f_mtc_check_TP_RX_PCRF_AAA_03(vc_vxlte_monitor_components.rx); // Event 40 + f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 41, 42 + + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VxLTE_RMI_REG_01 + //unmap/disconnet component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REG_01 /** * @desc IMS Registration - Unsuccessful. * * @see */ - testcase TC_VxLTE_RMI_REG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { - - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + testcase TC_VxLTE_RMI_REG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + // test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 + //f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 + //f_mtc_check_TP_IC_IBCF_REGISTER_0X(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 //Check during validation if TD and TP need to be written in TD document because Ic interface + //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 5 + + f_mtc_check_TP_CX_HSS_UAA_03(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + + f_mtc_check_TP_RX_PCSCF_AAR_02(vc_vxlte_monitor_components.rx);// Event 7 - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VxLTE_RMI_REG_02 + //unmap/disconnet component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REG_02 /** * @desc IMS Registration - 3rd party registration to AS. * * @see */ - testcase TC_VxLTE_RMI_REG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + testcase TC_VxLTE_RMI_REG_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_SIP_MW_PI_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_SH_INTERFACENAME, + PX_SIP_ISC_INTERFACENAME})) + { + f_cf_createVxLteMonitor(); - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - //f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - //f_mtc_userRegistration ( v_ueB, v_userInfoB ); + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - // TODO: test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - // f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - // f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - // f_mtc_check_TP_S6A_HSS_ULA_01 ( c_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - // f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) - // f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - // f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + // test body + + //f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA, false); // Events 1, 14 + //f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 13 + f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 + //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 7, 10 + + f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6 + f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9 + + //f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32 + //f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 31 + f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 30 + //f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, false, true); // Event 21, 28 + + f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 19, 20 + f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23 + + f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 24, 27 + f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 25, 26 + + //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 33, 40 + f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Events 35, 38 + //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 36, 37 + + f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 41 + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // Event 42 + f_mtc_check_TP_S9_PCRF_AAA_01(vc_vxlte_monitor_components.s9); // Event 43 + f_mtc_check_TP_RX_PCRF_AAA_03(vc_vxlte_monitor_components.rx); // Event 44 + f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 45, 46 - // postamble - //f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); + // postamble + f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); - //unmap/disconnet component ports - //f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VxLTE_RMI_REG_03 - + //unmap/disconnet component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VxLTE_RMI_REG_03 + } //End of group IMSRegistration } // End of group Roaming } \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index 233eecc..c2764b6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -1275,7 +1275,7 @@ group g_IBCF_SUBSCRIBE { * @remark source function f_mtc_check_TP_IMS_5044_01_ic */ function f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01( - SipInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage + SipInterfaceMonitor p_monitorCompRef/*, Response p_200OK*/, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); -- GitLab From 701ca44583357daf0f7c0753f30a22e1525f5f65 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Fri, 26 Jun 2020 16:05:34 +0200 Subject: [PATCH 104/176] TC_Vx_RMI_ testcases --- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 564 ++++++++++++++++++++++++++- ttcn/LibIms | 2 +- 2 files changed, 564 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 2aff35a..754b37e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -1125,6 +1125,77 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Gm TP_GM_PCSCF_INVITE_03 (Event 1) + f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1) + + //Rx TP_RX_PCSCF_AAR_03 (AAR – Events 2) + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Events 2) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) + + //MwPS TP_MW_PCSCF_INVITE_03 (Event 8) + //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 9) + //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9) + f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 8) + f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9) + f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9) + + //Ic TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 12) + //MwPS TP_MW_PCSCF_180RINGING_03 (Event 13) + //Rx TP_RX_PCSCF_AAR_04 (AAR – Events 14) + f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12) + f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) + + //Gm TP_GM_PCSCF_180RINGING_03 (Event 20) + //Ic TP_IC_IBCF_2XXRESP_05 (200 OK Event 23) + //MwPS TP_MW_PCSCF_200OK_03 (Event 24) + //Rx TP_RX_PCSCF_AAR_05 (AAR – Events 25) + f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB); // (Event 20) + f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 23) + f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 24) + f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) + + //Gm TP_GM_PCSCF_200OK_03 (Event 31) + //Gm TP_GM_PCSCF_ACK_03 (Event 32) + //MwPS TP_MW_PCSCF_ACK_03 (Event 33) + f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 31) + f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 32) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 33) + + //Rtp TP_RTP_06 (Event 36) + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1163,6 +1234,78 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 2) + //Ic TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 2) + //MwPS TP_MW_PCSCF_INVITE_04 (Event 3) + //Rx TP_RX_PCSCF_AAR_06 (AAR – Events 4) + f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 2) + f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 2) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 3) + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) + + //Gm TP_GM_PCSCF_INVITE_04 (Event 10) + //Gm TP_GM_PCSCF_180RINGING_04 (Event 11) + //Rx TP_RX_PCSCF_AAR_07 (AAR – Events 12) + f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 10) + f_mtc_check_TP_GM_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB); // (Event 11) + f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 12) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) + + //MwPS TP_MW_PCSCF_180RINGING_04 (Event 18) + //Ic TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 19) + f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB); // (Event 18) + f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 19) + + //Gm TP_GM_PCSCF_200OK_04 (Event 22) + //Rx TP_RX_PCSCF_AAR_08 (AAR – Events 23) + f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 22) + f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 23) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) + + //MwPS TP_MW_PCSCF_200OK_04 (Event 29) + //Ic TP_IC_IBCF_2XXRESP_06 (200 OK Event 30) + //Ic TP_IC_IBCF_ACK_01 (ACK – Event 33) + //MwPS TP_MW_PCSCF_ACK_04 (Event 34) + //Gm TP_GM_PCSCF_ACK_04 (Event 35) + f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 29) + f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 30) + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33) + f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 34) + f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 35) + + //Rtp TP_RTP_06 (Event 36) //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1204,6 +1347,41 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_06 (Event 1) + + //Gm TP_GM_PCSCF_RE_INVITE_03 (Event 2) + //MwPS TP_MW_PCSCF_RE_INVITE_03 (Event 3) + //MwSI TP_MW_SCSCF_RE_INVITE_03 (Event 4) + //Ic TP_IC_IBCF_REINVITE_01 (INVITE – Event 5) + //Ic TP_IC_IBCF_2XXRESP_04 (200 OK – Event 8) + f_mtc_check_TP_GM_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2) + f_mtc_check_TP_MW_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 3) + f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 5) + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 8) + + //Rx TP_RX_PCSCF_AAR_09 (AAR – Events 11) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 12) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 13) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 14) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 15) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 16) + f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); // (AAR – Events 11) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 12) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 13) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 14) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 15) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 16) + + //Gm TP_GM_PCSCF_200OK_03 (Event 17) + //Gm TP_GM_PCSCF_ACK_03 (Event 18) + //MwPS TP_MW_PCSCF_ACK_03 (Event 19) + f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 17) + f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 18) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 19) + + //Rtp TP_RTP_05 (Event 23) //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1242,6 +1420,46 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_06 (Event 1) + + //Ic TP_IC_IBCF_REINVITE_01 (INVITE – Event 3) + //MwSI TP_MW_SCSCF_RE_INVITE_04 (Event 4) + //MwPS TP_MW_PCSCF_RE_INVITE_04 (Event 5) + f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 3) + f_mtc_check_TP_MW_SCSCF_RE_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_MW_PCSCF_RE_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 5) + + //Gm TP_GM_PCSCF_RE_INVITE_04 (Event 6) + //Gm TP_GM_PCSCF_200OK_04 (Event 7) + f_mtc_check_TP_GM_PCSCF_RE_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 6) + f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 7) + + //Rx TP_RX_PCSCF_AAR_10 (AAR – Events 8) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 9) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 10) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 11) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 12) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 13) + f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Events 8) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 9) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 10) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 11) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 12) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 13) + + //MwPS TP_MW_PCSCF_200OK_04 (Event 14) + //Ic TP_IC_IBCF_2XXRESP_04 (200 OK – Event 16) + f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 16) + + //MwPS TP_MW_PCSCF_ACK_04 (Event 21) + //Gm TP_GM_PCSCF_ACK_04 (Event 22) + f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 21) + f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 22) + + //Rtp TP_RTP_05 (Event 23) + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1282,6 +1500,37 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + + //Rtp TP_RTP_06 (Event 1) + + //Gm TP_GM_PCSCF_BYE_04 (Event 2) + //MwPS TP_MW_PCSCF_BYE_04 (Event 3) + //Ic TP_IC_IBCF_BYE_01 (Event 4) + f_mtc_check_TP_GM_PCSCF_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 2) + f_mtc_check_TP_MW_PCSCF_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 3) + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (Event 4) + + //Rx TP_RX_PCSCF_STR_01 (STR – Event 6) + //S9 TP_S9_PCRF_STR_01 (STR – Event 7) + //S9 TP_S9_PCRF_STA_02 (STA – Event 8) + //Gx TP_GX_PCRF_RAR_04 (RAR – Event 9) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 10) + //Rx TP_RX_PCRF_STA_01 (STA – Event 11) + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 7) + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9); // (STA – Event 8) + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // (RAR – Event 9) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 10) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 11) + + //MwPS TP_MW_PCSCF_200OK_BYE_04 (Event 14) + //Gm TP_GM_PCSCF_200OK_BYE_04 (Event 15) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_GM_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 15) + + //Rtp TP_RTP_04 (Events 16) + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1320,6 +1569,35 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_06 (Event 1) + + //Gm TP_GM_PCSCF_BYE_05 (Event 2) + //MwPS TP_MW_PCSCF_BYE_05 (Event 3) + //Ic TP_IC_IBCF_BYE_01 (BYE – Event 4) + f_mtc_check_TP_GM_PCSCF_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 2) + f_mtc_check_TP_MW_PCSCF_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 3) + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (BYE – Event 4) + + //Rx TP_RX_PCSCF_STR_01 (STR – Event 6) + //S9 TP_S9_PCRF_STR_01 (STR – Event 7) + //S9 TP_S9_PCRF_STA_02 (STA – Event 8) + //Gx TP_GX_PCRF_RAR_04 (RAR – Event 9) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 10) + //Rx TP_RX_PCRF_STA_01 (STA – Event 11) + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 7) + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9); // (STA – Event 8) + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // (RAR – Event 9) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 10) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 11) + + //MwPS TP_MW_PCSCF_200OK_BYE_05 (Event 14) + //Gm TP_GM_PCSCF_200OK_BYE_05 (Event 15) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_GM_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 15) + + //Rtp TP_RTP_04 (Events 16) //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1357,6 +1635,38 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_06 (Event 1) + + //MwPS TP_MW_PCSCF_BYE_06 (Event 2) + f_mtc_check_TP_MW_PCSCF_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 2) + + //Gm TP_GM_PCSCF_BYE_06 (Event 4) + //Ic TP_IC_IBCF_BYE_01 (BYE – Event 5) + f_mtc_check_TP_GM_PCSCF_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (BYE – Event 5) + + //Rx TP_RX_PCSCF_STR_01 (STR – Event 7) + //S9 TP_S9_PCRF_STR_01 (STR – Event 8) + //S9 TP_S9_PCRF_STA_02 (STA – Event 9) + //Gx TP_GX_PCRF_RAR_04 (RAR – Event 10) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 11) + //Rx TP_RX_PCRF_STA_01 (STA – Event 12) + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 7) + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 8) + f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9); // (STA – Event 9) + f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // (RAR – Event 10) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 12) + + //Gm TP_GM_PCSCF_200OK_BYE_06 (Event 15) + //MwPS TP_MW_PCSCF_200OK_BYE_06 (Event 17) + //MwSI TP_MW_PCSCF_200OK_BYE_05 (Event 16) + f_mtc_check_TP_GM_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 15) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 17) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 16) + + //Rtp TP_RTP_04 (Events 18) //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1396,7 +1706,88 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble - + + //Rtp TP_RTP_04 (Events 1) + + //Gm TP_GM_PCSCF_INVITE_03 (Event 2) + f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2) + + //Rx TP_RX_PCSCF_AAR_03 (AAR – Event 3) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 4) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 5) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 6) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 7) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 8) + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 3) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 4) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 5) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 6) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8) + + //MwPS TP_MW_PCSCF_INVITE_03 (Event 9) + //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 10) + //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 10) + //Ic TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 13) + f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10) + f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 13) + + //Rx TP_RX_PCSCF_AAR_04 (AAR – Event 15) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 16) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 17) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 18) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 19) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 20) + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Event 15) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 16) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 17) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 18) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 19) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 20) + + //Rtp TP_RTP_05 (Event 22) + + //Gm TP_GM_PCSCF_CANCEL_03 (Event 23) + //MwPS TP_MW_PCSCF_CANCEL_03 (Event 24) + //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) + f_mtc_check_TP_GM_PCSCF_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 23) + f_mtc_check_TP_MW_PCSCF_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 24) + f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25) + + //Rx TP_RX_PCSCF_STR_04 (STR – Event 27) + //S9 TP_S9_PCRF_STR_01 (STR – Event 28) + //S9 TP_S9_PCRF_STA_01 (STA – Event 29) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 30) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 31) + //Rx TP_RX_PCRF_STA_01 (STA – Event 32) + f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 27) + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 28) + f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 29) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 30) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 31) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 32) + + //Ic TP_IC_IBCF_CANCEL_OK_03 (OK – Event 34) + //MwPS TP_MW_PCSCF_200OK_CANCEL_03 (Event 35) + //Gm TP_GM_PCSCF_200OK_CANCEL_03 (Event 36) + f_mtc_check_TP_IC_IBCF_CANCEL_OK_03(vc_vxlte_monitor_components.ic); // (OK – Event 34) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 35) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 36) + + //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 38) + //MwPS TP_MW_PCSCF_487INVITE_03 (Event 39) + //Gm TP_GM_PCSCF_487INVITE_03 (Event 40) + f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 38) + f_mtc_check_TP_MW_PCSCF_487INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 39) + f_mtc_check_TP_GM_PCSCF_487INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 40) + + //Ic TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 43) + f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 43) + + //Rtp TP_RTP_04 (Event 45) + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); @@ -1432,6 +1823,53 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_04 (Events 1) + + //Gm TP_GM_PCSCF_INVITE_03 (Event 2) + f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2) + + //Rx TP_RX_PCSCF_AAR_03 (AAR – Event 3) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 4) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 5) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 6) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 7) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 8) + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 3) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 4) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 5) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 6) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8) + + //MwPS TP_MW_PCSCF_INVITE_03 (Event 9) + //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 10) + //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 10) + //Ic TP_IC_IBCF_486INVITE_03 (Event 13) + //MwPS TP_MW_PCSCF_486INVITE_03 (Event 14) + //Gm TP_GM_PCSCF_486INVITE_03 (Event 15) + f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10) + f_mtc_check_TP_IC_IBCF_486INVITE_03(vc_vxlte_monitor_components.ic, false); // (Event 13) + f_mtc_check_TP_MW_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_GM_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 15) + + //Rx TP_RX_PCSCF_STR_06 (STR – Event 16) + //S9 TP_S9_PCRF_STR_01 (STR – Event 17) + //S9 TP_S9_PCRF_STA_01 (STA – Event 18) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 19) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 20) + //Rx TP_RX_PCRF_STA_01 (STA – Event 21) + f_mtc_check_TP_RX_PCSCF_STR_06(vc_vxlte_monitor_components.rx); // (STR – Event 16) + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 17) + f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 18) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 19) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 20) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 21) + + //Rtp TP_RTP_04 (Events 26) + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1471,6 +1909,84 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_04 (Events 1) + + //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 3) + //Ic TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 3) + //MwPS TP_MW_PCSCF_INVITE_04 (Event 4) + f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 4) + + //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 5) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 6) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 7) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 8) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 9) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 10) + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 5) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 6) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 7) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 8) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10) + + //Gm TP_GM_PCSCF_INVITE_04 (Event 11) + f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 11) + + //Rx TP_RX_PCSCF_AAR_07 (AAR – Event 13) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 14) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 15) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 16) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 17) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 18) + f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 13) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 14) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 15) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 16) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 17) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 18) + + //Ic TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 20) + f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 20) + + //Rtp TP_RTP_05 (Event 22) + + //Ic TP_IC_IBCF_CANCEL_02 (CANCEL – Event 24) + //MwPS TP_MW_PCSCF_CANCEL_04 (Event 25) + f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 24) + f_mtc_check_TP_MW_PCSCF_CANCEL_04(vc_vxlte_monitor_components.gmB); // (Event 25) + + //Gm TP_GM_PCSCF_CANCEL_04 (Event 26) + //Rx TP_RX_PCSCF_STR_03 (STR – Event 27) + //S9 TP_S9_PCRF_STR_01 (STR – Event 28) + //S9 TP_S9_PCRF_STA_01 (STA – Event 29) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 30) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 31) + //Rx TP_RX_PCRF_STA_01 (STA – Event 32) + f_mtc_check_TP_GM_PCSCF_CANCEL_04(vc_vxlte_monitor_components.gmB); // (Event 26) + f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 27) + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 28) + f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 29) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 30) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 31) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 32) + + //Ic TP_IC_IBCF_CANCEL_OK_02 (OK – Event 35) + f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 35) + + //Gm TP_GM_PCSCF_487INVITE_04 (Event 37) + //MwPS TP_MW_PCSCF_487INVITE_04 (Event 38) + //Ic TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 39) + //Ic TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 42) + f_mtc_check_TP_GM_PCSCF_487INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 37) + f_mtc_check_TP_MW_PCSCF_487INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 38) + f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 39) + f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 42) + + //Rtp TP_RTP_04 (Events 45) + //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1507,6 +2023,52 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); //TODO preambel/test body/postamble + + //Rtp TP_RTP_04 (Events 1) + + //Ic TP_IC_IBCF_INVITE_05 (INVITE – Event 3) + //Ic TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 3) + //MwPS TP_MW_PCSCF_INVITE_04 (Event 4) + f_mtc_check_TP_IC_IBCF_INVITE_05(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 4) + + //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 5) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 6) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 7) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 8) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 9) + //Rx TP_RX_PCRF_AAA_02 (AAA – Event 10) + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 5) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 6) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 7) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 8) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10) + + //Gm TP_GM_PCSCF_INVITE_04 (Event 11) + //Gm TP_GM_PCSCF_486INVITE_04 (Event 12) + //MwPS TP_MW_PCSCF_486INVITE_04 (Event 13) + //Ic TP_IC_IBCF_486INVITE_04 (Event 14) + f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 11) + f_mtc_check_TP_GM_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 12) + f_mtc_check_TP_MW_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_IC_IBCF_486INVITE_04(vc_vxlte_monitor_components.ic, false); // (Event 14) + + //Rx TP_RX_PCSCF_STR_03 (STR – Event 16) + //S9 TP_S9_PCRF_STR_01 (STR – Event 17) + //S9 TP_S9_PCRF_STA_01 (STA – Event 18) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 19) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 20) + //Rx TP_RX_PCRF_STA_01 (STA – Event 21) + f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 16) + f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 17) + f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 18) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 19) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 20) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 21) + + //Rtp TP_RTP_04 (Event 26) //unmap/disconnect component ports f_cf_user_down ( v_ueB ); diff --git a/ttcn/LibIms b/ttcn/LibIms index d640fce..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e -- GitLab From fb3affd10a7e174bd7ca4d7e665b9892d929595b Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 26 Jun 2020 17:37:42 +0200 Subject: [PATCH 105/176] Update GM & MW check functions with new API --- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 2 +- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 76 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 974 +++++++++++++++-- .../AtsImsIot_TP_behavior_MW_IS.ttcn | 111 +- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 976 ++++++++++++++++-- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 166 +-- ttcn/LibIms | 2 +- 7 files changed, 1990 insertions(+), 317 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 754b37e..116e58c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -686,7 +686,7 @@ module AtsImsIot_TD_INI{ //Rtp TP_RTP_01 (Event 1) //Gm TP_GM_PCSCF_INVITE_01 (Event 3) - TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 3) + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 3) //Rx TP_RX_PCSCF_AAR_03 (AAR – Event 4) //Gx TP_GX_PCRF_RAR_01 (RAR – Event 5) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index 7664dee..9311fcb 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -70,22 +70,22 @@ module AtsImsIot_TD_REG{ // Test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 - //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 9 + f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 10 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, true); // Event 2, 9 //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 3, 4 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 - //f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 20 - //f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 19 - //f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 18 + f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA); // Events 11, 20 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS); // Events 12, 19 + f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 18 f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 13, 14 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 - //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 - //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, true); // Events 22, 23 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA); // Events 21, 24 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, true); // Events 22, 23 f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 25 f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 26 @@ -135,9 +135,9 @@ module AtsImsIot_TD_REG{ //test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 - //f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 - //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 5 + f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 + f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, true); // Event 2, 5 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5 f_mtc_check_TP_CX_HSS_UAA_03(vc_vxlte_monitor_components.cxIH);// Event 3, 4 @@ -191,16 +191,16 @@ module AtsImsIot_TD_REG{ // test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 - //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 9 - //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 + f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 9 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 3, 4 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 - //f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 24 - //f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 23 - //f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 22 + f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 24 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 23 + f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 22 f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 13, 14 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 @@ -208,8 +208,8 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 16, 17 f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 18, 21 - //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 25, 28 - //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 26, 27 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 25, 28 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 26, 27 f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 29 f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 30 @@ -269,24 +269,24 @@ module AtsImsIot_TD_REG{ //test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA, false); // Events 1, 14 - //f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 13 - f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 - //f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, false, true); // Event 7, 10 + f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA); // Events 1, 14 + f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, true); // Event 2, 13 + f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic); // Event 3, 12 + f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10 f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6//may be removed because in other network f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9//may be removed because in other network - //f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 28 - //f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 27 + f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 28 + f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 27 f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 26 - //f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, false, true); // Event 21, 24 + f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 24 f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 19, 20 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23 - //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 29, 36 - //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 30, 35 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 29, 36 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 30, 35 f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Event 31, 34 f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 37 @@ -340,10 +340,10 @@ module AtsImsIot_TD_REG{ // test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 - //f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 + f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 + f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, true); // Event 2, 5 //f_mtc_check_TP_IC_IBCF_REGISTER_0X(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 //Check during validation if TD and TP need to be written in TD document because Ic interface - //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 5 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 5 f_mtc_check_TP_CX_HSS_UAA_03(vc_vxlte_monitor_components.cxIH);// Event 3, 4 @@ -398,18 +398,18 @@ module AtsImsIot_TD_REG{ // test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA, false); // Events 1, 14 - //f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 13 + f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA, false); // Events 1, 14 + f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, true); // Event 2, 13 f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 - //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 7, 10 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 7, 10 f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9 - //f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32 - //f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 31 + f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32 + f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 31 f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 30 - //f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, false, true); // Event 21, 28 + f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, false, true); // Event 21, 28 f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 19, 20 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23 @@ -417,9 +417,9 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 24, 27 f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 25, 26 - //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 33, 40 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 33, 40 f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Events 35, 38 - //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 36, 37 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 36, 37 f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 41 f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // Event 42 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index a0ff09d..d2ec953 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -74,11 +74,11 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_MESSAGE_01( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mdw_MESSAGE_1500c), mw_SipResponse(mw_200OK_Base) @@ -147,11 +147,11 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_REGISTER_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_401Unauthorized_Base) @@ -216,11 +216,11 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_REGISTER_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME @@ -273,18 +273,18 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_REGISTER_03( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_404NotFound_Base) }, {}, {0, omit}, - "TP_GM_PCSCF_REGISTER_02", + "TP_GM_PCSCF_REGISTER_03", false, p_checkMessage ) @@ -292,6 +292,46 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_03 + function f_mtc_check_TP_GM_PCSCF_REGISTER_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_04 + + function f_mtc_check_TP_GM_PCSCF_REGISTER_05( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_REGISTER_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_05 + } // End of group imsRegistration group imsDeRegistration { @@ -317,11 +357,11 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_REGISTER_07( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base) }, @@ -361,11 +401,11 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_REGISTER_10( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base) //AXR mw_SipRequest(mw_BYE_Base), @@ -416,11 +456,11 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_SUBSCRIBE_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -435,6 +475,26 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01 + function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_SUBSCRIBE_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_SUBSCRIBE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02 + } // End of group imsSubscribe group imsNotify { @@ -460,11 +520,11 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_NOTIFY_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_NOTIFY_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -515,16 +575,16 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, {0, omit}, - "TP_GM_PCSCF_REGISTER_01", + "TP_GM_PCSCF_INVITE_02", p_forward_to_mtc, p_checkMessage ) @@ -564,12 +624,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, {0, omit}, @@ -581,6 +641,42 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_02 + function f_mtc_check_TP_GM_PCSCF_INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_03 + + function f_mtc_check_TP_GM_PCSCF_INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_04 + /** * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg). * Initial conditions with { @@ -626,7 +722,7 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_RE_INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -637,7 +733,7 @@ module AtsImsIot_TP_behavior_GM { v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, v_skip, @@ -694,7 +790,7 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_RE_INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -705,7 +801,7 @@ module AtsImsIot_TP_behavior_GM { v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, v_skip, @@ -717,7 +813,53 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function TP_GM_PCSCF_RE_INVITE_02 + function f_mtc_check_TP_GM_PCSCF_RE_INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_RE_INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_GM_PCSCF_RE_INVITE_03 + function f_mtc_check_TP_GM_PCSCF_RE_INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_RE_INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_GM_PCSCF_RE_INVITE_04 } // End of group imsInvite @@ -746,12 +888,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_100Trying_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_100Trying_Base) }, {}, { 0, omit }, @@ -797,12 +939,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_100Trying_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_100Trying_Base) }, {}, { 0, omit }, @@ -814,6 +956,42 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_02 + function f_mtc_check_TP_GM_PCSCF_100Trying_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_100Trying_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_03 + + function f_mtc_check_TP_GM_PCSCF_100Trying_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_100Trying_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_04 + } // End of group ims100Trying group ims180Ringing { @@ -848,12 +1026,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_180RINGING_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_180Ringing_Base) }, {}, {0, omit}, @@ -906,12 +1084,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_180RINGING_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_180Ringing_Base) }, {}, {0, omit}, @@ -923,6 +1101,42 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_02 + function f_mtc_check_TP_GM_PCSCF_180RINGING_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_180RINGING_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_03 + + function f_mtc_check_TP_GM_PCSCF_180RINGING_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_GM_PCSCF_180RINGING_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_04 + } // End of group ims180Ringing group ims200Ok { @@ -957,12 +1171,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_200OK_Base) }, {}, { 0, omit }, @@ -1014,7 +1228,7 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -1025,7 +1239,7 @@ module AtsImsIot_TP_behavior_GM { v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_200OK_Base) }, {}, v_skip, @@ -1037,6 +1251,54 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_02 + function f_mtc_check_TP_GM_PCSCF_200OK_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_03 + + function f_mtc_check_TP_GM_PCSCF_200OK_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_04 + } // End of group ims200Ok group imsAck { @@ -1069,12 +1331,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_ACK_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1112,12 +1374,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_ACK_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1129,6 +1391,42 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_ACK_02 + function f_mtc_check_TP_GM_PCSCF_ACK_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_ACK_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_ACK_03 + + function f_mtc_check_TP_GM_PCSCF_ACK_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_ACK_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_ACK_04 + } // End of group imsAck group imsBye { @@ -1161,12 +1459,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_BYE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME {}, { 0, omit }, @@ -1206,12 +1504,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_BYE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, @@ -1251,12 +1549,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_BYE_03( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, @@ -1268,26 +1566,280 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_BYE_03 - } // End of group imsBye - - group imsCancel { + function f_mtc_check_TP_GM_PCSCF_BYE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_BYE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_BYE_04 - /** - * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B and and - * the UE_A entity hasAchieveInitialINVITE - * } - * - * Expected behaviour - * ensure that { - * when { - * the UE_A entity isRequestedToSend a CANCEL - * } - * then { + function f_mtc_check_TP_GM_PCSCF_BYE_05( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_BYE_05", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_BYE_05 + + function f_mtc_check_TP_GM_PCSCF_BYE_06( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_BYE_06", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_BYE_06 + + } // End of group imsBye + + group ims200OkBye { + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_01( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_200OK_BYE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_B entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_02( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_BYE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_02 + + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_BYE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_03 + + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_BYE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_04 + + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_05( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_BYE_05", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_05 + + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_06( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_BYE_06", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_06 + + } // End of group ims200OkBye + + group imsCancel { + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { * the IMS_P_CSCF_A entity receives a CANCEL containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, @@ -1300,12 +1852,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_CANCEL_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME {}, { 0, omit }, @@ -1345,12 +1897,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_CANCEL_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME {}, { 0, omit }, @@ -1362,8 +1914,196 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_02 + function f_mtc_check_TP_GM_PCSCF_CANCEL_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_03 + + function f_mtc_check_TP_GM_PCSCF_CANCEL_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_04 + } // End of group imsCancel + group ims200OkCancel { + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + { 0, omit }, + "TP_GM_PCSCF_200OK_CANCEL_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_B entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_CANCEL_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02 + + function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_CANCEL_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03 + + function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_GM_PCSCF_200OK_CANCEL_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_04 + + } // End of group ims200OkCancel + group imsBusy { /** @@ -1394,12 +2134,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_486INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, @@ -1439,16 +2179,16 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_486INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, - "TP_GM_PCSCF_486INVITE_01", + "TP_GM_PCSCF_486INVITE_02", p_forward_to_mtc, p_checkMessage ) @@ -1456,6 +2196,42 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_02 + function f_mtc_check_TP_GM_PCSCF_486INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_03 + + function f_mtc_check_TP_GM_PCSCF_486INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_04 + } // End of group imsBusy group imsRequestTermination { @@ -1488,12 +2264,12 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_487INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, @@ -1533,16 +2309,16 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_487INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, - "TP_GM_PCSCF_487INVITE_01", + "TP_GM_PCSCF_487INVITE_02", p_forward_to_mtc, p_checkMessage ) @@ -1550,6 +2326,42 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_02 + function f_mtc_check_TP_GM_PCSCF_487INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_03 + + function f_mtc_check_TP_GM_PCSCF_487INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME + {}, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_04 + } // End of group imsRequestTermination } // End of module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn index 797db3b..bf5fe31 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -32,7 +32,7 @@ module AtsImsIot_TP_behavior_MW_IS { group imsMessages { /** - * @desc Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes + * @desc Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isNotRegisteredTo the IMS_A @@ -55,11 +55,11 @@ module AtsImsIot_TP_behavior_MW_IS { * } */ function f_mtc_check_TP_MW_ICSCF_MESSAGE_01( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mdw_MESSAGE_1500c), mw_SipResponse(mw_200OK_Base) @@ -79,7 +79,7 @@ module AtsImsIot_TP_behavior_MW_IS { group imsRegistration { /** - * @desc Verify that the S-CSCF successfully processes a first registration (Successful). + * @desc Verify that the I-CSCF successfully processes a first registration (Successful). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isNotRegisteredTo the IMS_A and @@ -118,11 +118,11 @@ module AtsImsIot_TP_behavior_MW_IS { * } */ function f_mtc_check_TP_MW_ICSCF_REGISTER_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_401Unauthorized_Base) }, @@ -137,7 +137,7 @@ module AtsImsIot_TP_behavior_MW_IS { } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_01 /** - * @desc Verify that the S-CSCF successfully processes a full registration (Successful). + * @desc Verify that the I-CSCF successfully processes a full registration (Successful). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isNotRegisteredTo the IMS_A and @@ -186,11 +186,11 @@ module AtsImsIot_TP_behavior_MW_IS { * } */ function f_mtc_check_TP_MW_ICSCF_REGISTER_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME @@ -205,69 +205,72 @@ module AtsImsIot_TP_behavior_MW_IS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02 - /** - * @desc Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_I_CSCF_A entity receives a REGISTER containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_INVALID_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "" - * ;; - * from the IMS_P_CSCF_A entity - * } - * then { - * the IMS_I_CSCF_A entity sends an 404_NotFound containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_PCSCF_REGISTER_03( - in ImsInterfaceMonitor p_monitorCompRef, + function f_mtc_check_TP_MW_ICSCF_REGISTER_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_MW_ICSCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_03 + + function f_mtc_check_TP_MW_ICSCF_REGISTER_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_MW_ICSCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_04 + + function f_mtc_check_TP_MW_ICSCF_REGISTER_05( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_404NotFound_Base) }, {}, {0, omit}, - "TP_MW_PCSCF_REGISTER_03", + "TP_MW_ICSCF_REGISTER_05", false, p_checkMessage ) ); p_monitorCompRef.done; - } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_03 + } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_05 } // End of group imsRegistration group imsDeRegistration { /** - * @desc Verify that the S-CSCF successfully processes a user de-registration (no SIP session active). + * @desc Verify that the I-CSCF successfully processes a user de-registration (no SIP session active). * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and * the UE_A entity isRegisteredTo the IMS_A @@ -288,11 +291,11 @@ module AtsImsIot_TP_behavior_MW_IS { * } */ function f_mtc_check_TP_MW_ICSCF_REGISTER_07( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base) }, diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 522ac36..03bd974 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -67,11 +67,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_MESSAGE_01( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mdw_MESSAGE_1500c), mw_SipResponse(mw_200OK_Base) @@ -142,11 +142,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_REGISTER_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_401Unauthorized_Base) @@ -228,11 +228,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_REGISTER_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME @@ -299,11 +299,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_REGISTER_03( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_404NotFound_Base) @@ -318,6 +318,46 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_03 + function f_mtc_check_TP_MW_PCSCF_REGISTER_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_04 + + function f_mtc_check_TP_MW_PCSCF_REGISTER_05( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_REGISTER_Request_Base), + mw_SipResponse(mw_404NotFound_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_05 + } // End of group imsRegistration group imsDeRegistration { @@ -346,11 +386,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_REGISTER_07( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base) }, @@ -385,11 +425,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_REGISTER_09( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base) }, @@ -430,11 +470,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_REGISTER_10( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base) }, @@ -493,11 +533,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_SUBSCRIBE_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -512,6 +552,26 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01 + function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_SUBSCRIBE_Request_Base), + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02 + } // End of group imsSubscribe group imsNotify { @@ -540,11 +600,11 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_NOTIFY_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_NOTIFY_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -607,12 +667,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, {0, omit}, @@ -668,16 +728,16 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, {0, omit}, - "TP_MW_PCSCF_REGISTER_01", + "TP_MW_PCSCF_REGISTER_02", p_forward_to_mtc, p_checkMessage ) @@ -685,6 +745,42 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_02 + function f_mtc_check_TP_MW_PCSCF_INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_03 + + function f_mtc_check_TP_MW_PCSCF_INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_REGISTER_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_04 + /** * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg). * Initial conditions with { @@ -730,7 +826,7 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_RE_INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -741,7 +837,7 @@ module AtsImsIot_TP_behavior_MW_PS { v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, v_skip, @@ -798,7 +894,7 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_RE_INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -809,7 +905,7 @@ module AtsImsIot_TP_behavior_MW_PS { v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, v_skip, @@ -821,7 +917,53 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function TP_MW_PCSCF_RE_INVITE_02 + function f_mtc_check_TP_MW_PCSCF_RE_INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_RE_INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_PCSCF_RE_INVITE_03 + function f_mtc_check_TP_MW_PCSCF_RE_INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_RE_INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_PCSCF_RE_INVITE_04 } // End of group imsInvite @@ -850,12 +992,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_100Trying_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_100Trying_Base) }, {}, { 0, omit }, @@ -889,12 +1031,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_100Trying_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_100Trying_Base) }, {}, { 0, omit }, @@ -906,6 +1048,42 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_02 + function f_mtc_check_TP_MW_PCSCF_100Trying_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_100Trying_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_03 + + function f_mtc_check_TP_MW_PCSCF_100Trying_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_100Trying_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_100Trying_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_04 + } // End of group ims100Trying group ims180Ringing { @@ -944,12 +1122,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_180RINGING_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_180Ringing_Base) }, {}, {0, omit}, @@ -999,12 +1177,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_180RINGING_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_180Ringing_Base) }, {}, {0, omit}, @@ -1016,6 +1194,42 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_02 + function f_mtc_check_TP_MW_PCSCF_180RINGING_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_180RINGING_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_03 + + function f_mtc_check_TP_MW_PCSCF_180RINGING_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_180Ringing_Base) }, + {}, + {0, omit}, + "TP_MW_PCSCF_180RINGING_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_04 + } // End of group ims180Ringing group ims200Ok { @@ -1060,12 +1274,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_200OK_Base) }, {}, { 0, omit }, @@ -1117,7 +1331,7 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -1128,7 +1342,7 @@ module AtsImsIot_TP_behavior_MW_PS { v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_200OK_Base) }, {}, v_skip, @@ -1140,6 +1354,54 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_02 + function f_mtc_check_TP_MW_PCSCF_200OK_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_03 + + function f_mtc_check_TP_MW_PCSCF_200OK_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_04 + } // End of group ims200Ok group imsAck { @@ -1178,12 +1440,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_ACK_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1229,12 +1491,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_ACK_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1246,6 +1508,42 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_ACK_02 + function f_mtc_check_TP_MW_PCSCF_ACK_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_ACK_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_ACK_03 + + function f_mtc_check_TP_MW_PCSCF_ACK_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_ACK_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_ACK_04 + } // End of group imsAck group imsBye { @@ -1285,12 +1583,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_BYE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME {}, { 0, omit }, @@ -1337,12 +1635,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_BYE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, @@ -1389,12 +1687,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_BYE_03( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, @@ -1406,25 +1704,279 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_BYE_03 - } // End of group imsBye - - group imsCancel { + function f_mtc_check_TP_MW_PCSCF_BYE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_BYE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_BYE_04 - /** - * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B and and - * the UE_A entity hasAchieveInitialINVITE and - * the UE_A entity isRequestedToSend a CANCEL - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_P_CSCF_A entity receives a CANCEL containing + function f_mtc_check_TP_MW_PCSCF_BYE_05( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_BYE_05", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_BYE_05 + + function f_mtc_check_TP_MW_PCSCF_BYE_06( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_BYE_Request_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_BYE_05", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_BYE_06 + + } // End of group imsBye + + group ims200OkBye { + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_01( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_200OK_BYE_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_B entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_02( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_BYE_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_02 + + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_BYE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_03 + + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_BYE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_04 + + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_05( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_BYE_05", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_05 + + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_06( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_BYE_06", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_06 + + } // End of group ims200OkBye + + group imsCancel { + + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and and + * the UE_A entity hasAchieveInitialINVITE and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a CANCEL containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_B_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -1446,12 +1998,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_CANCEL_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1499,12 +2051,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_CANCEL_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1516,7 +2068,195 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_02 - } + function f_mtc_check_TP_MW_PCSCF_CANCEL_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_03 + + function f_mtc_check_TP_MW_PCSCF_CANCEL_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_04 + + } // End of group imsCancel + + group ims200OkCancel { + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + { 0, omit }, + "TP_MW_PCSCF_200OK_CANCEL_01", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01 + + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_B entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_B entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the UE_B entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02( + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_CANCEL_02", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02 + + function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_CANCEL_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03 + + function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_04( // FIXME RMI To be reviewed + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK_Base) }, + {}, + v_skip, + "TP_MW_PCSCF_200OK_CANCEL_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_04 + + } // End of group ims200OkCancel group imsBusy { @@ -1555,12 +2295,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_486INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, @@ -1607,16 +2347,16 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_486INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, - "TP_MW_PCSCF_486INVITE_01", + "TP_MW_PCSCF_486INVITE_02", p_forward_to_mtc, p_checkMessage ) @@ -1624,6 +2364,42 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_02 + function f_mtc_check_TP_MW_PCSCF_486INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_03 + + function f_mtc_check_TP_MW_PCSCF_486INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_04 + } // End of group imsBusy group imsRequestTermination { @@ -1663,12 +2439,12 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_487INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, @@ -1715,16 +2491,16 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_487INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, - "TP_MW_PCSCF_487INVITE_01", + "TP_MW_PCSCF_487INVITE_02", p_forward_to_mtc, p_checkMessage ) @@ -1732,6 +2508,42 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_02 + function f_mtc_check_TP_MW_PCSCF_487INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_03 + + function f_mtc_check_TP_MW_PCSCF_487INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME + {}, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_04 + } // End of group imsRequestTermination } // End of module AtsImsIot_TP_behavior_MW_PS diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index 872bf63..18321d4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -55,11 +55,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_MESSAGE_01( - ImsInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mdw_MESSAGE_1500c), mw_SipResponse(mw_200OK_Base) @@ -118,11 +118,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_REGISTER_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_401Unauthorized_Base) }, @@ -186,11 +186,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_REGISTER_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME @@ -231,11 +231,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_REGISTER_07( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_200OK_Base) @@ -279,11 +279,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_REGISTER_10( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_200OK_Base) @@ -298,7 +298,7 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_REGISTER_Request_Base), mw_SipResponse(mw_200OK_Base) @@ -348,11 +348,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_SUBSCRIBE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_SUBSCRIBE_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -398,11 +398,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_NOTIFY_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_NOTIFY_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -417,7 +417,7 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.done; p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_NOTIFY_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -457,11 +457,11 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_NOTIFY_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_NOTIFY_Request_Base), mw_SipResponse (mw_200OK_Base) @@ -524,12 +524,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, {0, omit}, @@ -585,12 +585,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, {0, omit}, @@ -647,7 +647,7 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_RE_INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -658,7 +658,7 @@ module AtsImsIot_TP_behavior_MW_SI { v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, v_skip, @@ -715,7 +715,7 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_RE_INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -726,7 +726,7 @@ module AtsImsIot_TP_behavior_MW_SI { v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, {}, v_skip, @@ -738,7 +738,53 @@ module AtsImsIot_TP_behavior_MW_SI { p_monitorCompRef.done; } // End of function TP_MW_SCSCF_RE_INVITE_02 + function f_mtc_check_TP_MW_SCSCF_RE_INVITE_03( // FIXME RMI case, to be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_SCSCF_RE_INVITE_03", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_SCSCF_RE_INVITE_03 + function f_mtc_check_TP_MW_SCSCF_RE_INVITE_04( // FIXME RMI case, to be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true, + in boolean p_forward_to_mtc := false, + in integer p_skipCount := 1 + ) runs on ImsTestCoordinator { + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_INVITE_Request_Base) }, + {}, + v_skip, + "TP_MW_SCSCF_RE_INVITE_04", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function TP_MW_SCSCF_RE_INVITE_04 } // End of group imsInvite @@ -767,12 +813,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_100Trying_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_100Trying_Base) }, {}, { 0, omit }, @@ -806,12 +852,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_100Trying_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_100Trying_Base) }, {}, { 0, omit }, @@ -861,12 +907,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_180RINGING_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_180Ringing_Base) }, {}, {0, omit}, @@ -916,12 +962,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_180RINGING_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_180Ringing_Base) }, {}, {0, omit}, @@ -977,12 +1023,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_200OK_01( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_200OK_Base) }, {}, { 0, omit }, @@ -1034,7 +1080,7 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_200OK_02( - ImsInterfaceMonitor p_monitorCompRef, + SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false, in integer p_skipCount := 1 @@ -1045,7 +1091,7 @@ module AtsImsIot_TP_behavior_MW_SI { v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; } p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipResponse(mw_200OK_Base) }, {}, v_skip, @@ -1095,12 +1141,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_ACK_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1146,12 +1192,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_ACK_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1202,12 +1248,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_BYE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME {}, { 0, omit }, @@ -1254,12 +1300,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_BYE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, @@ -1307,12 +1353,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_BYE_03( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_BYE_Request_Base) }, {}, { 0, omit }, @@ -1364,12 +1410,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_CANCEL_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1417,12 +1463,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_CANCEL_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME {}, { 0, omit }, @@ -1473,12 +1519,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_486INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, @@ -1525,12 +1571,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_486INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME {}, { 0, omit }, @@ -1581,12 +1627,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_487INVITE_01( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, @@ -1633,12 +1679,12 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_487INVITE_02( - in ImsInterfaceMonitor p_monitorCompRef, + in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { p_monitorCompRef.start( - f_imsIot_receive( + f_Iot_Sip_receive( { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME {}, { 0, omit }, diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..d640fce 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 -- GitLab From 5a66c30d154195d1dc04be7094c92745a938b80b Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 26 Jun 2020 17:42:48 +0200 Subject: [PATCH 106/176] Update GM & MW check functions with new API --- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 54 ++++++++++++++-------------- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 10 +++--- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 116e58c..b2e4a08 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -77,7 +77,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 - //f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 6 + //f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 6 f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 @@ -87,7 +87,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9 f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 9 - //f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mw/*FIXME: mwPS*/, true, true); // Event 11 + //f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mw, true, true); // Event 11 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 @@ -104,7 +104,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 18 - //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 20 + //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 20 f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 21 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 22 @@ -114,7 +114,7 @@ module AtsImsIot_TD_INI{ //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 //f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 26 - //f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/, true, true); // Event 27 + //f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 27 //f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // ACK – Event 29 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 @@ -172,7 +172,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 1 f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1 - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true,true); // ( Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true,true); // ( Event 3) f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) @@ -186,7 +186,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) //TP_MW_PCSCF_180RINGING_02 ( Event 14) - f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 14 //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) @@ -205,7 +205,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 //TP_MW_PCSCF_ACK_02 (Event 28) - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 28 //TP_GM_PCSCF_ACK_02 (Event 29) f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 @@ -216,23 +216,23 @@ module AtsImsIot_TD_INI{ // //f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); // // f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 -// f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 3 +// f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 3 // // f_mtc_check_TP_GM_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); -// f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); +// f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); // // f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 - // f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 14 + // f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 14 // // f_mtc_userCheckRinging(v_ueA); // f_mtc_userCheckPeerIsRinging(v_ueB); // f_mtc_userAnswerCall(v_ueA); // // f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 18 -// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true); // Event 23 +// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 23 // // f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 - // f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/, true, true); // Event 28 + // f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 28 // // f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 1 // f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 1 @@ -309,12 +309,12 @@ module AtsImsIot_TD_INI{ // Test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 - f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 4 + f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 3 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 4 f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 5 f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic,1); // 200 OK – Event 6 - f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 8 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 8 //TP_RX_PCSCF_AAR_09 (AAR – Event 9) //TP_GX_PCRF_RAR_01 (RAR – Event 10) @@ -327,7 +327,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 13 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 14 - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 15 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 15 // f_mtc_userCheckNewMediaStream(v_ueB); // f_mtc_userCheckNewMediaStream(v_ueA); @@ -392,7 +392,7 @@ module AtsImsIot_TD_INI{ // Test body f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 2 f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 3 - f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 4 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 4 f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // Event 5 //f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 @@ -407,9 +407,9 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10) -// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 11 -// f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 -// f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 16 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 11 + f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 + f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 16 f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 13 // f_mtc_userCheckNewMediaStream(v_ueA); @@ -474,7 +474,7 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 //TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -487,7 +487,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 12 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 f_mtc_userCheckCallTerminated(v_ueA); // Event 14 @@ -547,7 +547,7 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB/*FIXME: mwPS*/); // Event 3 + f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 //TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -559,7 +559,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 12 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 12 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 f_mtc_userCheckCallTerminated(v_ueA); // Event 14 @@ -620,7 +620,7 @@ module AtsImsIot_TD_INI{ f_mtc_userLooseConnection(v_ueB); - f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA); // Event 2 f_mtc_check_TP_MW_SCSCF_BYE_03(vc_vxlte_monitor_components.gmA/*FIXME: mwSI*/); // Event 3 f_mtc_check_TP_MW_SCSCF_BYE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwIB*/); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 4 @@ -734,7 +734,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 22) //MwPS TP_MW_PCSCF_CANCEL_01 (Event 23) - f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 23 + f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA); // Event 23 //MwSI TP_MW_SCSCF_CANCEL_01 (Event 24) //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 24) @@ -755,7 +755,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 32) //MwPS TP_MW_PCSCF_487INVITE_01 (Event 34) - f_mtc_check_TP_MW_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwPS*/); // Event 34 + f_mtc_check_TP_MW_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA); // Event 34 //Gm TP_GM_PCSCF_487INVITE_01 (Event 35) f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA); // Event 35 //Ic TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 37) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index 9311fcb..eabb8b7 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -192,8 +192,8 @@ module AtsImsIot_TD_REG{ // test body f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 - f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 9 - f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, true); // Event 2, 9 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 3, 4 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 @@ -343,7 +343,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, true); // Event 2, 5 //f_mtc_check_TP_IC_IBCF_REGISTER_0X(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 //Check during validation if TD and TP need to be written in TD document because Ic interface - f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 5 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5 f_mtc_check_TP_CX_HSS_UAA_03(vc_vxlte_monitor_components.cxIH);// Event 3, 4 @@ -401,7 +401,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA, false); // Events 1, 14 f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, true); // Event 2, 13 f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 - f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 7, 10 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10 f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9 @@ -409,7 +409,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32 f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 31 f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 30 - f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, false, true); // Event 21, 28 + f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 28 f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 19, 20 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23 -- GitLab From 0150dfa412d6025a4e1520620387c90da39a3eab Mon Sep 17 00:00:00 2001 From: Rennoch Date: Fri, 26 Jun 2020 18:13:24 +0200 Subject: [PATCH 107/176] addition of missing TPs at Ic --- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 8 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 137 +++++++++++++++++-- ttcn/LibIms | 2 +- 3 files changed, 131 insertions(+), 16 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index b2e4a08..48c5746 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -410,7 +410,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 11 f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 16 - f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 13 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // 200 OK – Event 13 // f_mtc_userCheckNewMediaStream(v_ueA); // f_mtc_userCheckNewMediaStream(v_ueB); @@ -1147,7 +1147,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9) f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 8) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9) - f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9) + f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9) //Ic TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 12) //MwPS TP_MW_PCSCF_180RINGING_03 (Event 13) @@ -1731,7 +1731,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 13) f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 9) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) - f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10) + f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 10) f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 13) //Rx TP_RX_PCSCF_AAR_04 (AAR – Event 15) @@ -1850,7 +1850,7 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_486INVITE_03 (Event 15) f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 9) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) - f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10) + f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 10) f_mtc_check_TP_IC_IBCF_486INVITE_03(vc_vxlte_monitor_components.ic, false); // (Event 13) f_mtc_check_TP_MW_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 14) f_mtc_check_TP_GM_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 15) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index c2764b6..c94cc44 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -305,17 +305,17 @@ group g_IBCF_100TRY { v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; } -// p_monitorCompRef.start( -// f_Iot_Sip_receive( -// {mw_SipRequest(mw_INVITE_Request_Base)}, -// {}, -// v_skip, -// "TP_IC_IBCF_100TRY_01", -// false, -// p_checkMessage -// ) -// ); -// p_monitorCompRef.done; + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; p_monitorCompRef.start( f_Iot_Sip_receive( @@ -331,6 +331,49 @@ group g_IBCF_100TRY { } + /** + * @desc Starts monitor component behavior for TP_IMS_5070_02 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5070_01_ic + */ + function f_mtc_check_TP_IC_IBCF_100TRY_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_02", + false, + false + ) + ); + p_monitorCompRef.done; + + } + } // end group g_IBCF_100TRY group g_IBCF_180RESP { @@ -1045,6 +1088,78 @@ group g_IBCF_486INVITE { p_monitorCompRef.done; } + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_03( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_04( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // end group g_IBCF_486INVITE group g_IBCF_487INVITE { diff --git a/ttcn/LibIms b/ttcn/LibIms index d640fce..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e -- GitLab From 7d8b5c2371bdd98e589a6a13f81ea5fe0ed37fa3 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Sun, 28 Jun 2020 22:35:03 +0200 Subject: [PATCH 108/176] Removal of old modules from previous STFs. --- ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn | 5944 ----------------- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 4 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 30 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn | 29 +- ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn | 175 - ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn | 2693 -------- ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn | 70 - ttcn/AtsImsIot/AtsImsIot_TestCases_EPC.ttcn | 1345 ---- ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn | 386 -- ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn | 5116 -------------- ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn | 456 -- ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn | 793 --- ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn | 47 +- ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn | 505 -- ttcn/AtsImsIot/DiameterGx_Templates.ttcn | 2081 ------ ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn | 248 - ttcn/AtsImsIot/DiameterS6a_Templates.ttcn | 4788 ------------- .../AtsImsIot/DiameterS6a_TypesAndValues.ttcn | 352 - ttcn/LibIms | 2 +- 19 files changed, 50 insertions(+), 25014 deletions(-) delete mode 100644 ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_EPC.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn delete mode 100644 ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn delete mode 100644 ttcn/AtsImsIot/DiameterGx_Templates.ttcn delete mode 100644 ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn delete mode 100644 ttcn/AtsImsIot/DiameterS6a_Templates.ttcn delete mode 100644 ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn b/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn deleted file mode 100644 index d7cc26c..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +++ /dev/null @@ -1,5944 +0,0 @@ -/** - * @author STF 370 - * @version $Id: $ - * @desc This module provides common functions which describes behavior for each TP reference. - */ -module AtsImsIot_Behavior { - - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - import from LibSip_Common all; - import from LibSip_SDPTypes all; - // LibIot - import from LibIot_PIXITS all; - import from LibIot_TestInterface all; - import from LibIms_UpperTester all; - import from LibIot_TypesAndValues all; - import from LibIot_Functions all; - import from LibIot_PIXITS all; - // LibMsrp - import from LibMsrp_TypesAndValues all; - import from LibMsrp_Functions all; - import from LibMsrp_Templates all; - // LibDiameter - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; - // AtsImsIot - import from AtsImsIot_TypesAndValues all; - import from AtsImsIot_Templates all; - import from AtsImsIot_TP_behavior_GM all; - import from AtsImsIot_Functions all; - import from AtsImsIot_TestSystem all; - - group checks { - - group checksTC_IMS_MESS_0001{ - - function f_mtc_check_TP_IMS_4002_01_ic(ImsInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_MESSAGE_1500c)}, // FIXME CallId and more can be checked - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IMS_4002_01_ic", - false, - false - ) - ); - p_monitorCompRef.done; - } -} // group - - group checksTC_IMS_REG_0001_AKA { - /** - * @desc Starts monitor component behavior for TP_IMS_5011_01 - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5011_01_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_01_gm)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5011_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5011_01 - * on the Mw-interface - * @param p_monitorCompRef Reference to monitor component - */ - - function f_mtc_check_TP_IMS_5011_01_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_01p_ic(v_EUT_A_Addr))}, - { - mw_SipRequest(mdw_TP_IMS_5011_01f_ic), - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {0, omit}, - "TP_IMS_5011_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_01 (gm) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_01_gm_when ( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5089_01_gm_when", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5011_02 (gm) - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5011_02_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5011_02_gm", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5011_02 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5011_02_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_02p_ic(v_EUT_A_Addr))}, - {mw_SipRequest(mdw_TP_IMS_5011_02f_ic), - mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5011_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_01 (when) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5089_01_ic_when)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5089_01 (when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_01 (then) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_01_ic_then( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5089_01_ic)}, - {mw_SipResponse (mw_401Unauthorized_Base)}, - {0, omit}, - "TP_IMS_5089_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5092_01 (gm) - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5092_01_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5092_01_gm", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5092_01 (when) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5092_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5092_01_ic_when)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5092_01 (when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5092_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5092_01_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5092_01_ic(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5092_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5044_01 (when) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5044_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator return Response { - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var SipMessage v_sip := {response := valueof(m_Response_Dummy)}; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5044_01 (when)", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - return v_sip.response; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5044_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5044_01_ic( - ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); - var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var charstring v_Epires200OK; - var charstring v_EpiresSubscribe; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5044_01_ic(?, v_eutAUri, v_UEB_PublicId))}, - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {0, omit}, - "TP_IMS_5044_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Check that the expires header is set to "a value greater than the one - // in the Expires_header of the 200_response" - - if(ispresent(p_200OK.msgHeader.expires)) { - v_Epires200OK := p_200OK.msgHeader.expires.deltaSec; - v_EpiresSubscribe := v_sip.request.msgHeader.expires.deltaSec; - if (str2int(v_EpiresSubscribe) > str2int(v_Epires200OK)) { - f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response."); - } - } - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5096_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5096_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator return Request { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5096_01_ic_when)}, - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {0, omit}, - "TP_IMS_5096_01 (when)", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - return v_sip.request; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5096_01 - */ - function f_mtc_check_TP_IMS_5096_01_ic( - ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe, boolean p_checkMessage - ) runs on ImsTestCoordinator - { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var charstring v_Epires200OK; - var charstring v_EpiresSubscribe; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base), mw_SipResponse(mw_202Accepted_Base)}, - {}, - {0, omit}, - "TP_IMS_5096_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - if(ispresent(v_sip.response.msgHeader.expires)) { - // Check that the message contains "Expires_header indicating the same or - // lower expiry time than specified in the initial SUBSCRIBE" - v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec; - v_EpiresSubscribe := p_Subscribe.msgHeader.expires.deltaSec; - if (str2int(v_Epires200OK) <= str2int(v_EpiresSubscribe)) { - f_setIotVerdictFAIL("TP_IMS_5096_01 - - Expires_header Expires_header of 200_response is NOT the same or lower than the Expires_header of subscribe."); - } - } - } - - } // group - - group checksTC_IMS_REG_0001_MD5 { - /** - * @desc Starts monitor component behavior for TP_IMS_5011_03 - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5011_03_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5011_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5011_03 - * on the Mw-interface - * @param p_monitorCompRef Reference to monitor component - */ - - function f_mtc_check_TP_IMS_5011_03_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_03p_ic(v_EUT_A_Addr))}, - { - mw_SipRequest(mdw_TP_IMS_5011_01f_ic),//mdw_TP_IMS_5011_03f_ic == mdw_TP_IMS_5011_01f_ic - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {0, omit}, - "TP_IMS_5011_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_02 (gm) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_02_gm_when ( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5089_02_gm_when", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5011_04 (gm) - * the on Gm-interface - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5011_04_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5011_04_gm", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5011_04 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5011_04_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5011_04p_ic(v_EUT_A_Addr))}, - {mw_SipRequest(mdw_TP_IMS_5011_02f_ic),//mdw_TP_IMS_5011_04f_ic == mdw_TP_IMS_5011_02f_ic - mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5011_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_02 (when) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_02_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5089_02_ic_when)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IMS_5089_02 (when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5089_02 (then) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5089_02_ic_then( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5089_02_ic)}, - {mw_SipResponse (mw_401Unauthorized_Base)}, - {0, omit}, - "TP_IMS_5089_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - } // group - -group checksTC_IMS_REG_0002{ - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5203_01_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator return Request { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - - //Get first Register - //var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A); - var Request v_RegisterStep4, v_RegisterStep2; - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5203_01 first register", - true, - false - ) - ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - v_RegisterStep2 := v_sip.request; - - //Get second Register - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5203_01 second register", - true, - false - ) - ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - - // TODO: Currently we don't check anything, just that IMS-A sent 2 consecutive Registers - v_RegisterStep4 := v_sip.request; - return v_RegisterStep4; - } - -} // group - - group checksTC_IMS_REG_0003{ - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5129_01_gm( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - // Check that the UE sends any register - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5129_01 (gm)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5129_01_ic_when( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - // Check that the IMS_A forwards register from UE_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5129_01 (mw-when)", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5129_01_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - p_monitorCompRef.start( - // Check that IMS_B responds with 403 forbidden - f_imsIot_receive( - {mw_SipResponse(mw_403Forbidden_Base)}, - {}, - {0, omit}, - "TP_IMS_5129_01 (mw)", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // group - - group checksTC_IMS_REG_0005{ - /** - * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5093_01_UE_ic( - ImsInterfaceMonitor p_monitorCompRef, ImsUserInfo v_anyValidUser, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Number(v_anyValidUser.publicId); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5093_01_UE_ic(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5093_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5093_01_IMS_ic( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5093_01_IMS_ic(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5093_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // end group - - group checksTC_IMS_REG_0006{ - - /** - * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5094_01_UE( - ImsInterfaceMonitor p_monitorCompRef, ImsUserInfo v_anyValidUser, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Number(v_anyValidUser.publicId); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5094_01_UE(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5094_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5094_01_IMS( - ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5094_01_IMS_ic(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IMS_5094_01_ic", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - } // end group - -group checksTC_IMS_CALL_0001 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_01_ic((mw_SipUrl_Host(v_EUT_A_Addr), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))) ))}, - {}, - {0, omit}, - "TP_IMS_5097_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5097_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_02_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_04 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_04_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_TEL_URI_Base))},//TODO check TEL_URI of UE_B - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_04 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_04_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - /** - * @desc Starts monitor component behavior for TP_IMS_ENUM_01 - * @param p_gm Reference to Gm monitor component - * @param p_naptr Reference to NAPTR monitor component - */ - function f_mtc_check_TP_IMS_ENUM_01 ( ImsInterfaceMonitor p_gm, ImsInterfaceMonitor p_naptr) - runs on ImsTestCoordinator { - var EnumQuery v_enumQuery; - var EnumResponse v_enumResponse; - f_mtc_check_TP_IMS_ENUM_01_gm ( p_gm, false ); // SIP INVITE - v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( p_naptr ); // ENUM query - //TODO check ENUM query message as described in the spec. - v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( p_naptr ); // ENUM response - //TODO check ENUM response message as described in the spec. - } - function f_mtc_check_TP_IMS_ENUM_01_gm ( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) - runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_imsIot_receive ( - { mw_SipRequest ( mdw_TP_IMS_5097_04_gm ( mw_TEL_URI_Base )) }, - { }, { 0, omit }, "TP_IMS_ENUM_01", false, p_checkMessage - ) - ); - p_monitorCompRef.done; - } - function f_mtc_check_TP_IMS_ENUM_01_enumQuery ( ImsInterfaceMonitor p_monitorCompRef ) - runs on ImsTestCoordinator return EnumQuery { - var NAPTRmessage v_naptr; - var SipMessage v_sip; - p_monitorCompRef.start ( - f_getNaptrMsg ( p_monitorCompRef, { query := ? }) - ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor ( p_monitorCompRef, v_sip ); - v_naptr := v_sip.naptrmessage; - return v_naptr.enumMessage.query; - } - function f_mtc_check_TP_IMS_ENUM_01_enumResponse ( ImsInterfaceMonitor p_monitorCompRef ) - runs on ImsTestCoordinator return EnumResponse { - var NAPTRmessage v_naptr; - var SipMessage v_sip; - p_monitorCompRef.start ( - f_getNaptrMsg ( p_monitorCompRef, { response := ? } ) - ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor ( p_monitorCompRef, v_sip ); - v_naptr := v_sip.naptrmessage; - return v_naptr.enumMessage.response; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_ACK_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5107_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5107_02_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, - {}, - {0, omit}, - "TP_IMS_5107_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5107_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, - {}, - {0, omit}, - "TP_IMS_5107_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5115_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_01_ic)}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5115_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5115_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_02_ic)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5115_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5115_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_03_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5115_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_04_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5115_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_04_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_04_ic(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5115_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5131_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5131_01_ic)}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5131_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5131_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5131_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5131_02_ic)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5131_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0001F { - -/*functions already used in test TC_IMS_CALL_0001 - * f_mtc_check_TP_GM_PCSCF_INVITE_01 - * f_mtc_check_TP_IMS_5097_01_ic - * f_mtc_check_TP_IMS_5107_01_gm - * f_mtc_check_TP_IMS_5107_01_ic - * f_mtc_check_TP_IMS_5107_02_gm - * f_mtc_check_TP_IMS_5107_02_ic - * f_mtc_check_TP_IMS_5115_01_gm - * f_mtc_check_TP_IMS_5115_01_ic - * f_mtc_check_TP_IMS_5115_02_gm - * f_mtc_check_TP_IMS_5115_02_ic - * f_mtc_check_TP_IMS_5131_01_gm - * f_mtc_check_TP_IMS_5131_01_ic - * f_mtc_check_TP_IMS_5131_02_gm - * f_mtc_check_TP_IMS_5131_02_ic - * -*/ -} // group - -group checksTC_IMS_CALL_0002 { - -/*functions already used in test TC_IMS_CALL_0001 - * f_mtc_check_TP_GM_PCSCF_INVITE_01 - * f_mtc_check_TP_IMS_5097_01_ic - * f_mtc_check_TP_IMS_5097_02_gm - * f_mtc_check_TP_IMS_5097_02_ic - * f_mtc_check_TP_IMS_5107_01_gm - * f_mtc_check_TP_IMS_5107_01_ic - * f_mtc_check_TP_IMS_5107_02_gm - * f_mtc_check_TP_IMS_5107_02_ic - * f_mtc_check_TP_IMS_5115_01_gm - * f_mtc_check_TP_IMS_5115_01_ic - * f_mtc_check_TP_IMS_5115_02_gm - * f_mtc_check_TP_IMS_5115_02_ic - * f_mtc_check_TP_IMS_5115_03_gm - * f_mtc_check_TP_IMS_5115_03_ic - * f_mtc_check_TP_IMS_5115_04_gm - * f_mtc_check_TP_IMS_5115_04_ic - * f_mtc_check_TP_IMS_5131_01_gm - * f_mtc_check_TP_IMS_5131_01_ic - * f_mtc_check_TP_IMS_5131_02_gm - * f_mtc_check_TP_IMS_5131_02_ic - * -*/ -} // group - -group checksTC_IMS_CALL_0003 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_05_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_05_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_404NotFound_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_05", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0004 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5132_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5132_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5132_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5132_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_404Or604NotFound_Base)}, - {}, - {0, omit}, - "TP_IMS_5132_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0005 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5133_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5133_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5133_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5133_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_4XX_Base)}, - {}, - {0, omit}, - "TP_IMS_5133_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0006 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5109_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5109_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5109_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5109_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_408Or5XX_Base)}, - {}, - {0, omit}, - "TP_IMS_5109_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0007 { - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5055_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_A); - var template SipUrl v_UserEutAUrl := mw_SipUrl_Host(v_user.domain); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5055_01_ic(v_pcscfEutAUrl, v_UserEutAUrl))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5055_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5055_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5055_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_A); - var template SipUrl v_UserEutAUrl := mw_SipUrl_Host(v_user.domain); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5055_02_ic(v_pcscfEutAUrl, v_UserEutAUrl))}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5055_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5067_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5067_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5067_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5067_01_ic)}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5067_01", - true, //NOTE: later check in 5108_01 of same icid value - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5070_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5070_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5070_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - v_skip, - "TP_IMS_5070_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var SemicolonParam_List p_paramList; - var GenericParam p_param; - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - - - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); //NOTE: icid value from 5067_01 -log("### f_mtc_check_TP_IMS_5108_01_ic: v_sip=", v_sip.request.msgHeader.pChargingVector); - if(ispresent(v_sip.request.msgHeader.pChargingVector)) { - if(ispresent(v_sip.request.msgHeader.pChargingVector.chargeParams)) { -log("### f_mtc_check_TP_IMS_5108_01_ic: then"); - p_paramList := v_sip.request.msgHeader.pChargingVector.chargeParams; -log("### f_mtc_check_TP_IMS_5108_01_ic: p_paramList=", p_paramList); - for(var integer i := 0; i < lengthof(p_paramList); i:= i+1) { - if(p_paramList[i].id == "icid-value") { -log("### f_mtc_check_TP_IMS_5108_01_ic: find param=", p_paramList[i]); - p_param := p_paramList[i]; - break; - } - } - } - } -log("### f_mtc_check_TP_IMS_5108_01_ic: start"); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5108_01_ic(v_SCSCF_IMS_B, p_param))},//pass criteria - { - mw_SipRequest(mdw_TP_IMS_5108_01_f_ic), //fail criteria - mw_SipRequest(mw_INVITE_Request_Base) //fail criteria - }, - {0, omit}, - "TP_IMS_5108_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5301_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5301_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5301_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_IMS_A := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5301_01_ic(?, v_SCSCF_IMS_A))}, - {mw_SipRequest(mw_BYE_Request_Base(?))}, - {0, omit}, - "TP_IMS_5301_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0008 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5081_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5081_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5081_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5082_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mw_200OK_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - v_skip, - "TP_IMS_5082_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5082_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipResponse(mw_200OK_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5082_01_ic)},//TODO check updated access-network-charging-info - {mw_SipResponse(mw_200OK_Base)}, - v_skip, - "TP_IMS_5082_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5120_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfEutBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - //INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5120_01", - false, - false - ) - ); - p_monitorCompRef.done; - - // 100 Trying from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5120_01", - false, - false - ) - ); - p_monitorCompRef.done; - - // INVITE from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5120_01_ic(v_scscfEutBUrl))}, - {}, - {0, omit}, - "TP_IMS_5120_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0009 { - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5052_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5052_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5052_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_PCSCF_IMS_A := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var template RecordRoute p_recordRoute := omit; - var SipMessage v_sip := {request := valueof(m_ACK_Dummy)}; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_ACK_Request_Base(?))}, - {}, - {1, mw_SipRequest(mw_ACK_Request_Base(?))}, - "TP_IMS_5052_01", - true, - false - ) - ); - p_monitorCompRef.done; - - // get Record-route header from prev ACK - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - if(ispresent(v_sip.request.msgHeader.recordRoute)){ - p_recordRoute := v_sip.request.msgHeader.recordRoute; - } - - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5052_01_p_ic(?,p_recordRoute))}, - { - mw_SipRequest(mdw_TP_IMS_5052_01_f_ic(?, v_PCSCF_IMS_A)), - mw_SipRequest(mw_BYE_Request_Base(?)) - }, - {0, omit}, - "TP_IMS_5052_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0010 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5048_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5048_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5048_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := (mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)), - mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A))); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - // INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5048_01_ic(v_pcscfEutAUrl))}, - {}, - v_skip, - "TP_IMS_5048_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5080_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - // INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5080_01_ic)}, - {}, - {0, omit}, - "TP_IMS_5080_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0011 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5080_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_UPDATE_Request_Base(?))}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(?))}, - {}, - v_skip, - "TP_IMS_5080_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5080_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - // INVITE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5080_02_ic(?))}, - {}, - {0, omit}, - "TP_IMS_5080_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0012 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_UPDATE_Request_Base(?))}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(?))}, - {}, - v_skip, - "TP_IMS_5120_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5120_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfEutBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_UPDATE_Request_Base(?))}; - } - - //UPDATE from IMS_A to IMS_B - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(?))}, - {}, - v_skip, - "TP_IMS_5120_02", - false, - false - ) - ); - p_monitorCompRef.done; - - // 100 Trying from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5120_02", - false, - false - ) - ); - p_monitorCompRef.done; - - // UPDATE from IMS_B to IMS_A - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5120_02_ic(?, v_scscfEutBUrl))}, - {}, - {0, omit}, - "TP_IMS_5120_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0014 { - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_CANCEL_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5107_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5107_03_ic(?, v_scscfImsAUrl))}, - {}, - {0, omit}, - "TP_IMS_5107_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - -} // group - -group checksTC_IMS_CALL_0015 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5073_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5073_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5073_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5073_01_ic(?))}, - {}, - {0, omit}, - "TP_IMS_5073_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } -} // group - -group checksTC_IMS_CALL_0016 { - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5139_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var SipUrl v_UE_URI; - var To v_to; - var From v_from; - var CallId v_callId; - var CSeq v_cSeq; - var Route v_route; - - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5139_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Get Contact Header from INVITE - - if(ischosen(v_sip.request)) { - v_from := valueof(v_sip.request.msgHeader.fromField); - v_callId := valueof(v_sip.request.msgHeader.callId); - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5139_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Get Contact Header from 200-OK response - - if(ischosen(v_sip.response)) { - if(ispresent(v_sip.response.msgHeader.contact)) { - v_UE_URI := f_getContactAddr(v_sip.response.msgHeader.contact); - } - v_to := valueof(v_sip.response.msgHeader.toField); - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5139_01_ic(v_callId, v_UE_URI, v_to, v_from, ?, ?))}, - {}, - {0, omit}, - "TP_IMS_5139_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function -} // group - -group checksTC_IMS_CALL_0024 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5135_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5135_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5135_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5135_01_ic(v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5135_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5137_01_ic(v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5137_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5404_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5404_01_gm)}, - {}, - {0, omit}, - "TP_IMS_5404_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5404_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5404_01_ic)}, - {}, - {0, omit}, - "TP_IMS_5404_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5414_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5414_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5414_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - {0, omit}, - "TP_IMS_5414_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_180Ringing_Base)}, - {}, - {0, omit}, - "TP_IMS_5137_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5137_02_ic)}, - {}, - {0, omit}, - "TP_IMS_5137_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5137_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5137_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5137_03_ic)}, - {}, - {0, omit}, - "TP_IMS_5137_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_ACK_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5408_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_01_ic(?, v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5408_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5408_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_03_ic(?, v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5408_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0025 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_CANCEL_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5408_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_02_ic(?, v_ibcfEutAUrl))}, - {}, - {0, omit}, - "TP_IMS_5408_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - -group checksTC_IMS_CALL_0026 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_04_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5408_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5408_04_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_ibcfEutAUrl := mw_SipUrl_Host(f_GetEUTIbcfAddress(PX_EUT_A)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5408_04_ic(v_ibcfEutAUrl))}, - {}, - v_skip, - "TP_IMS_5408_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // group - - -group checksTC_IMS_SS_0001 { - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5310_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5310_01_gm)}, - {}, - v_skip, - "TP_IMS_5310_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5310_01_isc( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5310_01_isc)}, - {}, - {0, omit}, - "TP_IMS_5310_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5312_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5312_01_ic)}, - {}, - v_skip, - "mdw_TP_IMS_5312_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5312_01_isc( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5312_01_isc)}, - {}, - {0, omit}, - "TP_IMS_5312_01", - false, - false - ) - ); - p_monitorCompRef.done; - } -} // group - - -group checksTC_IMS_SS_0002 { - - // f_mtc_check_TP_IMS_5310_01_gm already used in test TC_IMS_SS_0001 - // f_mtc_check_TP_IMS_5310_01_isc already used in test TC_IMS_SS_0001 - // f_mtc_check_TP_IMS_5312_01_ic already used in test TC_IMS_SS_0001 - // f_mtc_check_TP_IMS_5312_01_isc already used in test TC_IMS_SS_0001 -} - - -group checksTC_IMS_SS_0003 { - - // f_mtc_check_TP_IMS_5097_02_gm already used in test TC_IMS_CALL_0001 - // f_mtc_check_TP_IMS_5097_02_ic already used in test TC_IMS_CALL_0001 - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5108_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_03_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SipUrl v_AS_IMS_B := (mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTASServerIpAddress(PX_EUT_B))); - var template SipUrl v_SCSCF_IMS_B := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_B))); - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5108_03_isc(v_AS_IMS_B, v_SCSCF_IMS_B))}, - {mw_SipRequest(mdw_TP_IMS_5108_03_f_isc)}, - v_skip, - "TP_IMS_5108_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_08_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)},//check 200OK from ASB->IMSB - {}, - {1, mw_SipResponse(mw_200OK_Base)},//skip 200OK from IMSB->ASB - "TP_IMS_5115_08", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5115_08_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}; - } - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5115_08_ic)}, - {}, - v_skip, - "TP_IMS_5115_08", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } -} - -group checksTC_IMS_SS_0004 { - - // f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_isc already used in test TC_IMS_SS_0003 -} -group checksTC_IMS_SS_0005 { - -// f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 -// f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5313_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5313_01_ic)}, - {}, - {0, omit}, - "TP_IMS_5313_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5313_01_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5313_01_isc)}, - {}, - {0, omit}, - "TP_IMS_5313_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } -}//end group checksTC_IMS_SS_0005 - -group checksTC_IMS_SS_0006 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_09_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5097_09", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_09_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_AS_IMS_B := mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_09_isc(v_AS_IMS_B))}, - {mw_SipRequest(mdw_TP_IMS_5097_09_f_isc)}, - {0, omit}, - "TP_IMS_5097_09", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - -}//end group checksTC_IMS_SS_0006 - -group checksTC_IMS_SS_0007 { - - // f_mtc_check_TP_GM_PCSCF_INVITE_01 already used in test TC_IMS_CALL_0001 - // f_mtc_check_TP_IMS_5097_01_ic already used in test TC_IMS_CALL_0001 - // f_mtc_check_TP_IMS_5108_03_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5108_03_isc already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_ic already used in test TC_IMS_SS_0003 - // f_mtc_check_TP_IMS_5115_08_isc already used in test TC_IMS_SS_0003 - -}//end group checksTC_IMS_SS_0007 - -group checksTC_IMS_SS_0008 { - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5046_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5046_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5046_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A)); - var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B); - var template SipUrl v_UserEutBUrl := mw_SipUrl_Host(v_user.domain); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var Route v_Route; - var template Route vt_pcscfRoute := { - fieldName := ROUTE_E, - routeBody := ({mw_routeBody(v_pcscfEutAUrl), *}, - {mw_routeBody(v_pcscfEutAIpUrl), *} ) - }; - var Via v_Via; - var template Via vt_pcscfVia := { - fieldName := VIA_E, - viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.components.sip.hostPort), *}, - {mw_ViaBody_interface(v_pcscfEutAIpUrl.components.sip.hostPort), *} ) - }; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest((mdw_TP_IMS_5046_01_ic(v_pcscfEutAUrl, v_UserEutBUrl), - mdw_TP_IMS_5046_01_ic(v_pcscfEutAIpUrl, v_UserEutBUrl)))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IMS_5046_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - if(ispresent(v_sip.request.msgHeader.route)) { - v_Route := v_sip.request.msgHeader.route; - } - //if(ispresent(v_sip.request.msgHeader.via)) { - v_Via := v_sip.request.msgHeader.via; - //} - - // Check Route header - if (match(v_Route, vt_pcscfRoute)) { - f_setIotVerdictFAIL("TP_IMS_5046_01"); - } - // Check Via header - if (match(v_Via, vt_pcscfVia)) { - } else { - f_setIotVerdictFAIL("TP_IMS_5046_01"); - } - } - - /** - * @desc Starts monitor component - */ - function f_mtc_check_TP_IMS_5110_01_isc( - ImsInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator - { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {1, mw_SipResponse(mw_200OK_Base)}, - "TP_IMS_5110_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - /** - * @desc Starts monitor component - */ - function f_mtc_check_TP_IMS_5110_01_ic( - ImsInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator - { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5110_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - -} // group - -group checksTC_IMS_SS_0009 { -}//end group checksTC_IMS_SS_0009 - -group checksTC_IMS_SS_0010 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_01_gm)}, - {}, - {0, omit}, - "TP_IMS_5308_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_01_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_01_isc)}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IMS_5308_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_02_gm)}, - {}, - {0, omit}, - "TP_IMS_5308_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5308_02_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_TP_IMS_5308_02_isc)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5308_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -}//end group checksTC_IMS_SS_0010 - - group checksTC_IMS_PRES_0001 { - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_13_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_PUBLISH_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5097_13", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_13_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_AS_IMS_B := mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_13_isc(?, v_AS_IMS_B))}, - {mw_SipRequest(mdw_TP_IMS_5097_13_f_isc(?))}, - {0, omit}, - "TP_IMS_5097_13", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_07_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_07_isc( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_AS_IMS_B := (mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTASServerIpAddress(PX_EUT_B))); - var template SipUrl v_SCSCF_IMS_B := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_B))); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5108_07_isc(v_AS_IMS_B, v_SCSCF_IMS_B))}, - {mw_SipRequest(mdw_TP_IMS_5108_07_f_isc)}, - {0, omit}, - "TP_IMS_5108_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /*functions already used in test checksTC_IMS_SS_0003 - * f_mtc_check_TP_IMS_5115_08_isc - * f_mtc_check_TP_IMS_5115_08_ic - * - */ - - -}//end group checksTC_IMS_PRES_0001 - -group checksTC_IMS_PRES_0002 { - - /*functions already used in test checksTC_IMS_PRES_0001 - * f_mtc_check_TP_IMS_5108_07_gm - * f_mtc_check_TP_IMS_5108_07_isc - * f_mtc_check_TP_IMS_5115_08_isc - * f_mtc_check_TP_IMS_5115_08_ic - * - */ - - -}//end group checksTC_IMS_PRES_0002 - -group checksTC_IMS_PRES_0003 { - - /*functions already used in test checksTC_IMS_PRES_0001 - * f_mtc_check_TP_IMS_5115_08_isc - * f_mtc_check_TP_IMS_5115_08_ic - * - */ - -}//end group checksTC_IMS_PRES_0003 - -group checksTC_IMS_PRES_0004 { - - /*functions already used in test checksTC_IMS_PRES_0001 - * f_mtc_check_TP_IMS_5097_13_isc - * f_mtc_check_TP_IMS_5097_13_ic - * f_mtc_check_TP_IMS_5108_07_gm - * f_mtc_check_TP_IMS_5108_07_isc - * and checksTC_IMS_SS_0005 - * f_mtc_check_TP_IMS_5313_01_ic - * f_mtc_check_TP_IMS_5313_01_isc - * - */ - -}//end group checksTC_IMS_PRES_0004 - -group checksTC_IMS_PRES_0005 { - - /*functions already used in test checksTC_IMS_PRES_0001 - * f_mtc_check_TP_IMS_5108_07_gm - * f_mtc_check_TP_IMS_5108_07_isc - * and checksTC_IMS_SS_0005 - * f_mtc_check_TP_IMS_5313_01_ic - * f_mtc_check_TP_IMS_5313_01_isc - * - */ - -}//end group checksTC_IMS_PRES_0005 - -group checksTC_IMS_CHAT_0014 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_04_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REFER_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_5107_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5107_04_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5107_04_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, - {}, - {0, omit}, - "TP_IMS_5107_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - }//end group checksTC_IMS_CHAT_0014 - -group checksTC_IMS_SHARE_0001 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_OPTIONS_Request_Base(?))}, - {}, - {0, omit}, - "TP_IMS_CONTENT_SHARE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_CONTENT_SHARE_01_ic(?))}, - {}, - {0, omit}, - "TP_IMS_CONTENT_SHARE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function*/ - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_CONTENT_SHARE_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_CONTENT_SHARE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_CONTENT_SHARE_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_CONTENT_SHARE_02_ic)}, - {}, - {0, omit}, - "TP_IMS_CONTENT_SHARE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function*/ - - }//end group checksTC_IMS_SHARE_0001 - -group checksTC_IMS_SHARE_0009 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_CONTENT_SHARE_03_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_603Decline_Base)}, - {}, - {0, omit}, - "TP_IMS_CONTENT_SHARE_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_CONTENT_SHARE_03_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_603Decline_Base)}, - {}, - {0, omit}, - "TP_IMS_CONTENT_SHARE_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function*/ - - }//end group checksTC_IMS_SHARE_0009 - - group checksTC_VxLTE_INT_ATT_01 { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_S6A_MME_ULR_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( - md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED - ?, //vc_originHost_IUT, // containing an Origin-Host AVP - ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP - ?, //vc_destinationRealm, // containing a Destination-Realm AVP - m_userName(PX_USR_NAME), // containing a User-Name AVP - DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP - ?, // containing a ULR-Flags AVP with S6a-indicator bit set - m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP - )) } , "TP_S6A_MME_ULR_01", true ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_S6A_HSS_ULA_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( - mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS - md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED - ?, //vc_originHost_IUT, // containing an Origin-Host AVP - ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP - mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set - mw_subscriptionData_dummy // containing a Subscription-Data AVP - ) - ) } , "TP_S6A_MME_ULA_01", true ) - ); - p_monitorCompRef.done; - } //function*/ - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_GX_PCRF_CCA_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, - ?, //vc_originHost, - ?, //vc_originRealm, - ?, //vc_destinationRealm, - mw_cC_Request_Type(INITIAL_REQUEST_E), - *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) - ); - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) - ); - p_monitorCompRef.done; - - } //function*/ - - }//end group checksTC_VxLTE_INT_ATT_01 - - - group messagingChecks { - /** - * @desc Starts monitor component behavior for TP_IMS_5097_05 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_05_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5097_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_05 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_05_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipRequest(mdw_TP_IMS_5097_05_p_ic(*)) }, - { - mw_SipRequest(mdw_TP_IMS_5097_05_f_ic(*)), - mw_SipRequest(mdw_TP_IMS_5097_05_f2_ic(*,mw_SipUrl_Host(v_EUT_A_Addr))), - mw_SipRequest(mw_MESSAGE_Request_Base) - }, - {0, omit}, - "TP_IMS_5097_05", - false, - true - ) - ); - p_monitorCompRef.done; - - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_05_p_ic(*))}, - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_05 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_07_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5097_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_07 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_07_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_07_ic(*,mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_08 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_08_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_08_gm(mw_TEL_URI_Base))}, - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_08", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_08 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5097_08_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5097_08_ic(v_eutBUri))}, - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IMS_5097_08", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_2XX_Base)}, - {}, - {0, omit}, - "TP_IMS_5117_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_TP_IMS_5117_02_ic)}, - {mw_SipResponse(mdw_2XX_Base)}, - {0, omit}, - "TP_IMS_5117_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_06_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_2XX_Base)}, - {}, - {0, omit}, - "TP_IMS_5117_06", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5117_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5117_06_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_TP_IMS_5117_06_ic)}, - {mw_SipResponse(mdw_2XX_Base)}, - {0, omit}, - "TP_IMS_5117_06", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5118_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5118_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IMS_5118_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5118_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5118_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_TP_IMS_5118_01_ic)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IMS_5118_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_02_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - var SemicolonParam_List p_paramList; - var GenericParam p_param; - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5108_02a_ic(*))}, - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IMS_5108_02", - true, - true - ) - ); - p_monitorCompRef.done; - - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - p_paramList := v_sip.request.msgHeader.pChargingVector.chargeParams; - for(var integer i := 0; i < lengthof(p_paramList); i:= i+1) { - if(p_paramList[i].id == "icid-value") { - p_param := p_paramList[i]; - } - } - - p_monitorCompRef.start( - f_imsIot_receive( - {}, - { - mw_SipRequest(mdw_TP_IMS_5108_02b_f_ic(*)), - mw_SipRequest(mw_MESSAGE_Request_Base) - }, - {0, omit}, - "TP_IMS_5108_02", - false, - true - ) - ); - p_monitorCompRef.done; - - - p_monitorCompRef.start( - f_imsIot_receive( - {}, - { - mw_SipRequest(mdw_TP_IMS_5108_02b_p_ic(*, v_SCSCF_IMS_B, p_param)), - mw_SipRequest(mw_MESSAGE_Request_Base) - }, - {0, omit}, - "TP_IMS_5108_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5050_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5050_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5050_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_PCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_B)); - var template SipUrl v_UE_A := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5050_01_ic(*, v_PCSCF_IMS_B, v_UE_A))}, - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IMS_5050_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5114_02_gm( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5114_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5050_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5114_02_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5114_02", - false, - false - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_4XX_Base)}, - {}, - {0, omit}, - "TP_IMS_5114_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_06_gm( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_06", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5108_06 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5108_06_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_06", - false, - false - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_404NotFound_Base)}, - {}, - {0, omit}, - "TP_IMS_5108_06", - false, - false - ) - ); - p_monitorCompRef.done; - } - } - - group callChecks { - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_01_gm( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IMS_5106_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_01 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_01_ic( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5106_01_ic(v_SCSCF_A_Uri))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - v_skip, - "TP_IMS_5106_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_02_gm( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(*))}, - {}, - {0, omit}, - "TP_IMS_5106_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - - - /** - * @desc Starts monitor component behavior for TP_IMS_5106_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5106_02_ic( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mdw_TP_IMS_5106_02_p_ic(*,v_SCSCF_A_Uri))}, - { - mw_SipRequest(mdw_TP_IMS_5106_02_f_ic(*,v_SCSCF_A_Uri)), - mw_SipRequest(mw_UPDATE_Request_Base(*))}, - {0, omit}, - "TP_IMS_5106_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5121_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5121_02_gm( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - // TODO TP must be checked, currently only 2XX is checked - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; - } - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mdw_2XX_Base)}, - {}, - v_skip, - "TP_IMS_5121_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5121_02 - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IMS_5121_02_ic( - ImsInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; - } - - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_TP_IMS_5121_02_ic)}, - {mw_SipResponse(mdw_2XX_Base)}, - v_skip, - "TP_IMS_5121_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - } - group mx { - function f_mtc_check_invite_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - {0,omit}, - "f_mtc_check_invite_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_message ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest ( mw_MESSAGE_Request_Base ) }, - { }, { 0, omit }, "f_mtc_check_message", false, false ) ); - p_monitorCompRef.done; - } - - function f_mtc_check_message_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {}, - {0,omit}, - "f_mtc_check_message_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_ack_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_ACK_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_ack_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_prack_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_PRACK_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_prack_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_publish_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive ( - {mw_SipRequest(mw_PUBLISH_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_publish_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_bye_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_BYE_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_bye_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_update_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_UPDATE_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_update_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_register_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {}, - {0,omit}, - "f_mtc_check_register_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_notify_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_notify_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_info_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_INFO_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_info_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_subscribe( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {}, - {0,omit}, - "f_mtc_check_subscribe", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_cancel_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_CANCEL_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_cancel_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_refer_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_REFER_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_refer_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_options_mx( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipRequest(mw_OPTIONS_Request_Base(?))}, - {}, - {0,omit}, - "f_mtc_check_options_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_options ( ImsInterfaceMonitor p_monitorCompRef, charstring p_rcsCap ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest( mw_OPTIONS_Request ( p_rcsCap ) ) }, - { }, { 0, omit }, "f_mtc_check_options", false, false ) ); - p_monitorCompRef.done; - } - - function f_mtc_check_response ( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine, - charstring p_rcsCap ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipResponse ( mw_Response ( p_statusLine, p_rcsCap ) ) }, - { }, { 0, omit },"f_mtc_check_response", false, false ) ); - p_monitorCompRef.done; - } - - function f_mtc_check_response_mx( - ImsInterfaceMonitor p_monitorCompRef, - template StatusLine p_statusLine - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - {mw_SipResponse(mw_Response_Base(p_statusLine, ?, ?))}, - {}, - {0,omit}, - "f_mtc_check_response_mx", - false, - false - ) - ); - p_monitorCompRef.done; - } - - } - - group msrpChecks { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @return The INVITE request message value - *
-         * ensure that {
-         * when { 
-         *     User A initiates the call to User B 
-         * }
-         * then { 
-         *     UE_A sends the initial INVITE 
-         *         containing an offered session-description indicating a session of MSRP
-         *     }
-         * }
-         * 
- */ - function f_mtc_check_TP_MSRP_9000_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator return SipMessage { - var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; // used to store INVITE request message - - p_monitorCompRef.start( - f_imsIot_receive( - { - mw_SipRequest(mw_INVITE_MSRP_Session(mw_media_MSRP)) - }, - { }, - {0, omit}, - "TP_MSRP_9000_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // Retrieve INVITE request message - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - log("### f_mtc_check_TP_MSRP_9000_01: v_invite=", v_sip.request.messageBody.sdpMessageBody.media_list); - - return v_sip; - } // End of function f_mtc_check_TP_MSRP_9000_01 - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @return The INVITE request message value - *
-         * ensure that {
-         * when { 
-         *     UE_A sends SEND_MSRP to UE_B 
-         * }
-         * then { 
-         *     UE_A receives the INVITE200 OK response 
-         *         containing an offered session-description indicating a session of MSRP
-         *     }
-         * }
-         * 
- */ - function f_mtc_check_TP_MSRP_9000_02( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - template StatusLine p_statusLine - ) runs on ImsTestCoordinator return SipMessage { - var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; - - p_monitorCompRef.start( - f_imsIot_receive( - { - mw_SipResponse(mw_Response_Base(p_statusLine, ?, ?)) - }, - { }, - {0, omit}, - "TP_MSRP_9000_02", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // Retrieve INVITE response message - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - log("### f_mtc_check_TP_MSRP_9000_02: v_invite=", v_sip.response.messageBody.sdpMessageBody.media_list); - - return v_sip; - } // End of function f_mtc_check_TP_MSRP_9000_02 - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage TODO - * @param p_inviteReq INVITE request message - * @param p_inviteResp INVITE 200 OK response message - *
-         * ensure that {
-         *     when { 
-         *         UE_A sends SEND_MSRP to UE_B 
-         *     }
-         *     then { 
-         *         UE_B receives the SEND_MSRP containing 
-         *             FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE 
-         *             ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response
-         *             Content-Type_header indicating text/plain
-         *     }
-         * }
-         * 
- */ - function f_mtc_check_TP_MSRP_9000_03( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - in SipMessage p_inviteReq, - in SipMessage p_inviteResp - ) runs on ImsTestCoordinator { - var SipMessage v_sip := { msrpRequest := valueof(m_msrpSend_Dummy) }; - var template MsrpURI v_toPath := valueof(m_msrpURIs_ToPath_Dummy); - var template MsrpURI v_fromPath := valueof(m_msrpURIs_FromPath_Dummy); - var SDP_media_desc_list v_mediasFromInvite; // Used to extract media description list from SDP in the INVITE request message - var SDP_media_desc_list v_mediasFromResponse; // Used to extract media description list from SDP in the INVITE 200 OK response message - - // Sanity checks - if (not(ispresent(p_inviteReq.request.messageBody))) { - setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_03: 'messageBody' field not present ***"); - } else if (not(ischosen(p_inviteReq.request.messageBody.sdpMessageBody))) { - setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_03: 'sdpMessageBody' field not selected ***"); - } else if (not(ispresent(p_inviteReq.request.messageBody.sdpMessageBody.media_list))) { - setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_03: 'media_list' field not present ***"); - } else { - if ( ispresent ( p_inviteReq.request.messageBody.sdpMessageBody.media_list ) ) { - v_mediasFromInvite := p_inviteReq.request.messageBody.sdpMessageBody.media_list; - } - v_mediasFromResponse := p_inviteResp.response.messageBody.sdpMessageBody.media_list; - if (lengthof(v_mediasFromInvite) == 0) { - setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_03: 'media_list' is empty ***"); - } else { - // Extrat fromPath and toPath - if ( - not(f_str2msrpUri(v_mediasFromResponse[0].attributes[0].msrp.attr_value, v_toPath)) or - not(f_str2msrpUri(v_mediasFromInvite[0].attributes[0].msrp.attr_value, v_fromPath))) { // FIXME To be refined - setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_03: 'media_list' is empty ***"); - } else { - p_monitorCompRef.start( - f_imsIot_receive( - { // Pass criteria - mw_MsrpRequest( - mw_msrpSEND_toPath_fromPath_contentType( - mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response - mw_fromPath(v_fromPath), // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE - LibMsrp_Templates.mw_contentType("text", "plain") // Content-Type_header indicating text/plain - ) - ) - }, - { }, // Fail criteria - {0, omit}, - "TP_MSRP_9000_03", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // Retrieve MSRP SEND message - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - log("### f_mtc_check_TP_MSRP_9000_03: v_sip=", v_sip.msrpRequest); - } - } - } - } // End of function f_mtc_check_TP_MSRP_9000_03 - - /** - * @desc Starts monitor component behavior for TP_MSRP_9000_04 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage TODO - * @param p_inviteReq INVITE request message - * @param p_inviteResp INVITE 200 OK response message - *
-         * ensure that { 
-         *     when { 
-         *         UE_B receives SEND_MSRP from UE_A 
-         *     }
-         *     then { 
-         *         UE_B sends the 200_response_MSRP containing 
-         *             FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE 
-         *             ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response 
-         *         }
-         *     }
-         * 
- */ - function f_mtc_check_TP_MSRP_9000_04( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - in SipMessage p_inviteReq, - in SipMessage p_inviteResp - ) runs on ImsTestCoordinator { - var SipMessage v_sip := { msrpResponse := valueof(m_msrpResponse_Dummy) }; - var template MsrpURI v_toPath := valueof(m_msrpURIs_ToPath_Dummy); - var template MsrpURI v_fromPath := valueof(m_msrpURIs_FromPath_Dummy); - var SDP_media_desc_list v_mediasFromInvite; // Used to extract media description list from SDP in the INVITE request message - var SDP_media_desc_list v_mediasFromResponse; // Used to extract media description list from SDP in the INVITE 200 OK response message - - // Note that sanity checks were done in TP_MSRP_9000_03 - v_mediasFromInvite := p_inviteReq.request.messageBody.sdpMessageBody.media_list; - v_mediasFromResponse := p_inviteResp.response.messageBody.sdpMessageBody.media_list; - - p_monitorCompRef.start( - f_imsIot_receive( - { // Pass criteria - mw_MsrpResponse(mw_msrpResponse_toPath_fromPath( - mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response - mw_fromPath(v_fromPath) // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE - )) - }, - { }, // Fail criteria - {0, omit}, - "TP_MSRP_9000_04", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // Retrieve MSRP SEND message - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - log("### f_mtc_check_TP_MSRP_9000_04: v_sip=", v_sip.msrpResponse); - - - } // End of function f_mtc_check_TP_MSRP_9000_04 - - /** - * @desc Starts monitor component behavior for TP_MSRP_9000_05 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage TODO - *
-         * ensure that { 
-         *     when { 
-         *         UE_B receives SEND_MSRP from UE_A during file transfert 
-         *     }
-         *     then { 
-         *         UE_B sends a REPORT containing 
-         *             a status indicating no error (200 OK)
-         *         }
-         *     }
-         * 
- */ - function f_mtc_check_TP_MSRP_9000_05( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_imsIot_receive( - { // Pass criteria - mw_MsrpRequest(mw_msrpREPORT_success) - }, - { }, // Fail criteria - {0, omit}, - "TP_MSRP_9000_05", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } // End of function f_mtc_check_TP_MSRP_9000_05 - - /** - * @desc Starts monitor component behavior for TP_MSRP_9000_06 - * @param p_monitorCompRef Reference to monitor component - *
-         * ensure that { 
-         *     when { 
-         *          UE_A sends INVITE to IMS_A
-         *     }
-         *     then { 
-         *         UE_B receives an INVITE from IMS_A containing 
-         *             Request-URI set to IM CONFERENCE FACTORY URI 
-         *             and MIME resource-list body including invited IM Users
-         *         }
-         *     }
-         * 
- */ - function f_mtc_check_TP_MSRP_9000_06( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_SIP_URI_ConfFactory)) }, - { mw_SipRequest(mw_INVITE_Request_Base) }, - {0, omit}, - "TP_MSRP_9000_06", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_MSRP_9000_06 - - /** - * @desc Starts monitor component behavior for TP_IMS_5097_07 - * @param p_monitorCompRef Reference to monitor component - *
-         * ensure that { 
-         *     when { 
-         *          UE_A sends REFER to IMS_A
-         *     }
-         *     then { 
-         *         REFER containing 
-         *             Refer-To header value equals to UE_D URI 
-         *             and Refer-Sub header value set to "false"
-         *         }
-         *     }
-         * 
- */ - function f_mtc_check_TP_MSRP_9000_07( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipRequest(mdw_TP_MSRP_9000_07(?, false)) }, - { mw_SipRequest(mw_REFER_Request_Base(?)) }, - {0, omit}, - "TP_MSRP_9000_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_MSRP_9000_07 - - } // End of group msrpChecks - - group epcChecks { - - /** - * Starts monitor component behavior for TP_EPC_6002_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         UE_A sends REGISTER to IMS_P-CSCF 
-         *     }
-         *     then { 
-         *         IMS_P-CSCF receives REGISTER
-         *     }
-         *     when { 
-         *         IMS_P-CSCF sends response on REGISTER to UE_A 
-         *     }
-         *     then { 
-         *         UE_A receives response on REGISTER
-         *     }
-         * }
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.1 - */ - function f_mtc_check_TP_EPC_6002_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - f_mtc_check_TP_IMS_5011_01_gm(p_monitorCompRef, p_checkMessage); // Check: IMS_P-CSCF receives REGISTER - f_mtc_check_response_mx(p_monitorCompRef, c_statusLine200); // Check: UE_A receives response on REGISTER - } // End of function f_mtc_check_TP_EPC_6002_01 - - /** - * Starts monitor component behavior for TP_EPC_6003_01 - * @param p_ueRef_A Reference to IMS UE user component A - * @param p_monitorCompRef_A Reference to monitor component which initiate the INVITE request message - * @param p_compRef_A Reference originator user - * @param p_ueRef_B Reference to IMS UE user component B - * @param p_monitorCompRef_B Reference to monitor component which receive the INVITE request message - * @param p_compRef_B Reference destination user - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         UE_A sends IP_packets to UE_B 
-         *     }
-         *     then { 
-         *         EPC filters the IP_packets 
-         *         and the IP_packets not visible on PO_SGi 
-         *     } 
-         *     when { 
-         *         UE_B sends IP_packets to UE_A 
-         *     } 
-         *     then { 
-         *         EPC filters the IP_packets 
-         *         and the IP_packets not visible on PO_SGi
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.1 - */ - function f_mtc_check_TP_EPC_6003_01( - in EquipmentUser p_ueRef_A, - in ImsInterfaceMonitor p_monitorCompRef_A, - in EquipmentUser p_ueRef_B, - in ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - p_monitorCompRef_A.start ( - f_check_ExistingDedicatedBearer ( p_ueRef_A ) - ); - p_monitorCompRef_A.done; - p_monitorCompRef_B.start ( - f_check_ExistingDedicatedBearer ( p_ueRef_B ) - ); - p_monitorCompRef_B.done; - } // End of function f_mtc_check_TP_EPC_6003_01 - - /** - * Checks for existing bearer - * @param p_ueRef_A Reference to IMS UE user component A - * @param p_monitorCompRef_A Reference to monitor component A - * @param p_ueRef_B Reference to IMS UE user component B - * @param p_monitorCompRef_B Reference to monitor component B - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * @see TS 103 029 V3.1.1 clause 7.1.1 - */ - function f_check_ExistingDedicatedBearer ( - in EquipmentUser p_ueRef - ) runs on ImsInterfaceMonitor { - // External function TODO - } // End of function f_check_ExistingDedicatedBearer - - /** - * Starts monitor component behavior for TP_EPC_6003_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         UE_A sends media to UE_B 
-         *     }
-         *     then { 
-         *         EPC filters the IP_packets 
-         *         and the IP_packets not visible on PO_SGi 
-         *     } 
-         *     when { 
-         *         UE_B sends media to UE_A 
-         *     } 
-         *     then { 
-         *         EPC filters the IP_packets 
-         *         and the IP_packets not visible on PO_SGi
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.1 - */ - function f_mtc_check_TP_EPC_6003_02( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveIpMsg ( p_checkMessage , "TP_EPC_6003_02" ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6003_02 - - /** - * Starts monitor component behavior for TP_EPC_6004_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         UE_A starts_complete_network_detachment from EPC 
-         *     }
-         *     then { 
-         *         EPC_PCRF removes_relevant_bearers 
-         *         and EPC_PCRF triggers_termination of SIP_session 
-         *         and EPC_PCRF triggers_termination of IMS_signalling
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6004_01( - IotEquipmentUser p_ue - ) runs on ImsTestCoordinator { - f_mtc_triggerUserCommand ( p_ue, "start complete network detachment"); - f_mtc_userRadioEnabled ( p_ue, false, true ); - } // End of function f_mtc_check_TP_EPC_6004_01 - - /** - * Starts monitor component behavior for TP_EPC_6005_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         EPC_PCRF triggers_termination of SIP_session 
-         *     }
-         *     then { 
-         *         EPC_PCRF sends Abort-Session-Request to IMS_P-CSCF containing 
-         *             Session-Id_AVP indicating session of SIP_session
-         *             Abort-Cause_AVP indicating BEARER_RELEASED (0)
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6005_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSR_MSG := mw_ASR_dummy } , "TP_EPC_6005_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6005_01 - - /** - * Starts monitor component behavior for TP_EPC_6006_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF receives Abort-Session-Request for SIP_session 
-         *     }
-         *     then { 
-         *         IMS_P-CSCF sends 
-         *             Abort-Session-Answer to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
-         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
-         *         and IMS_P-CSCF sends 
-         *             Session-Termination-Request to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
-         *         and IMS_P-CSCF triggers_call_release 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6006_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6006_02 ( p_monitorCompRef ); - f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6006_01 - - /** - * Starts monitor component behavior for TP_EPC_6006_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF receives Abort-Session-Request for IMS_signalling 
-         *     }
-         *     then { 
-         *         IMS_P-CSCF sends 
-         *             Abort-Session-Answer to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request
-         *                 Result-Code_AVP indicating DIAMETER_SUCCESS(2001)
-         *         and IMS_P-CSCF sends 
-         *             Session-Termination-Request to EPC_PCRF containing 
-         *                 Session-Id_AVP indicating value_received in Abort-Session-Request 
-         *         and IMS_P-CSCF triggers_call_release 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6006_02( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aSA_MSG := mw_ASA_dummy } , "TP_EPC_6006_02", true ) - ); - p_monitorCompRef.done; - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6006_02 - - /** - * Starts monitor component behavior for TP_EPC_6009_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         EPC_PCRF receives Session-Termination-Request from IMS_P-CSCF containing 
-         *             Session-Id_AVP indicating session for SIP_session
-         *     }
-         *     then { 
-         *         EPC_PCRF sends Session-Termination-Answer to IMS_P-CSCF containing 
-         *             Session-Id_AVP indicating SIP_session value_received in Session-Termination-Request
-         *             Result-Code_AVP indicating DIAMETER_SUCCESS(2001) 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6009_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sTA_MSG := mw_STA_dummy } , "TP_EPC_6009_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6009_01 - - /** - * Starts monitor component behavior for TP_EPC_6009_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         EPC_PCRF receives Session-Termination-Request from IMS_PCSCF containing 
-         *             Session-Id_AVP indicating IMS_signalling value_received in Session-Termination-Request 
-         *             and Result-Code_AVP indicating DIAMETER_SUCCESS(2001) 
-         *     }
-         *     then { 
-         *         EPC_PCRF sends Session-Termination-Answer to IMS_P-CSCF containing 
-         *             Session-Id_AVP indicating IMS_signalling value_received in Session-Termination-Request 
-         *             Result-Code_AVP indicating DIAMETER_SUCCESS(2001) 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6009_02( - in EquipmentUser p_ueRef, - in ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_check_ExistingDedicatedBearer ( p_ueRef ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6009_02 - - /** - * Starts monitor component behavior for TP_EPC_6010_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF triggers_call_release
-         *     }
-         *     then { 
-         *         IMS_P-CSCF sends BYE to UE_A containing 
-         *             Request_URI indicating contact_address from Contact_header of UE_A 
-         *             and To_header indicating the initial 200_OK_From_value 
-         *             and From_header indicating the initial INVITE_To_value 
-         *             and Call-ID_header indicating the initial INVITE_Call_Id_value 
-         *             and CSeq_header including an incremented Sequence_Number 
-         *             and Route_header indicating specific_routing_information for UE_A 
-         *             and Reason_header indicating 503_service_unavailable 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - function f_mtc_check_TP_EPC_6010_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_imsIot_receive ( - { mw_SipRequest ( mw_BYE_Request_Base( ? ) ) }, { }, { 0, omit }, - "TP_EPC_6010_01", false, p_checkMessage - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6010_01 - - /** - * Starts monitor component behavior for TP_EPC_6012_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
-         *     }
-         *     then { 
-         *         UE_A receives 2xx_Response 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.2.1.1 - */ - function f_mtc_check_TP_EPC_6012_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_imsIot_receive ( - { mw_SipResponse ( mw_200OK_Base ) }, { }, { 0, omit }, - "TP_EPC_6012_01", true, p_checkMessage - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6012_01 - - /** - * Starts monitor component behavior for TP_EPC_6012_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6012_02( - ImsInterfaceMonitor p_monitorCompRef, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef, false ); - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); - f_mtc_check_TP_EPC_6009_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6012_02 - - /** - * Starts monitor component behavior for TP_EPC_6013_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         IMS_P-CSCF receives 2xx_Response on REGISTER from IMS_SCSCF
-         *     }
-         *     then { 
-         *         IMS_P-CSCF sends AA-Request to EPC_PCRF containing 
-         *             a framed IPv4_Address AVP indicating IPv4_Address of UE_A 
-         *             or a framed IPv6_Address AVP indicating IPv6_Address of UE_A 
-         *             and one or more Media-Component-Description_AVP containing 
-         *                 Media-Component-Number_AVP indicating value 0
-         *                 and Flow-Description_AVP indicating 
-         *                     indicating permit_in_ip from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-         *                     or permit_in_udp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-         *                     or permit_in_tcp from (UE_A-IP_address and UE_A_port_number) to (P-CSCF-IP_address and P-CSCF_port_number) 
-         *                 and Flow-Description_AVP indicating 
-         *                     permit_out_ip from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-         *                     or permit_out_udp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-         *                     or permit_out_tcp from (P-CSCF-IP_address PCSCF_port_number) to UE_A-IP_address 
-         *                 and Flow-Usage_AVP indicating AF_SIGNALING(0)
-         *                 and Flow-Status_AVP indicating ENABLED(2)
-         *                 and AF-Signalling-Protocol_AVP indicating SIP(1)
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.2.1.1 - */ - function f_mtc_check_TP_EPC_6013_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAR_MSG := mw_AAR_dummy } , "TP_EPC_6013_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6013_01 - - /** - * Starts monitor component behavior for TP_EPC_6014_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6014_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { aAA_MSG := mw_AAA_dummy } , "TP_EPC_6014_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6014_01 - - /** - * Starts monitor component behavior for TP_EPC_6015_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6015_01( - ImsInterfaceMonitor p_monitorCompRef_A, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - f_mtc_check_subscribe ( p_monitorCompRef_A ); - f_mtc_check_subscribe ( p_monitorCompRef_B ); - } // End of function f_mtc_check_TP_EPC_6015_01 - - /** - * Starts monitor component behavior for TP_EPC_6016_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6016_01 ( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_imsIot_receive ( - { mw_SipResponse ( mdw_4XX_Base ) }, { }, { 0, omit }, - "TP_EPC_6016_01", false, false - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6016_01 - - /** - * Starts monitor component behavior for TP_EPC_6017_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { 
-         *         UE_A sends REGISTER for de-registration to IMS_P-CSCF 
-         *     } 
-         *     then { 
-         *          UE_A receives 2xx_Response from IMS_P-CSCF 
-         *          and IMS_P-CSCF sends Session-Termination-Request to EPC_PCRF containing 
-         *              Session Session-Id_AVP indicating session for IMS_signalling session 
-         *     } 
-         * } 
-         * 
- * @see TS 103 029 V3.1.1 clause 7.2.2 - */ - function f_mtc_check_TP_EPC_6017_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6018_01 ( p_monitorCompRef, p_checkMessage ); - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef_B ); - } // End of function f_mtc_check_TP_EPC_6017_01 - - /** - * Starts monitor component behavior for TP_EPC_6018_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
- * @see TS 103 029 V3.1.1 clause 7.2.2 - */ - function f_mtc_check_TP_EPC_6018_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive ( - { mw_SipRequest ( mw_REGISTER_Request_Base ) }, { }, { 0, omit }, - "TP_EPC_6018_01", false, p_checkMessage - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6018_01 - - /** - * Starts monitor component behavior for TP_EPC_6021_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6021_01( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - f_mtc_check_TP_EPC_6018_01 ( p_monitorCompRef, p_checkMessage ); - f_mtc_check_TP_EPC_6010_01 ( p_monitorCompRef, p_checkMessage ); - } // End of function f_mtc_check_TP_EPC_6021_01 - - /** - * Starts monitor component behavior for TP_EPC_6022_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6022_01( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_receiveDiameterMsg ( { sTR_MSG := mw_STR_dummy } , "TP_EPC_6022_01", true ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6022_01 - - /** - * Starts monitor component behavior for TP_EPC_6024_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6024_01( - ImsInterfaceMonitor p_monitorCompRef, - IotEquipmentUser p_ue - ) runs on ImsTestCoordinator { - f_mtc_triggerUserCommand ( p_ue, "Trigger administrative de-registration for UE A"); - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipRequest ( mw_NOTIFY_Request_Base ( ? ) ) }, { }, { 0, omit }, - "TP_EPC_6024_01", false, false - ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6024_01 - - /** - - * Starts monitor component behavior for TP_EPC_6026_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6026_01( - ImsInterfaceMonitor p_monitorCompRef, - IotEquipmentUser p_ue - ) runs on ImsTestCoordinator { - f_mtc_triggerUserCommand ( p_ue, "Trigger registration expiration for UE A"); - f_mtc_check_TP_EPC_6022_01 ( p_monitorCompRef ); - } // End of function f_mtc_check_TP_EPC_6026_01 - - /** - * Starts monitor component behavior for TP_EPC_6027_06 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6027_06( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_imsIot_receive( - { mw_SipResponse ( mw_180Ringing_Base ) }, { }, { 0, omit }, - "TP_EPC_6027_06", false, p_checkMessage ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6027_06 - - /** - * Starts monitor component behavior for TP_EPC_6029_03 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6029_03( - ImsInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipRequest ( mw_ACK_Request_Base ( ? ) ) }, { }, { 0, omit }, - "TP_EPC_6029_03", false, p_checkMessage ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6029_03 - - /** - * Starts monitor component behavior for TP_EPC_6033_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - *
-         * ensure that {
-         *     when { IMS_P-CSCF receives INVITE with no SDP from UE_A }
-         *         then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         *         when { IMS_P-CSCF receives 200_response on INVITE with no SDP from IMS_S-CSCF }
-         *             then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         *             when { IMS_P-CSCF receives ACK with no SDP from UE_A }
-         *                 then { IMS_P-CSCF does not send AA-Request to EPC_PCRF }
-         * }
-         * 
- */ - function f_mtc_check_TP_EPC_6033_01( - ImsInterfaceMonitor p_monitorCompRef_A, - ImsInterfaceMonitor p_monitorCompRef_B - ) runs on ImsTestCoordinator { - p_monitorCompRef_A.start( - f_imsIot_receive( - { mw_SipRequest ( mw_INVITE_Request_Base ) }, { }, { 0, omit }, - "TP_EPC_6033_01 INVITE", false, false ) - ); - p_monitorCompRef_A.done; - f_mtc_check_TP_EPC_6012_01 ( p_monitorCompRef_A, false ); - f_mtc_check_TP_EPC_6029_03 ( p_monitorCompRef_A, false ); - f_mtc_check_TP_EPC_6013_01 ( p_monitorCompRef_B ); - } // End of function f_mtc_check_TP_EPC_6033_01 - - /** - * Starts monitor component behavior for TP_EPC_6034_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6034_02( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipRequest ( mw_CANCEL_Request_Base ( ? ) ) }, { }, { 0, omit }, - "TP_EPC_6034_02", false, false ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6034_02 - - /** - * Starts monitor component behavior for TP_EPC_6034_04 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - */ - function f_mtc_check_TP_EPC_6034_04( - ImsInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_imsIot_receive( - { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, - "TP_EPC_6034_04", false, false ) - ); - p_monitorCompRef.done; - } // End of function f_mtc_check_TP_EPC_6034_04 - - } // End of group epcChecks - -} // end group -}// end module \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index eabb8b7..f822767 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -200,7 +200,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 24 f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 23 - f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 22 + f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false); // Event 15, 22 f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 13, 14 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 @@ -271,7 +271,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA); // Events 1, 14 f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, true); // Event 2, 13 - f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic); // Event 3, 12 + f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10 f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6//may be removed because in other network diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index c94cc44..25520a7 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -28,24 +28,18 @@ module AtsImsIot_TP_behavior_IC import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} // LibSip import from LibSip_SDPTypes { type SDP_media_desc_list }; - // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; +// // LibMsrp +// import from LibMsrp_TypesAndValues { type MsrpURI }; +// import from LibMsrp_Functions { function f_str2msrpUri }; +// import from LibMsrp_Templates { +// template +// m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, +// m_msrpReport_Dummy, mw_msrpREPORT_success, +// m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, +// mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, +// m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, +// mw_contentType +// }; import from AtsImsIot_Templates_IC all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn index dd1c860..0b7f0ae 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn @@ -29,23 +29,18 @@ module AtsImsIot_TP_behavior_ISC // LibSip import from LibSip_SDPTypes { type SDP_media_desc_list }; // LibMsrp - import from LibMsrp_TypesAndValues { type MsrpURI }; - import from LibMsrp_Functions { function f_str2msrpUri }; - import from LibMsrp_Templates { - template - m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, - m_msrpReport_Dummy, mw_msrpREPORT_success, - m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, - mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, - m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, - mw_contentType - }; - import from DiameterS6a_Templates all; - import from DiameterS6a_PIXITS all; - import from DiameterGx_Templates all; - // LibDiameter - import from LibDiameter_Templates all; -// import from DiameterRx_Templates all; +// import from LibMsrp_TypesAndValues { type MsrpURI }; +// import from LibMsrp_Functions { function f_str2msrpUri }; +// import from LibMsrp_Templates { +// template +// m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, +// m_msrpReport_Dummy, mw_msrpREPORT_success, +// m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, +// mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, +// m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, +// mw_contentType +// }; + import from AtsImsIot_Templates_IC all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn deleted file mode 100644 index 6582032..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn +++ /dev/null @@ -1,175 +0,0 @@ -/** - * @author STF 574 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions for Network Attachment. - * @see ETSI TS 103 653-2 (2020) - */ -module AtsImsIot_TestCases_ATT { - - // LibCommon - // LibSip - // LibIms - import from LibIms_UpperTester { type ImsUserInfo }; - // LibIot - import from LibIot_TestInterface { type IotEquipmentUser }; - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; - import from LibIot_VxLTE_Functions all; - // LibImsIot - import from AtsImsIot_Functions { function f_getImUser }; - // ImsIot - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - import from AtsImsIot_Functions all; - import from AtsImsIot_Behavior { group epcChecks; function f_mtc_check_response_mx, f_mtc_check_TP_IMS_5011_01_gm; group checksTC_VxLTE_INT_ATT_01 }; - - group networkAttachmentAndDefaultBearer { - /** - * @desc Initial Network Attachment and Establishment of the Default Bearer. - * On successful initial network attachment, the UE should discover the P-CSCF IP address. - * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF - * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 - */ - testcase TC_VxLTE_INT_ATT_01_old ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_ATT_old v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.s6a := f_cf_create_monitor ( c_s6a ); - v_config.gx := f_cf_create_monitor ( c_gx ); - v_config.mwPS := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueA ); - f_cf_epc_call_rel15_up_old ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check -//TODO: commented out dure to restructure of Test functions -// f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) -// f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) -// f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) - f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_rel15_down_old ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_VxLTE_INT_ATT_01 - - testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_ATT v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - - v_config.gmA := f_cf_create_monitor_sip ( c_gm_A ); - v_config.gmB := f_cf_create_monitor_sip ( c_gm_B ); - v_config.mxA := f_cf_create_monitor_sip ( c_mx_A ); - v_config.rx := f_cf_create_monitor_diameter ( c_rx ); - v_config.s6a := f_cf_create_monitor_diameter ( c_s6a ); - v_config.gx := f_cf_create_monitor_diameter ( c_gx ); - v_config.mw := f_cf_create_monitor_sip ( c_mw ); - v_config.sgi := f_cf_create_monitor_sgi ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueA ); - f_cf_epc_call_rel15_up ( v_config ); - -// // preamble -// f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile -// f_mtc_userRegistration ( v_ueB, v_userInfoB ); -// -// // test body -// // Check that user A can register to IMS A -// f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message -// f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check -// f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) -// f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) -// f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) -// f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); -// f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 -// -// // postamble -// f_PO_user_home_deregistration ( v_ueB ); -// f_PO_user_home_deregistration ( v_ueA ); -// f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_rel15_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_VxLTE_INT_ATT_01_new - - testcase TC_VxLTE_INT_ATT_01_dynamicMonitorComponents ( ) runs on ImsTestCoordinator system IotSystemInterface { - - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - - f_setVxLteMonIterfacesAvailability(); - //TODO: Check if needed interfaces are available per TD or TD-GROUP!!! - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile -// f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - // Check that user A can register to IMS A -// f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message -// f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check - //f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) - //f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) - //f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) -// f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); -// f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 - - // postamble -// f_PO_user_home_deregistration ( v_ueB ); -// f_PO_user_home_deregistration ( v_ueA ); -// f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - } // End of TC TC_VxLTE_INT_ATT_01_dynamicMonitorComponents - - } // End of group networkAttachmentAndDefaultBearer - - -} // End of module AtsImsIot_TestCases_ATT \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn deleted file mode 100644 index 76f46d2..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn +++ /dev/null @@ -1,2693 +0,0 @@ -/** - * @author STF 370 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions. - */ -module AtsImsIot_TestCases_CALL { - - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibIms_UpperTester all; - - // LibIot - import from LibIot_PIXITS all; - import from LibIot_TestConfiguration all; - import from LibIot_TestInterface all; - import from LibIot_VxLTE_Functions all; - - // AtsImsIot - import from AtsImsIot_TP_behavior_GM all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_TP_behavior_IC all; - import from AtsImsIot_Behavior all; // TODO To be removed - import from AtsImsIot_Functions all; - import from AtsImsIot_TestSystem all; - import from AtsImsIot_TestConfiguration all; - - group imsSipSessionEstablishment { - - group originatingLeg { - - /** - * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP session establishment - */ - testcase TC_VxLTE_INT_INI_01() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - f_cf_createVxLteMonitor(); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_VxLteMonitor_Up(); - - // Preamble - f_cf_int_call_up(v_config); - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true, true); // Event 1 - f_mtc_check_TP_MW_PCSCF_INVITE_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 6 - - f_mtc_check_TP_GM_PCSCF_100Trying_01(v_gmA, true, true); - - f_mtc_check_TP_GM_PCSCF_180RINGING_01(v_gmA, true); // Event 16 - f_mtc_check_TP_MW_PCSCF_180RINGING_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 11 - - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - - f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA, true); // Event 25 - f_mtc_check_TP_MW_PCSCF_200OK_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 20 - - f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA, true, true); // Event 26 - f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 27 - - f_mtc_check_TP_IC_IBCF_INVITE_01(v_ic); // INVITE Event 8 - f_mtc_check_TP_IC_IBCF_INVITE_02(v_ic); // INVITE Event 8 - f_mtc_check_TP_IC_IBCF_INVITE_03(v_ic); // INVITE ENUM Event 8 - f_mtc_check_TP_IC_IBCF_ACK_01(v_ic); // ACK – Event 29 - f_mtc_check_TP_IC_IBCF_180RESP_01(v_ic); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 18 - f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 18 - f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 18 - - f_mtc_userCheckCallEstablished(v_ueA); // Event 30 - f_mtc_userCheckCallEstablished(v_ueB); // Event 30 - - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_INI_01 - - } // End of group originatingLeg - - group terminatingLeg { - - /** - * @desc To demonstrate the establishment of dedicated bearers at the terminating EPC B due to SIP session establishment. - */ - testcase TC_VxLTE_INT_INI_02() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsUserInfo v_userTelInfoA := f_getTelUserId(PX_EUT_A); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); - - f_mtc_check_TP_GM_PCSCF_INVITE_02(v_gmB, true, true); // Event 8 - f_mtc_check_TP_MW_PCSCF_INVITE_02(v_gmB/*FIXME: mwPS*/, true, true); // Event 3 - - f_mtc_check_TP_GM_PCSCF_100Trying_02(v_gmB, true, true); - f_mtc_check_TP_MW_PCSCF_100Trying_02(v_gmB/*FIXME: mwPS*/, true, true); - - f_mtc_check_TP_GM_PCSCF_180RINGING_02(v_gmB, true); // Event 9 - f_mtc_check_TP_MW_PCSCF_180RINGING_02(v_gmB/*FIXME: mwPS*/, true); // Event 14 - - f_mtc_userCheckRinging(v_ueA); - f_mtc_userCheckPeerIsRinging(v_ueB); - f_mtc_userAnswerCall(v_ueA); - - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB, true); // Event 18 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/, true); // Event 23 - - f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmB, true, true); // Event 29 - f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmB/*FIXME: mwPS*/, true, true); // Event 28 - - f_mtc_check_TP_IC_IBCF_INVITE_01(v_ic); // INVITE Event 1 - f_mtc_check_TP_IC_IBCF_INVITE_02(v_ic); // INVITE Event 1 - f_mtc_check_TP_IC_IBCF_INVITE_03(v_ic); // INVITE ENUM Event 1 - f_mtc_check_TP_IC_IBCF_ACK_01(v_ic); // ACK – Event 26 - f_mtc_check_TP_IC_IBCF_180RESP_01(v_ic); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_180RESP_02(v_ic); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_1XXRESP_01(v_ic); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_2XXRESP_01(v_ic); // 200 OK – Event 25 - f_mtc_check_TP_IC_IBCF_2XXRESP_02(v_ic); // 200 OK – Event 25 - f_mtc_check_TP_IC_IBCF_2XXRESP_03(v_ic); // 200 OK – Event 25 - - f_mtc_userCheckCallEstablished(v_ueA); // Event 30 - f_mtc_userCheckCallEstablished(v_ueB); // Event 30 - - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_INI_02 - - } // End of group terminatingLeg - - } // End of group imsSipSessionEstablishment - - group imsSipSessionModification { - - group originatedLegs { - - /** - * @desc To demonstrate the modification of an existing media flow mid session. - */ - testcase TC_VxLTE_INT_INI_03() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_VxLteMonitor_Up(); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - f_mtc_userAddNewMediaStream(v_ueA); - - // Test body - f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(v_gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(v_gmA/*FIXME: mwPS*/); // Event 3 - - f_mtc_check_TP_GM_PCSCF_200OK_01(v_gmA); // Event 13 - f_mtc_check_TP_MW_PCSCF_200OK_01(v_gmA/*FIXME: mwPS*/); // Event 8 - - f_mtc_check_TP_GM_PCSCF_ACK_01(v_gmA); // Event 14 - f_mtc_check_TP_MW_PCSCF_ACK_01(v_gmA/*FIXME: mwPS*/); // Event 15 - - f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 5 - f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 6 - - f_mtc_userCheckNewMediaStream(v_ueB); - f_mtc_userCheckNewMediaStream(v_ueA); - - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } // End of testcase TD_VxLTE_INT_INI_03 - - } // End of group originatingLeg - - group terminatingLeg { - - /** - * @desc To demonstrate the modification of an existing media flow mid session. - */ - testcase TC_VxLTE_INT_INI_04() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_VxLteMonitor_Up(); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - - // Test body - f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(v_gmB); // Event 5 - f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(v_gmB/*FIXME: mwPS*/); // Event 4 - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmB); // Event 6 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmB/*FIXME: mwPS*/); // Event 11 - f_mtc_check_TP_GM_PCSCF_ACK_02(v_gmB); // Event 17 - - f_mtc_check_TP_MW_PCSCF_ACK_02(v_gmB/*FIXME: mwPS*/); // Event 16 - - f_mtc_check_TP_IC_IBCF_REINVITE_01(v_ic); // INVITE Event 2 - f_mtc_check_TP_IC_IBCF_2XXRESP_04(v_ic); // 200 OK – Event 13 - - f_mtc_userCheckNewMediaStream(v_ueA); - f_mtc_userCheckNewMediaStream(v_ueB); - - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } // End of testcase TD_VxLTE_INT_INI_04 - - } - } // End of group imsSipSessionModification - - group imsSipSessionRelease { - - group originatedLegs { - - /** - * @desc To perform originating UE session release and the tear down of related dedicated bearers. - */ - testcase TC_VxLTE_INT_REL_01() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_VxLteMonitor_Up(); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - - // Test body - //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 - f_mtc_check_TP_GM_PCSCF_BYE_01(v_gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_01(v_gmA/*FIXME: mwPS*/); // Event 3 - f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 -// f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 - f_mtc_userCheckCallTerminated(v_ueA); // Event 14 - f_mtc_userCheckCallCancelled(v_ueB); // Event 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - // Unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_call_down(v_config); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_REL_01 - - } // End of group originatingLeg - - group terminatingLeg { - - /** - * @desc To perform originating UE session release and the tear down of related dedicated bearers. - */ - testcase TC_VxLTE_INT_REL_02() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_VxLteMonitor_Up(); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - - // Test body - //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 - f_mtc_check_TP_GM_PCSCF_BYE_02(v_gmB); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_02(v_gmB/*FIXME: mwPS*/); // Event 3 - f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 - f_mtc_check_TP_MW_PCSCF_200OK_02(v_gmA/*FIXME: mwPS*/); // Event 12 - f_mtc_check_TP_GM_PCSCF_200OK_02(v_gmA); // Event 13 -// f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Event 5 - f_mtc_userCheckCallTerminated(v_ueA); // Event 14 - f_mtc_userCheckCallCancelled(v_ueB); // Event 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - // Unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_call_down(v_config); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_REL_02 - - } // End of group terminatingLeg - - group networkInitiated { - - /** - * @desc To perform network session release and the tear down of related dedicated bearers - */ - testcase TC_VxLTE_INT_REL_03() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_VxLteMonitor_Up(); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueB, v_userInfoA); - f_mtc_userCheckRinging(v_ueA); - f_mtc_userCheckPeerIsRinging(v_ueB); - f_mtc_userAnswerCall(v_ueB); - f_mtc_userCheckCallEstablished(v_ueB); // Event 1 - f_mtc_userCheckCallEstablished(v_ueA); // Event 1 - - // Test body - - f_mtc_userLooseConnection(v_ueB); - f_mtc_check_TP_GM_PCSCF_BYE_03(v_gmA); // Event 5 - f_mtc_check_TP_MW_PCSCF_BYE_03(v_gmA/*FIXME: mwPS*/); // Event 3 - f_mtc_check_TP_IC_IBCF_BYE_01(v_ic); // Event 4 -// f_mtc_check_TP_IMS_5073_01_ic(v_ic); // Event 4 - f_mtc_userCheckCallTerminated(v_ueA); // Event 14 - f_mtc_userCheckCallCancelled(v_ueB); // Event 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_REL_03 - - } // End of group networkInitiated - - } // End of group imsSipSessionRelease - - group imsSipSessionAbortReject { - - group originatedLegs { - - /** - * @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A - */ - testcase TC_VxLTE_INT_ABT_01() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 - f_mtc_userTriggerCancelCall(v_ueA); - - // Test body - f_mtc_check_TP_GM_PCSCF_CANCEL_01(v_gmA); // Event 20 - f_mtc_check_TP_MW_PCSCF_CANCEL_01(v_gmA/*FIXME: mwPS*/); // Event 23 -// f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Event 25 - f_mtc_check_TP_GM_PCSCF_487INVITE_01(v_gmA); // Event 35 - f_mtc_check_TP_MW_PCSCF_487INVITE_01(v_gmA/*FIXME: mwPS*/); // Event 34 - f_mtc_userCheckCallCancelled(v_ueA); // Event 40 - f_mtc_userCheckCallEnded(v_ueB); // Event 41 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_VxLTE_INT_ABT_01 - - } // End of group originatedLegs - - group terminatedLegs { - - /** - * @desc To perform SIP session abort (originating side) and the related interactions with PCRF and EPC. - */ - testcase TC_VxLTE_INT_ABT_02() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var CF_INT_CALL v_config := {v_gmA, omit, v_ic, omit, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userTriggerCancelCall(v_ueA); - - // Test body - f_mtc_check_TP_GM_PCSCF_CANCEL_02(v_gmB); // Event 20 - f_mtc_check_TP_MW_PCSCF_CANCEL_02(v_gmB/*FIXME: mwPS*/); // Event 23 -// f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check1 - f_mtc_check_TP_MW_PCSCF_487INVITE_02(v_gmB/*FIXME: mwPS*/); // Event 34 - f_mtc_userCheckCallCancelled(v_ueA); // Event 40 - f_mtc_userCheckCallEnded(v_ueB); // Event 41 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_VxLTE_INT_ABT_02 - - } // End of group terminatedLegs - - } // End of group imsSipSessionAbortReject - - - - - - - - - - - - - - - - /** - * @desc Default SIP URI with DNS/ENUM lookup procedure - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.1 - */ - testcase TC_IMS_CALL_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true, true); // Check1 - f_mtc_check_TP_IMS_5097_04_gm(v_gmA, false); // Check3 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5097_02_ic(v_ic, true); // Check2 - f_mtc_check_TP_IMS_5097_04_ic(v_ic, false); // Check3 - f_mtc_check_invite_mx(v_mxB); - - // checks 6, 10 (180 Ringing) - f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 6 - f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 7 - f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 10 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check 6 - f_mtc_check_TP_IMS_5115_03_ic(v_ic, true); // Check 7 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check 10 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - - // checks 8, 11 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 8 - f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 9 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 11 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 8 - f_mtc_check_TP_IMS_5115_04_ic(v_ic, true); // Check 9 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 11 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - - //check 4 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 - f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check2 - f_mtc_check_ack_mx(v_mxB); - - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - - // check 5 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check3 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0001 - - - /** - * @desc Default SIP URI - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.2 - */ - testcase TC_IMS_CALL_0001F() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueB2 := f_cf_create_IotEquipmentUser(c_userUE_B2); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueB2); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueB2, v_userInfoB); - - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - - // checks 4, 6 (180 Ringing) - f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 4 - f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 6 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check4 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check6 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check4 - f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check6 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check4 from UE_B2 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check6 from UE_B2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckRinging(v_ueB2); //Test Sequence Step 3 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 4 - f_mtc_userAnswerCall(v_ueB2); //Test Sequence Step 5 - - // checks 5, 7 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 5 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 5 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 5 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check5 from UE_B2 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check7 from UE_B2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - - f_mtc_userCheckCallNoLongerOffered(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 7 - f_mtc_userCheckCallEstablished(v_ueB2); //Test Sequence Step 8 - - //check 2 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check2 - f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check2 - f_mtc_check_ack_mx(v_mxB); - - f_mtc_EndCall(v_ueA); //Test Sequence Step 9 - - // check 3 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check3 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userCheckCallEnded(v_ueB2 ); //Test Sequence Step 10 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 - - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueB2); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueB2); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0001F - - - /** - * @desc Default Tel URI - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.3 - */ - testcase TC_IMS_CALL_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5097_02_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - // checks 6, 10 (180 Ringing) - f_mtc_check_TP_IMS_5115_01_gm(v_gmB, true); // Check 5 - f_mtc_check_TP_IMS_5115_03_gm(v_gmB, true); // Check 6 - f_mtc_check_TP_IMS_5131_01_gm(v_gmB, false); // Check 9 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5115_01_ic(v_ic, true); // Check 5 - f_mtc_check_TP_IMS_5115_03_ic(v_ic, true); // Check 6 - f_mtc_check_TP_IMS_5131_01_ic(v_ic, false); // Check 9 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - - // checks 8, 11 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 7 - f_mtc_check_TP_IMS_5115_04_gm(v_gmB, true); // Check 8 - f_mtc_check_TP_IMS_5131_02_gm(v_gmB, false); // Check 10 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 7 - f_mtc_check_TP_IMS_5115_04_ic(v_ic, true); // Check 8 - f_mtc_check_TP_IMS_5131_02_ic(v_ic, false); // Check 10 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - - //check 4 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check3 - f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check3 - f_mtc_check_ack_mx(v_mxB); - - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - - // check 5 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check4 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check4 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0002 - - - /** - * @desc Rejection of call from barred user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.4 - */ - testcase TC_IMS_CALL_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5108_05_gm(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5108_05_ic(v_ic, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0003 - - - /** - * @desc Rejection of call to non existing user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.5 - */ - testcase TC_IMS_CALL_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - - // Test body - v_userInfoB.privateId := ("non_existing_user"); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5132_01_gm(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5132_01_ic(v_ic, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0004 - - - /** - * @desc Rejection of call to unavailable user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.6 - */ - testcase TC_IMS_CALL_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - - // Test body - v_userInfoB.privateId := ("unavailable"); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5133_01_gm(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5133_01_ic(v_ic, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0005 - - - /** - * @desc Initial request to non-registered user with terminating unregistered filter criterion - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.1.7 - */ - testcase TC_IMS_CALL_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - - // Test body - v_userInfoB.privateId := ("userNOAS_in_IMSB"); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 // - - //check 1 (INVITE) - f_mtc_check_TP_IMS_5109_01_gm(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5109_01_ic(v_ic, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallCannotBeEstablished(v_ueA); //Test Sequence Step 2 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0006 - - - /** - * @desc Normal call (roaming) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.1 - */ - testcase TC_IMS_CALL_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - - // checks 1,2 gm - f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmA, false); // Check2 - f_mtc_check_invite_mx(v_mxA); - //checks 1,2 (INVITE from IMS_A to IMS_B) - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - //checks 7,3 (INVITE from IMS_B to IMS_A and 100 Trying from IMS_A to IMS_B) - f_mtc_check_TP_IMS_5108_01_ic(v_ic, true); // Check7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine100); - f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,0); // Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine100); - - // checks 5 (180 Ringing) - f_mtc_check_TP_IMS_5055_01_gm(v_gmA, true); // Check 5 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5055_01_ic(v_ic, true); // Check 5 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - - // checks 6 (2xx) - f_mtc_check_TP_IMS_5055_02_gm(v_gmA, true); // Check 6 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5055_02_ic(v_ic, true); // Check 6 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - - // check 4 (BYE) - f_mtc_check_TP_IMS_5301_01_gm(v_gmA, false); // Check4 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5301_01_ic(v_ic, false); // Check4 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0007 - - - /** - * @desc Normal call with hold/resume - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.2 - */ - testcase TC_IMS_CALL_0008() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 - - // checks 3 and 1 (INVITE and 100 Trying) - f_mtc_check_TP_IMS_5120_01_gm(v_gmA, false, 1); // Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine100); - f_mtc_check_TP_IMS_5081_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5120_01_ic(v_ic, false, 2); // Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine100); - - //checks 2 (200 OK) - f_mtc_check_TP_IMS_5082_01_gm(v_gmA, false, 1); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5082_01_ic(v_ic, false, 2); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 - - // checks 3 and 1 (INVITE and 100 Trying) - f_mtc_check_TP_IMS_5120_01_gm(v_gmA, false, 0); // Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine100); - f_mtc_check_TP_IMS_5120_01_ic(v_ic, true, 0); // Check3 - f_mtc_check_TP_IMS_5081_01_ic(v_ic, false); // Check1 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - //checks 2 (200 OK) - f_mtc_check_TP_IMS_5082_01_gm(v_gmA, false, 0); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5082_01_ic(v_ic, false, 0); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0008 - - - /** - * @desc Subsequent request(other than target refresh) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.3 - */ - testcase TC_IMS_CALL_0009() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - - f_mtc_EndCall(v_ueB); //Test Sequence Step 7 - - // check 1 (BYE) - f_mtc_check_TP_IMS_5052_01_gm(v_gmA, false); // Check1 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5052_01_ic(v_ic, false); // Check1 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 9 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0009 - - - /** - * @desc Subsequent target refresh request(INVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.4 - */ - testcase TC_IMS_CALL_0010() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueB); //Test Sequence Step 7 - - // checks 1 and 2 (INVITE) - f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 1); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 2); // Check1 - f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueB); //Test Sequence Step 10 - - // checks 1 and 2 (INVITE) - f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 0); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 1); // Check1 - f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 12 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0010 - - - /** - * @desc IMS network handles subsequent UPDATEs correctly in case of a user initiated - * call hold and resume when roaming caller puts a home user on hold and resumes call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.5 - */ - testcase TC_IMS_CALL_0011() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueB); //Test Sequence Step 7 - - // checks 1 (UPDATE) - f_mtc_check_TP_IMS_5080_02_gm(v_gmA, false, 1); // Check1 - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5080_02_ic(v_ic, false); // Check1 - f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueB); //Test Sequence Step 10 - - // checks 1 (UPDATE) - f_mtc_check_TP_IMS_5080_02_gm(v_gmA, false, 1); // Check1 - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5080_02_ic(v_ic, false); // Check1 - f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 12 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0011 - - - /** - * @desc IMS network handles subsequent UPDATEs correctly in case of a user initiated - * call hold and resume when home caller puts a roaming user on hold and resumes call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.2.6 - */ - testcase TC_IMS_CALL_0012() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 - - // checks 1 (UPDATE) - f_mtc_check_TP_IMS_5120_02_gm(v_gmA, false, 1); // Check1 - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5120_02_ic(v_ic, false, 0); // Check1 - f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 - - // checks 1 (UPDATE) - f_mtc_check_TP_IMS_5120_02_gm(v_gmA, false, 1); // Check1 - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5120_02_ic(v_ic, false, 0); // Check1 - f_mtc_check_update_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 - - f_mtc_EndCall(v_ueB); //Test Sequence Step 13 - - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0012 - - /** - * @desc Call CANCEL by calling user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.1 - */ - testcase TC_IMS_CALL_0014() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userTriggerCancelCall (v_ueA); //Test Sequence Step 4 - - //check1 CANCEL - f_mtc_check_TP_IMS_5107_03_gm(v_gmA, false); // Check1 - f_mtc_check_cancel_mx(v_mxA); - f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check1 - f_mtc_check_cancel_mx(v_mxB); - - f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 6 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0014 - - /** - * @desc IMS network ends call in case calling UE looses connectivity during a call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.2 - */ - testcase TC_IMS_CALL_0015() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 6 - - //Check 1 BYE - f_mtc_check_TP_IMS_5073_01_gm(v_gmA, false); // Check1 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5073_01_ic(v_ic, false); // Check1 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userLooseConnection(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0015 - - - /** - * @desc Call failure due to de-registration of calling user during call - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.3 - */ - testcase TC_IMS_CALL_0016() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_imsA := f_cf_create_IotEquipmentUser("IMS A"); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_imsA); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - f_mtc_imsTriggerUeDeregistration(v_imsA, v_ueA); //Test Sequence Step 7 - - //f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5139_01_ic(v_ic, false); // Check 1 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_imsA); - f_cf_adapter_down(); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0016 - - - /** - * @desc Subsequent target refresh request (INVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.4 - */ - testcase TC_IMS_CALL_0017() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // Test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 9 ---------------------> - f_mtc_userCheckUserOnHold(v_ueA); - // Test Sequence 10 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - // Test Sequence 13 --------------------> - f_mtc_EndCall(v_ueA); - // Test Sequence 14 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - // Test Sequence 15 --------------------> - f_mtc_userCheckCallEnded(v_ueA); - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Subsequent target refresh request (UPDATE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.5 - */ - testcase TC_IMS_CALL_0018() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // Test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); - f_mtc_check_update_mx(v_mxB); - - // Test Sequence 8 ---------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 9 ---------------------> - f_mtc_userCheckUserOnHold(v_ueA); - // Test Sequence 10 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); - f_mtc_check_update_mx(v_mxB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - // Test Sequence 13 --------------------> - f_mtc_EndCall(v_ueA); - // Test Sequence 14 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - // Test Sequence 15 --------------------> - f_mtc_userCheckCallEnded(v_ueA); - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Addition of media streams (reINVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.6 - */ - testcase TC_IMS_CALL_0019() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // Test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_EndCall(v_ueA); - // Test Sequence 13 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 14 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Addition of media streams (reINVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.7 - */ - testcase TC_IMS_CALL_0020() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // Test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userModifiyMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 13 --------------------> - // optional - // Test Sequence 14 --------------------> - // optional - - // Test Sequence 15 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 16 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // Test Sequence 17 --------------------> - f_mtc_EndCall(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 18 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // Test Sequence 19 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Hold/resume media streams (reINVITE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.8 - */ - testcase TC_IMS_CALL_0021() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // Test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,1); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,1); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 13 --------------------> - f_mtc_userCheckUserOnHold(v_ueA); - - // Test Sequence 14 --------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 15 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); - f_mtc_check_invite_mx(v_mxB); - - // Test Sequence 16 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 17 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - - // Test Sequence 18 --------------------> - f_mtc_userRemoveMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_01_gm(v_gmA,0); - f_mtc_check_TP_IMS_5106_01_ic(v_ic,0); - - // Test Sequence 19 --------------------> - f_mtc_userCheckRemoveMediaStream(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - - // Test Sequence 20 --------------------> - // optional - - // Test Sequence 21 --------------------> - f_mtc_EndCall(v_ueB); - - // Test Sequence 22 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // Test Sequence 23 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Hold/resume media streams (UPDATE) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.3.9 - */ - testcase TC_IMS_CALL_0022() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - - // variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - - // configuration - f_cf_int_call_up(v_config); - - // Preamble - f_PR_user_home_registration(v_ueA,v_userInfoA); - f_PR_user_home_registration(v_ueB,v_userInfoB); - - // Test body - - // Test Sequence 1 ---------------------> - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - // Test Sequence 2 ---------------------> - f_mtc_userCheckRinging(v_ueB); - // Test Sequence 3 ---------------------> - f_mtc_userCheckPeerIsRinging(v_ueA); - // Test Sequence 4 ---------------------> - f_mtc_userAnswerCall(v_ueB); - // Test Sequence 5 ---------------------> - f_mtc_userCheckCallEstablished(v_ueA); - // Test Sequence 6 ---------------------> - f_mtc_userCheckCallEstablished(v_ueB); - // Test Sequence 7 ---------------------> - f_mtc_userAddNewMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); - f_mtc_check_update_mx(v_mxB); - - // Test Sequence 8 ---------------------> - // optional - // Test Sequence 9 ---------------------> - // optional - - // Test Sequence 10 --------------------> - f_mtc_userCheckNewMediaStream(v_ueB); - - // Test Sequence 11 --------------------> - f_mtc_userCheckNewMediaStream(v_ueA); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,1); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 12 --------------------> - f_mtc_userTriggerHold(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); - f_mtc_check_update_mx(v_mxB); - - // Test Sequence 13 --------------------> - f_mtc_userCheckUserOnHold(v_ueA); - - // Test Sequence 14 --------------------> - f_mtc_userCheckUserOnHold(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 15 --------------------> - f_mtc_userTriggerResume(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); - f_mtc_check_update_mx(v_mxB); - - // Test Sequence 16 --------------------> - f_mtc_userCheckCallResumed(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 17 --------------------> - f_mtc_userCheckCallResumed(v_ueA); - - // Test Sequence 18 --------------------> - f_mtc_userRemoveMediaStream(v_ueA); - - // check 1 - f_mtc_check_TP_IMS_5106_02_gm(v_gmA); - f_mtc_check_update_mx(v_mxA); - f_mtc_check_TP_IMS_5106_02_ic(v_ic); - f_mtc_check_update_mx(v_mxB); - - // Test Sequence 19 --------------------> - f_mtc_userCheckRemoveMediaStream(v_ueB); - - // check 2 - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence 20 --------------------> - // optional - - // Test Sequence 21 --------------------> - f_mtc_EndCall(v_ueB); - - // Test Sequence 22 --------------------> - f_mtc_userCheckCallEnded(v_ueA ); - - // Test Sequence 23 --------------------> - f_mtc_userCheckCallEnded(v_ueB ); - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - f_cf_adapter_down(); - } - - - /** - * @desc Normal call - TH(Topology hiding) - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.1 - */ - testcase TC_IMS_CALL_0024() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - - //check 1,2,3,6 (INVITE and 100Trying) - f_mtc_check_TP_IMS_5135_01_gm(v_gmA, true); // Check1 - INVITE - f_mtc_check_TP_IMS_5404_01_gm(v_gmA, false); // Check3 - INVITE -// // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine100); - f_mtc_check_TP_IMS_5135_01_ic(v_ic, true); // Check1 - INVITE - f_mtc_check_TP_IMS_5137_01_ic(v_ic, true); // Check2 - INVITE - f_mtc_check_TP_IMS_5404_01_ic(v_ic, true); // Check3 - INVITE - f_mtc_check_TP_IMS_5414_01_ic(v_ic, false); // Check6 - INVITE and 100Trying - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine100); - - //check 7 (180 Ringing) - - f_mtc_check_TP_IMS_5137_02_gm(v_gmB, false); // Check 7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine180); - f_mtc_check_TP_IMS_5137_02_ic(v_ic, false); // Check 7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - - //check 8 (2xx) - - f_mtc_check_TP_IMS_5137_03_gm(v_gmB, false); // Check 8 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5137_03_ic(v_ic, false); // Check 8 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - - // check 4 (ACK) - f_mtc_check_TP_IMS_5408_01_gm(v_gmA, false); // Check4 - f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5408_01_ic(v_ic, false); // Check4 - f_mtc_check_ack_mx(v_mxB); - - f_mtc_EndCall(v_ueA); //Test Sequence Step 7 - - // check 5 (BYE) - f_mtc_check_TP_IMS_5408_03_gm(v_gmA, false); // Check4 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5408_03_ic(v_ic, false); // Check4 - f_mtc_check_bye_mx(v_mxB); - - //check 8 (2xx) - - f_mtc_check_TP_IMS_5137_03_gm(v_gmB, false); // Check 8 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5137_03_ic(v_ic, false); // Check 8 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 9 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_call_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0024 - - /** - * @desc CANCEL call by calling user - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.2 - */ - testcase TC_IMS_CALL_0025() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // Map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userTriggerCancelCall (v_ueA); //Test Sequence Step 4 - - //Check1 CANCEL - f_mtc_check_TP_IMS_5408_02_gm(v_gmA, false); // Check1 - f_mtc_check_cancel_mx(v_mxA); - f_mtc_check_TP_IMS_5408_02_ic(v_ic, false); // Check1 - f_mtc_check_cancel_mx(v_mxB); - - f_mtc_userCheckCallCancelled(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckCallTerminated(v_ueA); //Test Sequence Step 6 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_call_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CALL_0025 - - - /** - * @desc Normal call with hold/resume - roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.3.1.5.3 - */ - testcase TC_IMS_CALL_0026() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // Map/connect component ports - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckRinging(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB); //Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueA); //Test Sequence Step 7 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5408_04_gm(v_gmA, false,1); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5408_04_ic(v_ic, false,2); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckUserOnHold(v_ueA); //Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueA); //Test Sequence Step 10 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5408_04_gm(v_gmA, false,0); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5408_04_ic(v_ic, false,1); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallResumed(v_ueA); //Test Sequence Step 12 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 13 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 15 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - // Unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - } //end testcase TC_IMS_CALL_0026 - -} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn deleted file mode 100644 index 140b40c..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @author STF 435 - * @version $Id: $ - * @desc This module provides ATS specific ENUM test case. - */ -module AtsImsIot_TestCases_ENUM { - - // LibSip - import from LibIms_UpperTester all; - import from LibSip_SIPTypesAndValues all; - // LibIot - import from LibIot_TestConfiguration all; - import from LibIot_TestInterface all; - import from LibIot_PIXITS all; - // AtsImsIot - import from AtsImsIot_TP_behavior_GM all; - import from AtsImsIot_Behavior all; // TODO To be removed - import from AtsImsIot_TestSystem all; - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_Functions all; - - - /** - * @desc ENUM query should result in return of NAPTR with correct SIP URI - */ - testcase TC_IMS_ENUM_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_CALL v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var ImsUserInfo v_userTelInfoB := f_getTelUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - - // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.naptr := f_cf_create_monitor ( c_naptr ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_int_call_up ( v_config ); - - // preamble - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_userInitiateCall ( v_ueA, v_userTelInfoB ); // UE A invite UE B by using Tel number - - // check 1 (INVITE + ENUM db exchange) - f_mtc_check_TP_IMS_ENUM_01 ( v_config.gmA, v_config.naptr ); - // check 2 (INVITE arrived at gmB) - f_mtc_check_TP_GM_PCSCF_INVITE_01 ( v_config.gmB, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueA ); - f_PO_user_home_deregistration ( v_ueB ); - f_cf_int_call_down ( v_config ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueA ); - f_cf_user_down ( v_ueB ); - f_cf_adapter_down ( ); - } -} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_EPC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_EPC.ttcn deleted file mode 100644 index f34bfbb..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_EPC.ttcn +++ /dev/null @@ -1,1345 +0,0 @@ -/** - * @author STF 435 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions for EPC. - * @see ETSI TS 103 029 V3.1.1 (2011-11) - */ -module AtsImsIot_TestCases_EPC { - - // LibCommon - // LibSip - // LibIms - import from LibIms_UpperTester { type ImsUserInfo }; - // LibIot - import from LibIot_TestInterface { type IotEquipmentUser }; - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; - // LibImsIot - import from AtsImsIot_Functions { function f_getImUser }; - // ImsIot - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - import from AtsImsIot_Functions all; - import from AtsImsIot_Behavior { group epcChecks; function f_mtc_check_response_mx, f_mtc_check_TP_IMS_5011_01_gm }; - - group networkAttachmentAndDefaultBearer { - /** - * @desc Initial Network Attachment and Establishment of the Default Bearer. - * On successful initial network attachment, the UE should discover the P-CSCF IP address. - * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF - * @see TS 103 029 V3.1.1 clause 7.1.1 - */ - testcase TC_IMSEPC_Network_Attachment_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueA ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - // Check that user A can register to IMS A - f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message - f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check - f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); - f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_PO_user_home_deregistration ( v_ueA ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Network_Attachment_0001 - - /** - * @desc Network Detachment with Previously Established IMS Registration and sessions. - * On complete network detachment, without previous termination of IMS sessions and registration, the EPC informs the IMS about the event. - * EPC removes all relevant bearers. IMS terminates all the ongoing IMS sessions and the IMS registration - * @see TS 103 029 V3.1.1 clause 7.1.2 - */ - testcase TC_IMSEPC_Network_Detachment_0002 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - f_mtc_userCheckCallEstablished ( v_ueA ); - f_mtc_userCheckCallEstablished ( v_ueB ); - - // test body - f_mtc_check_TP_EPC_6004_01 ( v_ueA ); // User A starts complete network detachment - f_mtc_check_TP_EPC_6005_01 ( v_config.rx ); // EPC-PCRF -> P-CSCF Diameter ASR (rx) SIP session - f_mtc_check_TP_EPC_6006_01 ( v_config.rx ); // P-CSCF -> EPC-PCRF Diameter ASA + STR (rx) SIP session - // EPC-PCRF -> P-CSCF Diameter STA (rx) SIP session - f_mtc_check_TP_EPC_6010_01 ( v_config.gmB, false ); // P-CSCF -> UE A SIP BYE (gmB) - f_mtc_check_TP_EPC_6005_01 ( v_config.rx ); // EPC-PCRF -> P-CSCF Diameter ASR (rx) SIP registration - f_mtc_check_TP_EPC_6006_02 ( v_config.rx ); // P-CSCF -> EPC-PCRF Diameter ASA + STR (rx) SIP registration - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); // EPC-PCRF -> P-CSCF Diameter STA (rx) SIP registration - f_mtc_check_TP_EPC_6018_01 ( v_config.mxA, false ); // P-CSCF -> S-CSCF SIP REGISTER (mw/mx) - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); // No SGi channels - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Network_Detachment_0002 - } // End of group networkAttachmentAndDefaultBearer - - group imsRegistrationAndAFSignallingBearer { - /** - * @desc IMS Initial Registration - Successful. - * On successful initial registration, the P-CSCF shall request at the PCRF the allocation of a bearer for SIP signalling. - * The PCRF should act on the request and allocate the bearer. Subsequent signalling should make use of the respective bearer's QoS and priority characteristics - * @see TS 103 029 V3.1.1 clause 7.2.1.1 - */ - testcase TC_IMSEPC_Registration_Initial_Successful_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6015_01 ( v_config.gmA, v_config.gmB ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Registration_Initial_Successful_0001 - - /** - * @desc IMS Initial Registration - Failed. - * On failed UE Registration to IMS, IMS will not trigger the creation of a bearer for the - * transport of the subsequent SIP signalling. - */ - testcase TC_IMSEPC_Registration_Initial_Failed_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - - // test body - f_mtc_check_TP_EPC_6016_01 ( v_config.gmA ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Registration_Initial_Failed_0001 - - /** - * @desc IMS De-registration. - * On UE_A de-registration, P-CSCF signals to PCRF the termination of the IMS signalling session. - * EPC removes the IMS signalling bearer. - * Initial registration are still possible, but traffic will be categorized in the Default Bearer - * @see TS 103 029 V3.1.1 clause 7.2.2 - */ - testcase TC_IMSEPC_DeRegistration_UE_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_userRadioEnabled ( v_ueA, false, true ); - f_mtc_check_TP_EPC_6017_01 ( v_config.mxA, false , v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_02 ( v_ueA, v_config.gmA ); - f_mtc_check_TP_EPC_6018_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_DeRegistration_UE_0001 - - /** - * @desc IMS De-registration. - * On UE A de-registration, the S-CSCF performs S-CSCF-initiated termination of active - * session. P-CSCF will act on this event and signals to PCRF termination of the SIP session bearers. - * EPC removes the SIP Session bearer. - * Media cannot be exchange any longer on previous SIP Session bearer. - * The S-CSCF answers to the de-registration. - * The P-CSCF signals to PCRF the termination of IMS signalling session. - * EPC removes IMS signalling bearer. - */ - testcase TC_IMSEPC_DeRegistration_UE_Active_Session_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - f_mtc_check_TP_EPC_6021_01 ( v_config.mxA, false ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6012_02 ( v_config.mxA , v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_DeRegistration_UE_Active_Session_0001 - - /** - * @desc IMS De-registration. - * On administrative de-registration, S-CSCF notifies the UE A and P-CSCF about the event. - * P-CSCF signals to PCRF the termination of the IMS signalling session. - * EPC removes the IMS signalling bearer. - * Initial registration are still possible, but traffic will be categorized in the Default Bearer. - */ - testcase TC_IMSEPC_DeRegistration_Administrative_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6024_01 ( v_config.mw, v_ueA ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_02 ( v_ueA, v_config.gmA ); - f_mtc_check_TP_EPC_6018_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_DeRegistration_Administrative_0001 - - /** - * @desc IMS De-registration. - * On registration expiration, P-CSCF signals to PCRF the termination of the IMS signalling session. - * EPC removes the IMS signalling bearer. - * Initial registration are still possible, but traffic will be categorized in the Default Bearer. - */ - testcase TC_IMSEPC_DeRegistration_Expiration_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6026_01 ( v_config.rx, v_ueA ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_02 ( v_ueA, v_config.gmA ); - f_mtc_check_TP_EPC_6018_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_DeRegistration_Expiration_0001 - } // End of group imsRegistrationAndAFSignallingBearer - - group sipSessionAndSessionBearer { - group sipSessionEstablishment { - - /** - * @desc Originating Leg - With SDP Negotiation in INVITE/200 OK. - * On successful call setup, the P-CSCF should derive from the SDP offer and answer, descriptions of the Service Data Flow. - * These are pushed towards EPC as request for creation of adequate bearers. EPC creates based on the EPC's operator policies the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. Media transport is possible only after the successful establishment of the session. - * Media negotiation happens during INVITE/200 OK (UE A sends SDP-offer, UE B responds with SDP-answer) - * @see TS 103 029 V3.1.1 clause 7.3.1.1.1 - */ - testcase TC_IMSEPC_Session_Establishment_Originating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Establishment_Originating_0001 - - /** - * @desc Originating Leg - With SDP Negotiation in 200 OK/ACK. - * On successful call setup, the P-CSCF should derive from the SDP offer and answer, - * descriptions of the Service Data Flow. These are pushed towards EPC as request for - * creation of adequate bearers. - * EPC creates based on the EPC's operator policies the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. - * Media transport is possible only after the successful establishment of the session. - * Media negotiation happens during 200 OK / ACK (UE B sends SDP-offer, UE A responds - * with SDP-answer) - */ - testcase TC_IMSEPC_Session_Establishment_Originating_0002 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6029_03 ( v_config.mw, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Establishment_Originating_0002 - - /** - * @desc Originating Leg - Without SDP Negotiation in the initial SIP transaction. - * On successful call setup without SDP negotiation (no SDP-offer/answer in the initial SIP INVITE Request / 200 OK Response / ACK Request), there is no request for establishing media bearers from the P-CSCF towards EPC. - * Media transport is not possible either before or after this empty session setup - * @see TS 103 029 V3.1.1 clause 7.3.1.1.3 - */ - testcase TC_IMSEPC_Session_Establishment_Originating_0003 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6033_01 ( v_config.gmA, v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Establishment_Originating_0003 - - /** - * @desc Terminating Leg - With SDP Negotiation in INVITE/200 OK. - * On successful call setup, the P-CSCF should derive from the SDP offer and answer, - * descriptions of the Service Data Flow. These are pushed towards EPC as request for - * creation of adequate bearers. - * EPC creates based on the EPC's operator policies the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. - * Media transport is possible only after the successful establishment of the session. - * Media negotiation happens during INVITE/200 OK (UE A sends SDP-offer, UE B - * responds with SDP-answer) - */ - testcase TC_IMSEPC_Session_Establishment_Terminating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmB, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Establishment_Terminating_0001 - - /** - * @desc Terminating Leg - With SDP Negotiation in 200 OK/ACK. - * On successful call setup, the P-CSCF should derive from the SDP offer and answer, - * descriptions of the Service Data Flow. These are pushed towards EPC as request for - * creation of adequate bearers. - * EPC creates based on the EPC's operator policies the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. - * Media transport is possible only after the successful establishment of the session. - * Media negotiation happens during 200 OK / ACK (UE B sends SDP-offer, UE A responds - * with SDP-answer) - */ - testcase TC_IMSEPC_Session_Establishment_Terminating_0002 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6029_03 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6029_03 ( v_config.gmB, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Establishment_Terminating_0002 - - /** - * @desc Terminating Leg - Without SDP Negotiation in the initial SIP transaction. - * On successful call setup without SDP negotiation (no SDP-offer/answer in the initial SIP - * INVITE Request / 200 OK Response / ACK Request), there is no request for establishing - * media bearers from the P-CSCF towards EPC. - * Media transport is not possible either before or after this empty session setup. - */ - testcase TC_IMSEPC_Session_Establishment_Terminating_0003 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6033_01 ( v_config.gmA, v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Establishment_Terminating_0003 - } // End of group sipSessionEstablishment - - group sipSessionModification { - - /** - * @desc Originating Leg - With removal of SDF (e.g. Call-Hold). - * On successful call hold, the P-CSCF should derive from the SDP offer and answer, - * updates for the Service Data Flows. These are pushed towards EPC as request for - * modification of the previously created bearers. - * EPC modifies, based on the EPC's operator policies, the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. - * Media transport is possible, after the successful modification of the session, only on the - * remaining active Service Data Flows. - */ - testcase TC_IMSEPC_Session_Modification_Originating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Modification_Originating_0001 - - /** - * @desc Originating Leg - With addition of SDF (e.g. Call-Resume). - * On successful call resume, the P-CSCF should derive from the SDP offer and answer, - * updates for the Service Data Flows. These are pushed towards EPC as request for - * modification of the previously created bearers. - * EPC modifies, based on the EPC's operator policies, the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. - * Media transport is possible, after the successful modification of the session, on any new - * and also on the remaining active Service Data Flows. - */ - testcase TC_IMSEPC_Session_Modification_Originating_0002 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmB, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Modification_Originating_0002 - - /** - * @desc Terminating Leg - With removal of SDF (e.g. Call-Hold). - * On successful call hold, the P-CSCF should derive from the SDP offer and answer, - * updates for the Service Data Flows. These are pushed towards EPC as request for - * modification of the previously created bearers. - * EPC modifies, based on the EPC's operator policies, the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. - * Media transport is possible, after the successful modification of the session, only on the - * remaining active Service Data Flows. - */ - testcase TC_IMSEPC_Session_Modification_Terminating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmB, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Modification_Terminating_0001 - - /** - * @desc Terminating Leg - With addition of SDF (e.g. Call-Resume). - * On successful call resume, the P-CSCF should derive from the SDP offer and answer, - * updates for the Service Data Flows. These are pushed towards EPC as request for - * modification of the previously created bearers. - * EPC modifies, based on the EPC's operator policies, the bearers for media. - * When transporting media, the EPC will employ the respective bearer's characteristics. - * Media transport is possible, after the successful modification of the session, on any new - * and also on the remaining active Service Data Flows. - */ - testcase TC_IMSEPC_Session_Modification_Terminating_0002 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmB, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx); - f_mtc_check_TP_EPC_6012_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Modification_Terminating_0002 - } // End of group - - group sipSessionRelease { - - /** - * @desc Originating Leg - * On call release, the P-CSCF should trigger the removal of all relevant previously created bearers. - * EPC removes the bearers for media. - * Media transport is no longer possible, after the session release. - */ - testcase TC_IMSEPC_Session_Release_Originating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - f_mtc_check_TP_EPC_6010_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Release_Originating_0001 - - /** - * @desc Terminating Leg - * On call release, the P-CSCF should trigger the removal of all relevant previously created bearers. - * EPC removes the bearers for media. - * Media transport is no longer possible, after the session release. - */ - testcase TC_IMSEPC_Session_Release_Terminating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - f_mtc_check_TP_EPC_6010_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Release_Terminating_0001 - } // End of group sipSessionRelease - - group sipSessionAbortReject { - - /** - * @desc Originating Leg - * On session abort, the P-CSCF should trigger the removal of all relevant early-media bearers previously created. - * EPC removes the bearers for early-media. - * Media transport is no longer possible, after the session abort. - */ - testcase TC_IMSEPC_Session_Abort_Originating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6027_06 ( v_config.mxA, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6027_06 ( v_config.gmA, false ); - // UE A sends media to UE B - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - // UE B sends media to UE A - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - f_mtc_check_TP_EPC_6034_02 ( v_config.gmA ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Abort_Originating_0001 - - /** - * @desc Terminating Leg - * On session abort, the P-CSCF should trigger the removal of all relevant early-media bearers previously created. - * EPC removes the bearers for early-media. - * Media transport is no longer possible, after the session abort. - */ - testcase TC_IMSEPC_Session_Abort_Terminating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6027_06 ( v_config.mxA, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6027_06 ( v_config.gmA, false ); - // UE A sends media to UE B - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - // UE B sends media to UE A - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6034_02 ( v_config.gmA ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Abort_Terminating_0001 - - /** - * @desc Originating Leg - * On session reject, the P-CSCF should trigger the removal of all relevant previously created early-media bearers. - * EPC removes the bearers for early-media. - * Media transport is no longer possible, after the session reject. - */ - testcase TC_IMSEPC_Session_Reject_Originating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6027_06 ( v_config.mxA, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6027_06 ( v_config.gmA, false ); - // UE A sends media to UE B - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - // UE B sends media to UE A - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - f_mtc_check_TP_EPC_6034_04 ( v_config.mxA ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_Reject_Originating_0001 - - /** - * @desc Terminating Leg - * On session reject, the P-CSCF should trigger the removal of all relevant previously created early-media bearers. - * EPC removes the bearers for early-media. - * Media transport is no longer possible, after the session reject - */ - testcase TC_IMSEPC_Session_RejectTerminating_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - f_mtc_check_TP_EPC_6027_06 ( v_config.mxA, false ); - f_mtc_check_TP_EPC_6013_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6014_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6027_06 ( v_config.gmA, false ); - // UE A sends media to UE B - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - // UE B sends media to UE A - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, true ); - f_mtc_check_TP_EPC_6034_04 ( v_config.mxA ); - f_mtc_check_TP_EPC_6022_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6009_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Session_RejectTerminating_0001 - } // End of group sipSessionAbortReject - - group epcInitiatedBearerModification { - - /** - * @desc EPC Initiated Bearer Modification - * On removal of all bearers, EPC PCRF will notify IMS P-CSCF that Rx session should be aborted. - * IMS will take action and terminate all ongoing SIP sessions and the IMS registration. - */ - testcase TC_IMSEPC_Bearer_Modification_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_EPC_CALL v_config; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.rx := f_cf_create_monitor ( c_rx ); - v_config.mw := f_cf_create_monitor ( c_mw ); - v_config.sgi := f_cf_create_monitor ( c_sgi ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_epc_call_up ( v_config ); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - f_mtc_userInitiateCall ( v_ueA, v_userInfoB ); - - // test body - // EPC removes relevant_bearers for SIP_session - f_mtc_check_TP_EPC_6005_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6006_01 ( v_config.rx ); - f_mtc_check_TP_EPC_6010_01 ( v_config.gmA, false ); - f_mtc_check_TP_EPC_6003_02 ( v_config.sgi, false ); - - // postamble - f_PO_user_home_deregistration ( v_ueB ); - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_epc_call_down ( v_config ); - f_cf_adapter_down ( ); - } // End of TC TC_IMSEPC_Bearer_Modification_0001 - } // End of group epcInitiatedBearerModification - } // End of group sipSessionAndSessionBearer - -} // End of module AtsImsIot_TestCases_EPC \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn deleted file mode 100644 index 608dde7..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn +++ /dev/null @@ -1,386 +0,0 @@ -/** - * @author STF 370 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions. - */ -module AtsImsIot_TestCases_MESS { - - // LibCommon - import from LibCommon_VerdictControl all; - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - import from LibIms_UpperTester all; - // LibIot - import from LibIot_TestConfiguration all; - import from LibIot_TestInterface all; - import from LibIot_PIXITS all; - // AtsImsIot - import from AtsImsIot_TP_behavior_GM all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_Behavior all; // FIXME To be removed - import from LibIot_VxLTE_Functions all; - import from AtsImsIot_Functions all; - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - import from AtsImsIot_TestSystem all; - import from AtsImsIot_Templates all; - import from AtsImsIot_TypesAndValues all; - - /** - * @desc IMS network shall support SIP messages greater than 1300 bytes. - * - */ - testcase TC_VxLTE_INT_MESSAGE_01() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - f_cf_createVxLteMonitor(); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); -// var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var CF_INT_CALL v_config := {v_gmA, omit, omit, omit, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_VxLteMonitor_Up(); - - // preamble - f_cf_int_call_up(v_config); - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - log("**** TC_VxLTE_INT_MESSAGE_01: Preamble done. ****"); - - // test body - f_mtc_userSendMessage(v_ueA, f_getMessageBody(1301)); - f_mtc_check_TP_GM_PCSCF_MESSAGE_01(v_gmA); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxA); -// f_mtc_check_TP_IMS_4002_01_ic(v_ic); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxB); - f_mtc_userCheckMessageReceipt(v_ueB); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - log("**** TC_IMS_MESS_0001: Postamble done. ****"); - - //unmap/disconnet component ports - f_cf_VxLteMonitor_Down(); - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - - - /** - * @desc - * IMS network handles messaging with SIP identity correctly without - * topology hiding. (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.1) - */ - testcase TC_IMS_MESS_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getSipUserId(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5097_05_gm(v_gmA, false); // message not removed from port queue - //f_mtc_check_TP_IMS_5097_07_gm(v_gmA, false); // message removed from port queue - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5097_05_ic(v_ic, false);// message not removed from port queue - //f_mtc_check_TP_IMS_5097_07_ic(v_ic, false);// message removed from port queue - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5117_02_gm(v_gmB, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_gm(v_gmB, false);// message removed from port queue - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5117_02_ic(v_ic, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_ic(v_ic, false);// message removed from port queue - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - - /** - * @desc - * IMS network handles messaging with TEL URI identities correctly - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.2) - */ - testcase TC_IMS_MESS_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getTelUserId(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getTelUserId(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5097_07_gm(v_gmA, false); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5097_07_ic(v_ic, false); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5117_02_gm(v_gmB, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_gm(v_gmB, true);// message not removed from port queue - f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false);// message removed from port queue - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5117_02_ic(v_ic, true);// message not removed from port queue - f_mtc_check_TP_IMS_5118_01_ic(v_ic, true);// message not removed from port queue - f_mtc_check_TP_IMS_5117_06_ic(v_ic, false);// message removed from port queue - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - /** - * @desc - * IMS network handles messaging with DNS/ENUM lookup procedure correctly - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.3) - */ - testcase TC_IMS_MESS_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var EnumQuery v_enumQuery; - var EnumResponse v_enumResponse; - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit}; - v_config.naptr := f_cf_create_monitor ( c_naptr ); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getTelUserId(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getTelUserId(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5097_08_gm(v_gmA, false); - v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( v_config.naptr ); // ENUM query - //TODO check ENUM query message as described in the spec. - v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( v_config.naptr ); // ENUM response - //TODO check ENUM response message as described in the spec. - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5097_08_ic(v_ic, false); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5117_06_ic(v_ic, false); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - /** - * @desc - * IMS network handles messaging while roaming correctly. - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.4) - */ - testcase TC_IMS_MESS_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_call_up(v_gmA, v_mxA, v_ic, v_mxB); - - // preamble - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - f_PR_user_roaming_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5108_02_ic(v_ic); // TODO must be checked - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageReceipt(v_ueB); - - f_mtc_check_TP_IMS_5118_01_gm(v_gmA, false); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5118_01_ic(v_ic, false); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_roaming_deregistration(v_ueB); - f_cf_roam_call_down(v_gmA, v_mxA, v_ic, v_mxB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } - - /** - * @desc - * IMS network handles messaging correctly when receiving user is nit registered. - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.5) - */ - testcase TC_IMS_MESS_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5114_02_gm(v_gmA); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5114_02_ic(v_ic); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageNotDelivered(v_ueA); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - } - - - /** - * @desc - * IMS network handles messaging correctly when receiving user is nit registered. - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.4.6) - */ - testcase TC_IMS_MESS_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, omit, omit}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_call_up(v_config); - - // preamble - f_PR_user_home_registration(v_ueA, f_getAnyValidUser(PX_EUT_A)); - f_PR_user_home_registration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // test body - f_mtc_userSendMessage(v_ueA, "test"); - - f_mtc_check_TP_IMS_5108_06_gm(v_gmA); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxA); - f_mtc_check_TP_IMS_5108_06_ic(v_ic); - // FIXME Check if it still usefull f_mtc_check_message_mx(v_mxB); - - f_mtc_userCheckMessageNotDelivered(v_ueA); - - // postabmle - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_cf_int_call_down(v_config); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } -} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn deleted file mode 100644 index 748a1a3..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn +++ /dev/null @@ -1,5116 +0,0 @@ -/** - * @author STF 407 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions. - */ -module AtsImsIot_TestCases_RCS { - - // LibSip - import from LibSip_SIPTypesAndValues all; - // LibIms - import from LibIms_UpperTester all; - // LibIot - import from LibIot_TestConfiguration all; - import from LibIot_TestInterface all; - import from LibIot_PIXITS all; - // AtsImsIot - import from AtsImsIot_TP_behavior_GM all; - import from AtsImsIot_Behavior all; - import from AtsImsIot_TypesAndValues all; - import from AtsImsIot_Functions all; - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - import from AtsImsIot_TestSystem all; - - /** - * @desc User A capabilities (RCS-e services Tags) - */ - modulepar charstring PX_RCSE_A := ""; - /** - * @desc User B capabilities (RCS-e services Tags) - */ - modulepar charstring PX_RCSE_B := ""; - - /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between two users in their home network can be performed. User B must be - * Registered. - */ - testcase TD_IMS_CAP_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - - // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_int_as_up ( v_config ); - - // preamble - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - - // check (OPTIONS + 200 OK exchange) - f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); - f_mtc_check_response ( v_config.mxA, c_statusLine200, PX_RCSE_B ); - - // postamble - f_PO_user_home_deregistration ( v_ueA ); - f_PO_user_home_deregistration ( v_ueB ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueA ); - f_cf_user_down ( v_ueB ); - f_cf_int_as_down ( v_config ); - f_cf_adapter_down ( ); - } - - /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between one user in its home network and another in visited network can be - * performed. User B must be Registered. - */ - testcase TD_IMS_CAP_0002 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_ROAM_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - - // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_roam_as_up ( v_config ); - f_cf_roam_call_up ( v_config.gmA, v_config.mxA, v_config.ici, v_config.mxB ); - - // preamble - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - - // check (OPTIONS + 200 OK exchange) - f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); - f_mtc_check_response ( v_config.mxA, c_statusLine200, PX_RCSE_B ); - - // postamble - f_PO_user_home_deregistration ( v_ueA ); - f_PO_user_home_deregistration ( v_ueB ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueA ); - f_cf_user_down ( v_ueB ); - f_cf_roam_as_down ( v_config ); - f_cf_adapter_down ( ); - } - - /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between two users in their home network can be performed. User B must be not - * Registered. - */ - testcase TD_IMS_CAP_0003 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - - // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_int_as_up ( v_config ); - - // preamble - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - - // test body - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - - // check (OPTIONS + 480 exchange) - f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); - f_mtc_check_response_mx ( v_config.mxA, c_statusLine480 ); - - // postamble - f_PO_user_home_deregistration ( v_ueA ); - f_PO_user_home_deregistration ( v_ueB ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueA ); - f_cf_user_down ( v_ueB ); - f_cf_int_as_down ( v_config ); - f_cf_adapter_down ( ); - } - - /** - * @desc IMS network supports capability discovery and OPTIONS messages exchange - * between two users in their home network can be performed. User B must be - * Registered. - */ - testcase TD_IMS_CAP_0004 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var CF_INT_AS v_config; - var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - - // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := omit; - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_int_as_up ( v_config ); - - // preamble - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - f_mtc_triggerUserCommand ( v_ueB, "Force user B to be not provisionned for RCS-e" ); // Trigger UE B - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - - // check (OPTIONS + 404 exchange) - f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); - f_mtc_check_response_mx ( v_config.mxA, c_statusLine404 ); - - // postamble - f_PO_user_home_deregistration ( v_ueA ); - f_PO_user_home_deregistration ( v_ueB ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueA ); - f_cf_user_down ( v_ueB ); - f_cf_int_as_down ( v_config ); - f_cf_adapter_down ( ); - } - - /** - * @desc IMS network supports properly presence service when a watcher - * subscribes to presence information for a presentity that it’s - * located in a different network. - * @see TS 102 901-2 V2.1.2 clause 4.5.1.1 - */ - testcase TC_IMS_PRES_0001() runs on ImsTestCoordinator system IotSystemInterface { - var CF_ROAM_AS v_config; - var ImsUserInfo v_userInfoA := f_getPresUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getPresUser ( PX_EUT_B ); - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - - // create components - v_config.gmA := f_cf_create_monitor ( c_gm_A ); - v_config.gmB := f_cf_create_monitor ( c_gm_B ); - v_config.ici := f_cf_create_monitor ( c_ic ); - v_config.mxA := f_cf_create_monitor ( c_mx_A ); - v_config.mxB := f_cf_create_monitor ( c_mx_B ); - v_config.iscA := omit; - v_config.iscB := f_cf_create_monitor ( c_isc_B ); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_roam_as_up ( v_config ); - - // preamble - f_mtc_userRegistration ( v_ueA, v_userInfoA ); - f_mtc_userRegistration ( v_ueB, v_userInfoB ); - - // test body - - // check - PUBLISH + 200 OK (from User B to IMS A that forwards it to AS B) - f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); - f_mtc_check_publish_mx ( v_config.mxB ); - f_mtc_check_response_mx ( v_config.mxB, c_statusLine200 ); - - // check (OPTIONS + 200 OK exchange) - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - f_mtc_check_options ( v_config.mxB, PX_RCSE_A ); - f_mtc_check_response ( v_config.mxA, c_statusLine200, PX_RCSE_B ); - - f_mtc_userSubscribeToPresenceInformation ( v_ueA ); - // check - SUBSCRIBE (from User A to AS B) - f_mtc_check_TP_IMS_5108_07_gm ( v_config.gmA, false ); - f_mtc_check_subscribe ( v_config.mxB ); - f_mtc_check_TP_IMS_5108_07_isc ( v_config.iscB, false ); - - // check - 200 OK - f_mtc_check_response_mx ( v_config.mxB, c_statusLine200 ); - f_mtc_check_response_mx ( v_config.mxA, c_statusLine200 ); - - f_mtc_triggerUserCommand ( v_ueB, "verify reception of an authorization request from user A"); - f_mtc_userAuthorizationToPeer ( v_ueB ); - f_mtc_userCheckPresenceInformation ( v_ueA ); - - // postamble - f_PO_user_home_deregistration ( v_ueA ); - f_PO_user_home_deregistration ( v_ueB ); - - //unmap/disconnet component ports - f_cf_user_down ( v_ueA ); - f_cf_user_down ( v_ueB ); - f_cf_roam_as_down ( v_config ); - f_cf_adapter_down ( ); - - } //end testcase TC_IMS_PRES_0001 - - /** - * @desc IMS network supports properly presence service when a watcher subscribes - * to presence information for a presentity that it’s located in a different - * network. - * @see TS 102 901-2 V2.1.2 clause 4.5.1.2 - */ - testcase TC_IMS_PRES_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getPresUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getPresUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); - - f_mtc_userCheckPresenceStatus(v_ueB);//Test Sequence Step 2 - f_mtc_userSubscribeToPresenceInformation(v_ueA);//Test Sequence Step 3 - - // check (OPTIONS + 200 OK exchange) - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - f_mtc_check_options ( v_mxB, PX_RCSE_A ); - f_mtc_check_response ( v_mxA, c_statusLine200, PX_RCSE_B ); - - //check 1 - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmA, false); // Check1 - f_mtc_check_subscribe(v_mxA); - f_mtc_check_subscribe(v_mxB); - f_mtc_check_TP_IMS_5108_07_isc(v_iscB,false); // Check1 - - //check 2 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_triggerUserCommand ( v_ueB, "verify reception of an authorization request from user A"); - f_mtc_userAuthorizationToPeer(v_ueB);//Test Sequence Step 5 - f_mtc_userCheckPresenceInformation(v_ueA);//Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_PRES_0002 - - /** - * @desc IMS network supports properly presence service when a watcher subscribes - * to presence information for a presentity that it’s located in a different - * network and does not authorize the watcher to be informed of his presence - * information. - * @see TS 102 901-2 V2.1.2 clause 4.5.1.3 - */ - testcase TC_IMS_PRES_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getPresUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getPresUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - // check (OPTIONS + 200 OK exchange) - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - f_mtc_check_options ( v_mxB, PX_RCSE_A ); - f_mtc_check_response ( v_mxA, c_statusLine200, PX_RCSE_B ); - - f_mtc_userSubscribeToPresenceInformation(v_ueA);//Test Sequence Step 1 - - //check 1 - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmA, false); // Check1 - f_mtc_check_subscribe(v_mxA); - f_mtc_check_subscribe(v_mxB); - f_mtc_check_TP_IMS_5108_07_isc(v_iscB,false); // Check1 - - f_mtc_userCheckNoPresenceInformation(v_ueA);//Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_PRES_0003 - - /** - * @desc IMS network supports properly presence service when a watcher subscribes - * to a resource list containing one or more presentities located in - * different networks. - * @see TS 102 901-2 V2.1.2 clause 4.5.1.4 - */ - testcase TC_IMS_PRES_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getPresUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getPresUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); - - //check 1 - PUBLISH - f_mtc_check_publish_mx(v_mxA); - f_mtc_check_TP_IMS_5097_13_ic(v_ic, false); // Check1 - f_mtc_check_publish_mx(v_mxB); - f_mtc_check_TP_IMS_5097_13_isc(v_iscB, false); // Check1 - - f_mtc_userCheckPresenceStatus(v_ueB);//Test Sequence Step 2 - - // check (OPTIONS + 200 OK exchange) - f_mtc_triggerUserCommand ( v_ueA, "select a contact of user B" ); // Trigger UE A to send OPTIONS to UE B - f_mtc_check_options ( v_mxB, PX_RCSE_A ); - f_mtc_check_response ( v_mxA, c_statusLine200, PX_RCSE_B ); - - f_mtc_userSubscribeToPresenceResourceList(v_ueA);//Test Sequence Step 3 - - //check 2 - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmA, false); // Check2 - f_mtc_check_subscribe(v_mxA); - f_mtc_check_subscribe(v_mxB); - f_mtc_check_TP_IMS_5108_07_isc(v_iscB,false); // Check2 - - //check 3 - 200 OK - f_mtc_check_TP_IMS_5313_01_isc(v_iscB, false); // Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5313_01_ic(v_ic, false); // Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckPresenceInformation(v_ueA);//Test Sequence Step 4 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_PRES_0004 - - /** - * @desc IMS network supports properly presence service when a watcher subscribes - * to a resource list containing one or more presentities located in - * different networks. - * @see TS 102 901-2 V2.1.2 clause 4.5.1.5 - */ - testcase TC_IMS_PRES_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getPresUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getPresUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_triggerUserCommand ( v_ueB, "publish presence and capability information"); - - f_mtc_userCheckPresenceStatus(v_ueB);//Test Sequence Step 2 - - f_mtc_userSubscribeToPresenceResourceList(v_ueA);//Test Sequence Step 3 - - //check 1 - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmA, false); // Check1 - f_mtc_check_subscribe(v_mxA); - f_mtc_check_subscribe(v_mxB); - f_mtc_check_TP_IMS_5108_07_isc(v_iscB,false); // Check1 - - //check 2 - 200 OK - f_mtc_check_TP_IMS_5313_01_isc(v_iscB, false); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5313_01_ic(v_ic, false); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckPresenceInformation(v_ueA);//Test Sequence Step 4 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_PRES_0005 - - /** - * @desc 1-to-1 chat standard procedure - interworking - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users in their home network can be performed. - * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.1 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - * @see RFC 4976 clause 5 - */ - testcase TC_IMS_CHAT_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1,2 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true); // Check1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 2 - - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - - // check MESSAGE + 200 OK exchange - f_mtc_check_message ( v_gmB ); - f_mtc_check_message ( v_iscB ); - f_mtc_check_message ( v_iscA ); - f_mtc_check_message ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - - f_mtc_userCheckChatInfo(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerChatInfo(v_ueA); //Test Sequence Step 3 - f_mtc_userAnswerChat(v_ueB); //Test Sequence Step 4 - - // checks 3 (2xx) - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false); // Check 3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check 3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckChating(v_ueA,v_ueB); //Test Sequence Step 5 - f_mtc_check_TP_MSRP_9000_03(v_gmB, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_B receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_04(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3-b: UE B responds with 200 OK to UE A - - f_mtc_EndChat(v_ueA); //Test Sequence Step 6 - - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0001 - - /** - * @desc 1-to-1 chat standard procedure - roaming. - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. - * @see TS 102 901-2 V2.1.2 clause 4.5.3.1.2 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - - // check 1,2,3 (INVITE) - f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmA, true); // Check2 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true); // Check2 - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false); // Check3 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false); // Check3 - - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - - // check MESSAGE + 200 OK exchange - f_mtc_check_message ( v_gmB ); - f_mtc_check_message ( v_iscB ); - f_mtc_check_message ( v_iscA ); - f_mtc_check_message ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - - f_mtc_userCheckChatInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userAnswerChat(v_ueA); //Test Sequence Step 4 - - f_mtc_userCheckChating(v_ueB,v_ueA); //Test Sequence Step 5 - f_mtc_check_TP_MSRP_9000_03(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_A receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_04(v_gmB, false, v_inviteReq, v_inviteResp); // CheckMSRP3-b: UE_B sends the RECIVE_MSRP - - f_mtc_EndChat(v_ueB); //Test Sequence Step 6 - - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 7 - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0002 - - /** - * @desc Several messages prior to establishment of 1-to-1 chat - interworking - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users in their home network can be performed. User B must wait until receiving several messages from User A before accepting the chat invitation. - * @see TS 102 901-2 V2.1.2 clause 4.5.3.2.1 - */ - testcase TC_IMS_CHAT_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1,2 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true); // Check1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 2 - - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - - // check MESSAGE + 200 OK exchange - f_mtc_check_message ( v_gmB ); - f_mtc_check_message ( v_iscB ); - f_mtc_check_message ( v_iscA ); - f_mtc_check_message ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - - f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 - - // checks 3 (2xx) - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false); // Check 3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check 3 - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmA, true, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckChating(v_ueA,v_ueB); //Test Sequence Step 3 - f_mtc_check_TP_MSRP_9000_03(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_A receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_04(v_gmB, false, v_inviteReq, v_inviteResp); // CheckMSRP3-b: UE_B sends the RECIVE_MSRP - - f_mtc_EndChat(v_ueA); //Test Sequence Step 4 - - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0003 - - /** - * @desc Several messages prior to establishment of 1-to-1 chat - roaming (optional). - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. User B must wait until receiving several messages from User A before accepting the chat invitation - * @see TS 102 901-2 V2.1.2 clause 4.5.3.2.2 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - - // check 1,2,3 (INVITE) - f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmA, true); // Check2 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true); // Check2 - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false); // Check3 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false); // Check3 - - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - - // check MESSAGE + 200 OK exchange - f_mtc_check_message ( v_gmB ); - f_mtc_check_message ( v_iscB ); - f_mtc_check_message ( v_iscA ); - f_mtc_check_message ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscA, c_statusLine200 ); - f_mtc_check_response_mx ( v_iscB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - - f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 - - f_mtc_userCheckChating(v_ueB,v_ueA); //Test Sequence Step 3 - f_mtc_check_TP_MSRP_9000_03(v_gmB, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_B receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_04(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3-b: UE B responds with 200 OK to UE A - - f_mtc_EndChat(v_ueB); //Test Sequence Step 4 - - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0004 - - /** - * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users in their home network can be performed. - * User B rejects the chat invitation. - * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.5 - */ - testcase TC_IMS_CHAT_0005_RemovedInRel_e ( ) runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 1 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 1 - - f_mtc_userCheckChatInfo(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerChatInfo(v_ueA); //Test Sequence Step 3 - f_mtc_userCheckChatRejected(v_ueB); //Test Sequence Step 4 - - // check 2 (ACK) - f_mtc_check_TP_IMS_5107_02_gm(v_gmA, false); // Check 1 - f_mtc_check_ack_mx(v_mxA); - f_mtc_check_TP_IMS_5107_02_ic(v_ic, false); // Check 1 - f_mtc_check_ack_mx(v_mxB); - - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0005 - - /** - * @desc IMS network supports instant messaging (IM) service and messages exchange - * between two users, one user in its home network and one user roaming can - * be performed. User B rejects the chat invitation. - * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.6 - */ - testcase TC_IMS_CHAT_0006_RemovedInRel_e ( ) runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckChatInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userCheckChatRejected(v_ueA); //Test Sequence Step 4 - - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0006 - - /** - * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users in their home network can be performed. - * User B rejects the chat invitation. - * MSC was Fully changed in RCS-e - * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.7 - */ - testcase TC_IMS_CHAT_0007_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - - f_mtc_userCheckChatInfo(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerChatInfo(v_ueA); //Test Sequence Step 3 - f_mtc_userInformedNoAnswer(v_ueA); //Test Sequence Step 5 - - // check 1 (CANCEL) - f_mtc_check_TP_IMS_5107_03_gm(v_gmA, false); // Check 1 - f_mtc_check_cancel_mx(v_mxA); - f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check 1 - f_mtc_check_cancel_mx(v_mxB); - - f_mtc_userCheckChatCancelled(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckChatTerminated(v_ueA); //Test Sequence Step 7 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0007_Rcs_2 - - /** - * @desc Switching to 1-to-many chat - interworking. - * IMS network supports 1-to-many IM/Chat service and messages exchange between two users in their home network can be performed. - * User A switching 1-to-1 chat to 1-to-many chat by inviting User C - * @see TS 102 901-2 V2.1.2 clause 4.5.3.3.1 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueC, v_userInfoC); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_4_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); // Test Sequence Step 5 - - // test body - f_mtc_userInitiateChatOneToMany (v_ueA, v_userInfoB, v_userInfoC); // Test Sequence Step 6 - Step 2 - - f_mtc_check_TP_MSRP_9000_06(v_gmB, true); // Step3: ueA sends INVITE - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // CheckMSRP1 - // checks 2,3 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, false); // Check 2 - Step 9 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); // Check 2 - Step 9 - f_mtc_check_TP_MSRP_9000_02(v_gmA, false, c_statusLine200); // Check3 - f_mtc_userCheckChatingConf(v_ueA, v_ueB); // Check 3-4 - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // Step 28 - - f_mtc_EndChat(v_ueB); // Step 43 - f_mtc_check_TP_IMS_5107_01_gm(v_gmB, false); // Check send bye on gmB - Step 43A - - // checks 200 OK - f_mtc_check_TP_IMS_5107_02_gm(v_gmB, false); // Step 59 - - // UE_A subscrbes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueA); // Step 60 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmA, false); // Step 60 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); // Step 63 - // check - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmA, v_userInfoA, false); // Step 65 - - // UE_B subscribes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueB); // Step 69 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmB, false); // Step 69 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); // Step 82 - // check6 - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmB, v_userInfoB, false); // Step 89 - - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); //Test Sequence Step 10 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 10 //userC - - f_mtc_EndChat(v_ueA); - f_mtc_EndChat(v_ueC); - - f_mtc_userCheckChatEnded(v_ueC); - f_mtc_userCheckChatEnded(v_ueA); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0007 - - /** - * @desc IMS network supports instant messaging (IM) service and messages exchange - * between two users, one user in its home network and one user roaming can - * be performed. User B rejects the chat invitation. - * @see TS 102 901-2 V2.1.2 clause 4.5.2.1.8 - */ - testcase TC_IMS_CHAT_0008_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - - f_mtc_userCheckChatInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userInformedNoAnswer(v_ueB); //Test Sequence Step 5 - - // check 1 (CANCEL) - f_mtc_check_TP_IMS_5107_03_gm(v_gmA, false); // Check 1 - f_mtc_check_cancel_mx(v_mxA); - f_mtc_check_TP_IMS_5107_03_ic(v_ic, false); // Check 1 - f_mtc_check_cancel_mx(v_mxB); - - f_mtc_userCheckChatCancelled(v_ueA); //Test Sequence Step 6 - f_mtc_userCheckChatTerminated(v_ueB); //Test Sequence Step 7 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0008_Rcs_2 - - /** - * @desc Switching to 1-to-many chat - roaming (optional). - * IMS network supports 1-to-many IM/Chat service and messages exchange between two users, - * one user in its home network and one user roaming can be performed. - * User B switching 1-to-1 chat to 1-to-many chat by inviting User C - * @see TS 102 901-2 V2.1.2 clause 4.5.3.3.2 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0008() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueC, v_userInfoC); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_4_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); // Test Sequence Step 5 - - // test body - f_mtc_userInitiateChatOneToMany (v_ueA, v_userInfoB, v_userInfoC); // Test Sequence Step 6 - Step 2 - - f_mtc_check_TP_MSRP_9000_06(v_gmB, true); // Step3: ueA sends INVITE - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // CheckMSRP1 - // checks 2,3 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, false); // Check 2 - Step 9 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); // Check 2 - Step 9 - f_mtc_check_TP_MSRP_9000_02(v_gmA, false, c_statusLine200); // Check3 - f_mtc_userCheckChatingConf(v_ueA, v_ueB); // Check 3-4 - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // Step 28 - - f_mtc_EndChat(v_ueA); // Step 54 - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check send bye on gmA - Step 54 - f_mtc_check_TP_IMS_5107_01_gm(v_gmB, false); // Check send bye on gmB - Step 65 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_gmA, c_statusLine200); // Step 77 - - // UE_B subscrbes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueB); // Step 78 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmB, false); // Step 78 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_gmB, c_statusLine200); // Step 87 - // check - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmA, v_userInfoA, false); // Step 92 - - // UE_A subscribes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueA); // Step 99 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmA, false); // Step 99 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_gmA, c_statusLine200); // Step 112 - // check6 - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmA, v_userInfoB, false); // Step 119 - - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); //Test Sequence Step 10 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 10 //userC - - f_mtc_EndChat(v_ueA); - f_mtc_EndChat(v_ueC); - - f_mtc_userCheckChatEnded(v_ueC); - f_mtc_userCheckChatEnded(v_ueA); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0008 - - /** - * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users in their home network can be performed. - * User B must explicitly accept the chat invitation - * @see TS 102 901-2 V2.1.2 clause 4.5.3.1.1 - */ - testcase TC_IMS_CHAT_0009_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1,2 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 2 - - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 - - // checks 3 (2xx) - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false); // Check 3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check 3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckPeerLeaveChatConf(v_ueA); //Test Sequence Step 9 - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 10 - - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 11 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0009_Rcs_2 - - /** - * @desc File transfer within 1-to-1 chat - interworking. - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users in their home network can be performed. - * User A starts file transfer with User B - * @see TS 102 901-2 V2.1.2 clause 4.5.3.4.1 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0009() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_4_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); // Test Sequence Step 5 - - // test body - f_mtc_userInitiateFt(v_ueA, v_userInfoB); // Step 2 - // Check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 - - // Check 3 - f_mtc_userCheckFtInfo(v_ueB); - f_mtc_userCheckPeerFtInfo(v_ueA); - f_mtc_userTriggerFtAccept(v_ueB); - - // Check 4 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Check 5 - f_mtc_check_TP_MSRP_9000_03(v_gmB, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_B receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_05(v_gmA, false); // CheckMSRP3-b: UE B sends report with success status (200 OK) to UE A - f_mtc_userCheckChating(v_ueA, v_ueB); // Step 42 - - f_mtc_EndChat(v_ueA); //Test Sequence Step 6 - - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0009 - - /** - * @desc IMS network supports instant messaging (IM) service and messages - * exchange between two users, one user in its home network and one - * user roaming can be performed. User B must explicitly accept the - * chat invitation. - * @see TS 102 901-2 V2.1.2 clause 4.5.3.1.2 - */ - testcase TC_IMS_CHAT_0010_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5046_01_gm(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 - - // checks 2 (2xx) - f_mtc_check_TP_IMS_5110_01_isc(v_iscA); // Check 2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5110_01_ic(v_ic); // Check 2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckPeerLeaveChatConf(v_ueA); //Test Sequence Step 9 - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 10 - - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 11 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0010_Rcs_2 - - /** - * @desc File transfer within 1-to-1 chat - roaming. - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. - * User B starts file transfer with User A - * @see TS 102 901-2 V2.1.2 clause 4.5.3.4.2 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0010() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_4_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); // Test Sequence Step 5 - - // test body - f_mtc_userInitiateFt(v_ueB, v_userInfoA); // Step 2 - // Check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmB, false); // Check1 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5108_03_isc(v_iscA, false, 0); // Check2 - - // Check 3 - f_mtc_userCheckFtInfo(v_ueA); - f_mtc_userCheckPeerFtInfo(v_ueB); - f_mtc_userTriggerFtAccept(v_ueA); - - // Check 4 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscA, false);// Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - // Check 5 - f_mtc_check_TP_MSRP_9000_03(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_B receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_05(v_gmB, false); // CheckMSRP3-b: UE B sends report with success status (200 OK) to UE A - f_mtc_userCheckChating(v_ueB, v_ueA); // Step 42 - - f_mtc_EndChat(v_ueB); //Test Sequence Step 6 - - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 7 - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0010 - - - - /** - * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during extension - * of 1-to-1 session to an Ad-hoc IM Conferences between users in their home network - * @see TS 102 901-2 V2.1.2 clause 4.5.3.2.1 - */ - testcase TC_IMS_CHAT_0011_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueA, v_userInfoB); //Test Sequence Step 1 - - f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckChating(v_ueB,v_ueA); //Test Sequence Step 3 - f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 4 - - // check 1 (INVITE) - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 1); // Check 1 - skip one INVITE when call is established - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5108_03_isc(v_iscA, false, 2); // Check 1 - - skip two INVITE when call is established - - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 6 - f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 8 - - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 10 - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 11 - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 12 - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 13 - f_mtc_userCheckPeerLeaveChatConf(v_ueA); //Test Sequence Step 14 - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 15 - - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 16 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0011_Rcs_2 - - /** - * @desc File transfer rejection within 1-to-1 chat - interworking. - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users in their home network can be performed. - * User A starts file transfer with User B, but User B rejects invitation - * @see TS 102 901-2 V2.1.2 clause 4.5.3.5.1 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0011() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_4_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); // Test Sequence Step 5 - - // test body - f_mtc_userInitiateFt(v_ueA, v_userInfoB); // Step 2 - // Check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 - - // Check 3 - f_mtc_userCheckFtInfo(v_ueB); - f_mtc_userRejectsFt(v_ueB); // Step 21- Test sequence 7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_gmB, c_statusLine603); // Step22 - - // Check 4 - 603 Decline - // FIXME Check if it still usefull f_mtc_check_response_mx(v_ic, c_statusLine603); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_gmA, c_statusLine603); - - // Check 5 - f_mtc_userCheckChating(v_ueA,v_ueB); // Test Sequence Step 9 - f_mtc_check_TP_MSRP_9000_03(v_gmB, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_B receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_04(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3-b: UE B responds with 200 OK to UE A - - f_mtc_EndChat(v_ueA); //Test Sequence Step 6 - - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0011 - - /** - * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during extension - * of 1-to-1 session to an Ad-hoc IM Conferences between users, one user in its - * home network and the other user roaming - * @see TS 102 901-2 V2.1.2 clause 4.5.3.2.2 - */ - testcase TC_IMS_CHAT_0012_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChat(v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckAutomaticalyAcceptedChat(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckChating(v_ueB,v_ueA); //Test Sequence Step 3 - - f_mtc_userInitiateChatConf (v_ueB, v_userInfoA); //Test Sequence Step 4 - - // check 1 (INVITE from IMS_B to IMS_A and 100 Trying from IMS_A to IMS_B) - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine100); - f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,3); // Check1 skip three packs with INVITE and 100 Trying - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine100); - - f_mtc_userCheckChatConfInfo(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckPeerChatConfInfo(v_ueA); //Test Sequence Step 6 - f_mtc_userJoinChatConf(v_ueA); //Test Sequence Step 7 - f_mtc_userCheckChatConfInfo(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 10 - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 11 - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 12 - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 13 - f_mtc_userCheckPeerLeaveChatConf(v_ueB); //Test Sequence Step 14 - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 15 - - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 16 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0012_Rcs_2 - - /** - * @desc File transfer rejection within 1-to-1 chat - roaming. - * IMS network supports 1-to-1 IM/Chat service and messages exchange between two users in their home network can be performed. - * User A starts file transfer with User B - * @see TS 102 901-2 V2.1.2 clause 4.5.3.5.2 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0012() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_4_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); // Test Sequence Step 5 - - // test body - f_mtc_userInitiateFt(v_ueA, v_userInfoB); // Step 2 - // Check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 - - // Check 3 - f_mtc_userCheckFtInfo(v_ueB); - f_mtc_userRejectsFt(v_ueB); // Step 21- Test sequence 7 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_gmB, c_statusLine603); // Step22 - - // Check 4 - 603 Decline - // FIXME Check if it still usefull f_mtc_check_response_mx(v_ic, c_statusLine603); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_gmA, c_statusLine603); - - // Check 5 - f_mtc_userCheckChating(v_ueA,v_ueB); // Test Sequence Step 9 - f_mtc_check_TP_MSRP_9000_03(v_gmB, false, v_inviteReq, v_inviteResp); // CheckMSRP3-a: UE_B receives the SEND_MSRP - f_mtc_check_TP_MSRP_9000_04(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3-b: UE B responds with 200 OK to UE A - - f_mtc_EndChat(v_ueA); //Test Sequence Step 6 - - f_mtc_userCheckChatEnded(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatEnded(v_ueA); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0012 - - /** - * @desc IMS network handles subsequent INVITEs, REFERs and NOTIFYs correctly - * during addition of user C to an Ad-hoc IM Conferences between users - * in their home network - * User B must explicitly accept the chat invitation - * @see TS 102 901-2 V2.1.2 clause 4.5.3.3.1 - */ - testcase TC_IMS_CHAT_0013_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueC); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueC, v_userInfoC); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - - f_mtc_userInitiateChatConf (v_ueA, v_userInfoC); //Test Sequence Step 7 - - f_mtc_userCheckPeerChatConfInfo(v_ueC); //Test Sequence Step 8 - f_mtc_userJoinChatConf(v_ueC); //Test Sequence Step 9 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 10 //userC - - // checks 1,2 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, true); // Check 1 - f_mtc_check_TP_IMS_5115_04_gm(v_gmB, false); // Check 2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_02_ic(v_ic, true); // Check 1 - f_mtc_check_TP_IMS_5115_04_ic(v_ic, false); // Check 2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckChatingConf(v_ueA,v_ueC); //Test Sequence Step 11 - f_mtc_userLeaveChatConf(v_ueC); //Test Sequence Step 12 - f_mtc_userCheckChatConfEnded(v_ueC); //Test Sequence Step 13 - f_mtc_userCheckPeerLeaveChatConf(v_ueA); //Test Sequence Step 14 //peer userC - - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 15 - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 16 - f_mtc_userCheckPeerLeaveChatConf(v_ueA); //Test Sequence Step 17 //peer userB - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 18 - - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 19 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueC); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueC); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0013_Rcs_2 - - /** - * @desc 1-to-many chat - interworking. - * IMS network supports 1-to-many IM/Chat service and messages exchange between two users in their home network can be performed. - * User A starts 1-to-many chat with users B and C - * @see TS 102 901-2 V2.1.2 clause 4.5.3.6.1 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0013() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_gmC := f_cf_create_monitor(c_gm_C); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueC); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueB, v_userInfoC); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_6_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); - - // test body - f_mtc_userInitiateChatOneToMany (v_ueA, v_userInfoB, v_userInfoC); // Test Sequence Step 6 - Step 1 - - f_mtc_check_TP_MSRP_9000_06(v_gmB, true); // Step2: ueA sends INVITE - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // CheckMSRP1 - // checks 1 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, false); // Check 1 - Step 8 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); // Check 1 - Step 8 - f_mtc_check_TP_MSRP_9000_02(v_gmA, false, c_statusLine200); // Check3 - f_mtc_userCheckChatingConf(v_ueA, v_ueB); // Check 2-3 - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // Step27 - - // UE_A subscrbes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueA); // Step 41 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmA, false); // Step 41 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); // Step 44 - // check4 - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmA, v_userInfoA, false); // Step 46 - - // UE_B subscribes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueB); // Step 50 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmB, false); // Step 50 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); // Step 63 - // check5 - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmB, v_userInfoB, false); // Step 70 - - // Check6-7 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); - f_mtc_userCheckPeerChatInfoOneToMany(v_ueB); - f_mtc_userCheckChatConfInfo(v_ueA); - - f_mtc_EndChat(v_ueB); // Step 81A - f_mtc_check_TP_IMS_5107_01_gm(v_gmB, false); // Check send bye on gmB - Step 82A - f_mtc_userCheckChatEnded(v_ueB); - - // Check6 ueA receives NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmA, v_userInfoA, false); // Step 98A - - f_mtc_EndChat(v_ueA); // Step 101A - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check send bye on gmB - Step 102A - f_mtc_userCheckChatEnded(v_ueA); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueC); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueC); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0013 - - /** - * @desc IMS network handles subsequent INVITEs, REFERs and NOTIFYs correctly during - * addition of user C to an Ad-hoc IM Conferences between users, one user in - * its home network and the other user roaming - * @see TS 102 901-2 V2.1.2 clause 4.5.3.3.2 - */ - testcase TC_IMS_CHAT_0014_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueC); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueC, v_userInfoC); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - - f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 7 - - // check 1 (REFER) - f_mtc_check_TP_IMS_5107_04_gm(v_gmB, false); // Check1 - f_mtc_check_refer_mx(v_mxB); - f_mtc_check_TP_IMS_5107_04_ic(v_ic, false); // Check1 - f_mtc_check_refer_mx(v_mxA); - - f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 8 - f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 10 - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 11 - - f_mtc_userLeaveChatConf(v_ueC); //Test Sequence Step 12 - f_mtc_userCheckChatConfEnded(v_ueC); //Test Sequence Step 13 - f_mtc_userCheckPeerLeaveChatConf(v_ueB); //Test Sequence Step 14 - - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 15 - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 16 - f_mtc_userCheckPeerLeaveChatConf(v_ueB); //Test Sequence Step 17 - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 18 - - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 19 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueC); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueC); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0014_Rcs_2 - - /** - * @desc 1-to-many chat - roaming. - * IMS network supports 1-to-many IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. - * User B starts 1-to-many chat with user A and C - * @see TS 102 901-2 V2.1.2 clause 4.5.3.6.2 - * @see RFC 4975 clauses 5.4, 7.1 and 7.2 - */ - testcase TC_IMS_CHAT_0014() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueC); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueC, v_userInfoC); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_6_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Test Sequence Step 1 - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // CheckMSRP1: Store INVITE request message - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); // CheckMSRP2: Store 200 OK response message - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); - - // test body - f_mtc_userInitiateChatOneToMany (v_ueA, v_userInfoB, v_userInfoC); // Test Sequence Step 6 - Step 1 - - f_mtc_check_TP_MSRP_9000_06(v_gmB, true); // Step2: ueA sends INVITE - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // CheckMSRP1 - // checks 1 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, false); // Check 1 - Step 8 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); // Check 1 - Step 8 - f_mtc_check_TP_MSRP_9000_02(v_gmA, false, c_statusLine200); // Check3 - f_mtc_userCheckChatingConf(v_ueA, v_ueB); // Check 2-3 - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); // Step27 - - // UE_B subscrbes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueB); // Step 53 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmB, false); // Step 53 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); // Step 62 - // check4 - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmB, v_userInfoB, false); // Step 67 - - // UE_A subscribes to the conference event package - f_mtc_userSubscribeToConferenceEventPackage(v_ueB); // Step 74 - // check - SUBSCRIBE - f_mtc_check_TP_IMS_5108_07_gm(v_gmB, false); // Step 74 - // SUBSCRIBE - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); // Step 87 - // check6 - NOTIFY - f_mtc_check_TP_IMS_5094_01_UE(v_gmB, v_userInfoB, false); // Step 94 - - // Check6-7 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); - f_mtc_userCheckPeerChatInfoOneToMany(v_ueB); - f_mtc_userCheckChatConfInfo(v_ueA); - - f_mtc_EndChat(v_ueB); // Step 81A - f_mtc_check_TP_IMS_5107_01_gm(v_gmB, false); // Check send bye on gmB - Step 82A - f_mtc_userCheckChatEnded(v_ueB); - - // Check6 ueA receives NOTIFY - f_mtc_check_notify_mx(v_gmA); // Step 98A - - f_mtc_EndChat(v_ueA); // Step 101A - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check send bye on gmB - Step 102A - f_mtc_userCheckChatEnded(v_ueA); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueC); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueC); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0014 - - /** - * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during rejoining - * of user B to existing Ad-hoc IM Conferences between users in their home network - * @see TS 102 901-2 V2.1.2 clause 4.5.3.4.1 - */ - testcase TC_IMS_CHAT_0015_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChatConf (v_ueA, v_userInfoB); //Test Sequence Step 1 - - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPeerChatConfInfo(v_ueB); //Test Sequence Step 3 - f_mtc_userJoinChatConf(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckChatConfInfo(v_ueA); //Test Sequence Step 5 - - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckPeerLeaveChatConf(v_ueA); //Test Sequence Step 9 - - f_mtc_userRejoinChatConf(v_ueB, v_userInfoA); //Test Sequence Step 10 - f_mtc_userCheckRejoinChatConfInfo(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckPeerRejoinChatConfInfo(v_ueA); //Test Sequence Step 12 - - // check 1 (200 OK) - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5110_01_ic(v_ic); // Check 1 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5110_01_isc(v_iscA); // Check 1 - - f_mtc_userCheckChatingConf(v_ueB,v_ueA); //Test Sequence Step 13 - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 14 - - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 15 - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 16 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0015_Rcs_2 - - /** - * @desc Adding participants to an already established 1-to-many chat session - interworking. - * IMS network supports 1-to-many IM/Chat service and messages exchange between two users in their network can be performed. - * User A invites User D to an already established 1-to-many Chat - * @see TS 102 901-2 V2.1.2 clause 4.5.3.7.1 - */ - testcase TC_IMS_CHAT_0015() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var IotEquipmentUser v_ueD := f_cf_create_IotEquipmentUser(c_userUE_D); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_gmC := f_cf_create_monitor(c_gm_C); - var ImsInterfaceMonitor v_gmD := f_cf_create_monitor(c_gm_D); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsUserInfo v_userInfoD := f_getImUser(PX_EUT_D); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueC); - f_cf_user_up(v_ueD); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueC, v_userInfoC); - f_mtc_userRegistration(v_ueD, v_userInfoD); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_6_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); - - f_mtc_userInitiateChatOneToMany (v_ueA, v_userInfoB, v_userInfoC); - - f_mtc_check_TP_MSRP_9000_06(v_gmB, true); - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); - // checks 1 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, false); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_MSRP_9000_02(v_gmA, false, c_statusLine200); - f_mtc_userCheckChatingConf(v_ueA, v_ueB); - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); - - // test body - f_mtc_userAddNewPaticipantChatOneToMany (v_ueA, v_userInfoD); // Step2 - f_mtc_check_TP_MSRP_9000_07(v_gmB, true); // Step3 - f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // Step3 - - f_mtc_userCheckChatingConf(v_ueA, v_ueD); // Check 2-3 - f_mtc_check_TP_MSRP_9000_01(v_gmD, false); // Step23 - - // Check4 ueA receives NOTIFY - f_mtc_check_notify_mx(v_gmA); // Check 4 - Step 38 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); - - // UE_D subscrbes to the conference event package - Step42 - - // FIXME How to subscrbes to the conference event package??? Check with Bostjan - - // Check5 ueBD receives NOTIFY - f_mtc_check_notify_mx(v_gmD); // Step 62 - - // Check6-7 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); - f_mtc_userCheckPeerChatInfoOneToMany(v_ueD); - f_mtc_check_TP_MSRP_9000_03(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3 - f_mtc_check_TP_MSRP_9000_04(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3 - - f_mtc_EndChat(v_ueD); // Step 73 - f_mtc_check_TP_IMS_5107_01_gm(v_gmD, false); // Check send bye on gmB - Step 73 - f_mtc_userCheckChatEnded(v_ueD); - - // Check8 ueA receives NOTIFY - f_mtc_check_notify_mx(v_gmA); // Step 89 - - f_mtc_EndChat(v_ueA); - f_mtc_EndChat(v_ueB); - f_mtc_EndChat(v_ueC); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueC); - f_PO_user_home_deregistration(v_ueD); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueC); - f_cf_user_down(v_ueD); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0015 - - /** - * @desc IMS network handles subsequent INVITEs and NOTIFYs correctly during rejoining - * of user B to existing Ad-hoc IM Conferences between users, one user in its - * home network and the other user roaming - * @see TS 102 901-2 V2.1.2 clause 4.5.3.4.2 - */ - testcase TC_IMS_CHAT_0016_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateChatConf (v_ueB, v_userInfoA); //Test Sequence Step 1 - - f_mtc_userCheckChatConfInfo(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerChatConfInfo(v_ueA); //Test Sequence Step 3 - f_mtc_userJoinChatConf(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckChatConfInfo(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 6 - f_mtc_userLeaveChatConf(v_ueA); //Test Sequence Step 7 - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckPeerLeaveChatConf(v_ueB); //Test Sequence Step 9 - - f_mtc_userRejoinChatConf (v_ueA, v_userInfoB); //Test Sequence Step 10 - - // check 1 (INVITE) - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false); // Check3 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false); // Check3 - - f_mtc_userCheckRejoinChatConfInfo(v_ueA); //Test Sequence Step 11 - f_mtc_userCheckPeerRejoinChatConfInfo(v_ueB); //Test Sequence Step 12 - - f_mtc_userCheckChatingConf(v_ueA,v_ueB); //Test Sequence Step 13 - - f_mtc_userLeaveChatConf(v_ueB); //Test Sequence Step 14 - - f_mtc_userCheckChatConfEnded(v_ueB); //Test Sequence Step 15 - f_mtc_userCheckChatConfEnded(v_ueA); //Test Sequence Step 16 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_0016_Rcs_2 - - /** - * @desc Adding participants to an already established 1-to-many chat session - roaming. - * IMS network supports 1-to-many IM/Chat service and messages exchange between two users, one user in its home network and one user roaming can be performed. - * User A invites User D to an already established 1-to-many Chat - * @see TS 102 901-2 V2.1.2 clause 4.5.3.7.2 - */ - testcase TC_IMS_CHAT_0016() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueC := f_cf_create_IotEquipmentUser(c_userUE_C); - var IotEquipmentUser v_ueD := f_cf_create_IotEquipmentUser(c_userUE_D); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_gmC := f_cf_create_monitor(c_gm_C); - var ImsInterfaceMonitor v_gmD := f_cf_create_monitor(c_gm_D); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsUserInfo v_userInfoC := f_getImUser(PX_EUT_C); - var ImsUserInfo v_userInfoD := f_getImUser(PX_EUT_D); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - var SipMessage v_inviteReq; // Used to store INVITE request message - var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueC); - f_cf_user_up(v_ueD); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueC, v_userInfoC); - f_mtc_userRegistration(v_ueD, v_userInfoD); - - // Test Sequence Step 1: UE_A Initiate 1-to-1 chat with UE_B (UC_RCS_6_I steps 1 to 68) - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateChat (v_ueA, v_userInfoB); - v_inviteReq := f_mtc_check_TP_MSRP_9000_01(v_gmA, false); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_invite_mx(v_mxB); - // check INVITE 200 OK message with MSRP - v_inviteResp := f_mtc_check_TP_MSRP_9000_02(v_gmB, false, c_statusLine200); - // Setup TCP connection - f_mtc_userInitiateMSRPAuthentication(v_ueA); - f_mtc_userCheckMSRPAuthenticated(v_ueA); - f_mtc_userInitiateMSRPAuthentication(v_ueB); - f_mtc_userCheckMSRPAuthenticated(v_ueB); - f_mtc_userCheckChatInfo(v_ueB); - f_mtc_userCheckPeerChatInfo(v_ueA); - - f_mtc_userInitiateChatOneToMany (v_ueA, v_userInfoB, v_userInfoC); - - f_mtc_check_TP_MSRP_9000_06(v_gmB, true); - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); - // checks 1 (2xx) - f_mtc_check_TP_IMS_5115_02_gm(v_gmB, false); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_MSRP_9000_02(v_gmA, false, c_statusLine200); - f_mtc_userCheckChatingConf(v_ueA, v_ueB); - f_mtc_check_TP_MSRP_9000_01(v_gmB, false); - - // test body - f_mtc_userAddNewPaticipantChatOneToMany (v_ueA, v_userInfoD); // Step2 - f_mtc_check_TP_MSRP_9000_07(v_gmB, true); // Step3 - f_mtc_check_TP_MSRP_9000_01(v_gmA, false); // Step3 - - f_mtc_userCheckChatingConf(v_ueA, v_ueD); // Check 2-3 - f_mtc_check_TP_MSRP_9000_01(v_gmD, false); // Step23 - - // Check4 ueA receives NOTIFY - f_mtc_check_notify_mx(v_gmA); // Check 4 - Step 38 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); - - // UE_D subscrbes to the conference event package - Step42 - - // FIXME How to subscrbes to the conference event package??? Check with Bostjan - - // Check5 ueBD receives NOTIFY - f_mtc_check_notify_mx(v_gmD); // Step 62 - - // Check6-7 - f_mtc_userCheckPeerChatInfoOneToMany(v_ueA); - f_mtc_userCheckPeerChatInfoOneToMany(v_ueD); - f_mtc_check_TP_MSRP_9000_03(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3 - f_mtc_check_TP_MSRP_9000_04(v_gmA, false, v_inviteReq, v_inviteResp); // CheckMSRP3 - - f_mtc_EndChat(v_ueD); // Step 73 - f_mtc_check_TP_IMS_5107_01_gm(v_gmD, false); // Check send bye on gmB - Step 73 - f_mtc_userCheckChatEnded(v_ueD); - - // Check8 ueA receives NOTIFY - f_mtc_check_notify_mx(v_gmA); // Step 89 - - f_mtc_EndChat(v_ueA); - f_mtc_EndChat(v_ueB); - f_mtc_EndChat(v_ueC); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueC); - f_PO_user_home_deregistration(v_ueD); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueC); - f_cf_user_down(v_ueD); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CHAT_00165 - - /** - * @desc IMS network supports file transfer service and file between two users - * in their home network can be performed. User B must explicitly accept - * the file transfer. - */ - testcase TC_IMS_FILE_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateFt (v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 - - f_mtc_userCheckFtInfo(v_ueB); //Test Sequence Step 2 - f_mtc_userCheckPeerFtInfo(v_ueA); //Test Sequence Step 3 - f_mtc_userAcceptsFt(v_ueB); //Test Sequence Step 4 - - //check 3 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckFileTransferring(v_ueA, v_ueB); //Test Sequence Step 5 - - f_mtc_EndFt(v_ueA); //Test Sequence Step 6 - - f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 7 - f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0001 - - /** - * @desc IMS network supports file transfer service and file transfer between - * two users, one user in its home network and one user roaming can be - * performed. User B must explicitly accept the file transfer. - */ - testcase TC_IMS_FILE_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateFt (v_ueB, v_userInfoA); //Test Sequence Step 1 - - // check INVITE - f_mtc_check_TP_IMS_5046_01_gm ( v_gmB, true ); - f_mtc_check_invite_mx ( v_mxB ); - f_mtc_check_TP_IMS_5046_01_ic ( v_ic, true ); - f_mtc_check_TP_IMS_5067_01_ic ( v_ic, true ); - f_mtc_check_TP_IMS_5097_09_ic ( v_ic, false ); - f_mtc_check_TP_IMS_5097_09_isc ( v_iscA, false ); - f_mtc_userCheckFtInfo ( v_ueB ); - f_mtc_userCheckPeerFtInfo ( v_ueA ); - f_mtc_userAcceptsFt ( v_ueA ); - //check 200 OK - f_mtc_check_response_mx ( v_mxA, c_statusLine200 ); - f_mtc_check_response_mx ( v_mxB, c_statusLine200 ); - // check ACK - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_userCheckFileTransferring ( v_ueA, v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_userCheckFtEnded ( v_ueA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_userCheckFtEnded ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - } //end testcase TC_IMS_FILE_0002 - - /** - * @desc IMS network supports file transfer service and file between two users in - * their home network can be performed. Immediate response applies. - */ - testcase TC_IMS_FILE_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_TP_GM_PCSCF_INVITE_01 ( v_gmA, false ); - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_TP_IMS_5097_01_ic ( v_ic, true ); - f_mtc_check_TP_IMS_5108_03_ic ( v_ic, false, 0 ); - f_mtc_check_invite_mx ( v_mxB ); - f_mtc_check_TP_IMS_5108_03_isc ( v_iscB, false, 0 ); - f_mtc_userCheckFtInfo ( v_ueB ); - f_mtc_userTriggerReleaseFtBeforeFileTransfered ( v_ueB ); - //check 603 - f_mtc_check_response_mx ( v_mxB, c_statusLine603 ); - f_mtc_check_response_mx ( v_mxA, c_statusLine603 ); - // check ACK - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_userCheckFtEnded ( v_ueB ); - f_mtc_userCheckFtEnded ( v_ueA ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0003 - - /** - * @desc IMS network supports file transfer service and file between two users in - * their home network can be performed. Immediate response applies. - * @see TS 102 901-2 V2.1.2 clause 4.5.4.1.3 - */ - testcase TC_IMS_FILE_0003_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueA, v_userInfoB); //Test Sequence Step 1 - - // check 1,2 (INVITE) - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check 2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check 2 - - f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 - - // checks 3 (2xx) - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false); // Check 3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check 3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckFt(v_ueA,v_ueB); //Test Sequence Step 3 - - f_mtc_EndFt(v_ueA); //Test Sequence Step 4 - - f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 5 - f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0003_Rcs_2 - - /** - * @desc IMS network supports file transfer service and file transfer between two users, - * one user in its home network and one user roaming can be performed. Immediate - * response applies. - * @see TS 102 901-2 V2.1.2 clause 4.5.4.1.4 - */ - testcase TC_IMS_FILE_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_TP_IMS_5046_01_gm ( v_gmA, true ); - f_mtc_check_TP_IMS_5067_01_gm ( v_gmA, false ); - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_TP_IMS_5046_01_ic ( v_ic, true ); - f_mtc_check_TP_IMS_5067_01_ic ( v_ic, true ); - f_mtc_check_TP_IMS_5097_09_ic ( v_ic, false ); - f_mtc_check_invite_mx ( v_mxB ); - f_mtc_check_TP_IMS_5097_09_isc ( v_iscB, false ); - f_mtc_userCheckFtInfo ( v_ueB ); - f_mtc_userTriggerReleaseFtBeforeFileTransfered ( v_ueB ); - // check 603 - f_mtc_check_response_mx ( v_mxB, c_statusLine603 ); - f_mtc_check_response_mx ( v_mxA, c_statusLine603 ); - // check ACK - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_userCheckFtEnded ( v_ueB ); - f_mtc_userCheckFtEnded ( v_ueA ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0004 - - /** - * @desc IMS network supports file transfer service and file transfer between two users, - * one user in its home network and one user roaming can be performed. Immediate - * response applies. - * @see TS 102 901-2 V2.1.2 clause 4.5.4.1.4 - */ - testcase TC_IMS_FILE_0004_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueB, v_userInfoA); //Test Sequence Step 1 - - // check 1,2,3 (INVITE) - f_mtc_check_TP_IMS_5046_01_gm(v_gmA, true); // Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmA, false); // Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true); // Check2 - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false); // Check3 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false); // Check3 - - f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 - - f_mtc_userCheckFt(v_ueB,v_ueA); //Test Sequence Step 3 - - f_mtc_EndFt(v_ueB); //Test Sequence Step 4 - - f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 5 - f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 6 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0004_Rcs_2 - - /** - * @desc IMS network supports instant File transfer service and messages exchange between - * two users in their home networks can be performed. User A starts file transfer, but - * User B terminates it in the middle of the process - */ - testcase TC_IMS_FILE_0005 () runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userAcceptsFt ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckPeerFtInfo ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_userCheckFtInfo ( v_ueA ); - f_mtc_EndFt ( v_ueA ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxB ); - f_mtc_check_options_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_EndFt ( v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_userCheckFtEnded ( v_ueA ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckFtEnded ( v_ueB ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxA ); - f_mtc_check_options_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0005 - - /** - * @desc IMS network supports instant File transfer service and messages exchange between - * two users, one user in its home network and one user roaming can be performed. User - * A starts file transfer, but User B terminates it in the middle of the process - */ - testcase TC_IMS_FILE_0006 () runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userAcceptsFt ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckPeerFtInfo ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_userCheckFtInfo ( v_ueA ); - f_mtc_EndFt ( v_ueA ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxB ); - f_mtc_check_options_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_EndFt ( v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_userCheckFtEnded ( v_ueA ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckFtEnded ( v_ueB ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxA ); - f_mtc_check_options_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0006 - - /** - * @desc An established file transfer session is cancelled by the initiator of the session - * @see TS 102 901-2 V2.1.2 clause 4.5.4.3.1 - */ - testcase TC_IMS_FILE_0011_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueA, v_userInfoB); //Test Sequence Step 1 - - f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 - - f_mtc_userCheckFt(v_ueA,v_ueB); //Test Sequence Step 3 - - f_mtc_userCheckFtCancel(v_ueA); //Test Sequence Step 4 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5106_01_gm(v_gmA, 0); - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5106_01_ic(v_ic, 0); - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckFtTerminated(v_ueB); //Test Sequence Step 5 - - // check 2 (200 OK) - f_mtc_check_TP_IMS_5121_02_gm(v_gmB, 0); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic, 0); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckFtStopped(v_ueA,v_ueB); //Test Sequence Step 6 - - f_mtc_EndFt(v_ueA); //Test Sequence Step 7 //File transfer session ends - - // check 1 (BYE) - f_mtc_check_TP_IMS_5107_01_gm(v_gmA, false); // Check3 - f_mtc_check_bye_mx(v_mxA); - f_mtc_check_TP_IMS_5107_01_ic(v_ic, false); // Check3 - f_mtc_check_bye_mx(v_mxB); - - f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 8 //information about File transfer session has been released - f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 9 //information about File transfer session has been released - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0011_Rcs_2 - - /** - * @desc An established file transfer session is cancelled by the roaming initiator - * of the session. - * @see TS 102 901-2 V2.1.2 clause 4.5.4.4.2 - */ - testcase TC_IMS_FILE_0012_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getImUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getImUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueB, v_userInfoA); //Test Sequence Step 1 - - f_mtc_userCheckAutomaticalyAcceptedFt(v_ueA); //Test Sequence Step 2 - - f_mtc_userCheckFt(v_ueA,v_ueB); //Test Sequence Step 3 - - f_mtc_userCheckFtCancel(v_ueB); //Test Sequence Step 4 - - // check 1,2 (INVITE) - f_mtc_check_TP_IMS_5048_01_gm(v_gmA, false, 0); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 0); // Check1 - f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckFtTerminated(v_ueB); //Test Sequence Step 5 - - f_mtc_userCheckFtStopped(v_ueA,v_ueB); //Test Sequence Step 6 - - f_mtc_EndFt(v_ueB); //Test Sequence Step 7 //File transfer session ends - - f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 8 //information about File transfer session has been released - f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 9 //information about File transfer session has been released - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0012_Rcs_2 - - /** - * @desc An established file transfer session is cancelled by the destination of the file transfer. - * @see TS 102 901-2 V2.1.2 clause 4.5.4.4.1 - */ - testcase TC_IMS_FILE_0013_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueA, v_userInfoB); //Test Sequence Step 1 - f_mtc_userCheckAutomaticalyAcceptedFt(v_ueB); //Test Sequence Step 2 - - f_mtc_userCheckFtInfo(v_ueA); //Test Sequence Step 3 //FT invitation - f_mtc_userTriggerFtStart(v_ueA); //Test Sequence Step 4 //File transfer started - f_mtc_userTriggerFtAccept(v_ueB); //Test Sequence Step 5 //File transfer accepted by peer - - f_mtc_userCheckFtStarted(v_ueA); //Test Sequence Step 6 - f_mtc_userCheckFtStarted(v_ueB); //Test Sequence Step 7 - - f_mtc_userTriggerReleaseFtBeforeFileTransfered(v_ueB); //Test Sequence Step 8 - - // check 1 (INVITE) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check1 - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check1 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_invite_mx(v_mxA); - - // check 2 (200 OK) - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 0); // Check 2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check 2 - - f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 10 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0013_Rcs_2 - - /** - * @desc An established file transfer session is cancelled by the destination of the file transfer. - * @see TS 102 901-2 V2.1.2 clause 4.5.4.4.2 - */ - testcase TC_IMS_FILE_0014_Rcs_2 () runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getFtUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getFtUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userInitiateFt(v_ueB, v_userInfoA); //Test Sequence Step 1 - f_mtc_userCheckAutomaticalyAcceptedFt(v_ueA); //Test Sequence Step 2 - - f_mtc_userCheckFtInfo(v_ueB); //Test Sequence Step 3 //FT invitation - f_mtc_userTriggerFtStart(v_ueB); //Test Sequence Step 4 //File transfer started - f_mtc_userTriggerFtAccept(v_ueA); //Test Sequence Step 5 //File transfer accepted by peer - - f_mtc_userCheckFtStarted(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckFtStarted(v_ueA); //Test Sequence Step 7 - - f_mtc_userTriggerReleaseFtBeforeFileTransfered(v_ueA); //Test Sequence Step 8 - - // check 1,2 (INVITE) - f_mtc_check_TP_IMS_5048_01_gm(v_gmB, false, 0); // Check1 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5048_01_ic(v_ic, true, 0); // Check1 - f_mtc_check_TP_IMS_5080_01_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxA); - - f_mtc_userCheckFtEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckFtEnded(v_ueA); //Test Sequence Step 10 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_FILE_0014_Rcs_2 - - /** - * @desc User A sets up a voice call to user B and shares content with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.1.1 - */ - testcase TC_IMS_SHARE_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_mxB ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_userCheckSharingRequestAnswered ( v_ueB ); - f_mtc_EndSharing ( v_ueA ); - f_mtc_userCheckSharingEnded ( v_ueB ); - f_mtc_userCheckSharingEnded ( v_ueA ); - f_mtc_EndCall ( v_ueA ); - f_mtc_userCheckCallEnded ( v_ueB ); - f_mtc_userCheckCallEnded ( v_ueA ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0001 - - /** - * @desc User A sets up a voice call to user B and shares content with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.1.1 - */ - testcase TC_IMS_SHARE_0001_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 - - // check 2 (INVITE) - f_mtc_check_TP_IMS_CONTENT_SHARE_02_gm(v_gmA, false); // Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_02_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userRequestedToAcceptSharing(v_ueB); //Test Sequence Step 5 - f_mtc_userAcceptsSharing(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckSharingRequestAnswered(v_ueB); //Test Sequence Step 7 - f_mtc_EndSharing(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckSharingEnded(v_ueB); //Test Sequence Step 9 - - f_mtc_userCheckSharingEnded(v_ueA); //Test Sequence Step 10 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 11 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0001_Rcs_2 - - /** - * @desc User A sets up a voice call to user B and shares content with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.1.2 - */ - testcase TC_IMS_SHARE_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_EndSharing ( v_ueA ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxB ); - f_mtc_check_options_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndSharing ( v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueB ); - f_mtc_userCheckSharingEnded ( v_ueA ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxA ); - f_mtc_check_options_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0002 - - /** - * @desc User A sets up a voice call to user B and shares content with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.1.2 - */ - testcase TC_IMS_SHARE_0002_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 - - // check 2 (INVITE) - f_mtc_check_TP_IMS_CONTENT_SHARE_02_gm(v_gmA, false); // Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_02_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userRequestedToAcceptSharing(v_ueB); //Test Sequence Step 5 - f_mtc_userAcceptsSharing(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckSharingRequestAnswered(v_ueB); //Test Sequence Step 7 - f_mtc_EndSharing(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckSharingEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckSharingEnded(v_ueA); //Test Sequence Step 10 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 11 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0002_Rcs_2 - - /** - * @desc Termination of voice call during content sharing - * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.1 - */ - testcase TC_IMS_SHARE_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - // check BYE - f_mtc_EndSharing ( v_ueA ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxB ); - f_mtc_check_options_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndSharing ( v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueB ); - f_mtc_userCheckSharingEnded ( v_ueA ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxA ); - f_mtc_check_options_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0003 - - /** - * @desc Termination of voice call during content sharing - * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.1 - */ - testcase TC_IMS_SHARE_0003_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 - - // check 2 (INVITE) - f_mtc_check_TP_IMS_CONTENT_SHARE_02_gm(v_gmA, false); // Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_02_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userRequestedToAcceptSharing(v_ueB); //Test Sequence Step 5 - f_mtc_userAcceptsSharing(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckSharingRequestAnswered(v_ueB); //Test Sequence Step 7 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckSharingEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckSharingEnded(v_ueA); //Test Sequence Step 10 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0003_Rcs_2 - - /** - * @desc Termination of voice call during content sharing - * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.2 - */ - testcase TC_IMS_SHARE_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_EndSharing ( v_ueA ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxB ); - f_mtc_check_options_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndSharing ( v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueB ); - f_mtc_userCheckSharingEnded ( v_ueA ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxA ); - f_mtc_check_options_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0004 - - /** - * @desc Termination of voice call during content sharing - * @see TS 102 901-2 V2.1.2 clause 4.5.5.2.2 - */ - testcase TC_IMS_SHARE_0004_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 - - // check 2 (INVITE) - f_mtc_check_TP_IMS_CONTENT_SHARE_02_gm(v_gmA, false); // Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_02_ic(v_ic, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userRequestedToAcceptSharing(v_ueB); //Test Sequence Step 5 - f_mtc_userAcceptsSharing(v_ueB); //Test Sequence Step 6 - f_mtc_userCheckSharingRequestAnswered(v_ueB); //Test Sequence Step 7 - f_mtc_EndCall(v_ueA); //Test Sequence Step 8 - f_mtc_userCheckSharingEnded(v_ueB); //Test Sequence Step 9 - - f_mtc_userCheckSharingEnded(v_ueA); //Test Sequence Step 10 - - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0004_Rcs_2 - - /** - * @desc User A sets up a voice call to user B and user B shares content with user A. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.1 - */ - testcase TC_IMS_SHARE_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0005 - - /** - * @desc User A sets up a voice call to user B and user B shares content with user A. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.1 - */ - testcase TC_IMS_SHARE_0005_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueB, v_userInfoA); //Test Sequence Step 4 - - f_mtc_userRequestedToAcceptSharing(v_ueA); //Test Sequence Step 5 - f_mtc_userAcceptsSharing(v_ueA); //Test Sequence Step 6 - f_mtc_userCheckSharingRequestAnswered(v_ueB); //Test Sequence Step 7 - - f_mtc_EndSharing(v_ueB); //Test Sequence Step 8 - - f_mtc_userCheckSharingEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckSharingEnded(v_ueA); //Test Sequence Step 10 - - f_mtc_EndCall(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0005_Rcs_2 - - /** - * @desc User A sets up a voice call to user B and user B shares content with user A. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.2 - */ - testcase TC_IMS_SHARE_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_EndSharing ( v_ueA ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueA ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0006 - - /** - * @desc User A sets up a voice call to user B and user B shares content with user A. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.3.2 - */ - testcase TC_IMS_SHARE_0006_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueB, v_userInfoA); //Test Sequence Step 4 - - f_mtc_userRequestedToAcceptSharing(v_ueA); //Test Sequence Step 5 - f_mtc_userAcceptsSharing(v_ueA); //Test Sequence Step 6 - f_mtc_userCheckSharingRequestAnswered(v_ueB); //Test Sequence Step 7 - - f_mtc_EndSharing(v_ueB); //Test Sequence Step 8 - - f_mtc_userCheckSharingEnded(v_ueB); //Test Sequence Step 9 - f_mtc_userCheckSharingEnded(v_ueA); //Test Sequence Step 10 - - f_mtc_EndCall(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 11 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 11 - - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0006_Rcs_2 - - /** - * @desc User A receive information that content sharing is not possible with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.1 - */ - testcase TC_IMS_SHARE_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRejectsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine603 ); - f_mtc_userCheckSharingRequestRejected ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0007 - - /** - * @desc User A receive information that content sharing is not possible with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.1 - */ - testcase TC_IMS_SHARE_0007_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - f_mtc_userInformedAboutPartnerCannotShareContent(v_ueA); //Test Sequence Step 2 - f_mtc_userInformedAboutPartnerCanShareContent(v_ueB); //Test Sequence Step 3 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 4 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0007_Rcs_2 - - /** - * @desc User A receive information that content sharing is not possible with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.2 - */ - testcase TC_IMS_SHARE_0008() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userRejectsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine603 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine603 ); - f_mtc_userCheckSharingRequestRejected ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0008 - - /** - * @desc User A receive information that content sharing is not possible with user B. - * @see TS 102 901-2 V2.1.2 clause 4.5.5.4.2 - */ - testcase TC_IMS_SHARE_0008_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - f_mtc_userInformedAboutPartnerCannotShareContent(v_ueA); //Test Sequence Step 2 - f_mtc_userInformedAboutPartnerCanShareContent(v_ueB); //Test Sequence Step 3 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 4 - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 4 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 4 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0008_Rcs_2 - - /** - * @desc User B rejects to share content with user A - * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.1 - */ - testcase TC_IMS_SHARE_0009() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_EndSharing ( v_ueA ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxB ); - f_mtc_check_options_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndSharing ( v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_userCheckSharingEnded ( v_ueA ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueB ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxA ); - f_mtc_check_options_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0009 - - /** - * @desc User B rejects to share content with user A - * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.1 - */ - testcase TC_IMS_SHARE_0009_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 - - f_mtc_userRequestedToAcceptSharing(v_ueB); //Test Sequence Step 5 - f_mtc_userRejectsSharing(v_ueB); //Test Sequence Step 6 - - // check 2 (603) - f_mtc_check_TP_IMS_CONTENT_SHARE_03_gm(v_gmA, false); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine603); - f_mtc_check_TP_IMS_CONTENT_SHARE_03_ic(v_ic, false); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine603); - - f_mtc_userCheckSharingRequestRejected(v_ueA); //Test Sequence Step 7 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 8 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0009_Rcs_2 - - /** - * @desc Content sharing rejection - * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.2 - */ - testcase TC_IMS_SHARE_0010() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall ( v_ueA, v_ueB, v_userInfoB ); - f_mtc_userInitiateShare ( v_ueA, v_userInfoB ); - // check INVITE - f_mtc_check_invite_mx ( v_mxA ); - f_mtc_check_invite_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine100 ); - f_mtc_userRequestedToAcceptSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmA, c_statusLine180 ); - f_mtc_userAcceptsSharing ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingRequestAnswered ( v_ueA ); - // check ACK - f_mtc_check_ack_mx ( v_gmA ); - f_mtc_check_ack_mx ( v_gmB ); - f_mtc_EndSharing ( v_ueA ); - // check BYE - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_userCheckSharingEnded ( v_ueB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueA ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxB ); - f_mtc_check_options_mx ( v_gmA ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_EndCall ( v_ueA ); - f_mtc_EndSharing ( v_ueB ); - // check BYE - f_mtc_check_bye_mx ( v_gmB ); - f_mtc_check_bye_mx ( v_gmA ); - f_mtc_userCheckSharingEnded ( v_ueA ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_userCheckSharingEnded ( v_ueB ); - // check OPTIONS - f_mtc_check_options_mx ( v_mxA ); - f_mtc_check_options_mx ( v_gmB ); - f_mtc_check_response_mx ( v_gmB, c_statusLine200 ); - f_mtc_check_response_mx ( v_gmA, c_statusLine200 ); - f_mtc_EndCall ( v_ueB ); - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0010 - - /** - * @desc Content sharing rejection - * @see TS 102 901-2 V2.1.2 clause 4.5.5.5.2 - */ - testcase TC_IMS_SHARE_0010_Rcs_2() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getShareUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getShareUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - - f_mtc_userSetupVoiceCall(v_ueA, v_ueB, v_userInfoB); //Test Sequence Step 1 - - // check 1 (OPTIONS) - f_mtc_check_TP_IMS_CONTENT_SHARE_01_gm(v_gmA, false); // Check1 - f_mtc_check_options_mx(v_mxA); - f_mtc_check_TP_IMS_CONTENT_SHARE_01_ic(v_ic, false); // Check1 - f_mtc_check_options_mx(v_mxB); - - - f_mtc_userCheckPartnerSharingCapabilities(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckPartnerSharingCapabilities(v_ueB); //Test Sequence Step 3 - f_mtc_userInitiateShare (v_ueA, v_userInfoB); //Test Sequence Step 4 - f_mtc_userRequestedToAcceptSharing(v_ueB); //Test Sequence Step 5 - f_mtc_userRejectsSharing(v_ueB); //Test Sequence Step 6 - - // check 2 (603) - f_mtc_check_TP_IMS_CONTENT_SHARE_03_gm(v_gmA, false); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine603); - f_mtc_check_TP_IMS_CONTENT_SHARE_03_ic(v_ic, false); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine603); - - f_mtc_userCheckSharingRequestRejected(v_ueA); //Test Sequence Step 7 - - f_mtc_EndCall(v_ueA); //Test Sequence Step 8 - - f_mtc_userCheckCallEnded(v_ueB); //Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA); //Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SHARE_0010_Rcs_2 - -}//end module AtsImsIot_TestCases_RCS \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn deleted file mode 100644 index 1e2975f..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn +++ /dev/null @@ -1,456 +0,0 @@ -/** - * @author STF 370 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions. - */ -module AtsImsIot_TestCases_REG { - - // LibIot - import from LibIot_TestInterface all; - import from LibIot_TestConfiguration all; - import from LibIot_PIXITS all; - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_SIPTypesAndValues all; - import from LibIms_UpperTester all; - // AtsImsIot - import from AtsImsIot_TP_behavior_GM all; - import from AtsImsIot_TP_behavior_MW_PS all; - import from AtsImsIot_Behavior all; // TODO To be removed - import from AtsImsIot_Functions all; - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - - /** - * @desc To perform initial IMS registration via the established default bearer. - * Note that some UEs perform IMS registration automatically on attachment - in which case this test becomes merged with the previous one. - */ - testcase TC_VxLTE_INT_REG_01() runs on ImsTestCoordinator system IotSystemInterface { - // Local variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_A); - - // Test control - - // Test component configuration - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - - // Test adapter configuration - - // Preamble - f_mtc_userRegistration(v_ueA, v_anyValidUser); - - // Test body - f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); // Events 1, 10 - f_mtc_check_TP_MW_PCSCF_REGISTER_01(v_gmA/*FIXME: mwPS*/, true, true); // Event 2, 9 - f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); // Events 11, 20 - f_mtc_check_TP_MW_PCSCF_REGISTER_02(v_gmA/*FIXME: mwPS*/, true); // Events 12, 19 - f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 21, 24 - f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(v_gmA/*FIXME: mwPS*/, true); // Events 22, 23 - - //f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 - //f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 - //f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_REG_01 - - /** - * @desc To attempt initial IMS registration via the established default bearer. - * In this case, the IMS registration is not successful and IMS will not invoke the PCRF to perform session binding to the underlying bearer. - */ - testcase TC_VxLTE_INT_REG_02() runs on ImsTestCoordinator system IotSystemInterface { - // Local variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_A); - - // Test control - - // Test component configuration - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - - // Test adapter configuration - - // Preamble - v_anyValidUser.publicId := "Jon Doe"; // Alter publicId to get an invalid registration - f_mtc_userRegistration(v_ueA, v_anyValidUser); - - // Test body - f_mtc_check_TP_GM_PCSCF_REGISTER_03(v_gmA, true); // Events 1, 6 - - //f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 - //f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 26 - //f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 31, 34 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_REG_02 - - /** - * @desc To perform initial IMS registration via the established default bearer. - * Note that some UEs perform IMS registration automatically on attachment. - */ - testcase TC_VxLTE_INT_REG_03() runs on ImsTestCoordinator system IotSystemInterface { - // Local variables - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_A); - - // Test control - - // Test component configuration - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - - // Test adapter configuration - - // Preamble - f_mtc_userRegistration(v_ueA, v_anyValidUser); - - // Test body - f_mtc_check_TP_GM_PCSCF_REGISTER_01(v_gmA, true); // Events 1, 10 - f_mtc_check_TP_GM_PCSCF_REGISTER_02(v_gmA, true); // Events 11, 24 - f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(v_gmA, true); // Events 25, 28 - - //f_mtc_check_TP_IC_IBCF_REGISTER_01(v_ic); // Event 3, 12 - //f_mtc_check_TP_IC_IBCF_REGISTER_02(v_ic); // Event 17, 30 - //f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(v_ic); // Event 35, 38 - - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_cf_user_down(v_ueA); - f_cf_adapter_down(); - } // End of testcase TC_VxLTE_INT_REG_03 - - - - - - - - - - - - - - - - - /** - * @desc - * First time registration in a visited IMS network. - * (in ETSI TS 186 011-2 V3.1.1 clause 4.5.2.1) - */ - testcase TC_IMS_REG_0001_AKA() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); - var Response v_200OK_Step8; - var Request v_Subscribe_Step10; - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 @TODO shouldn't this be EUT_A? - - // @TODO check mw_credentialIntegrityNo, mw_credentialIntegrityYes - - f_mtc_check_TP_IMS_5011_01_gm(v_gmA, true); // Check1 when - f_mtc_check_TP_IMS_5011_01_ic(v_ic, true); // Check1 then - - f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA, false); // Check4 when (Gm) - f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5089_01_ic_when(v_ic, false); // Check4 when (Mw) - f_mtc_check_register_mx(v_mxB); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine401); - f_mtc_check_TP_IMS_5089_01_ic_then(v_ic, false); // Check4 then @TODO check mw_WwwAuthenticate - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine401); - - f_mtc_check_TP_IMS_5011_02_gm(v_gmA, true); // Check2 when (Gm) - f_mtc_check_TP_IMS_5011_02_ic(v_ic, true); // Check2 then (Mw) - - f_mtc_check_TP_IMS_5092_01_gm(v_gmA, false); // Check5 when (Gm) - f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5092_01_ic_when(v_ic, false); // Check5 when (Mw) - f_mtc_check_register_mx(v_mxB); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5092_01_ic(v_ic, true); // Check5 then - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_check_subscribe(v_mxA); - v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_ic_when(v_ic, false); // Check3 when - f_mtc_check_TP_IMS_5044_01_ic(v_ic, v_200OK_Step8, true); // Check3 then - f_mtc_check_subscribe(v_mxB); - - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_ic_when(v_ic, false); // Check6 when - f_mtc_check_TP_IMS_5096_01_ic(v_ic, v_Subscribe_Step10, false); // Check6 then - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence Step 2 - f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); - - // postamble - f_PO_user_home_deregistration(v_ueB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - f_cf_adapter_down(); - } - - /** - * @desc - * First time registration in a visited IMS network. - * (in ETSI TS 186 011-2 V3.1.1 clause 4.5.2.1) - */ - testcase TC_IMS_REG_0001_MD5() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); - var Response v_200OK_Step8; - var Request v_Subscribe_Step10; - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 @TODO shouldn't this be EUT_A? - - // @TODO check mw_credentialIntegrityNo, mw_credentialIntegrityYes - - f_mtc_check_TP_IMS_5011_03_gm(v_gmA, true); // Check1 when - f_mtc_check_TP_IMS_5011_03_ic(v_ic, true); // Check1 then - - f_mtc_check_TP_IMS_5089_02_gm_when(v_gmA, false); // Check4 when (Gm) - f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5089_02_ic_when(v_ic, false); // Check4 when (Mw) - f_mtc_check_register_mx(v_mxB); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine401); - f_mtc_check_TP_IMS_5089_02_ic_then(v_ic, false); // Check4 then @TODO check mw_WwwAuthenticate - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine401); - - f_mtc_check_TP_IMS_5011_04_gm(v_gmA, true); // Check2 when (Gm) - f_mtc_check_TP_IMS_5011_04_ic(v_ic, true); // Check2 then (Mw) - - f_mtc_check_TP_IMS_5092_01_gm(v_gmA, false); // Check5 when (Gm) - f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5092_01_ic_when(v_ic, false); // Check5 when (Mw) - f_mtc_check_register_mx(v_mxB); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5092_01_ic(v_ic, true); // Check5 then - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_check_subscribe(v_mxA); - v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_ic_when(v_ic, false); // Check3 when - f_mtc_check_TP_IMS_5044_01_ic(v_ic, v_200OK_Step8, true); // Check3 then - f_mtc_check_subscribe(v_mxB); - - - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_ic_when(v_ic, false); // Check6 when - f_mtc_check_TP_IMS_5096_01_ic(v_ic, v_Subscribe_Step10, false); // Check6 then - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - // Test Sequence Step 2 - f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); - - // postamble - f_PO_user_home_deregistration(v_ueB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - f_cf_adapter_down(); - } - - /** - * @desc - * No response from first entry point on REGISTER with topology hiding - * (TS 186 011-2 V3.1.1 Clause 4.5.2.2) - */ - // @TODO - testcase TC_IMS_REG_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var Request v_Register_Step4; // why do we need this variable? - var Response v_200OK_Step9; - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - f_mtc_userRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); // Test Sequence Step 1 - - // check no response (check1-when) -message skip (1st register) - // check included in check1-then - - f_mtc_check_register_mx(v_mxA); - // check mw for second register request - f_mtc_check_TP_IMS_5203_01_ic(v_ic); // (Check1-then) - f_mtc_check_register_mx(v_mxB); - - // check gm for protected register (Check2-when) - - // check mw for protected register (check2-when) - - // check mw for 200_response (check2-then) - //v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_ic(v_ic); // Check2 - - //Step 2 - f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); - - // postamble - f_PO_user_home_deregistration(v_ueB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - f_cf_adapter_down(); - } - - /** - * @desc - * 403 response to REGISTER from an un-trusted domain without topology hiding - * (ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.4) - */ - testcase TC_IMS_REG_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 - - f_mtc_check_TP_IMS_5129_01_gm(v_gmA, false); // Check1 when (Gm) - - f_mtc_check_register_mx(v_mxA); - f_mtc_check_TP_IMS_5129_01_ic_when(v_ic, false); // Check1 when (Mw) - f_mtc_check_register_mx(v_mxB); - - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine403); - f_mtc_check_TP_IMS_5129_01_ic(v_ic, false); // Check1 then - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine403); - - f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - unsuccessful registration - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - } - - /** - * @desc IMS network can initiate user de-registration, - * e.g., when a user runs out of credit - * @see ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.7 - */ - testcase TC_IMS_REG_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - // IMS_B is triggered manually to de-register user B // Test Sequence Step 1 manuallz - - // IMS_B receives a network_originated_deregistration_event // Check1 when manually - - f_mtc_check_notify_mx(v_mxB); - f_mtc_check_TP_IMS_5093_01_UE_ic(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY - f_mtc_check_notify_mx(v_mxA); - - f_mtc_check_notify_mx(v_mxB); - f_mtc_check_TP_IMS_5093_01_IMS_ic(v_ic, false); // check1 then - 2nd NOTIFY - f_mtc_check_notify_mx(v_mxA); - - f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - check that user is not registered anymore (de-registration) - - // postamble - f_PO_user_home_deregistration(v_ueB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - } - /** - * @desc IMS network can initiate user re-authentication - * @see ETSI TS 186 011-2 V3.1.1 Clause 4.5.2.8 - */ - testcase TC_IMS_REG_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueB); - f_cf_roam_reg_up(v_gmA, v_mxA, v_ic, v_mxB); - - // test body - - //IMS_B receives a network_originated_deregistration_event // Check1 when manually - - f_mtc_check_TP_IMS_5094_01_UE(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY - f_mtc_check_TP_IMS_5094_01_IMS(v_ic, false); // check1 then - 2nd NOTIFY - - f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueB); - f_cf_roam_reg_down(v_gmA, v_mxA, v_ic, v_mxB); - - // unmap/disconnect component ports - f_cf_user_down(v_ueB); - f_cf_adapter_down(); - } -} \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn deleted file mode 100644 index d8491af..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn +++ /dev/null @@ -1,793 +0,0 @@ -/** - * @author STF 370 - * @version $Id: $ - * @desc This module provides ATS specific test case definitions. - */ -module AtsImsIot_TestCases_SS { - - // LibIms - import from LibIms_UpperTester all; - import from LibSip_SIPTypesAndValues all; - // LibIot - import from LibIot_PIXITS all; - import from LibIot_TestConfiguration all; - import from LibIot_TestInterface all; - // AtsImsIot - import from AtsImsIot_TP_behavior_GM all; - import from AtsImsIot_Behavior all; - import from AtsImsIot_Functions all; - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - - /** - * @desc Supplementary Service HOLD with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.1 - */ - testcase TC_IMS_SS_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getHoldUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueB);//Test Sequence Step 7 - - //check 1 - INVITE(hold) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check1 - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA);//Test Sequence Step 8 - - //check 2 - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 1); // Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check2 - - f_mtc_userCheckUserOnHold(v_ueB);//Test Sequence Step 9 - - f_mtc_userTriggerResume(v_ueB);//Test Sequence Step 10 - - //check 3 - INVITE(resume) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check3 - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check3 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA);//Test Sequence Step 11 - - //check 4 - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 0); // Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check4 - - f_mtc_userCheckCallResumed(v_ueB);//Test Sequence Step 12 - f_mtc_EndCall(v_ueA);//Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB );//Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0001 - - /** - * @desc Supplementary Service HOLD with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.2 - */ - testcase TC_IMS_SS_0002() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getHoldUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_userTriggerHold(v_ueB);//Test Sequence Step 7 - - //check 1 - INVITE(hold) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 1); // Check1 - skip one INVITE when call is established - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check1 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckUserOnHold(v_ueA);//Test Sequence Step 8 - - //check 2 - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 2); // Check2 - skip two 200OK when call is established - because roaming - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check2 - - f_mtc_userCheckUserOnHold(v_ueB);//Test Sequence Step 9 - f_mtc_userTriggerResume(v_ueB);//Test Sequence Step 10 - - //check 3 - INVITE(resume) - f_mtc_check_TP_IMS_5310_01_gm(v_gmB, 0); // Check3 - f_mtc_check_TP_IMS_5310_01_isc(v_iscB); // Check3 - f_mtc_check_invite_mx(v_mxB); - - f_mtc_userCheckCallResumed(v_ueA);//Test Sequence Step 11 - - //check 4 - 200 OK - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_ic(v_ic, 1); // Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5312_01_isc(v_iscB); // Check4 - - f_mtc_userCheckCallResumed(v_ueB);//Test Sequence Step 12 - f_mtc_EndCall(v_ueA);//Test Sequence Step 13 - f_mtc_userCheckCallEnded(v_ueB );//Test Sequence Step 14 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 15 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0002 - - /** - * @desc Supplementary Service OIP with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.3 - */ - testcase TC_IMS_SS_0003() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - //check 1,2 - INVITE - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true);// Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_02_ic(v_ic, true);// Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - - //check 3 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_EndCall(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0003 - - /** - * @desc Supplementary Service OIP with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.4 - */ - testcase TC_IMS_SS_0004() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - //checks 1,2 - INVITE - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, true);// Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_02_ic(v_ic, true);// Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check2 - - f_mtc_userCheckRinging(v_ueB);//Test Sequence Step 2 - f_mtc_userCheckPeerIsRinging(v_ueA);//Test Sequence Step 3 - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 4 - - //check 3 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 1);// Check3 //skip 200OK IMSA->IMSB - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 6 - - f_mtc_EndCall(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 9 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0004 - - /** - * @desc Supplementary Service OIR and ACR with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.5 - */ - testcase TC_IMS_SS_0005() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getACRUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - //check 1 - INVITE - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0);// Check1 - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0);// Check1 - f_mtc_check_invite_mx(v_mxB); - - //check 2 - 433 Anonymity Disallowe - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine433); - f_mtc_check_TP_IMS_5313_01_ic(v_ic, false);// Check2 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine433); - f_mtc_check_TP_IMS_5313_01_isc(v_iscA, false);// Check2 - - f_mtc_userCheckCallRejectedACR(v_ueA);//Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0005 - - /** - * @desc Supplementary Service OIR and ACR with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.6 - */ - testcase TC_IMS_SS_0006() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getACRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIRUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_StartAllTrafficCapture(); - f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 - - //checks 1,2,3 - INVITE - f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true);// Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false);// Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true);// Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true);// Check2 - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false);// Check3 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false);// Check3 - - f_mtc_userCheckCallRejectedACR(v_ueB);//Test Sequence Step 2 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0006 - - /** - * @desc Supplementary Service CFU with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.7 - */ - testcase TC_IMS_SS_0007() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueB2 := f_cf_create_IotEquipmentUser(c_userUE_B2); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsUserInfo v_userInfoB2 := f_getAnyValidUser(PX_EUT_B);//// TODO f_getAnyValidUser2 ? - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, omit, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueB2); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueB2, v_userInfoB2); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - // checks 1,2 - INVITE - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 - - //f_mtc_userCheckRinging(v_ueB2); //possible Test Sequence Step - //f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueB2);//Test Sequence Step 3 - - //check 3 - 200 OK - f_mtc_check_TP_IMS_5115_08_isc(v_iscB, false);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB2);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueA);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueB2);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueB2); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueB2); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0007 - - /** - * @desc Supplementary Service CFU with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.8 - */ - testcase TC_IMS_SS_0008() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var IotEquipmentUser v_ueA2 := f_cf_create_IotEquipmentUser(c_userUE_A2); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); - var ImsUserInfo v_userInfoA2 := f_getAnyValidUser(PX_EUT_A);//// TODO f_getAnyValidUser2 ? - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, omit}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_user_up(v_ueA2); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userRegistration(v_ueA2, v_userInfoA2); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 - - // checks 1,2,3 - INVITE - f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true); // Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false); // Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true); // Check2 - f_mtc_check_TP_IMS_5070_01_ic(v_ic, false,0); // Check3 - f_mtc_check_invite_mx(v_mxA); - - //f_mtc_userCheckRinging(v_ueA2); //possible Test Sequence Step - //f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueA2);//Test Sequence Step 3 - - //check 4 - 200 OK - f_mtc_check_TP_IMS_5110_01_isc(v_iscA); // Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - f_mtc_check_TP_IMS_5110_01_ic(v_ic); // Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA2);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueB);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueA2);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - f_PO_user_home_deregistration(v_ueA2); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_user_down(v_ueA2); - f_cf_roam_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0008 - - /** - * @desc Supplementary Service OIP and OIR with AS - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.9 - */ - testcase TC_IMS_SS_0009() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueA, v_userInfoB);//Test Sequence Step 1 - - // checks 1,2 - INVITE - f_mtc_check_TP_GM_PCSCF_INVITE_01(v_gmA, false); // Check1 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_01_ic(v_ic, true); // Check1 - f_mtc_check_TP_IMS_5108_03_ic(v_ic, false, 0); // Check2 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5108_03_isc(v_iscB, false, 0); // Check2 - - f_mtc_userCheckRinging(v_ueB); //possible Test Sequence Step - f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueB);//Test Sequence Step 3 - - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueB);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_SS_0009 - - /** - * @desc Supplementary Service OIP and OIR with AS in roaming - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.10 - */ - testcase TC_IMS_SS_0010() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_ROAM_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_roam_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateCall (v_ueB, v_userInfoA);//Test Sequence Step 1 - - //checks 1,2,5 - INVITE - f_mtc_check_TP_IMS_5046_01_gm(v_gmB, true);// Check1 - f_mtc_check_TP_IMS_5067_01_gm(v_gmB, false);// Check5 - f_mtc_check_invite_mx(v_mxB); - f_mtc_check_TP_IMS_5046_01_ic(v_ic, true);// Check1 - f_mtc_check_TP_IMS_5067_01_ic(v_ic, true);// Check5 - f_mtc_check_TP_IMS_5097_09_ic(v_ic, false);// Check2 - f_mtc_check_invite_mx(v_mxA); - f_mtc_check_TP_IMS_5097_09_isc(v_iscB, false);// Check2 - - //check 3 -180 Ringing - f_mtc_check_TP_IMS_5308_01_gm(v_gmA, false);// Check3 - f_mtc_check_TP_IMS_5308_01_isc(v_iscA, false);// Check3 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine180); - - f_mtc_userCheckRinging(v_ueB); //possible Test Sequence Step - f_mtc_userCheckPeerIsRinging(v_ueA); //possible Test Sequence Step - f_mtc_userAnswerCall(v_ueA);//Test Sequence Step 3 - - //check 4 -200 OK - f_mtc_check_TP_IMS_5308_02_gm(v_gmA, false);// Check4 - f_mtc_check_TP_IMS_5308_02_isc(v_iscA, false);// Check4 - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckCallEstablished(v_ueB);//Test Sequence Step 4 - f_mtc_userCheckCallEstablished(v_ueA);//Test Sequence Step 5 - - f_mtc_EndCall(v_ueB);//Test Sequence Step 6 - f_mtc_userCheckCallEnded(v_ueA);//Test Sequence Step 7 - f_mtc_userCheckCallEnded(v_ueB);//Test Sequence Step 8 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_roam_as_down(v_config); - } //end testcase TC_IMS_SS_0010 - - /** - * @desc IMS network handles subsequent INVITEs, UPDATEs, REFERs and NOTIFYs - * correctly during Ad-Hoc Conference calls - * @see TS 186 011-2 V3.1.1 Clause 4.5.5.11 - */ - testcase TC_IMS_CONF_0001() runs on ImsTestCoordinator system IotSystemInterface { - // create components - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); - var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); - var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B); - var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic); - var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A); - var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B); - var ImsUserInfo v_userInfoA := f_getOIRUser(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getOIPUser(PX_EUT_B); - var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); - var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); - var CF_INT_AS v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB}; - - // map/connect component ports - // f_cf_user_up(v_ueB); - f_cf_adapter_up(); - f_cf_user_up(v_ueA); - f_cf_user_up(v_ueB); - f_cf_int_as_up(v_config); - - // preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - - // test body - f_mtc_userInitiateConferenceCall (v_ueA);//Test Sequence Step 1 - - f_mtc_userCheckConferenceSetUp(v_ueA); //Test Sequence Step 2 - f_mtc_userCheckConferenceEstablished(v_ueA); //Test Sequence Step 3 - - f_mtc_userInviteUserToJoinConferenceCall (v_ueA, v_userInfoB);//Test Sequence Step 4 - f_mtc_userCheckConferenceCallRinging(v_ueB); //Test Sequence Step 5 - - f_mtc_userCheckConferenceCallPeerIsRinging(v_ueA); // Test Sequence Step 6 - - f_mtc_userAnswerConferenceCall(v_ueB);//Test Sequence Step 7 - - // check 1 200 OK - f_mtc_check_TP_IMS_5121_02_gm(v_gmB,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxB, c_statusLine200); - f_mtc_check_TP_IMS_5121_02_ic(v_ic,0); - // FIXME Check if it still usefull f_mtc_check_response_mx(v_mxA, c_statusLine200); - - f_mtc_userCheckInfoWhenPeerJoinsConference(v_ueA);//Test Sequence Step 8 - - f_mtc_LeaveConferenceCall(v_ueB);//Test Sequence Step 9 - f_mtc_userCheckConferenceCallEnded(v_ueB);//Test Sequence Step 10 - f_mtc_userCheckConferenceCallEnded(v_ueA);//Test Sequence Step 11 - - // postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - - //unmap/disconnet component ports - f_cf_user_down(v_ueA); - f_cf_user_down(v_ueB); - f_cf_int_as_down(v_config); - f_cf_adapter_down(); - } //end testcase TC_IMS_CONF_0001 -} diff --git a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn index 7be0d9a..1e0d88d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn @@ -1,32 +1,31 @@ /** - * @author STF 370 + * @author STF 574 * @version $Id: $ * @desc This module provides ATS specific test control declarations. */ module AtsImsIot_TestControl { - import from AtsImsIot_TestCases_CALL all; - import from AtsImsIot_TestCases_MESS all; - import from AtsImsIot_TestCases_REG all; - import from AtsImsIot_TestCases_SS all; - import from AtsImsIot_TestCases_RCS all; - import from AtsImsIot_TestCases_ENUM all; - import from AtsImsIot_TestCases_EPC all; + import from AtsImsIot_TD_ATT all; + import from AtsImsIot_TD_DRG all; + import from AtsImsIot_TD_DTC all; + import from AtsImsIot_TD_INI all; + import from AtsImsIot_TD_REG all; - control { - // MESS TCs - //execute(TC_IMS_MESS_0001()); + control { + // ATT TCs + //execute(TC_VxLTE_INT_ATT_01()); + //execute(TC_VxLTE_RMI_ATT_01()); + //execute(TC_VxLTE_RMI_ATT_02()); - // CALL TCs - //execute(TC_IMS_CALL_0001()); - execute(TC_IMS_CALL_0003()); // OK - //execute(TC_IMS_CALL_0007()); - //execute(TC_IMS_CALL_0017()); - - // REG TCs - //execute(TC_IMS_REG_0002()); - //execute(TC_IMS_REG_0003()); - - // SS TCs - //execute(TC_IMS_SS_0006()); - } + // REG TCs + execute(TC_VxLTE_INT_REG_01()); + + // INI TCs + //execute(TC_VxLTE_INT_INI_01()); + + // DRG TCs + //execute(TC_VxLTE_INT_DRG_01()); + + // DTC TCs + //execute(TC_VxLTE_INT_DTC_01()); + } } \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn b/ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn deleted file mode 100644 index d465a4c..0000000 --- a/ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn +++ /dev/null @@ -1,505 +0,0 @@ -/** - * @author STF 450 - * @version $Id$ - * @desc This module provides the PIXIT used for the Gx DIAMETER tests. - */ - -module DiameterGx_PIXITS -{ - - import from LibDiameter_TypesAndValues all; - import from LibCommon_BasicTypesAndValues all; - import from LibDiameter_Types_Base_AVPs all; - import from LibDiameter_Types_Gx_AVPs all; - - //const charstring IPV4or6RegExp:= pattern "/^(?:(?>(?>([a-f0-9]{1,4})(?>:(?1)){7})|(?>(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?))|(?>(?>(?>(?1)(?>:(?1)){5}:)|(?>(?!(?:.*[a-f0-9]:){6,})((?1)(?>:(?1)){0,4})?::(?>(?3):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD"; - - group Port_and_addresses{ - - /** @desc charstring, PIXIT item A-7/1 - * IP address of the test system - */ - modulepar charstring PX_DIAMETER_GX_ETS_IPADDR := "1.1.1.1"; - - /** @desc charstring, PIXIT item A-7/2 - * IP address of the system under test - */ - modulepar charstring PX_DIAMETER_GX_SUT_IPADDR := "1.1.1.2"; - - /** @desc charstring, PIXIT item A-7/3 - * Port number of the test system - */ - modulepar integer PX_DIAMETER_GX_ETS_PORT := 3868; - - /** @desc charstring, PIXIT item A-7/4 - * Port number of the system under test - */ - modulepar integer PX_DIAMETER_GX_SUT_PORT := 3868; - - } - -// SUT specific implementation variants - group DiameterCommonGxData{ - - /** @desc UTF8String, PIXIT item A-7/5 - - The Session-Id AVP (AVP Code 263) is of type UTF8String and is used - to identify a specific session (see Section 8); All messages - pertaining to a specific session MUST include only one Session-Id AVP - and the same value MUST be used throughout the life of a session; - When present, the Session-Id SHOULD appear immediately following the - Diameter Header (see Section 3); - - Ref: RFC 3588 section 8-8 - */ - modulepar UTF8String PX_SessionID := "pcscf.etsi.org;1317059245;52;21823490"; - - - /** @desc charstring, PIXIT item A-7/6 - - The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, and - MUST be present in all Diameter messages; This AVP identifies the - endpoint that originated the Diameter message; Relay agents MUST NOT - modify this AVP; - - The value of the Origin-Host AVP is guaranteed to be unique within a - single host; - - Ref: RFC 3588 section 6-3. - NOTE: could be AF or PCRF role: - pcscf.example.com - pcrf.example.com - */ - modulepar charstring PX_OriginHost := "origin.etsi.org"; - - - - /** @desc charstring, PIXIT item A-7/7 - - The Origin-Realm AVP (AVP Code 296) is of type DiameterIdentity; - This AVP contains the Realm of the originator of any Diameter message - and MUST be present in all messages; - - Ref: RFC 3588 section 6-4 - */ - modulepar charstring PX_OriginRealm := "etsi.org"; - - - - /** @desc charstring, PIXIT item A-7/8 - - The Destination-Host AVP (AVP Code 293) is of type DiameterIdentity; - This AVP MUST be present in all unsolicited agent initiated messages, - MAY be present in request messages, and MUST NOT be present in Answer - messages; - - Ref: RFC 3588 section 6-5. - NOTE: could be AF or PCRF role: - pcscf.example.com - pcrf.example.com - */ - modulepar charstring PX_DestinationHost := "destination.etsi.org"; - - - - /** @desc charstring, PIXIT item A-7/9 - - The Destination-Realm AVP (AVP Code 283) is of type DiameterIdentity, - and contains the realm the message is to be routed to; The - Destination-Realm AVP MUST NOT be present in Answer messages. - Diameter Clients insert the realm portion of the User-Name AVP; - Diameter servers initiating a request message use the value of the - Origin-Realm AVP from a previous message received from the intended - target host (unless it is known a priori); When present, the - Destination-Realm AVP is used to perform message routing decisions; - - Ref: RFC 3588 section 6-6 - */ - modulepar charstring PX_DestinationRealm := "myalupcrf.etsi.org"; - - /** @desc octetstring, PIXIT item A-7/10 - - A logical circuit-ID for the Logical-Access-ID AVP in case of xDSL IP CAN type - - */ - modulepar octetstring PX_Logical_Access_ID := '01020304'O; - - - - /** @desc UTF8String, PIXIT item A-7/11 - - A physical access ID for the Physical-Access-ID AVP in case of xDSL IP-CAN type - - */ - modulepar UTF8String PX_Physical_Access_ID := "pcscf.etsi.org;1317059245;52;21823490"; - - - /** @desc octetstring, PIXIT item A-7/12 - - The Framed-IP-Address AVP (AVP Code 8) [RADIUS] is of type - OctetString and contains an IPv4 address of the type specified in the - attribute value to be configured for the user; It MAY be used in an - authorization request as a hint to the server that a specific address - is desired, but the server is not required to honor the hint in the - corresponding response; - - Two values have special significance: 0xFFFFFFFF and 0xFFFFFFFE; The - value 0xFFFFFFFF indicates that the NAS should allow the user to - select an address (ie, negotiated); The value 0xFFFFFFFE indicates - that the NAS should select an address for the user (eg, assigned - from a pool of addresses kept by the NAS); - - - Ref: TS 129 214 5-4, table 5-4-1 - */ - modulepar octetstring PX_UE1_framedIpAddress := '0a0a0a0a'O; - - /** @desc octetstring, PIXIT item A-7/13 - - The Framed-IPv6-Prefix AVP (AVP Code 97) is of type OctetString and - contains the IPv6 prefix to be configured for the user; One or more - AVPs MAY be used in authorization requests as a hint to the server - that specific IPv6 prefixes are desired, but the server is not - required to honor the hint in the corresponding response; - - - Ref: TS 129 214 5-4, table 5-4-1 - */ - modulepar octetstring PX_UE1_framedIp6Address := '0a0a0a0a'O; - - /** @desc enumerated type Subscription_Id_Ty_Type, PIXIT item A-7/14 - * A subscription ID type for the Subscription-Id-Type AVP in Subscription-Id AVPs - Available values: END_USER_E164, END_USER_IMSI, END_USER_SIP_URI, END_USER_NAI - */ - modulepar Subscription_Id_Ty_Type PX_SUBSCRIPTION_ID_TYPE := END_USER_IMSI_E; - - /** @desc UTF8String, PIXIT item A-7/15 - * Subscription data for the Subscription-Id-Data AVP in Subscription-Id AVPs - */ - modulepar UTF8String PX_SUBSCRIPTION_ID_DATA := "SUBS_DATA"; - - /** @desc enumerated type IP_CAN_Type, PIXIT item A-7/16 - * A connectivity access type for the IP-CAN-Type AVP in CCR messages - Available values: 3GPP-GPRS, DCOSIS, xDSL, WiMAX, 3GPP2, 3GPP-EPS, Non-3GPP-EPS - */ - modulepar IP_CAN_Type PX_IP_CAN_TYPE := ThreeGPP_GPRS_E; - - /** @desc enumerated type RAT_Type, PIXIT item A-7/17 - * A radio access technology for the IP-RAT-Type AVP in CCR messages - Available values: WLAN, VIRTUAL, UTRAN, GERAN, GAN, HSPA_EVOLUTION, EUTRAN, CDMA2000, HRPD, UMB, EHRPD - */ - modulepar RAT_Type PX_RAT_TYPE := WLAN_E; - - /** @desc UInt32, PIXIT item A-7/18 - * Maximum aggregate bite rate in bits per second for the uplink direction for the APN-Aggregate-Max-Bitrate-UL AVP - */ - modulepar UInt32 PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA := 100; - - /** @desc octetstring, PIXIT item A-7/19 - * The offset between universal time and local time in steps of 15 minutes for the 3GPP-MS-TimeZone AVP for CCR messages - */ - modulepar octetstring PX_3GPP_MS_TIMEZONE_DATA := '08'O; - - /** @desc UTF8String, PIXIT item A-7/20 - * An Emergency APN for the Called-Station-Id AVP - */ - modulepar UTF8String PX_CALLED_STATION_ID_EMERGENCY_APN := "EmergencyAPN_A"; - - /** @desc UTF8String, PIXIT item A-7/21 - * An Emergency address for the Called-Station-Id AVP - */ - modulepar UTF8String PX_CALLED_STATION_ID_EMERGENCY := "Emergency"; - - /** @desc octetstring, PIXIT item A-7/22 - * An identity for the PDN connection for the PDN-Connection-ID AVP - */ - modulepar octetstring PX_PDN_CONNECTION_ID_DATA := '08'O; - - /** @desc octetstring, PIXIT item A-7/23 - * avp_Data within Bearer_Identifier_AVP is of octetstring type - */ - modulepar octetstring PX_BEARER_IDENTIFIER := '01020304'O; - - /** @desc enumerated type Bearer_Usage, PIXIT item A-7/24 - * A bearer usage value for the Bearer-Usage AVP - Available values: GENERAL, IMS_SIGNALLING - */ - modulepar Bearer_Usage PX_BEARER_USAGE_DATA := IMS_SIGNALLING_E; - - /** @desc - - The ANCA (Access-Network-Charging-Address) in IPv4 format, PIXIT item A-7/25 - - */ - modulepar IPv4Addr PX_ANCA_ipv4 := {1,2,3,4}; - /** @desc - - The ANCA (Access-Network-Charging-Address) in type IPv6 format, PIXIT item A-7/26 - - */ - modulepar IPv6Addr PX_ANCA_ipv6 := {1,2,3,4,5,6,7,8}; - - /** @desc - - The SGW/AGW in IPv4Addr format (3GPP-EPS and 3GPP2 accesses), PIXIT item A-7/27 - - */ - modulepar IPv4Addr PX_SGW_AGW_ipv4 := {1,2,3,4}; - /** @desc - - The SGW/AGW in type IPv6Addr format (3GPP-EPS and 3GPP2 accesses), PIXIT item A-7/28 - - */ - modulepar IPv6Addr PX_SGW_AGW_ipv6 := {1,2,3,4,5,6,7,8}; - - - /** @desc octetstring, PIXIT item A-7/29 - * A charging identifier for the Access-Network-Charging-Identifier-Value AVP in Access-Network-Charging-Identifier AVPs - */ - modulepar octetstring PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE := '08'O; - - /** @desc octetstring, PIXIT item A-7/30 - * An IP flow mobility routing rule for the Routing-Rule-Identifier AVP in Routing-Rule-Definition AVPs - */ - modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O; - - /** @desc UInt32, PIXIT item A-7/31 - * Unknown charging key for the Rating_-Group_ AVP - */ - modulepar UInt32 PX_UNKNOWN_RATING_GROUP := 100; - - /** @desc enumerated type Network_Request_Support, PIXIT item A-7/32 - * Value indicating the access network support for network initiated procedures for the Network_Request-Support AVP - Available values: NETWORK_REQUEST NOT SUPPORTED, NETWORK_REQUEST SUPPORTED - */ - modulepar Network_Request_Support PX_NETWORK_REQUEST_SUPPORT := NETWORK_REQUEST_SUPPORTED_E; - - /** @desc octetstring, PIXIT item A-7/33 - * First charging rule name for the Charging-Rule-Name AVP - */ - modulepar octetstring PX_CHARGING_RULE_NAME_DATA := '08'O; - - /** @desc octetstring, PIXIT item A-7/34 - * Second charging rule name for the Charging-Rule-Name AVP - */ - modulepar octetstring PX_CHARGING_RULE_NAME_DATA2 := '09'O; - - /** @desc octetstring, PIXIT item A-7/35 - * Third charging rule name for the Charging-Rule-Name AVP - * - modulepar octetstring PX_CHARGING_RULE_NAME_DATA3 := '0A'O; - - /** @desc octetstring, PIXIT item A-7/36 - * Non-existant charging rule name for the Charging-Rule-Name AVP - */ - modulepar octetstring PX_CHARGING_RULE_NAME_DATA_NONEXIST := 'FF'O; - - /** @desc octetstring, PIXIT item A-7/37 - * Charging rule base name for the Charging-Rule-Base-Name AVP - */ - modulepar UTF8String PX_CHARGING_RULE_BASE_NAME_DATA := "data"; - - - /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/38 - * A status value of PCC rule(s) for the PCC-Rule-Status AVP - Available values: ACTIVE, INACTIVE, TEMPORARILY INACTIVE - */ - modulepar PCC_Rule_Status PX_PCC_RULE_STATUS := ACTIVE_E; - - /** @desc UInt32, PIXIT item A-7/39 - * A precedence value for a PCC rule for the Precedence AVP in CCR messages - */ - modulepar UInt32 PX_PRECEDENCE_DATA := 100; - - /** @desc octetstring, PIXIT item A-7/40 - * A packet filter identity for the Packet-Filter-Identifier AVP - */ - modulepar octetstring PX_PACKET_FILTER_IDENTIFIER_DATA := '08'O; - - /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/41 - * A reason for a PCC rule to be reported for the Rule-Failure-Code AVP in Charging-Rule-Report AVPs - Available values: UNKNOWN_RULE-NAME, RATING_GROUP_ERROR, SERVICE_IDENTIFIER_ERROR, GW/PCEF_MALFUNCTION, - RESOURCES_LIMITATION, MAX_NR_BEARERS_REACHED, UNKNOWN_BEARER_ID, MISSING_BEARER_ID, MISSING_FLOW_INFORMATION, - RESOURCE_ALLOCATION_FAILURE, UNSUCCESSFUL_QOS_INFORMATION, PS_TO_CS_HANDOVER, NO_BEARER_BOUND - */ - modulepar Rule_Failure_Code PX_RULE_FAILURE_CODE := UNKNOWN_RULE_NAME_E; - - /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/42 - * Status of the offline charging interface for the Offline AVP in Charging-Rule-Definition AVPs - Available values: DISABLE_OFFLINE, ENABLE_OFFLINE - */ - modulepar Offline PX_OFFLINE_DATA := DISABLE_OFFLINE_E; - - - /** @desc enumerated type PCC_Rule_Status, PIXIT item A-7/43 - * Status of the online charging interface for the Online AVP in Charging-Rule-Definition AVPs - Available values: DISABLE_ONLINE, ENABLE_ONLINE - */ - modulepar Online PX_ONLINE_DATA := ENABLE_ONLINE_E; - - /** @desc octectstring, PIXIT item A-7/44 - * Name of a national variant of the MPS service name for the MPS-Identifier AVP - * (parameter is part of AAR message) - */ - modulepar octetstring PX_MPS_IDENTIFIER := '01020304050607'O; - - /** @desc octectstring, PIXIT item A-7/45 - * First monitoring key for the Monitoring-Key AVP in RAR and CCR messages - */ - modulepar octetstring PX_MONITORING_KEY := '01020304050607'O; - - /** @desc octectstring, PIXIT item A-7/46 - * Second monitoring key for the Monitoring-Key AVP in RAR and CCR messages - */ - modulepar octetstring PX_MONITORING_KEY2 := '01020304050677'O; - - /** @desc UInt32, PIXIT item A-7/47 - * NTP time before which the PCEF will re-request PPC rules dor the Revalidation-Time AVP in RAR messages - */ - modulepar UInt32 PX_REVALIDATION_TIME := 7; - - /** @desc UInt32, PIXIT item A-7/48 - * NTP time at which a PCC rule will be enforced for Rule-Activation-Time AVP in Charging-Rule-Install AVPs - */ - modulepar UInt32 PX_ACTIVATION_TIME := 0; - - /** @desc UInt32, PIXIT item A-7/49 - * NTP time at which a PCC rule enforcement will be stopped for Rule-Deactivation-Time AVP in Charging-Rule-Install AVPs - */ - modulepar UInt32 PX_DEACTIVATION_TIME := 0; - - /** @desc charstring, PIXIT item A-7/50 - * A sponsor identity for the Sponsor-Identity AVP in Sponsored-Connectivity AVPs - */ - modulepar charstring PX_SPONSOR_ID := "Google"; - - /** @desc charstring, PIXIT item A-7/51 - * An application service provider identity for the Application_Service_Provider AVP in Sponsored-Connectivity AVPs - - */ - modulepar charstring PX_APPLICATION_SERVICE_PROVIDER_ID := "GoogleCall"; - - - /** @desc boolean indicator, PIXIT item A-7/52 - * TRUE if the GTP interface is accessible to triggert Diameter events - */ - modulepar boolean PX_GTPsupport := false; - - /** @desc boolean indicator, PIXIT item A-7/53 - * TRUE if the Rx interface is accessible to trigger Diameter events at the Gx interface - */ - modulepar boolean PX_Rxsupport := false; - - } //end group DiameterCommonGxData - - group Rx_Related_PIXITS { - group Port_and_addresses{ - - /** @desc charstring, PIXIT item A-8/1 - * IP address of the test system - */ - modulepar charstring PX_DIAMETER_RX_ETS_IPADDR := "1.1.1.1"; - - /** @desc charstring, PIXIT item A-18/2 - * IP address of the system under test - */ - modulepar charstring PX_DIAMETER_RX_SUT_IPADDR := "1.1.1.2"; - - /** @desc charstring, PIXIT item A-8/3 - * Port number of the test system - */ - modulepar integer PX_DIAMETER_RX_ETS_PORT := 3868; - - /** @desc charstring, PIXIT item A-8/4 - * Port number of the system under test - */ - modulepar integer PX_DIAMETER_RX_SUT_PORT := 3868; - - } - /** @desc UTF8String, PIXIT item A-8/5 - - The Session-Id AVP (AVP Code 263) is of type UTF8String and is used - to identify a specific session (see Section 8); All messages - pertaining to a specific session MUST include only one Session-Id AVP - and the same value MUST be used throughout the life of a session. - When present, the Session-Id SHOULD appear immediately following the - Diameter Header (see Section 3); - - Ref: RFC 3588 section 8-8 - */ - modulepar UTF8String PX_RX_SessionID := "pcscf.etsi.org;1317059245;52;21823490"; - - - - /** @desc charstring, PIXIT item A-8/6 - - The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, and - MUST be present in all Diameter messages; This AVP identifies the - endpoint that originated the Diameter message; Relay agents MUST NOT - modify this AVP; - - The value of the Origin-Host AVP is guaranteed to be unique within a - single host; - - Ref: RFC 3588 section 6-3. - NOTE: could be AF or PCRF role: - pcscf.example.com - pcrf.example.com - */ - modulepar charstring PX_RX_OriginHost := "origin.etsi.org"; - - - - /** @desc charstring, PIXIT item A-8/7 - - The Origin-Realm AVP (AVP Code 296) is of type DiameterIdentity; - This AVP contains the Realm of the originator of any Diameter message - and MUST be present in all messages; - - Ref: RFC 3588 section 6-4 - */ - modulepar charstring PX_RX_OriginRealm := "etsi.org"; - - - - /** @desc charstring, PIXIT item A-8/8 - - The Destination-Host AVP (AVP Code 293) is of type DiameterIdentity; - This AVP MUST be present in all unsolicited agent initiated messages, - MAY be present in request messages, and MUST NOT be present in Answer - messages; - - Ref: RFC 3588 section 6-5. - NOTE: could be AF or PCRF role: - pcscf.example.com - pcrf.example.com - */ - modulepar charstring PX_RX_DestinationHost := "destination.etsi.org"; - - - - /** @desc charstring, PIXIT item A-8/9 - - The Destination-Realm AVP (AVP Code 283) is of type DiameterIdentity, - and contains the realm the message is to be routed to; The - Destination-Realm AVP MUST NOT be present in Answer messages; - Diameter Clients insert the realm portion of the User-Name AVP; - Diameter servers initiating a request message use the value of the - Origin-Realm AVP from a previous message received from the intended - target host (unless it is known a priori); When present, the - Destination-Realm AVP is used to perform message routing decisions; - - Ref: RFC 3588 section 6-6 - */ - modulepar charstring PX_RX_DestinationRealm := "myalupcrf.etsi.org"; - - - /** @desc UInt32, PIXIT item A-8/10 - - A media component number for the Media-Component AVP in Media-Component-Description AVPs - - */ - modulepar UInt32 PX_RX_MediaComponentNr := 0; - } //end group Rx_Related_PIXITS - -} // end module DiameterGx_PIXITS \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterGx_Templates.ttcn b/ttcn/AtsImsIot/DiameterGx_Templates.ttcn deleted file mode 100644 index e53c625..0000000 --- a/ttcn/AtsImsIot/DiameterGx_Templates.ttcn +++ /dev/null @@ -1,2081 +0,0 @@ -/** - * @author STF 443 - * @version $Id$ - * @desc This module defines Gx Diameter Templates for message, header, and - * structured types.
- * Note that any changes made to the definitions in this module - * may be overwritten by future releases of this library - * End users are encouraged to contact the distributers of this - * module regarding their modifications or additions - * @remark Any additions to the templates shall follow the design rules - * and always modify base templates only; - */ - -module DiameterGx_Templates { - - //LibCommon - import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all; - import from LibCommon_BasicTypesAndValues {type UInt8, UInt32, UInt64;}; - - //LibDiameter - import from LibDiameter_TypesAndValues all; - import from LibDiameter_Templates all; - import from LibDiameter_Steps all; - import from LibDiameter_Types_Gx_AVPs all; - import from LibDiameter_Types_Base_AVPs all; - import from LibDiameter_Types_Rx_AVPs all; - - //DiameterGx - import from DiameterGx_PIXITS all; - - group SubFields{ - - } //end group SubFields - - group HeaderFieldTemplates { - - group DummyAVPHeaders{ - - template Charging_Rule_Report_AVP m_chargRuleReport_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Report_AVP_Code, 4, c_vendId3gpp), - charging_Rule_Name := omit, - charging_Rule_Base_Name := omit, - bearer_Identifier := omit, - pCC_Rule_Status := omit, - rule_Failure_Code := omit, - final_Unit_Indication := omit, - aVP_Type := omit - } - - template QoS_Information_AVP m_qoS_Information_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, 4, c_vendId3gpp), - qoS_Class_Identifier := omit, - max_Requested_Bandwidth_UL := omit, - max_Requested_Bandwidth_DL := omit, - guaranteed_Bitrate_UL := omit, - guaranteed_Bitrate_DL := omit, - bearer_Identifier := omit, - allocation_Retention_Priority := omit, - aPN_Aggregate_Max_Bitrate_UL := omit, - aPN_Aggregate_Max_Bitrate_DL := omit, - aVP_Type := omit - } - - template Packet_Filter_Information_AVP m_packet_Filter_Information_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, 4, c_vendId3gpp), - packet_Filter_Identifier := omit, - precedence := omit, - packet_Filter_Content := omit, - toS_Traffic_Class := omit, - security_Parameter_Index := omit, - flow_Label := omit, - flow_Direction := omit, - aVP_Type := omit - } - - template Packet_Filter_Information_AVP mw_packet_Filter_Information_dummy := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_packet_Filter_Information_AVP_Code),// - packet_Filter_Identifier := *, - precedence := *, - packet_Filter_Content := *, - toS_Traffic_Class := *, - security_Parameter_Index := *, - flow_Label := *, - flow_Direction := *, - aVP_Type := * - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, 4, c_vendId3gpp), - charging_Rule_Definition := omit, - charging_Rule_Name := omit, - charging_Rule_Base_Name := omit, - bearer_Identifier := omit, - rule_Activation_Time := omit, - rule_DeActivation_Time := omit, - resource_Allocation_Notification := omit, - charging_Correlation_Indicator := omit, - aVP_Type := omit - } - - template Charging_Rule_Install_AVP mw_chrgRuleInstall_dummy := - { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Install_AVP_Code), - charging_Rule_Definition := *, - charging_Rule_Name := *, - charging_Rule_Base_Name := *, - bearer_Identifier := *, - rule_Activation_Time := *, - rule_DeActivation_Time := *, - resource_Allocation_Notification := *, - charging_Correlation_Indicator := *, - aVP_Type := * - } - - template Charging_Rule_Remove_AVP mw_chrgRuleRemove_dummy := - { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Remove_AVP_Code), - charging_Rule_Name := *, - charging_Rule_Base_Name := *, - aVP_Type := * - } - - template Charging_Rule_Remove_AVP m_chrgRuleRemove_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Remove_AVP_Code, 4, c_vendId3gpp), - charging_Rule_Name := omit, - charging_Rule_Base_Name := omit, - aVP_Type := omit - } - - template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_dummy := - { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Definition_AVP_Code), - charging_Rule_Name := ?, - service_Identifier := *, - rating_Group := *, - flow_Information := *, - flow_Status := *, - qoS_Information := *, - reporting_Level := *, - online := *, - offline := *, - metering_Method := *, - precedence := *, - aF_Charging_Identifier := *, - flows := *, - monitoring_Key := *, - aF_Signalling_Protocol := *, - sponsor_Identity := *, - application_Service_Provider_Identity := *, - aVP_Type := * - } - - template Charging_Rule_Definition_AVP m_chrgRuleDefinition_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, 4, c_vendId3gpp), - charging_Rule_Name := m_chargingRuleName(''O), - service_Identifier := omit, - rating_Group := omit, - flow_Information := omit, - flow_Status := omit, - qoS_Information := omit, - reporting_Level := omit, - online := omit, - offline := omit, - metering_Method := omit, - precedence := omit, - aF_Charging_Identifier := omit, - flows := omit, - monitoring_Key := omit, - aF_Signalling_Protocol := omit, - sponsor_Identity := omit, - application_Service_Provider_Identity := omit, - aVP_Type := omit - } - - template QoS_Information_AVP mw_qoS_Information_dummy := - { - aVP_Header := mw_aVP_Header_VMbit1(c_qoS_Information_AVP_Code), - qoS_Class_Identifier := *, - max_Requested_Bandwidth_UL := *, - max_Requested_Bandwidth_DL := *, - guaranteed_Bitrate_UL := *, - guaranteed_Bitrate_DL := *, - bearer_Identifier := *, - allocation_Retention_Priority := *, - aPN_Aggregate_Max_Bitrate_UL := *, - aPN_Aggregate_Max_Bitrate_DL := *, - aVP_Type := * - } - - template Allocation_Retention_Priority_AVP mw_allocRetentionPrio_dummy := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_allocation_Retention_Priority_AVP_Code), - priority_Level := ?, - pre_emption_Capability := *, - pre_emption_Vulnerability := * - } - - template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_dummy := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_usage_Monitoring_Information_AVP_Code), - monitoring_Key := *, - granted_Service_Unit := *, - used_Service_Unit := *, - usage_Monitoring_Level := *, - usage_Monitoring_Report := *, - usage_Monitoring_Support := *, - aVP_Type := * - } - - template Granted_Service_Unit_AVP mw_grantedServiceUnit_dummy := - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_granted_Service_Unit_AVP_Code), - tariff_Time_Change := *, - cC_Time := *, - cC_Money := *, - cC_Total_Octets := *, - cC_Input_Octets := *, - cC_Output_Octets := *, - cC_Service_Specific_Units := *, - aVP_Type := * - } - - template Granted_Service_Unit_AVP m_grantedServiceUnit_dummy := { - // Ref: RFC4006 8.17. Granted-Service-Unit AVP - aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code,0, omit), - tariff_Time_Change := omit, - cC_Time := omit, - cC_Money := omit, - cC_Total_Octets := omit, - cC_Input_Octets := omit, - cC_Output_Octets := omit, - cC_Service_Specific_Units := omit, - aVP_Type := omit - } - - template Flow_Information_AVP mw_flowInformation_dummy := { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_flow_Information_AVP_Code), - flow_Description := *, - packet_Filter_Identifier := *, - packet_Filter_Usage := *, - toS_Traffic_Class := *, - security_Parameter_Index := *, - flow_Label := *, - flow_Direction := *, - aVP_Type := * - } - - template Flow_Information_AVP m_flowInformation_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Information_AVP_Code, 4, c_vendId3gpp), - flow_Description := omit, - packet_Filter_Identifier := omit, - packet_Filter_Usage := omit, - toS_Traffic_Class := omit, - security_Parameter_Index := omit, - flow_Label := omit, - flow_Direction := omit, - aVP_Type := omit - } - - template Charging_Rule_Report_AVP mw_chargRuleReport_dummy := - { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Report_AVP_Code),// - charging_Rule_Name := *, - charging_Rule_Base_Name := *, - bearer_Identifier := *, - pCC_Rule_Status := *, - rule_Failure_Code := *, - final_Unit_Indication := *, - aVP_Type := * - } - - } //end group DummyAVPHeaders - - group SpecificAVPHeaders { - group sendingTemplatesForAVPs{ - - template Destination_Host_AVP m_destinationHost(charstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_destination_Host_AVP_Code, lengthof(p_avpData), omit), - aVP_Data := p_avpData - } - - template Destination_Realm_AVP m_destinationRealm(charstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_destination_Realm_AVP_Code, lengthof(p_avpData), omit), - aVP_Data := p_avpData - } - - template Session_Id_AVP m_sessionId(UTF8String p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_session_Id_AVP_Code, lengthof(p_avpData), omit), - aVP_Data := p_avpData - } - - template CC_Request_Type_AVP m_cC_Request_Type(CC_Request_Ty_Type p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Request_Type_AVP_Code, 4, omit), - aVP_Data := p_avpData - } - - template CC_Request_Number_AVP m_cC_Request_Number(UInt32 p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Request_Number_AVP_Code, 4, omit), - aVP_Data := p_avpData - } - - template Subscription_Id_AVP m_subscription_Id(Subscription_Id_Type_AVP p_typeAVP, Subscription_Id_Data_AVP p_dataAVP):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_AVP_Code, - f_getByteAlignedLength(p_typeAVP.aVP_Header.aVP_len) - +f_getByteAlignedLength(p_dataAVP.aVP_Header.aVP_len), - omit), - subscription_Id_Type := p_typeAVP, - subscription_Id_Data := p_dataAVP - } - - template IP_CAN_Type_AVP m_iP_CAN_Type(IP_CAN_Type p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_iP_CAN_Type_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template RAT_Type_AVP m_rAT_Type(RAT_Type p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_rAT_Type_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Subscription_Id_Type_AVP m_subscription_Id_Type(Subscription_Id_Ty_Type p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Type_AVP_Code, 4, omit), - aVP_Data := p_avpData - } - - template Subscription_Id_Data_AVP m_subscription_Id_Data(UTF8String p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Data_AVP_Code, lengthof(p_avpData), omit), - aVP_Data := p_avpData - } - - template Framed_IP_Address_AVP m_framedIpAddress(template (value) octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_framed_IP_Address_AVP_Code, lengthof(p_avpData), omit), - aVP_Data := p_avpData - } - - template Framed_IPv6_Prefix_AVP m_framedIp6Address(template (value) octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_framed_IPv6_Prefix_AVP_Code, 4+lengthof(p_avpData), omit), - aVP_Data := p_avpData - } - - template Network_Request_Support_AVP m_network_Request_Support(Network_Request_Support p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_Network_Request_Support_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template QoS_Information_AVP m_qoS_Information_APN_AMBR_UL modifies m_qoS_Information_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, 16/*length aPN_Aggregate_Max_Bitrate_UL: 12+4 for vendId*/, c_vendId3gpp), - aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL(PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA) - } - - template QoS_Information_AVP m_qoS_Information_ClassIdentifier(QoS_Class_Identifier p_avpData) modifies m_qoS_Information_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, 16/*length qoS_Class_Identifier: 12+4 for vendId*/, c_vendId3gpp), - qoS_Class_Identifier := m_qoS_Class_Identifier(p_avpData) - } - - template QoS_Information_AVP m_qoS_Information_Bearer(template Bearer_Identifier_AVP p_bearerIdentifier) modifies m_qoS_Information_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Information_AVP_Code, lengthof(encvalue(p_bearerIdentifier))/8, c_vendId3gpp), - bearer_Identifier := p_bearerIdentifier - } - - template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL(UInt32 p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_aPN_Aggregate_Max_Bitrate_UL_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template QoS_Class_Identifier_AVP m_qoS_Class_Identifier(QoS_Class_Identifier p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_qoS_Class_Identifier_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template ThreeGPP_MS_TimeZone_AVP m_threeGPP_MS_TimeZone(octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_threeGPP_MS_TimeZone_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Called_Station_Id_AVP m_called_Station_Id(UTF8String p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_called_Station_Id_AVP_Code, lengthof(p_avpData), omit), - aVP_Data := p_avpData - } - - template PDN_Connection_ID_AVP m_pDN_Connection_ID(octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_pDN_Connection_ID_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Bearer_Usage_AVP m_bearer_Usage(Bearer_Usage p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_bearer_Usage_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Bearer_Identifier_AVP m_bearer_Identifier(octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_bearer_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template (value) Access_Network_Charging_Address_AVP m_accessNetworkChargingAddress(template (value) Address p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Charging_Address_AVP_Code, f_IPAdressLengthUInt24(), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Access_Network_Charging_Identifier_Gx_AVP m_aNCI_Gx(Access_Network_Charging_Identifier_Value_AVP p_nciv) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Charging_Identifier_Gx_AVP_Code, lengthof(encvalue(p_nciv))/8, c_vendId3gpp), - acc_Net_Charging_Id_Val := p_nciv, - charging_Rule_Base_Name := omit, - charging_Rule_Name := omit - } - - template Access_Network_Charging_Identifier_Value_AVP m_aNCI_Value(octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Charging_Identifier_Value_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Routing_Rule_Install_AVP m_routing_Rule_Install(Routing_Rule_Definition_AVP p_rrd) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Install_AVP_Code, lengthof(encvalue(p_rrd))/8, c_vendId3gpp), - routing_Rule_Definition := {p_rrd}, - aVP_Type := omit - } - - template Routing_Rule_Definition_AVP m_routing_Rule_Definition(Routing_Rule_Identifier_AVP p_rri, Routing_Filter_AVP p_rf) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Definition_AVP_Code, (lengthof(encvalue(p_rri))/8+lengthof(encvalue(p_rf))/8), c_vendId3gpp), - routing_Rule_Identifier := p_rri, - routing_Filter := {p_rf}, - precedence := omit, - routing_IP_Address := omit, - aVP_Type := omit - } - - template Routing_Rule_Identifier_AVP m_routing_Rule_Identifier(octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Routing_Filter_AVP m_routing_Filter := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Filter_AVP_Code, 16/*flow_direction: 12+4 for vendId*/+ lengthof(encvalue(m_flow_Description(valueof(m_iPFilterRule))))/8, c_vendId3gpp), - flow_Description := m_flow_Description(valueof(m_iPFilterRule)), - flow_Direction := m_flowDirection_Bidirectional, - toS_Traffic_Class := omit, - security_Parameter_Index := omit, - flow_Label := omit, - aVP_Type := omit - } - - template Flow_Information_AVP m_flowInformation_direction_packetFID (template Packet_Filter_Identifier_AVP p_packetFilterIdentifier, template Flow_Direction_AVP p_flowDirection) modifies m_flowInformation_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Information_AVP_Code, lengthof(encvalue(p_packetFilterIdentifier))/8+lengthof(encvalue(p_flowDirection))/8, c_vendId3gpp), - packet_Filter_Identifier := p_packetFilterIdentifier, - flow_Direction := p_flowDirection - } - - template Flow_Description_AVP m_flow_Description(IPFilterRule_Type p_IPftr) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Description_AVP_Code, lengthof(encvalue(p_IPftr))/8, c_vendId3gpp), - aVP_Data := p_IPftr - } - - template Flow_Direction_AVP m_flowDirection_Bidirectional := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Direction_AVP_Code, 4, c_vendId3gpp), - aVP_Data := BIDIRECTIONAL_E - } - - template IPFilterRule_Type m_iPFilterRule := - { - action_ := "permit", - direction := "out", - proto := "ip", - src := { - addr := "1.1.1.1", - mask := omit, - ports := omit - }, - dst := { - addr := "10.10.10.1", - mask := omit, - ports := omit - }, - options := omit - } - - template Event_Trigger_AVP m_event_Trigger(Event_Trigger p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_event_Trigger_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Charging_Correlation_Indicator_AVP m_correlationIndicator(Charging_Correlation_Indicator p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_charging_Correlation_Indicator_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Charging_Rule_Report_AVP m_chargRuleReport_RNameStatus(Charging_Rule_Name_AVP p_crn, PCC_Rule_Status_AVP p_ccrs) modifies m_chargRuleReport_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Report_AVP_Code, lengthof(encvalue(p_crn))/8+16/*PCC_Rule_Status_AVP length: 12+4 for vendId*/, c_vendId3gpp), - charging_Rule_Name := {p_crn}, - pCC_Rule_Status := p_ccrs - } - - template Charging_Rule_Report_AVP m_chargRuleReport_RNameStatusFailure(Charging_Rule_Name_AVP p_crn, PCC_Rule_Status_AVP p_ccrs, Rule_Failure_Code_AVP p_rfc) modifies m_chargRuleReport_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Report_AVP_Code, lengthof(encvalue(p_crn))/8+16+/*PCC_Rule_Status_AVP length: 12+4 for vendId*/+16/*Rule_Failure_Code_AVP length: 12+4 for vendId*/, c_vendId3gpp), - charging_Rule_Name := {p_crn}, - pCC_Rule_Status := p_ccrs, - rule_Failure_Code := p_rfc - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_Definition(template Charging_Rule_Definition_AVP p_chargingRuleDefinition) modifies m_chrgRuleInstall_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleDefinition))/8, c_vendId3gpp), - charging_Rule_Definition := {p_chargingRuleDefinition} - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_Definition_ActTime(template Charging_Rule_Definition_AVP p_chargingRuleDefinition, template Rule_Activation_Time_AVP p_ruleActivationTime) modifies m_chrgRuleInstall_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleDefinition))/8+lengthof(encvalue(p_ruleActivationTime))/8, c_vendId3gpp), - charging_Rule_Definition := {p_chargingRuleDefinition}, - rule_Activation_Time := p_ruleActivationTime - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_Definition_DeActTime(template Charging_Rule_Definition_AVP p_chargingRuleDefinition, template Rule_DeActivation_Time_AVP p_ruleDeActivationTime) modifies m_chrgRuleInstall_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleDefinition))/8+lengthof(encvalue(p_ruleDeActivationTime))/8, c_vendId3gpp), - charging_Rule_Definition := {p_chargingRuleDefinition}, - rule_DeActivation_Time := p_ruleDeActivationTime - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_CorrelationId(template Charging_Correlation_Indicator_AVP p_chargingCorrelationIndicator) modifies m_chrgRuleInstall_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingCorrelationIndicator))/8, c_vendId3gpp), - charging_Correlation_Indicator := p_chargingCorrelationIndicator - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_Name(template Charging_Rule_Name_AVP p_chargingRuleName) modifies m_chrgRuleInstall_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleName))/8, c_vendId3gpp), - charging_Rule_Name := {p_chargingRuleName} - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_Name_RAN(template Charging_Rule_Name_AVP p_chargingRuleName, template Resource_Allocation_Notification_AVP p_resourceAllocationNotification) modifies m_chrgRuleInstall_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_resourceAllocationNotification))/8+lengthof(encvalue(p_chargingRuleName))/8, c_vendId3gpp), - charging_Rule_Name := {p_chargingRuleName}, - resource_Allocation_Notification := p_resourceAllocationNotification - } - - template Charging_Rule_Install_AVP m_chrgRuleInstall_2Name(template Charging_Rule_Base_Name_AVP p_chargingRuleBName1,template Charging_Rule_Base_Name_AVP p_chargingRuleBName2) modifies m_chrgRuleInstall_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Install_AVP_Code, lengthof(encvalue(p_chargingRuleBName1))/8+lengthof(encvalue(p_chargingRuleBName2))/8, c_vendId3gpp), - charging_Rule_Base_Name := {p_chargingRuleBName1, p_chargingRuleBName2} - } - - template Charging_Rule_Remove_AVP m_chrgRuleRemove_Name(template Charging_Rule_Name_AVP p_chargingRuleName) modifies m_chrgRuleRemove_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Remove_AVP_Code, lengthof(encvalue(p_chargingRuleName))/8, c_vendId3gpp), - charging_Rule_Name := {p_chargingRuleName} - } - - template Charging_Rule_Remove_AVP m_chrgRuleRemove_BName(template Charging_Rule_Base_Name_AVP p_chargingRuleBName) modifies m_chrgRuleRemove_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Remove_AVP_Code, lengthof(encvalue(p_chargingRuleBName))/8, c_vendId3gpp), - charging_Rule_Base_Name := {p_chargingRuleBName} - } - - template Charging_Rule_Name_AVP m_chargingRuleName(octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Name_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Charging_Rule_Definition_AVP m_chrgRuleDefinition (octetstring p_avpData) modifies m_chrgRuleDefinition_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8, c_vendId3gpp), - charging_Rule_Name := m_chargingRuleName(p_avpData) - } - - template Charging_Rule_Definition_AVP m_chrgRuleDefinition_MK (octetstring p_avpData, template Monitoring_Key_AVP p_monitoringKey) modifies m_chrgRuleDefinition_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_monitoringKey))/8, c_vendId3gpp), - charging_Rule_Name := m_chargingRuleName(p_avpData), - monitoring_Key := p_monitoringKey - } - - template Charging_Rule_Definition_AVP m_chrgRuleDefinition_FI_AF (octetstring p_avpData, template Flow_Information_AVP p_flowInformation, template AF_Signalling_Protocol_AVP p_afSignallingProtocol) modifies m_chrgRuleDefinition_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_flowInformation))/8, c_vendId3gpp), - charging_Rule_Name := m_chargingRuleName(p_avpData), - flow_Information := {p_flowInformation}, - aF_Signalling_Protocol := p_afSignallingProtocol - } - - template Charging_Rule_Definition_AVP m_chrgRuleDefinition_FI (octetstring p_avpData, template Flow_Information_AVP p_flowInformation) modifies m_chrgRuleDefinition_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_flowInformation))/8, c_vendId3gpp), - charging_Rule_Name := m_chargingRuleName(p_avpData), - flow_Information := {p_flowInformation} - } - - template Charging_Rule_Definition_AVP m_chrgRuleDefinition_QoS (octetstring p_avpData, template QoS_Information_AVP p_qoSInformation) modifies m_chrgRuleDefinition_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_qoSInformation))/8, c_vendId3gpp), - charging_Rule_Name := m_chargingRuleName(p_avpData), - qoS_Information := p_qoSInformation - } - - template Charging_Rule_Definition_AVP m_chrgRuleDefinition_RG (octetstring p_avpData, template Rating_Group_AVP p_ratingGroup) modifies m_chrgRuleDefinition_dummy:= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Definition_AVP_Code, lengthof(encvalue(m_chargingRuleName(p_avpData)))/8+lengthof(encvalue(p_ratingGroup))/8, c_vendId3gpp), - charging_Rule_Name := m_chargingRuleName(p_avpData), - rating_Group := p_ratingGroup - } - - template Charging_Rule_Base_Name_AVP m_chrgRuleBaseName(UTF8String p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Rule_Base_Name_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData //or PX_CHARGING_RULE_BASE_NAME_DATA - } - - template PCC_Rule_Status_AVP m_pCC_Rule_Status(PCC_Rule_Status p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_pCC_Rule_Status_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Rule_Failure_Code_AVP m_rule_Failure_Code(Rule_Failure_Code p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_rule_Failure_Code_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId(Packet_Filter_Identifier_AVP p_pfId) modifies m_packet_Filter_Information_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, lengthof(encvalue(p_pfId))/8, c_vendId3gpp), - packet_Filter_Identifier := p_pfId - } - - template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId_FlowDirection(Packet_Filter_Identifier_AVP p_pfId) modifies m_packet_Filter_Information_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, lengthof(encvalue(p_pfId))/8+16/*flow_direction: 12+4 for vendId*/, c_vendId3gpp), - packet_Filter_Identifier := p_pfId, - flow_Direction := m_flowDirection_Bidirectional - } - - template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId_Precedence_pFContent(Packet_Filter_Identifier_AVP p_pfId, Precedence_AVP p_precedence, Packet_Filter_Content_AVP p_pfc) modifies m_packet_Filter_Information_dummy := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Information_AVP_Code, lengthof(encvalue(p_pfId))/8 +lengthof(encvalue(p_precedence))/8 +lengthof(encvalue(p_pfc))/8, c_vendId3gpp), - packet_Filter_Identifier := p_pfId, - precedence := p_precedence, - packet_Filter_Content := p_pfc - } - - template Packet_Filter_Content_AVP m_packet_Filter_Content(IPFilterRule_Type p_IPftr) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Content_AVP_Code, lengthof(encvalue(p_IPftr))/8, c_vendId3gpp), - aVP_Data := p_IPftr - } - - template Packet_Filter_Identifier_AVP m_packet_Filter_Identifier(octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Precedence_AVP m_precedence(UInt32 p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_precedence_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Packet_Filter_Operation_AVP m_packet_Filter_Operation(Packet_Filter_Operation p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_packet_Filter_Operation_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Experimental_Result_AVP m_experimentalResult(template Vendor_Id_AVP p_vendorId, template Experimental_Result_Code_AVP p_expResultCode) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_experimental_Result_AVP_Code, 12/*12-Vendor_Id_AVP*/+12/*12-experimental_Result_Code*/, omit), - vendor_Id := p_vendorId, - experimental_Result_Code := p_expResultCode - } - - template Vendor_Id_AVP m_vendorId(UInt32 p_avpData):= - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_vendor_Id_AVP_Code, 4, omit), - aVP_Data := p_avpData - } - - template Experimental_Result_Code_AVP m_expResultCode(Experimental_Result_Type p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_experimental_Result_Code_AVP_Code, 4, omit), - aVP_Data := p_avpData - } - - template Offline_AVP m_offline(Offline p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_offline_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Online_AVP m_online(Online p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_online_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Session_Release_Cause_AVP m_sessReleaseCause(template (present) Session_Release_Cause p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_session_Release_Cause_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Resource_Allocation_Notification_AVP m_resourceAllocNotif:= - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_resource_Allocation_Notification_AVP_Code, 4, c_vendId3gpp), - aVP_Data := ENABLE_NOTIFICATION_E - } - - template Monitoring_Key_AVP m_monitoringKey (octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_monitoring_Key_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Rating_Group_AVP m_ratingGroup (UInt32 p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_rating_Group_AVP_Code, 4, omit), - aVP_Data := p_avpData - } - - template Revalidation_Time_AVP m_revalidationTime (Time p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_revalidation_Time_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Rule_Activation_Time_AVP m_activationTime (Time p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_rule_Activation_Time_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Rule_DeActivation_Time_AVP m_deactivationTime (Time p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_rule_DeActivation_Time_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template AF_Signalling_Protocol_AVP m_afSignallingProtocol (AF_Signalling_Protocol_Type p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_aF_Signalling_Protocol_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Usage_Monitoring_Report_AVP m_usageMonitoringReport (Usage_Monitoring_Report p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Report_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Usage_Monitoring_Support_AVP m_usageMonitoringSupport (Usage_Monitoring_Support p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Support_AVP_Code, 8, c_vendId3gpp), - aVP_Data := p_avpData - } - - template Usage_Monitoring_Information_AVP m_usageMonitoringInformation - (template Monitoring_Key_AVP p_monitoringKey, - template Granted_Service_Unit_AVP p_grantedServiceUnit) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Information_AVP_Code, lengthof(encvalue(p_monitoringKey))/8+lengthof(encvalue(p_grantedServiceUnit))/8, c_vendId3gpp), - monitoring_Key := p_monitoringKey, - granted_Service_Unit := p_grantedServiceUnit, - used_Service_Unit := omit, - usage_Monitoring_Level := omit, - usage_Monitoring_Report := omit, - usage_Monitoring_Support := omit, - aVP_Type := omit - }; - - template Usage_Monitoring_Information_AVP m_usageMonitoringInformationRequestReport - (template Usage_Monitoring_Report_AVP p_usageMonitoringReport) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Information_AVP_Code, lengthof(encvalue(p_usageMonitoringReport))/8, c_vendId3gpp), - monitoring_Key := omit, - granted_Service_Unit := omit, - used_Service_Unit := omit, - usage_Monitoring_Level := omit, - usage_Monitoring_Report := p_usageMonitoringReport, - usage_Monitoring_Support := omit, - aVP_Type := omit - }; - - template Usage_Monitoring_Information_AVP m_usageMonitoringInformationRequestSupport - (template Usage_Monitoring_Support_AVP p_usageMonitoringSupport) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_usage_Monitoring_Information_AVP_Code, lengthof(encvalue(m_monitoringKey(PX_MONITORING_KEY)))/8+lengthof(encvalue(p_usageMonitoringSupport))/8, c_vendId3gpp), - monitoring_Key := m_monitoringKey(PX_MONITORING_KEY), - granted_Service_Unit := omit, - used_Service_Unit := omit, - usage_Monitoring_Level := omit, - usage_Monitoring_Report := omit, - usage_Monitoring_Support := p_usageMonitoringSupport, - aVP_Type := omit - }; - - template Default_EPS_Bearer_QoS_AVP m_DefaultEpsBearerQoS - (template QoS_Class_Identifier_AVP p_qoSClassIdentifier, - template Allocation_Retention_Priority_AVP p_allocationRetentionPriority) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_default_EPS_Bearer_QoS_AVP_Code, lengthof(encvalue(p_qoSClassIdentifier))/8+lengthof(encvalue(p_allocationRetentionPriority))/8, c_vendId3gpp), - qoS_Class_Identifier := p_qoSClassIdentifier, - allocation_Retention_Priority := p_allocationRetentionPriority, - aVP_Type := omit - }; - - template Priority_Level_AVP m_priorityLevel (UInt32 p_data) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_priority_Level_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_data - } - - template Allocation_Retention_Priority_AVP m_allocRetentionPrio (template Priority_Level_AVP p_priorityLevel):= - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_allocation_Retention_Priority_AVP_Code, lengthof(encvalue(p_priorityLevel))/8, c_vendId3gpp), - priority_Level := p_priorityLevel, - pre_emption_Capability := omit, - pre_emption_Vulnerability := omit - } - - template AN_GW_Address_AVP m_anGwAddress(template (value) Address p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_aN_GW_Address_AVP_Code, f_IPAdressLengthUInt24(), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Logical_Access_ID_AVP m_logicalAccessID(template (value) octetstring p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_logical_Access_ID_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Physical_Access_ID_AVP m_physicalAccessID(template (value) UTF8String p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_physical_Access_ID_AVP_Code, lengthof(p_avpData), c_vendId3gpp), - aVP_Data := p_avpData - } - - template Granted_Service_Unit_AVP m_grantedServiceUnit_cCs(template CC_Total_Octets_AVP p_cC_Total_Octets, - template CC_Input_Octets_AVP p_cC_Input_Octets, - template CC_Output_Octets_AVP p_cC_Output_Octets) modifies m_grantedServiceUnit_dummy:= { - // Ref: RFC4006 8.17. Granted-Service-Unit AVP - aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code, - (lengthof(encvalue(p_cC_Total_Octets))/8+ - lengthof(encvalue(p_cC_Input_Octets))/8+ - lengthof(encvalue(p_cC_Output_Octets))/8), - omit), - cC_Total_Octets := p_cC_Total_Octets, - cC_Input_Octets := p_cC_Input_Octets, - cC_Output_Octets := p_cC_Output_Octets - } - - template CC_Total_Octets_AVP m_cC_Total_Octets(template (value) UInt64 p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Total_Octets_AVP_Code, 8, omit), - aVP_Data := p_avpData - } - - template CC_Input_Octets_AVP m_cC_Input_Octets(template (value) UInt64 p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Input_Octets_AVP_Code, 8, omit), - aVP_Data := p_avpData - } - - template CC_Output_Octets_AVP m_cC_Output_Octets(template (value) UInt64 p_avpData) := - { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Output_Octets_AVP_Code, 8, omit), - aVP_Data := p_avpData - } - - }//end group sendingTemplatesForAVPs - group awaitingTemplatesForAVPs{ - - template Framed_IP_Address_AVP mw_framedIpAddress(template (present) octetstring p_avpData) := - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_framed_IP_Address_AVP_Code), - aVP_Data := p_avpData - } - - template Framed_IPv6_Prefix_AVP mw_framedIp6Address(template (present) octetstring p_avpData) := - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_framed_IPv6_Prefix_AVP_Code), - aVP_Data := p_avpData - } - - template Subscription_Id_AVP mw_subscription_Id(template Subscription_Id_Type_AVP p_typeAVP, template Subscription_Id_Data_AVP p_dataAVP):= - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_AVP_Code), - subscription_Id_Type := p_typeAVP, - subscription_Id_Data := p_dataAVP - } - - template Subscription_Id_Type_AVP mw_subscription_Id_Type(template Subscription_Id_Ty_Type p_avpData):= - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_Type_AVP_Code), - aVP_Data := p_avpData - } - - template Subscription_Id_Data_AVP mw_subscription_Id_Data(template UTF8String p_avpData):= - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_subscription_Id_Data_AVP_Code), - aVP_Data := p_avpData - } - - template IP_CAN_Type_AVP mw_iP_CAN_Type(IP_CAN_Type p_avpData):= - { - aVP_Header := mw_aVP_Header_VMbit1(c_iP_CAN_Type_AVP_Code), - aVP_Data := p_avpData - } - - template RAT_Type_AVP mw_rAT_Type(RAT_Type p_avpData):= - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_rAT_Type_AVP_Code), - aVP_Data := p_avpData - } - - template CC_Request_Type_AVP mw_cC_Request_Type(CC_Request_Ty_Type p_avpData):= - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Request_Type_AVP_Code), - aVP_Data := p_avpData - } - - template Routing_Rule_Install_AVP mw_routing_Rule_Install := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_routing_Rule_Install_AVP_Code), - routing_Rule_Definition := {mw_routing_Rule_Definition}, - aVP_Type := * - } - - template Routing_Rule_Install_AVP mw_routing_Rule_Installs := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_routing_Rule_Install_AVP_Code), - routing_Rule_Definition := {mw_routing_Rule_Definition,*}, - aVP_Type := * - } - - template Routing_Rule_Definition_AVP mw_routing_Rule_Definition := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_routing_Rule_Definition_AVP_Code), - routing_Rule_Identifier := ?, - routing_Filter := ?, - precedence := *, - routing_IP_Address := *, - aVP_Type := * - } - - template Session_Release_Cause_AVP mw_sessReleaseCause(template (present) Session_Release_Cause p_avpData) := - { - aVP_Header := mw_aVP_Header_VMbit1(c_session_Release_Cause_AVP_Code), - aVP_Data := p_avpData - } - - template Charging_Rule_Install_AVP mw_chrgRuleInstall_Name modifies mw_chrgRuleInstall_dummy:= - { - charging_Rule_Name := {mw_chrgRuleName} - } - - template Charging_Rule_Install_AVP mw_chrgRuleInstall_Name_resAllocNotif modifies mw_chrgRuleInstall_dummy := - { - charging_Rule_Name := {mw_chrgRuleName}, - resource_Allocation_Notification := mw_resourceAllocNotif - } - - template Charging_Rule_Install_AVP mw_chrgRuleInstall_Definition(template Charging_Rule_Definition_AVP p_chrgRuleDefinition) modifies mw_chrgRuleInstall_dummy := - { - charging_Rule_Definition := {p_chrgRuleDefinition} - } - - template Charging_Rule_Install_AVP mw_chrgRuleInstall_BaseName modifies mw_chrgRuleInstall_dummy:= - { - charging_Rule_Base_Name := {mw_chrgRuleBaseName} - } - - template Charging_Rule_Remove_AVP mw_chrgRuleRemove_Name modifies mw_chrgRuleRemove_dummy:= - { - charging_Rule_Name := {mw_chrgRuleName} - } - - template Charging_Rule_Remove_AVP mw_chrgRuleRemove_BaseName modifies mw_chrgRuleRemove_dummy:= - { - charging_Rule_Base_Name := {mw_chrgRuleBaseName} - } - - template Charging_Rule_Definition_AVP mw_chrgRuleDefinition modifies mw_chrgRuleDefinition_dummy:= - { - charging_Rule_Name := mw_chrgRuleName - } - - template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_flowInfoAfSigProt(template Flow_Information_AVP p_flowInfo, template AF_Signalling_Protocol_AVP p_AfSigProt) modifies mw_chrgRuleDefinition_dummy:= - { - flow_Information := {p_flowInfo,*}, - aF_Signalling_Protocol := p_AfSigProt - } - - template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_qosInfoNoBearerID modifies mw_chrgRuleDefinition_dummy:= - { - charging_Rule_Name := mw_chrgRuleName, - qoS_Information := mw_qoSInfo_noBearerID - } - - template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_sponConn (template Sponsor_Identity_AVP p_sponsorIdentity, - template Application_Service_Provider_Identity_AVP p_applicationServiceProviderId, - template Reporting_Level_AVP p_reportingLevel) modifies mw_chrgRuleDefinition_dummy:= - { - charging_Rule_Name := mw_chrgRuleName, - sponsor_Identity := p_sponsorIdentity, - application_Service_Provider_Identity := p_applicationServiceProviderId, - reporting_Level := p_reportingLevel - } - - template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_qosInfo_AllocRetPrio modifies mw_chrgRuleDefinition_dummy:= - { - qoS_Information := mw_qoSInfo_allocRetPriority - } - - template QoS_Information_AVP mw_qoSInfo_noBearerID modifies mw_qoS_Information_dummy := - { - bearer_Identifier := omit - } - - template QoS_Information_AVP mw_qoSInfo_allocRetPriority modifies mw_qoS_Information_dummy := - { - allocation_Retention_Priority := mw_allocRetentionPrio_dummy - } - - template Charging_Rule_Name_AVP mw_chrgRuleName:= - { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Name_AVP_Code), - aVP_Data := ? //or PX_CHARGING_RULE_NAME_DATA - } - - template Charging_Rule_Base_Name_AVP mw_chrgRuleBaseName:= - { - aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Base_Name_AVP_Code), - aVP_Data := ? //or PX_CHARGING_RULE_BASE_NAME_DATA - } - - template Resource_Allocation_Notification_AVP mw_resourceAllocNotif:= - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_resource_Allocation_Notification_AVP_Code), - aVP_Data := ENABLE_NOTIFICATION_E - } - - template Offline_AVP mw_offline_any := - { - aVP_Header := mw_aVP_Header_VMbit1(c_offline_AVP_Code), - aVP_Data := ? - } - - template Online_AVP mw_online_any := - { - aVP_Header := mw_aVP_Header_VMbit1(c_online_AVP_Code), - aVP_Data := ? - } - - template Bearer_Control_Mode_AVP mw_bearerControlMode(template Bearer_Control_Mode p_aVP_Data) := - { - aVP_Header := mw_aVP_Header_VMbit1(c_bearer_Control_Mode_AVP_Code), - aVP_Data := p_aVP_Data - } - - template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key_GrantedServiceUnit modifies mw_usageMonitoringInfo_dummy := - { - monitoring_Key := mw_monitoringKey_any, - granted_Service_Unit := mw_grantedServiceUnit_dummy - } - - template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key_UsedServiceUnit (template Used_Service_Unit_AVP p_usedServiceUnit) modifies mw_usageMonitoringInfo_dummy := - { - monitoring_Key := mw_monitoringKey_predefined, - used_Service_Unit := p_usedServiceUnit - } - - template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key2_UsedServiceUnit (template Used_Service_Unit_AVP p_usedServiceUnit) modifies mw_usageMonitoringInfo_dummy := - { - monitoring_Key := mw_monitoringKey_predefined2, - used_Service_Unit := p_usedServiceUnit - } - - template Monitoring_Key_AVP mw_monitoringKey_any := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_monitoring_Key_AVP_Code), - aVP_Data := ? - } - - template Monitoring_Key_AVP mw_monitoringKey_predefined modifies mw_monitoringKey_any := - { - aVP_Data := PX_MONITORING_KEY - } - - template Monitoring_Key_AVP mw_monitoringKey_predefined2 modifies mw_monitoringKey_any := - { - aVP_Data := PX_MONITORING_KEY2 - } - - template Event_Trigger_AVP mw_eventTrigger(template Event_Trigger p_aVP_Data) := - { - aVP_Header := mw_aVP_Header_VMbit1(c_event_Trigger_AVP_Code), - aVP_Data := p_aVP_Data - } - - template Flow_Information_AVP mw_flowInformation_direction modifies mw_flowInformation_dummy := { - flow_Direction := ? - } - - template Reporting_Level_AVP mw_reportingLevel (template Reporting_Level p_avpData) := { - //Ref: ETSI TS 129 212 Reporting_Levele_AVP - aVP_Header := mw_aVP_Header_VMbit1(c_reporting_Level_AVP_Code),// - aVP_Data := p_avpData - }; - - template Charging_Rule_Report_AVP mw_chargRuleReport_Status modifies mw_chargRuleReport_dummy := - { - pCC_Rule_Status := ? - } - - template Charging_Rule_Report_AVP mw_chargRuleReport_Name_Code_Status (template Rule_Failure_Code_AVP p_ruleFailureCode, template PCC_Rule_Status_AVP p_pCcRuleStatus) modifies mw_chargRuleReport_dummy := - { - charging_Rule_Name := ?, - rule_Failure_Code := p_ruleFailureCode, - pCC_Rule_Status := p_pCcRuleStatus - } - - template Packet_Filter_Information_AVP mw_packet_Filter_Information - (template Packet_Filter_Identifier_AVP p_packetFilterIdentifier, - template Precedence_AVP p_precedence, - template Packet_Filter_Content_AVP p_packetFilterContent) - modifies mw_packet_Filter_Information_dummy := - { - packet_Filter_Identifier := p_packetFilterIdentifier, - precedence := p_precedence, - packet_Filter_Content := p_packetFilterContent - } - - template Packet_Filter_Operation_AVP mw_packet_Filter_Operation(Packet_Filter_Operation p_avpData) := - { - aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_packet_Filter_Operation_AVP_Code), - aVP_Data := p_avpData - } - - template Access_Network_Charging_Identifier_Gx_AVP mw_aNCI_Gx(template Access_Network_Charging_Identifier_Value_AVP p_nciv) := - { - aVP_Header := mw_aVP_Header_VMbit1(c_access_Network_Charging_Identifier_Gx_AVP_Code), - acc_Net_Charging_Id_Val := p_nciv, - charging_Rule_Base_Name := *, - charging_Rule_Name := * - } - - template PCC_Rule_Status_AVP mw_pCC_Rule_Status(PCC_Rule_Status p_avpData) := - { - aVP_Header := mw_aVP_Header_VMbit1(c_pCC_Rule_Status_AVP_Code), - aVP_Data := p_avpData - } - - template Rule_Failure_Code_AVP mw_rule_Failure_Code(Rule_Failure_Code p_avpData) := - { - aVP_Header := mw_aVP_Header_VMbit1(c_rule_Failure_Code_AVP_Code), - aVP_Data := p_avpData - } - - template User_Equipment_Info_AVP mw_UserEquipmentInfo - (template User_Equipment_Info_Type_AVP p_userEquipmentInfoType, - template User_Equipment_Info_Value_AVP p_userEquipmentInfoValue) := - { - aVP_Header := mw_aVP_Header_Vbit0(c_user_Equipment_Info_AVP_Code), - user_Equipment_Info_Type := p_userEquipmentInfoType, - user_Equipment_Info_Value := p_userEquipmentInfoValue - } - - template User_Equipment_Info_Type_AVP mw_UserEquipmentInfoType(User_Equipment_Info_Ty_Type p_avpData) := - { - aVP_Header := mw_aVP_Header_Vbit0(c_user_Equipment_Info_Type_AVP_Code), - aVP_Data := p_avpData - } - - template Called_Station_Id_AVP mw_CalledStationId(template UTF8String p_avpData) := - { - aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_called_Station_Id_AVP_Code), - aVP_Data := p_avpData - } - -// template Used_Service_Unit_AVP mw_usedServiceUnit(template CC_Input_Octets_AVP p_CCInputOctets, template CC_Output_Octets_AVP p_CCOutputOctets) := -// { -// aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_used_Service_Unit_AVP_Code), -// tariff_Change_Usage := *, -// cC_Time := *, -// cC_Money := *, -// cC_Total_Octets := ?, -// cC_Input_Octets := *, -// cC_Output_Octets := *, -// cC_Service_Specific_Units := *, -// aVP_Type := * -// } - - }//end group awaitingTemplatesForAVPs - } //end group SpecificAVPHeaders - } //end group HeaderFieldTemplates - - /** Message templates for RAR, RAA, CCR, CCA.... methods */ - group GxMessageTemplates { - group Gxbase_templates { - - group Gxbasic_request_templates_send { - -// template CCR_MSG m_CCR_basic(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_dummy := -// { -// header := m_diameterHeaderReq_dummy(CCR_E, c_applIdGx), -// session_Id := p_sessionId, -// origin_Host := p_originHost, -// origin_Realm := p_originRealm, -// destination_Realm := p_destinationRealm, -// auth_Application_Id := m_authApplicationId(c_applIdGx), -// cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E), -// cC_Request_Number := m_cC_Request_Number(0) -// } -// -// template RAR_MSG m_RAR_basic(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost) -// modifies m_RAR_dummy := -// { -// header := m_diameterHeaderReq_dummy(RAR_E, c_applIdGx), -// session_Id := p_sessionId, -// origin_Host := p_originHost, -// origin_Realm := p_originRealm, -// destination_Realm := p_destinationRealm, -// destination_Host := p_destinationHost, -// auth_Application_Id := m_authApplicationId(c_applIdGx) -// } - - } // end group Gxbasic_request_templates_send - - group Gxbasic_request_templates_receive { - - template CCR_MSG mw_CCR_basic(template Session_Id_AVP p_sessionId, - template Origin_Host_AVP p_originHost, - template Origin_Realm_AVP p_originRealm, - template Destination_Realm_AVP p_destinationRealm, - template CC_Request_Type_AVP p_cCRequestType) - modifies mw_CCR_dummy := - { - header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdGx), - session_Id := p_sessionId, - cCR_Body := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - cC_Request_Type := p_cCRequestType - } - } - -// template RAR_MSG mw_RAR_basic(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost) -// modifies mw_RAR_dummy := -// { -// header := mw_diameterHeaderReq_dummy(RAR_E, c_applIdGx), -// session_Id := p_sessionId, -// origin_Host := p_originHost, -// origin_Realm := p_originRealm, -// destination_Realm := p_destinationRealm, -// destination_Host := p_destinationHost -// } - - }//end group Gxbasic_request_templates_receive - - group Gxbasic_answer_templates_send { -// template CCA_MSG m_CCA_basic(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template CC_Request_Type_AVP p_cCRequestType) -// modifies m_CCA_dummy := -// { -// header := m_diameterHeaderAns_dummy(CCA_E, c_applIdGx), -// session_Id := p_sessionId, -// origin_Host := p_originHost, -// origin_Realm := p_originRealm, -// auth_Application_Id := m_authApplicationId(c_applIdGx), -// cC_Request_Type := p_cCRequestType, -// cC_Request_Number := m_cC_Request_Number(0) -// } -// -// template RAA_MSG m_RAA_basic(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm) -// modifies m_RAA_dummy := -// { -// header := m_diameterHeaderAns_dummy(RAA_E, c_applIdGx), -// session_Id := p_sessionId, -// origin_Host := p_originHost, -// origin_Realm := p_originRealm -// } - - } - group Gxbasic_answer_templates_receive { - - template CCA_MSG mw_CCA_basic(template Session_Id_AVP p_sessionId, - template Origin_Host_AVP p_originHost, - template Origin_Realm_AVP p_originRealm) - modifies mw_CCA_dummy := - { - header := mw_diameterHeaderAns_dummy(CCA_E, c_applIdGx), - session_Id := p_sessionId, - cCA_Body := { - origin_Host := p_originHost, - origin_Realm := p_originRealm - } - } - -// template RAA_MSG mw_RAA_basic(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm) -// modifies mw_RAA_dummy := -// { -// header := mw_diameterHeaderAns_dummy(RAA_E, c_applIdGx), -// session_Id := p_sessionId, -// origin_Host := p_originHost, -// origin_Realm := p_originRealm -// } - - } - - } //end group Gxbase_templates - group Gxmodified_templates { - - group Gxmodified_request_templates_send { - -// template CCR_MSG m_CCR_InitialRequest(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Framed_IP_Address_AVP p_framedIpAddress, -// template Framed_IPv6_Prefix_AVP p_framedIp6Address) -// modifies m_CCR_basic := -// { -// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, -// framed_IP_Address := p_framedIpAddress, -// framed_IPv6_Prefix := p_framedIp6Address, -// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := m_rAT_Type(PX_RAT_TYPE) -// } -// -// template CCR_MSG m_CCR_InitialRequest_allReqAVPs(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Framed_IP_Address_AVP p_framedIpAddress, -// template Framed_IPv6_Prefix_AVP p_framedIp6Address) -// modifies m_CCR_InitialRequest := -// { -// network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT), -// qoS_Information := m_qoS_Information_APN_AMBR_UL, -// threeGPP_MS_TimeZone := m_threeGPP_MS_TimeZone(PX_3GPP_MS_TIMEZONE_DATA), -// called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_EMERGENCY_APN), -// pDN_Connection_ID := m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA), -// bearer_Usage := m_bearer_Usage(PX_BEARER_USAGE_DATA), -// access_Network_Charging_Address := m_accessNetworkChargingAddress(f_IPAdress(PX_ANCA_ipv4, PX_ANCA_ipv6)), -// access_Network_Charging_Identifier_Gx := {m_aNCI_Gx(valueof(m_aNCI_Value(PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE)))}, -// routing_Rule_Install := m_routing_Rule_Install(valueof(m_routing_Rule_Definition(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)),valueof(m_routing_Filter)))) -// } -// -// template CCR_MSG m_CCR_InitialRequest_NetworkRequestSupport(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_basic := -// { -// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, -// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := m_rAT_Type(PX_RAT_TYPE), -// network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT) -// } -// -// template CCR_MSG m_CCR_InitialRequest_defaultEPS(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Default_EPS_Bearer_QoS_AVP p_defaultEpsBearerQoS) -// modifies m_CCR_basic := -// { -// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, -// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := m_rAT_Type(PX_RAT_TYPE), -// default_EPS_Bearer_QoS := p_defaultEpsBearerQoS -// } -// -// template CCR_MSG m_CCR_InitialRequest_ANGWaddress(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CCR_MSG.aN_GW_Address p_anGwAddress) -// modifies m_CCR_basic := -// { -// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, -// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := m_rAT_Type(PX_RAT_TYPE), -// aN_GW_Address := p_anGwAddress -// } -// -// template CCR_MSG m_CCR_InitialRequest_SubID_LogID_PhyID(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CCR_MSG.subscription_Id p_subscriptionId, -// template Logical_Access_ID_AVP p_logicalAccessID, -// template Physical_Access_ID_AVP p_physicalAccessID) -// modifies m_CCR_basic := -// { -// subscription_Id := p_subscriptionId, -// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := m_rAT_Type(PX_RAT_TYPE), -// logical_Access_ID := p_logicalAccessID, -// physical_Access_ID := p_physicalAccessID -// } -// -// template CCR_MSG m_CCR_UpdateRequest(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_basic := -// { -// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), -// cC_Request_Number := m_cC_Request_Number(1), -// charging_Rule_Report := {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}, -// event_Trigger := {m_event_Trigger(IP_CAN_CHANGE_E)} -// } -// -// template CCR_MSG m_CCR_InitialRequest_CalledStationId(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Framed_IP_Address_AVP p_framedIpAddress, -// template Framed_IPv6_Prefix_AVP p_framedIp6Address) -// modifies m_CCR_InitialRequest := -// { -// called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_EMERGENCY_APN) -// } -// -// template CCR_MSG m_CCR_UpdateRequest_allReqAVPs(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_UpdateRequest := -// { -// access_Network_Charging_Address := m_accessNetworkChargingAddress(f_IPAdress(PX_ANCA_ipv4, PX_ANCA_ipv6)), -// access_Network_Charging_Identifier_Gx := {m_aNCI_Gx(valueof(m_aNCI_Value(PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE)))}, -// routing_Rule_Install := m_routing_Rule_Install(valueof(m_routing_Rule_Definition(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)),valueof(m_routing_Filter)))) -// } -// -// template CCR_MSG m_CCR_UpdateRequest_UERequestForAllocResources(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Packet_Filter_Information_AVP p_packetFilterInfo, -// template Packet_Filter_Operation_AVP p_packetFilterOperation, -// template QoS_Information_AVP p_qosInformation) -// modifies m_CCR_UpdateRequest := -// { -// packet_Filter_Information := {p_packetFilterInfo}, -// packet_Filter_Operation := p_packetFilterOperation, -// qoS_Information := p_qosInformation, -// event_Trigger := {m_event_Trigger(RESOURCE_MODIFICATION_REQUEST_E)} -// } -// -// template CCR_MSG m_CCR_UpdateRequest_NetworkRequestSupport(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_basic := -// { -// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), -// cC_Request_Number := m_cC_Request_Number(1), -// network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT) -// } -// -// template CCR_MSG m_CCR_UpdateRequest_Invalid(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_basic := -// { -// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), -// cC_Request_Number := m_cC_Request_Number(1), -// charging_Rule_Report := {m_chargRuleReport_RNameStatusFailure(valueof(m_chargingRuleName('111111'O)),//failed PCC rule -// valueof(m_pCC_Rule_Status(ACTIVE_E)), -// valueof(m_rule_Failure_Code(PX_RULE_FAILURE_CODE)))}, -// event_Trigger := {m_event_Trigger(IP_CAN_CHANGE_E)} -// } -// -// template CCR_MSG m_CCR_InitialRequest_Invalid(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Framed_IP_Address_AVP p_framedIpAddress, -// template Framed_IPv6_Prefix_AVP p_framedIp6Address) -// modifies m_CCR_basic := -// { -// subscription_Id := {m_subscription_Id(valueof(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE)),valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, -// framed_IP_Address := p_framedIpAddress, -// framed_IPv6_Prefix := p_framedIp6Address, -// iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := m_rAT_Type(PX_RAT_TYPE), -// called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_EMERGENCY), -// event_Trigger := {m_event_Trigger(RESOURCE_MODIFICATION_REQUEST_E)} -// } -// -// template CCR_MSG m_CCR_UpdateRequest_IPcanTermination(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_basic := -// { -// cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E), -// cC_Request_Number := m_cC_Request_Number(1), -// charging_Rule_Report := {m_chargRuleReport_RNameStatusFailure(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)), -// valueof(m_pCC_Rule_Status(INACTIVE_E)), -// valueof(m_rule_Failure_Code(RESOURCE_ALLOCATION_FAILURE_E)))} -// } -// -// template CCR_MSG m_CCR_TerminationRequest(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm) -// modifies m_CCR_basic := -// { -// cC_Request_Type := m_cC_Request_Type(TERMINATION_REQUEST_E), -// cC_Request_Number := m_cC_Request_Number(1) -// } -// -// template CCR_MSG m_CCR_InitialRequest_OnlineOffline(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Framed_IP_Address_AVP p_framedIpAddress, -// template Framed_IPv6_Prefix_AVP p_framedIp6Address) -// modifies m_CCR_InitialRequest := -// { -// online := m_online(PX_ONLINE_DATA), -// offline := m_offline(PX_OFFLINE_DATA) -// } -// -// template RAR_MSG m_RAR_SessionEnd(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Session_Release_Cause_AVP p_sessionReleaseCause) -// modifies m_RAR_basic := -// { -// session_Release_Cause := p_sessionReleaseCause -// } -// -// template RAR_MSG m_RAR_CharRuleInst(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Charging_Rule_Install_AVP p_chargingRuleInstall) -// modifies m_RAR_basic := -// { -// charging_Rule_Install := {p_chargingRuleInstall} -// } -// -// template RAR_MSG m_RAR_CharRuleInst_EvTrigger(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Event_Trigger_AVP p_eventTrigger, -// template Charging_Rule_Install_AVP p_chargingRuleInstall) -// modifies m_RAR_basic := -// { -// event_Trigger := {p_eventTrigger}, -// charging_Rule_Install := {p_chargingRuleInstall} -// } -// -// template RAR_MSG m_RAR_CharRuleInst_RevalTime(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Revalidation_Time_AVP p_revalidationTime, -// template Charging_Rule_Install_AVP p_chargingRuleInstall) -// modifies m_RAR_basic := -// { -// revalidation_Time := p_revalidationTime, -// charging_Rule_Install := {p_chargingRuleInstall} -// } -// -// template RAR_MSG m_RAR_EvTrigger(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Event_Trigger_AVP p_eventTrigger) -// modifies m_RAR_basic := -// { -// event_Trigger := {p_eventTrigger} -// } -// -// template RAR_MSG m_RAR_EvTriggers(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template RAR_MSG.event_Trigger p_eventTrigger) -// modifies m_RAR_basic := -// { -// event_Trigger := p_eventTrigger -// } -// -// template RAR_MSG m_RAR_EvTrigger_UMI(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Event_Trigger_AVP p_eventTrigger, -// template Usage_Monitoring_Information_AVP p_usageMonitoringInformation) -// modifies m_RAR_basic := -// { -// event_Trigger := {p_eventTrigger}, -// usage_Monitoring_Information := {p_usageMonitoringInformation} -// } -// -// template RAR_MSG m_RAR_UMI(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Usage_Monitoring_Information_AVP p_usageMonitoringInformation) -// modifies m_RAR_basic := -// { -// usage_Monitoring_Information := {p_usageMonitoringInformation} -// } -// -// template RAR_MSG m_RAR_CharRuleRemove(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Charging_Rule_Remove_AVP p_chargingRuleRemove) -// modifies m_RAR_basic := -// { -// charging_Rule_Remove := {p_chargingRuleRemove} -// } -// -// template RAR_MSG m_RAR_CharRuleRemoveInstall(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Charging_Rule_Remove_AVP p_chargingRuleRemove, -// template Charging_Rule_Install_AVP p_chargingRuleInstall) -// -// modifies m_RAR_basic := -// { -// charging_Rule_Remove := {p_chargingRuleRemove}, -// charging_Rule_Install := {p_chargingRuleInstall} -// } -// -// template RAR_MSG m_RAR_QoS(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template RAR_MSG.qoS_Information p_qoSInformation) -// modifies m_RAR_basic := -// { -// qoS_Information := p_qoSInformation -// } - - } // end group Gxmodified_request_templates_send - - group Gxmodified_request_templates_receive { - - template CCR_MSG mw_CCR_Request(template Session_Id_AVP p_sessionId, - template Origin_Host_AVP p_originHost, - template Origin_Realm_AVP p_originRealm, - template Destination_Realm_AVP p_destinationRealm, - template CC_Request_Type_AVP p_cCRequestType, - template Framed_IP_Address_AVP p_framedIpAddress, - template Framed_IPv6_Prefix_AVP p_framedIp6Address, - template Routing_Rule_Install_AVP p_routing_Rule_Install) - modifies mw_CCR_basic := - { - cCR_Body := { - subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, - framed_IP_Address := p_framedIpAddress, - framed_IPv6_Prefix := p_framedIp6Address, - iP_CAN_Type := mw_iP_CAN_Type(PX_IP_CAN_TYPE), - rat_Type := mw_rAT_Type(PX_RAT_TYPE), - routing_Rule_Install := p_routing_Rule_Install - } - } - -// template CCR_MSG mw_CCR_Request_ChrgRuleRep_EvtTrig(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Charging_Rule_Report_AVP p_chargingRuleReport, -// template Event_Trigger_AVP p_eventTrigger, -// template Routing_Rule_Install_AVP p_routing_Rule_Install) -// modifies mw_CCR_basic := -// { -// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, -// charging_Rule_Report := superset(p_chargingRuleReport), -// event_Trigger := superset(p_eventTrigger), -// routing_Rule_Install := p_routing_Rule_Install -// } -// -// template CCR_MSG mw_CCR_Request_ChrgRuleRep_EvtTrig_PackFilt(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Charging_Rule_Report_AVP p_chargingRuleReport, -// template Event_Trigger_AVP p_eventTrigger, -// template Packet_Filter_Operation_AVP p_packetFilterOperation, -// template Packet_Filter_Information_AVP p_packetFilterInformation, -// template QoS_Information_AVP p_qoSInformation) -// modifies mw_CCR_basic := -// { -// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, -// charging_Rule_Report := superset(p_chargingRuleReport), -// event_Trigger := superset(p_eventTrigger), -// packet_Filter_Operation := p_packetFilterOperation, -// packet_Filter_Information := superset(p_packetFilterInformation), -// qoS_Information := p_qoSInformation -// } -// -// template CCR_MSG mw_CCR_Request_EvtTrig_UMI(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Usage_Monitoring_Information_AVP p_usageMonitoringInformation, -// template Event_Trigger_AVP p_eventTrigger) -// modifies mw_CCR_basic := -// { -// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, -// usage_Monitoring_Information := superset(p_usageMonitoringInformation), -// event_Trigger := superset(p_eventTrigger) -// } -// -// template CCR_MSG mw_CCR_AccessNetChargId(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Access_Network_Charging_Identifier_Gx_AVP p_accessNetworkChargingIdentifierGx) -// modifies mw_CCR_dummy := -// { -// header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdGx), -// session_Id := p_sessionId, -// origin_Host := p_originHost, -// origin_Realm := p_originRealm, -// destination_Realm := p_destinationRealm, -// cC_Request_Type := p_cCRequestType, -// access_Network_Charging_Identifier_Gx := superset(p_accessNetworkChargingIdentifierGx) -// } -// -// template CCR_MSG mw_CCR_Request_EMS1(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Framed_IP_Address_AVP p_framedIpAddress, -// template Framed_IPv6_Prefix_AVP p_framedIp6Address, -// template Routing_Rule_Install_AVP p_routing_Rule_Install, -// template Called_Station_Id_AVP p_calledStationId) -// modifies mw_CCR_basic := -// { -// subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E),mw_subscription_Id_Data(?))}, -// framed_IP_Address := p_framedIpAddress, -// framed_IPv6_Prefix := p_framedIp6Address, -// iP_CAN_Type := mw_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := mw_rAT_Type(PX_RAT_TYPE), -// routing_Rule_Install := p_routing_Rule_Install, -// called_Station_Id := p_calledStationId -// } -// -// template CCR_MSG mw_CCR_Request_EMS2(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Framed_IP_Address_AVP p_framedIpAddress, -// template Framed_IPv6_Prefix_AVP p_framedIp6Address, -// template Routing_Rule_Install_AVP p_routing_Rule_Install, -// template Called_Station_Id_AVP p_calledStationId) -// modifies mw_CCR_basic := -// { -// framed_IP_Address := p_framedIpAddress, -// framed_IPv6_Prefix := p_framedIp6Address, -// iP_CAN_Type := mw_iP_CAN_Type(PX_IP_CAN_TYPE), -// rAT_Type := mw_rAT_Type(PX_RAT_TYPE), -// routing_Rule_Install := p_routing_Rule_Install, -// called_Station_Id := p_calledStationId, -// user_Equipment_Info := mw_UserEquipmentInfo(mw_UserEquipmentInfoType(IMEISV_E),?) -// } -// -// template RAR_MSG mw_RAR_sessReleaseCause(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost) -// modifies mw_RAR_basic := -// { -// session_Release_Cause := mw_sessReleaseCause(?) -// } -// -// template RAR_MSG mw_RAR_PCCrules_ChrgRuleInstall(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Charging_Rule_Install_AVP p_chrgRuleInstall) -// modifies mw_RAR_basic := -// { -// charging_Rule_Install := {p_chrgRuleInstall} -// } -// -// template RAR_MSG mw_RAR_PCCrules_ChrgRuleInstall_EventTrigger(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Charging_Rule_Install_AVP p_chrgRuleInstall) -// modifies mw_RAR_basic := -// { -// charging_Rule_Install := {p_chrgRuleInstall}, -// event_Trigger := {m_event_Trigger(SUCCESSFUL_RESOURCE_ALLOCATION_E)} -// } -// -// template RAR_MSG mw_RAR_PCCrules_ChrgRuleRemove(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template Charging_Rule_Remove_AVP p_chrgRuleRemove) -// modifies mw_RAR_basic := -// { -// charging_Rule_Remove := {p_chrgRuleRemove} -// } -// -// template RAR_MSG mw_RAR_QosInfo(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Destination_Realm_AVP p_destinationRealm, -// template Destination_Host_AVP p_destinationHost, -// template RAR_MSG.qoS_Information p_qosInformation) -// modifies mw_RAR_basic := -// { -// qoS_Information := p_qosInformation -// } - - } // end group Gxmodified_request_templates_receive - - group Gxmodified_answer_templates_send { - -// template RAA_MSG m_RAA_ResultCode(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Result_Code_AVP p_resultCode) -// modifies m_RAA_basic := -// { -// result_Code := p_resultCode -// } -// -// template CCA_MSG m_CCA_Result(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Result_Code_AVP p_resultCode) -// modifies m_CCA_basic := -// { -// result_Code := p_resultCode -// } -// -// template CCA_MSG m_CCA_ExperimentalResult(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Experimental_Result_AVP p_experimentalResult) -// modifies m_CCA_basic := -// { -// experimental_Result := p_experimentalResult -// } -// -// template CCA_MSG m_CCA_RuleRemove(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Charging_Rule_Remove_AVP p_chargingRuleRemove) -// modifies m_CCA_basic := -// { -// charging_Rule_Remove := {p_chargingRuleRemove} -// } -// -// template CCA_MSG m_CCA_defaultCharging(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template CC_Request_Type_AVP p_cCRequestType, -// template Online_AVP p_online, -// template Offline_AVP p_offline) -// modifies m_CCA_basic := -// { -// online := p_online, -// offline := p_offline -// } - - } // end group Gxmodified_answer_templates_send - - group Gxmodified_answer_templates_receive { - - template CCA_MSG mw_CCA_ResultCode( template Session_Id_AVP p_sessionId, - template Origin_Host_AVP p_originHost, - template Origin_Realm_AVP p_originRealm, - template Result_Code_AVP p_resultCode) - modifies mw_CCA_basic := - { - cCA_Body := { - result_Code := p_resultCode - } - } - -// template CCA_MSG mw_CCA_ResultCode_BearerControlMode( template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Result_Code_AVP p_resultCode, -// template Bearer_Control_Mode_AVP p_bearerControleMode ) -// modifies mw_CCA_basic := -// { -// result_Code := p_resultCode, -// bearer_Control_Mode := p_bearerControleMode -// } -// -// template CCA_MSG mw_CCA_PCCrules_ChrgRuleInstall( template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Charging_Rule_Install_AVP p_chargingRuleInstall) -// modifies mw_CCA_basic := -// { -// charging_Rule_Install := {p_chargingRuleInstall} -// } -// -// template CCA_MSG mw_CCA_PCCrules_ChrgRuleRemove( template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Charging_Rule_Remove_AVP p_chargingRuleRemove) -// modifies mw_CCA_basic := -// { -// charging_Rule_Remove := {p_chargingRuleRemove} -// } -// -// template CCA_MSG mw_CCA_ExperimentalResult( template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Experimental_Result_AVP p_experimentalResult) -// modifies mw_CCA_basic := -// { -// experimental_Result := p_experimentalResult -// } -// -// template CCA_MSG mw_CCA_ResultCode_OnlineOffline( template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Result_Code_AVP p_resultCode) -// modifies mw_CCA_basic := -// { -// result_Code := p_resultCode, -// online := mw_online_any ifpresent, -// offline := mw_offline_any ifpresent -// } -// -// template CCA_MSG mw_CCA_EventTriger_UsageMonitorInfo( template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Result_Code_AVP p_resultCode) -// modifies mw_CCA_basic := -// { -// event_Trigger := {mw_eventTrigger(USAGE_REPORT_E)}, -// usage_Monitoring_Information := {mw_usageMonitoringInfo_Key_GrantedServiceUnit,*,*} -// } -// -// template CCA_MSG mw_CCA_QosInfo( template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template CCA_MSG.qoS_Information p_qosInformation) -// modifies mw_CCA_basic := -// { -// qoS_Information := p_qosInformation -// } -// -// template RAA_MSG mw_RAA_MediaComponent(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Media_Component_Description_AVP p_mediaComponentDescription) -// modifies mw_RAA_basic := -// { -// media_Component_Description := superset(p_mediaComponentDescription) -// } -// -// template RAA_MSG mw_RAA_AccessNetCharg(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Media_Component_Description_AVP p_mediaComponentDescription) -// modifies mw_RAA_basic := -// { -// media_Component_Description := superset(p_mediaComponentDescription) -// } -// -// template RAA_MSG mw_RAA_RuleReport(template Session_Id_AVP p_sessionId, -// template Origin_Host_AVP p_originHost, -// template Origin_Realm_AVP p_originRealm, -// template Charging_Rule_Report_AVP p_chargingRuleReport) -// modifies mw_RAA_basic := -// { -// charging_Rule_Report := superset(p_chargingRuleReport) -// } - - } // end group Gxmodified_answer_templates_receive - - } //end group Gxmodified_templates - } //end group GxMessageTemplates - -}//end module LibDiameter_Templates \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn b/ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn deleted file mode 100644 index c0dd514..0000000 --- a/ttcn/AtsImsIot/DiameterS6a_PIXITS.ttcn +++ /dev/null @@ -1,248 +0,0 @@ -/** - * @author STF 466 - * @version $Id$ - * @desc This module provides the PIXIT used for the IMS-DIAMETER S6a tests.. - */ - -module DiameterS6a_PIXITS { - - // LibCommon - import from LibCommon_DataStrings { - type Oct3 - }; - import from LibCommon_BasicTypesAndValues { - type UInt32 - }; - - // LibDiameter - import from LibDiameter_Types_Base_AVPs { - type - IpAddress, Diameter_Identity, UTF8String, IPv4Addr, IPv6Addr - }; - import from LibDiameter_Types_Gx_AVPs { - type RAT_Type - }; - - // DiameterS6a - import from LibDiameter_Types_S6a_AVPs { - type Cancellation_Type_Code - }; - - /** - * @desc IP addresses and port numbers - */ - group ipSettings { - - /** - * @desc IP address of the test system - * @see ETSI TS/INT-103261-3 A.7/1 - */ - modulepar charstring PX_DIAMETER_S6a_ETS_IPADDR := "192.168.42.1"; - - /** - * @desc second IP address of the test system - * @see ETSI TS/INT-103261-3 A.7/2 - */ - modulepar charstring PX_DIAMETER_S6a2_ETS_IPADDR := "192.168.42.3"; - - /** - * @desc IP address of the system under test - * @see ETSI TS/INT-103261-3 A.8/1 - */ - modulepar charstring PX_DIAMETER_S6a_SUT_IPADDR := "192.168.42.2"; - - /** - * @desc Port number of the test system - * @see ETSI TS/INT-103261-3 A.7/3 - */ - modulepar integer PX_DIAMETER_S6a_ETS_PORT := 1300; - - /** - * @desc Second Port number of the test system - * @see ETSI TS/INT-103261-3 A.7/4 - */ - modulepar integer PX_DIAMETER_S6a2_ETS_PORT := 1302; - - /** - * @desc Port number of the system under test - * @see ETSI TS/INT-103261-3 A.8/2 - */ - modulepar integer PX_DIAMETER_S6a_SUT_PORT := 1301; - - } //end group ipSettings - - group S6a_Interface { - /** - * @desc The Session-Id identifying a specific session - * @see ETSI TS/INT-103261-3 A.9/1 - */ - modulepar UTF8String PX_SESSION_ID := "etsi.org;77482455;19732;0"; - - /** - * @desc The Session-Id identifying the second specific session - * @see ETSI TS/INT-103261-3 A.9/2 - */ - modulepar UTF8String PX_SESSION_ID2 := "etsi.org;77482455;19733;0"; - - /** - * @desc The Origin-Host identifying the endpoint that originates the Diameter messages - * @see ETSI TS/INT-103261-3 A.9/3 - */ - modulepar Diameter_Identity PX_ORIGIN_HOST := "mme.etsi.org"; - - /** - * @desc The Origin-Host identifying the second endpoint that originates the Diameter messages - * @see ETSI TS/INT-103261-3 A.9/4 - */ - modulepar Diameter_Identity PX_ORIGIN_HOST2 := "mme2.etsi.org"; - - /** - * @desc The Origin-Host identifying the endpoint that originates the Diameter messages - * @see ETSI TS/INT-103261-3 A.9/5 - */ - modulepar Diameter_Identity PX_ORIGIN_HOST_SGSN := "sgsn.etsi.org"; - - /** - * @desc The Origin-Realm identifying the Realm of the originator of any Diameter messages - * @see ETSI TS/INT-103261-3 A.9/6 - */ - modulepar Diameter_Identity PX_ORIGIN_REALM := "realm"; - - /** - * @desc The Destination-Host identifying the endpoint to which the Diameter messages are destined - * @see ETSI TS/INT-103261-3 A.9/7 - */ - modulepar Diameter_Identity PX_DESTINATION_HOST := "destination.host.etsi.org"; - - /** - * @desc The Destination-Realm identifying the Realm of the destination of any Diameter messages - * @see ETSI TS/INT-103261-3 A.9/8 - */ - modulepar Diameter_Identity PX_DESTINATION_REALM := "destination.realm.etsi.org"; - - /** @desc The MIP6_Agent in IPv4 format, - * @see ETSI TS/INT-103261-3 A.9/9 - */ - modulepar IPv4Addr PX_MIP6_AGENT_ipv4 := {1,2,3,4}; - - /** @desc The MIP6_Agent) in type IPv6 format, - * @see ETSI TS/INT-103261-3 A.9/10 - */ - modulepar IPv6Addr PX_MIP6_AGENT_ipv6 := {1,2,3,4,5,6,7,8}; - - /** - * @desc The MIP6 agent destination realm - * @see ETSI TS/INT-103261-3 A.9/11 - */ - modulepar Diameter_Identity PX_MIP6_AGENT_DEST_REALM := "mipv6.agent.etsi.org"; - - /** - * @desc The MIP6 agent destination host - * @see ETSI TS/INT-103261-3 A.9/12 - */ - modulepar Diameter_Identity PX_MIP6_AGENT_DEST_HOST := "mipv6.host.etsi.org"; - - } // End of group S6a_Interface - - /** - * @desc Field values - */ - group fieldValues { - - /** - * @desc The user name - * @see ETSI TS/INT-103261-3 A.10/1 - */ - modulepar UTF8String PX_USR_NAME := "userName"; - - /** - * @desc An invalid user name - * @see ETSI TS/INT-103261-3 A.10/2 - */ - modulepar UTF8String PX_INVALID_USR_NAME := "unknown"; - - /** - * @desc A user name with no APN configure - * @see ETSI TS/INT-103261-3 A.10/3 - */ - modulepar UTF8String PX_NO_APN_USR_NAME := "userNoAPN"; - - /** - * @desc A user name with no APN configure - * @see ETSI TS/INT-103261-3 A.10/4 - */ - modulepar UTF8String PX_NO_EPSGPRS_USR_NAME := "userNoEpsGprs"; - - /** - * @desc The user name - * @see ETSI TS/INT-103261-3 A.10/5 - */ - modulepar UInt32 PX_CONTEXT_ID := 1; - - /** - * @desc The user name - * @see ETSI TS/INT-103261-3 A.10/6 - */ - modulepar charstring PX_SERVICE_SEL := "serviceSel"; - - /** - * @desc A visited network identifier - * @see ETSI TS/INT-103261-3 A.10/7 - */ - modulepar octetstring PX_VISITED_NTW_ID := 'CAFEDECA'O; - - /** - * @desc A visited PLMN identifier - * @see ETSI TS/INT-103261-3 A.10/8 - */ - modulepar Oct3 PX_VISITED_PLMN_ID := '000000'O; - - /** - * @desc Other visited PLMN identifier - * @see ETSI TS/INT-103261-3 A.10/9 - */ - modulepar Oct3 PX_NEW_VISITED_PLMN_ID := '000001'O; - - /** - * @desc Not allowed visited PLMN identifier - * @see ETSI TS/INT-103261-3 A.10/10 - */ - modulepar Oct3 PX_NOT_ALLOWED_VISITED_PLMN_ID := 'ffffff'O; - - /** - * @desc Indicates the type of cancellation - * @see ETSI TS/INT-103261-3 A.10/11 - */ - modulepar Cancellation_Type_Code PX_CANCELLATION_TYPE := MME_UPDATE_PROCEDURE_E; - - /** - * @desc The SGSN number - * @see ETSI TS/INT-103261-3 A.10/12 - */ - modulepar octetstring PX_SGSN_NUMBER := 'DEADBEEF'O; - - /** - * @desc Contains the concatenation of RAND and AUTS. - * @see ETSI TS/INT-103261-3 A.10/13 - * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.15 Re-Synchronization-Info - */ - modulepar octetstring PX_ReSYNCHRONISATION_INFO := 'CAFEDECA'O; - - } // End of group fieldValues - - - /** - * @desc SUT specific implementation variants - */ - group DiameterCommonS6aData{ - - /** - * @desc Radio access technology for the IP-RAT-Type AVP in CCR messages - * Available values: WLAN, VIRTUAL, UTRAN, GERAN, GAN, HSPA_EVOLUTION, EUTRAN, CDMA2000, HRPD, UMB, EHRPD - * @see ETSI TS/INT-103261-3 A.10/14 - */ - modulepar RAT_Type PX_RAT_TYPE := GERAN_E; - - } //end group DiameterCommonS6aData - -} // End of module DiameterS6a_PIXITS diff --git a/ttcn/AtsImsIot/DiameterS6a_Templates.ttcn b/ttcn/AtsImsIot/DiameterS6a_Templates.ttcn deleted file mode 100644 index 7254e9e..0000000 --- a/ttcn/AtsImsIot/DiameterS6a_Templates.ttcn +++ /dev/null @@ -1,4788 +0,0 @@ -/** - * @author STF 466 - * @version $Id$ - * @desc This module defines S6a Diameter Templates for message, header, and - * structured types.
- * Note that any changes made to the definitions in this module - * may be overwritten by future releases of this library - * End users are encouraged to contact the distributers of this - * module regarding their modifications or additions. - * Note that usage of encvalue command (codec function) returns bitstring - * length of the message or AVP with padding bytes. Therefore this function - * is not used on the first level where length of one single AVP can be - * calculated with lengthof function. It shall be used only on message level - * or in case where one AVP is group of other AVPs. - * @remark Any additions to the templates shall follow the design rules - * and always modify base templates only; - */ - -module DiameterS6a_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues { - type UInt8, UInt16, UInt32 - }; - import from LibCommon_DataStrings { - type Oct3 - }; - - // LibDiameter - import from LibDiameter_TypesAndValues { - type all; - const c_versionId, c_vendId3gpp, c_destination_Host_AVP_Code, c_destination_Realm_AVP_Code,c_applIdCommonMsg, - c_origin_Host_AVP_Code, c_origin_Realm_AVP_Code, c_session_Id_AVP_Code, c_rAT_Type_AVP_Code, - c_result_Code_AVP_Code, c_experimental_Result_AVP_Code, c_experimental_Result_Code_AVP_Code - }; - import from LibDiameter_Templates { - function f_aVPvBit, f_IPAdressLengthUInt24, f_getDiameterIdentityAvpLength, f_getUTF8StringLength, f_getCharStringLength, f_getOctetStringLength, f_getEncvalueLength - template m_diameterHeaderReq_dummy, mw_diameterHeaderReq_dummy, mw_diameterHeaderAns_dummy, m_diameterHeaderAns_dummy, - m_sessionId_dummy, m_auth_Session_State_dummy, m_originHost_dummy, m_originRealm_dummy, mw_supportedFeatures_dummy, - m_destinationRealm_dummy, m_destinationHost_dummy, m_user_Name_dummy, m_aVP_HeaderVid_Mbit1, m_cmdFlagsReq, - m_vendor_Specific_Appl_Id_dummy, m_auth_Session_State_dummy, m_destinationRealm_dummy, m_user_Identity_dummy, m_data_Reference_dummy, m_user_Data_dummy, - mw_cmdFlags, m_cmdFlagsAns, - m_aVP_Header_Mbit1, mw_aVP_HeaderVid_Mbit1, mw_aVP_Header_Vbit0Mbit1, mw_aVP_Header_Vbit1Mbit0, - m_aVP_HeaderVid_Mbit0, - m_originHost, m_originRealm, m_sessionId, m_destinationHost, m_destinationRealm, m_resultCode, m_vendor_Specific_Appl_Id, - m_auth_Session_State_no_maintained - }; - import from LibDiameter_Types_Base_AVPs { - type all - }; - import from LibDiameter_Types_S6a_AVPs { - type all - }; - import from LibDiameter_Types_CxDx_AVPs { - type Visited_Network_Identifier_AVP - } - import from LibDiameter_Types_Gx_AVPs { - type RAT_Type, RAT_Type_AVP // Could be moved these types to LibDiameter_Types_Base_AVPs - }; - - import from LibDiameter_Types_RfRo_AVPs all; - - // DiameterS6a - import from DiameterS6a_TypesAndValues all; - import from DiameterS6a_PIXITS all; - - group SubFields{ - - } // End of group SubFields - - /** AVPs templates */ - group HeaderFieldTemplates { - - /** - * @desc Received generic command flag template - */ - template (present) Command_Flags mw_cmdFlagsAns := { - r_bit := '0'B, //Answer message - p_bit := ?, - e_bit := ?, - t_bit := ?, - reserved_bits := '0000'B - } // End of template mw_diameterHeaderAns_dummy - - /** - * @desc complete AVP header field receive template - * @param p_avpCode specific Code of the AVP parameter - * @param p_avpVid vendor id if needed - */ - template (present) AVP_Header mw_aVP_S6a_HeaderVid_Mbit1( in AVP_Code p_avpCode, in template (present) AVP_Vendor_ID p_avpVid) := { - aVP_Code := p_avpCode, - aVP_flags := {v_bit := f_aVPvBit(p_avpVid), - m_bit := '1'B, - p_bit := ?, - reserved_bits := '00000'B}, - aVP_len := ?, - aVP_vid := p_avpVid - } - - /** AVPs basic templates for send and receive */ - group DummyAVPHeaders{ - - /** - * @desc Received generic RAT-Type AVP template - */ - template (value) RAT_Type_AVP m_rATType_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_rAT_Type_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := PX_RAT_TYPE - } // End of template m_rATType_dummy - - /** - * @desc Received generic ULR Flags AVP template - */ - template (value) ULR_Flags_AVP m_ulrFlags_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_ulr_Flags_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := 2 //S6a-indicator bit set - } // End of template m_ulrFlags_dummy - - /** - * @desc Received generic Visited-PLMN-Id AVP template - */ - template (value) Visited_PLMN_Id_AVP m_visitedPLMNId_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_PLMN_Id_AVP_Code, f_getOctetStringLength(PX_VISITED_PLMN_ID), c_vendId3gpp ), - aVP_Data := PX_VISITED_PLMN_ID - } // End of template m_visitedPLMNId_dummy - - /** - * @desc Received generic Requested-EUTRAN-Authentication-Info AVP template - */ - template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, 4, c_vendId3gpp ), - number_Of_Requested_Vectors := omit, - immediate_Response_Preferred := omit, - re_synchronization_Info := omit, - aVP_Type := omit - } // End of template m_reqEUTRANAuthInfo_dummy - - /** - * @desc Received generic Requested-EUTRAN-GERAN-Authentication-Info AVP template - */ - template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, 4, c_vendId3gpp ), - number_Of_Requested_Vectors := omit, - immediate_Response_Preferred := omit, - re_synchronization_Info := omit, - aVP_Type := omit - } // End of template m_reqUTRANGERANAuthInfo_dummy - - /** - * @desc Received generic Cancellation-Type AVP template - */ - template (value) Cancellation_Type_AVP m_cancellationType_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_cancellation_Type_AVP_Code, 4, c_vendId3gpp ), - cancellation_Type := PX_CANCELLATION_TYPE - } // End of template m_cancellationType_dummy - - /** - * @desc Received generic Subscription-Data AVP template - */ - template (value) Subscription_Data_AVP m_subscriptionData_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_subscription_Data_AVP_Code, 4, c_vendId3gpp ), - subscriber_Status := omit, - mSISDN := omit, - sTN_SR := omit, - iCS_Indicator := omit, - network_Access_Mode := omit, - operator_Determined_Barring := omit, - hPLMN_ODB := omit, - zone_Code := omit, - access_Restriction_Data := omit, - aPN_OI_Replacement := omit, - lCS_Info := omit, - teleservice_List := omit, - call_Barring_Info := omit, - threeGPP_Charging_Char := omit, - aMBR := omit, - aPN_Configuration_Profile := omit, - rAT_Freq_Sel_Priority_ID := omit, - trace_Data := omit, - gPRS_Subscription_Data := omit, - cSG_Subscription_Data := omit, - roaming_Rest_Unsupp_Feature := omit, - subscribed_Perio_RAUTAU_Timer := omit, - mPS_Priority := omit, - vPLMN_LIPA_Allowed := omit, - relay_Node_Indicator := omit, - mDT_User_Consent := omit, - aVP_Type := omit - } // End of template m_subscriptionData_dummy - - /** - * @desc Received generic DSR Flags AVP template - */ - template (value) DSR_Flags_AVP m_dSRFlags_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_dsr_Flags_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := 0 //flags are not set - } // End of template m_dSRFlags_dummy - - /** - * @desc Received generic xxx AVP template - */ - template (value) IDR_Flags_AVP m_iDRFlags_dummy ( in UInt32 p_iDRFlags ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_idr_Flags_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_iDRFlags - } // End of template m_iSRFlags_dummy - - /** - * @desc Indicates if there is homogeneous support of IMS Voice Over PS Sessions on all the TA/RAs of the serving node, or if the homogeneity of this support is kown to the serving node - * Default: NOT_SUPPORTED_E - */ - template (value) Homogeneous_Support_AVP m_homogeneous_Support_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_homogeneous_Support_of_IMS_Voice_Over_PS_Sessions_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := NOT_SUPPORTED_E - } // End of template m_homogeneous_Support_dummy - - /** - * @desc Identifies the per subscriber"s default APN configuration - */ - template (value) Context_Identifier_AVP m_contextIdentifier_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_context_Identifier_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := 0 - } // End of template m_contextIdentifier_dummy - - template (value) PDN_Type_AVP m_pdn_Type_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_pdn_Type_AVP_Code, - 4, - c_vendId3gpp ), - pDN_Type_Code := IPv4_OR_IPv6_E - } // End of template m_pdn_Type_dummy - - /** - * @desc Contain information about a dynamically established APN on a serving node - */ - template (value) Active_APN_AVP m_active_APN_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_active_APN_AVP_Code, 4, c_vendId3gpp ), - context_Identifier := m_contextIdentifier_dummy, - service_Selection := omit, - mip6_Agent_Info := omit, - visited_Network_Identifier := omit, - specific_APN_Info := omit, - aVP_Type := omit - } // End of template m_active_APN_AVP_dummy - - /** - * @desc APN for the selected and dynamically allocated PDN GW - */ - template (value) Service_Selection_AVP m_service_Selection_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_service_Type_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := "" - } // End of template m_service_Selection_AVP_dummy - - /** - * @desc Contains the IPv6 or the IPv4 address information of the HA - * @see RFC5778-DiameterMobileIPv6 - */ - template (value) MIP6_Agent_Info_AVP m_mip6_Agent_Info_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_mIP6_Agent_Info_AVP_Code, 4, c_vendId3gpp ), - mip_Home_Agent_Address1 := omit, - mip_Home_Agent_Address2 := omit, - mip_Home_Agent_Host := omit, - mip6_Home_Link_Prefix := omit, - aVP_Type := omit - } // End of template m_mip6_Agent_Info_AVP_dummy - - /** - * @desc HA IP address - * Default: localhost - * @see RFC4004 - */ - template (value) MIP_Home_Agent_Address_AVP m_mip_Home_Agent_Address_AVP_dummy( in Address p_Address ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_mIP_Home_Agent_Address_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_Address // End of 'aVP_Data' field - } // End of template m_mip_Home_Agent_Address_AVP_dummy - - /** - * @desc HA FQDN of the PDN-GW - */ - template (value) MIP_Home_Agent_Host_AVP m_mip_Home_Agent_Host_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_mIP_Home_Agent_Host_AVP_Code, 4, c_vendId3gpp ), - destination_Realm := m_destinationRealm_dummy, - destination_Host := m_destinationHost_dummy, - aVP_Type := omit - } // End of template m_mip_Home_Agent_Host_AVP_dummy - - /** - * @desc Identity of the network where the PDN-GW was allocated, in the case of dynamic PDN-GW assignment - */ - template (value) Visited_Network_Identifier_AVP m_visited_Network_Identifier_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_Network_Identifier_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := ''O - } // End of template m_visited_Network_Identifier_AVP_dummy - - /** - * @desc Information related to the Subscription-Data AVP - */ - template (present) Subscription_Data_AVP mw_subscriptionData_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_subscription_Data_AVP_Code, ?, c_vendId3gpp ), - subscriber_Status := *, - mSISDN := *, - sTN_SR := *, - iCS_Indicator := *, - network_Access_Mode := *, - operator_Determined_Barring := *, - hPLMN_ODB := *, - zone_Code := *, - access_Restriction_Data := *, - aPN_OI_Replacement := *, - lCS_Info := *, - teleservice_List := *, - call_Barring_Info := *, - threeGPP_Charging_Char := *, - aMBR := *, - aPN_Configuration_Profile := *, - rAT_Freq_Sel_Priority_ID := *, - trace_Data := *, - gPRS_Subscription_Data := *, - cSG_Subscription_Data := *, - roaming_Rest_Unsupp_Feature := *, - subscribed_Perio_RAUTAU_Timer := *, - mPS_Priority := *, - vPLMN_LIPA_Allowed := *, - relay_Node_Indicator := *, - mDT_User_Consent := *, - aVP_Type := * - } // End of template mw_subscriptionData_dummy - - /** - * @desc Information related to the user’s subscribed APN configurations - */ - template APN_Configuration_AVP m_PN_Configuration_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_Configuration_AVP_Code, 4, c_vendId3gpp ), - context_Identifier := m_contextIdentifier_dummy, - served_Party := omit, - pDN_Type := m_pdn_Type_dummy, - service_Selection := m_service_Selection_AVP_dummy, - ePS_Subscribed_QoS_Profile := omit, - vPLMN_Dynamic_Address_Allowed := omit, - mIP6_Agent_Info := omit, - visited_Network_Identifier := omit, - pDN_GW_Allocation_Type := omit, - threeGPP_Charging_Char := omit, - aMBR := omit, - specific_APN_Info := omit, - aPN_OI_Replacement := omit, - sIPTO_Permission := omit, - lIPA_Permission := omit, - aVP_Type := omit - } // End of template m_PN_Configuration_dummy - - /** - * @desc Generic received template for Cancellation-Type AVP - */ - template (present) Cancellation_Type_AVP mw_cancellationType_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_cancellation_Type_AVP_Code, - ?, - c_vendId3gpp - ), - cancellation_Type := PX_CANCELLATION_TYPE - } // End of template mw_cancellationType_dummy - - /** - * @desc Generic received template for SGSN-Number AVP - */ - template (present) SGSN_Number_AVP mw_sGSN_Number_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_sgsn_Number_AVP_Code, - ?, - c_vendId3gpp - ), - aVP_Data := ? - } // End of template mw_sGSN_Number_dummy - - /** - * @desc Generic received template for Subscriber-Status AVP - */ - template (present) Subscriber_Status_AVP mw_subscriber_Status_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_subscriber_Status_AVP_Code, - ?, - c_vendId3gpp - ), - subscriber_Status_Code := ? - } // End of template mw_subscriber_Status_dummy - - /** - * @desc Identifies the per subscriber"s default APN configuration - */ - template (present) Context_Identifier_AVP mw_contextIdentifier_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_context_Identifier_AVP_Code, ?, c_vendId3gpp ), - aVP_Data := ? - } // End of tempate mw_contextIdentifier_dummy - - /** - * @desc Generic received template for APN-Configuration-Profile AVP - */ - template (present) APN_Configuration_Profile_AVP mw_apnConfigurationProfile_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_apn_Configuration_Profile_AVP_Code, - ?, - c_vendId3gpp - ), - context_Identifier := ?, - all_APN_Conf_Included_Id := ?, - aPN_Configuration := ?, - aVP_Type := * - } // End of template mw_apnConfigurationProfile_dummy - - /** - * @desc Generic received template for APN-Configuration AVP - */ - template (present) APN_Configuration_AVP mw_aPN_Configuration_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_apn_Configuration_AVP_Code, - ?, - c_vendId3gpp - ), - context_Identifier := ?, - served_Party := *, - pDN_Type := ?, - service_Selection := ?, - ePS_Subscribed_QoS_Profile := *, - vPLMN_Dynamic_Address_Allowed := *, - mIP6_Agent_Info := *, - visited_Network_Identifier := *, - pDN_GW_Allocation_Type := *, - threeGPP_Charging_Char := *, - aMBR := *, - specific_APN_Info := *, - aPN_OI_Replacement :=*, - sIPTO_Permission := *, - lIPA_Permission := *, - aVP_Type := * - } // End of template mw_aPN_Configuration_dummy - - /** - * @desc Generic received ULA_Flags_AVP message - * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.8 ULA-Flags - */ - template (present) ULA_Flags_AVP mw_ulaFlags_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_ula_Flags_AVP_Code, - ?, - c_vendId3gpp - ), - aVP_Data := 0 - } // End of template m_ulaFlags_dummy - - /** - * @desc LCS_Info_AVP - * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.32 - */ - template (value) LCS_Info_AVP m_lcsInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_lcs_Info_AVP_Code, 4, c_vendId3gpp ), - gMLC_Number := omit, - lCS_PrivacyException := omit, - mO_LR := omit, - aVP_Type := omit - } // End of template m_lcsInfo_dummy - - /** - * @desc Access_Restriction_Data_AVP - * @see ETSI TS 129 272 V10.8.0 (2013-07) Clause 7.3.31 - */ - template (present) Access_Restriction_Data_AVP mw_access_Restriction_Data_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_access_Restriction_Data_AVP_Code, ?, c_vendId3gpp ), - aVP_Data := ? - } // End of template m_accessRestrictionData - - /** - * @desc APN_OI_Replacement_AVP - */ - template (present) APN_OI_Replacement_AVP mw_aPN_OI_Replacement_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_apn_OI_Replacement_AVP_Code, ?, c_vendId3gpp ), - aVP_Data := ? - } // End of template mw_aPN_OI_Replacement_dummy - - /** - * @desc GPRS_Subscription_Data_AVP - */ - template (present) GPRS_Subscription_Data_AVP mw_gprsSubscriptionData_dummy := { - aVP_Header:= mw_aVP_HeaderVid_Mbit1 ( - c_gprs_Subscription_Data_AVP_Code, - ?, - c_vendId3gpp), - complete_Data_List_Included_Indicator := ?, - pDP_Context := ?, - aVP_Type := * - } // End of template mw_gprsSubscriptionData_dummy - - /** - * @desc IDR_Flags_AVP - */ - template (present) IDR_Flags_AVP mw_iDRFlags_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_idr_Flags_AVP_Code, ?, c_vendId3gpp ), - aVP_Data := ? - } // End of template mw_iDRFlags_dummy - - /** - * @desc DSR_Flags_AVP - */ - template (present) DSR_Flags_AVP mw_dSRFlags_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_dsr_Flags_AVP_Code, ?, c_vendId3gpp ), - aVP_Data := ? - } // End of template mw_dSRFlags_dummy - - /** - * @desc PUER_Flags_AVP - */ - template (present) PUER_Flags_AVP mw_pUERFlags_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 (c_puer_Flags_AVP_Code, ?, c_vendId3gpp ), - aVP_Data := ? - } // End of template mw_pURFlags_dummy - - /** - * @desc Authentication_Info_AVP - */ - template (present) Authentication_Info_AVP mw_authentication_Info_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_authentication_Info_AVP_Code, - ?, - c_vendId3gpp - ), - e_UTRAN_Vector := omit, - uTRAN_Vector := omit, - gERAN_Vector := omit, - aVP_Type := * - } // End of template mw_authentication_Info_dummy - - /** - * @desc E_UTRAN_Vector_AVP - */ - template (present) E_UTRAN_Vector_AVP mw_e_UTRAN_Vector_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_e_UTRAN_Vector_AVP_Code, ?, c_vendId3gpp ), - item_Number := *, - rAND := ?, - xRES := ?, - aUTN := ?, - kASME := ?, - aVP_Type := * - } // End of template mw_e_UTRAN_Vector_dummy - - /** - * @desc UTRAN_Vector_AVP - */ - template (present) UTRAN_Vector_AVP mw_UTRAN_Vector_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_utran_Vector_AVP_Code, ?, c_vendId3gpp ), - item_Number := *, - rAND := ?, - xRES := ?, - aUTN := ?, - confidentiality_Key := ?, - integrity_Key := ?, - aVP_Type := * - } // End of template mw_UTRAN_Vector_dummy - - /** - * @desc Re_synchronization_Info_AVP - */ - template (value) Re_synchronization_Info_AVP m_re_synchronization_Info_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_re_Synchronization_Info_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := ''O - } // End of template Re_synchronization_Info_AVP_dummy - - /** - * @desc Number_Of_Requested_Vectors_AVP - */ - template (value) Number_Of_Requested_Vectors_AVP m_numberOfRequestedVectorsAVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_number_Of_Requested_Vectors_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := 0 - } // End of template m_numberOfRequestedVectorsAVP_dummy - - /** - * @desc Req-UTRAN-GERAN-Auth-Info AVP basic receive message - */ - template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, ?, c_vendId3gpp ), - number_Of_Requested_Vectors := *, - immediate_Response_Preferred := *, - re_synchronization_Info := *, - aVP_Type := * - } // End of template mw_reqUTRANGERANAuthInfo_dummy - - /** - * @desc Immediate-Response-Preferred AVP basic receive message - */ - template (value) Immediate_Response_Preferred_AVP m_immediateResponsePreferredAVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_immediate_Response_Preferred_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := 0 - } // End of template m_immediateResponsePreferredAVP_dummy - - template (present) GERAN_Vector_AVP mw_GERAN_Vector_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_geran_Vector_AVP_Code, ?, c_vendId3gpp ), - item_Number := *, - rAND := ?, - sRES := ?, - kc := ?, - aVP_Type := * - } // End of template mw_GERAN_Vector_dummy - - template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_dummy := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, ?, c_vendId3gpp ), - number_Of_Requested_Vectors := *, - immediate_Response_Preferred := *, - re_synchronization_Info := *, - aVP_Type := * - } // End of template mw_reqEUTRANAuthInfo_dummy - - } // End of group DummyAVPHeaders - - /** AVPs templates */ - group SpecificAVPHeaders { - - /** AVPs templates for send */ - group sendingTemplatesForAVPs{ - - /** - * @desc Contain information about a dynamically established APN on a serving node - * @param p_context_Identifier TODO - * @param p_service_Selection TODO - * @param p_mip6_Agent_Info Contains the IPv6 or the IPv4 address information of the HA - * @param p_visited_Network_Identifier Identity of the network where the PDN-GW was allocated, in the case of dynamic PDN-GW assignment - */ - template (value) Active_APN_AVP md_active_APN( - in template (value) Context_Identifier_AVP p_context_Identifier, - in template (value) Service_Selection_AVP p_service_Selection, - in template (value) MIP6_Agent_Info_AVP p_mip6_Agent_Info, - in template (value) Visited_Network_Identifier_AVP p_visited_Network_Identifier - ) modifies m_active_APN_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_active_APN_AVP_Code, - f_getEncvalueLength ( encvalue ( p_context_Identifier ) )+ - f_getEncvalueLength ( encvalue ( p_service_Selection ) )+ - f_getEncvalueLength ( encvalue ( p_mip6_Agent_Info ) )+ - f_getEncvalueLength ( encvalue ( p_visited_Network_Identifier ) ), - c_vendId3gpp ), - context_Identifier := p_context_Identifier, - service_Selection := p_service_Selection, - mip6_Agent_Info := p_mip6_Agent_Info, - visited_Network_Identifier := p_visited_Network_Identifier - } // End of template m_active_APN_AVP - - /** - * @desc Received template for Subscription-Data AVP for APN - * @param p_apnConfigurationProfile APN subscription value - */ - template (value) Subscription_Data_AVP m_subscriptionDataApnProfile ( - in template (value) APN_Configuration_Profile_AVP p_apnConfigurationProfile - ) modifies m_subscriptionData_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_subscription_Data_AVP_Code, - f_getEncvalueLength ( encvalue ( p_apnConfigurationProfile ) ), - c_vendId3gpp ), - aPN_Configuration_Profile := p_apnConfigurationProfile - } // End of template m_subscriptionDataApnProfile - - /** - * @desc Received template for Subscription-Data AVP for Subscriber_Status_AVP - * @param p_apnConfigurationProfile APN subscription value - */ - template (value) Subscription_Data_AVP m_subscriptionData_SubsStatus ( - in template (value) Subscriber_Status_AVP p_subscriber_Status - ) modifies m_subscriptionData_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_subscription_Data_AVP_Code, - 16,//length for Subscriber_Status_AVP - c_vendId3gpp ), - subscriber_Status := p_subscriber_Status - } // End of template m_subscriptionData_SubsStatus - - /** - * @desc Received template for Subscription-Data AVP for GPRS - * @param p_gprsSubscriptionData GPRS subscription value - */ - template (value) Subscription_Data_AVP m_subscriptionDataGprs ( - in template (value) GPRS_Subscription_Data_AVP p_gprsSubscriptionData - ) modifies m_subscriptionData_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_subscription_Data_AVP_Code, - f_getEncvalueLength ( encvalue ( p_gprsSubscriptionData ) ), - c_vendId3gpp ), - gPRS_Subscription_Data := p_gprsSubscriptionData - } // End of template m_subscriptionDataGprs - - /** - * @desc Received template for Subscription-Data AVP for GPRS - * @param p_operatorDeterminedBarring TODO - * @param p_regionalZoneCode TODO - * @param p_accessRestrictionData TODO - * @param p_apnOIReplacement TODO - * @param p_lcsInfo TODO - * @param p_teleserviceList TODO - * @param p_callBarringInfo TODO - * @param p_csgSubscriptionData CGS subscription value - */ - template (value) Subscription_Data_AVP m_subscriptionDataAll ( - in template (value) Operator_Determined_Barring_AVP p_operatorDeterminedBarring, - in template (value) Regional_Subscription_Zone_Code_AVP p_regionalZoneCode, - in template (value) Access_Restriction_Data_AVP p_accessRestrictionData, - in template (value) APN_OI_Replacement_AVP p_apnOIReplacement, - in template (value) LCS_Info_AVP p_lcsInfo, - in template (value) Teleservice_List_AVP p_teleserviceList, - in template (value) Call_Barring_Info_AVP p_callBarringInfo, - in template (value) CSG_Subscription_Data_AVP p_csgSubscriptionData - ) modifies m_subscriptionData_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_subscription_Data_AVP_Code, - f_getEncvalueLength ( encvalue ( p_operatorDeterminedBarring ) ) - + 10 * f_getEncvalueLength ( encvalue ( p_regionalZoneCode ) ) - + f_getEncvalueLength ( encvalue ( p_accessRestrictionData ) ) - + f_getEncvalueLength ( encvalue ( p_apnOIReplacement ) ) - + f_getEncvalueLength ( encvalue ( p_lcsInfo ) ) - + f_getEncvalueLength ( encvalue ( p_teleserviceList ) ) - + f_getEncvalueLength ( encvalue ( p_callBarringInfo ) ) - + f_getEncvalueLength ( encvalue ( p_csgSubscriptionData ) ), - c_vendId3gpp ), - operator_Determined_Barring := p_operatorDeterminedBarring, - zone_Code := { p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode, - p_regionalZoneCode }, - access_Restriction_Data := p_accessRestrictionData, - aPN_OI_Replacement := p_apnOIReplacement, - lCS_Info := p_lcsInfo, - teleservice_List := p_teleserviceList, - call_Barring_Info := { p_callBarringInfo }, - cSG_Subscription_Data := p_csgSubscriptionData - } // End of template m_subscriptionDataAll - - /** - * @desc Received template for APN-Configuration-Profile AVP - * @param p_contextIdentifier Context-Identifier AVP that identifies the per subscriber’s default APN configuration - * @param p_allAPNConfIncludedId All-APN-Configurations-Included-Indicator AVP - * @param p_aPNConfiguration Describes the configuration for a single APN - */ - template (value) APN_Configuration_Profile_AVP m_apnConfigurationProfile ( - in template (value) Context_Identifier_AVP p_contextIdentifier, - in template (value) All_APN_Conf_Included_Id_AVP p_allAPNConfIncludedId, - in template (value) APN_Configuration_AVP p_aPNConfiguration - ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_Configuration_Profile_AVP_Code, - f_getEncvalueLength ( encvalue (p_contextIdentifier) ) - + f_getEncvalueLength ( encvalue ( p_allAPNConfIncludedId ) ) - + f_getEncvalueLength ( encvalue ( p_aPNConfiguration ) ), - c_vendId3gpp ), - context_Identifier := p_contextIdentifier, - all_APN_Conf_Included_Id := p_allAPNConfIncludedId, - aPN_Configuration := { p_aPNConfiguration }, - aVP_Type := omit - } // End of template m_apnConfigurationProfile - - /** - * @desc All-APN-Configurations-Included-Indicator AVP description - * @param p_code TODO - */ - template (value) All_APN_Conf_Included_Id_AVP m_allAPNConfIncludedId ( - in template (value) All_APN_Conf_Included_Id_Code p_code - ) := { - aVP_Header:= m_aVP_HeaderVid_Mbit1 ( c_all_APN_Configurations_Included_Indicator_AVP_Code, - /*f_getEncvalueLength ( encvalue (p_code) )*/4, c_vendId3gpp ), - all_APN_Conf_Included_Indicator := p_code - } // End of template m_allAPNConfIncludedId - - /** - * @desc - * @param p_contextIdentifier TODO - * @param p_pdnType TODO - * @param p_serviceSelection TODO - * @param p_mIP6AgentInfo TODO - */ - template (value) APN_Configuration_AVP m_apnConfiguration ( - in template (value) Context_Identifier_AVP p_contextIdentifier, - in template (value) PDN_Type_AVP p_pdnType, - in template (value) Service_Selection_AVP p_serviceSelection, - in template (value) MIP6_Agent_Info_AVP p_mIP6AgentInfo ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_Configuration_AVP_Code, - f_getEncvalueLength ( encvalue (p_contextIdentifier ))+ - f_getEncvalueLength ( encvalue (p_pdnType ))+ - f_getEncvalueLength ( encvalue (p_serviceSelection ))+ - f_getEncvalueLength ( encvalue (p_mIP6AgentInfo ) ), - c_vendId3gpp ), - context_Identifier := p_contextIdentifier, - served_Party := omit, - pDN_Type := p_pdnType, - service_Selection := p_serviceSelection, - ePS_Subscribed_QoS_Profile := omit, - vPLMN_Dynamic_Address_Allowed := omit, - mIP6_Agent_Info := p_mIP6AgentInfo, - visited_Network_Identifier := omit, - pDN_GW_Allocation_Type := omit, - threeGPP_Charging_Char := omit, - aMBR := omit, - specific_APN_Info := omit, - aPN_OI_Replacement := omit, - sIPTO_Permission := omit, - lIPA_Permission := omit, - aVP_Type := omit - } // End of template m_apnConfiguration - - /** - * @desc - */ - template (value) QoS_Subscribed_AVP m_qosSubscribed_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_qos_Subscribed_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := ''O - } // End of template m_qosSubscribed_dummy - - /** - * @desc - */ - template (value) QoS_Subscribed_AVP m_qosSubscribed(in template (value) octetstring p_avpData) modifies m_qosSubscribed_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_qos_Subscribed_AVP_Code, f_getOctetStringLength ( p_avpData ), c_vendId3gpp ), - aVP_Data := p_avpData - } // End of template m_qosSubscribed - - /** - * @desc - */ - template (value) PDP_Type_AVP m_pdpType_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Type_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := ''O - } // End of template m_pdpType_dummy - - /** - * @desc - */ - template (value) PDP_Type_AVP m_pdpType(in template (value) octetstring p_avpData) modifies m_pdpType_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Type_AVP_Code, f_getOctetStringLength ( p_avpData ), c_vendId3gpp ), - aVP_Data := p_avpData - } // End of template m_pdpType - - /** - * @desc - * @param p_code TODO - */ - template (value) PDN_Type_AVP m_pdnType ( in template (value) PDN_Type_Code p_code ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdn_Type_AVP_Code, /*f_getEncvalueLength( encvalue (p_code) )*/4, c_vendId3gpp ), - pDN_Type_Code := p_code - } // End of template m_pdnType - - /** - * @desc - * @param p_avpData TODO - */ - template (value) Service_Selection_AVP m_serviceSelection ( in template (value) UTF8String p_avpData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_service_Selection_AVP_Code, f_getUTF8StringLength ( p_avpData ), c_vendId3gpp ), - aVP_Data := p_avpData - } // End of template m_serviceSelection - - /** - * @desc - * @param p_avpData TODO - */ - template (value) Operator_Determined_Barring_AVP m_operatorDeterminedBarring ( in template (value) UInt32 p_avpData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_operator_Determined_Barring_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_avpData - } // End of template m_operatorDeterminedBarring - - /** - * @desc - * @param p_avpData TODO - */ - template (value) Regional_Subscription_Zone_Code_AVP m_regionalSubscriptionZoneCode ( in template (value) octetstring p_avpData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_regional_Subscription_Zone_Code_AVP_Code, f_getOctetStringLength ( p_avpData ), c_vendId3gpp ), - aVP_Data := p_avpData - } // End of template m_regionalSubscriptionZoneCode - - /** - * @desc - * @param p_avpData TODO - */ - template (value) Access_Restriction_Data_AVP m_accessRestrictionData ( in template (value) UInt32 p_avpData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_access_Restriction_Data_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_avpData - } // End of template m_accessRestrictionData - - /** - * @desc - * @param p_avpData TODO - */ - template (value) APN_OI_Replacement_AVP m_aPNOIReplacement ( in template (value) UTF8String p_avpData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_apn_OI_Replacement_AVP_Code, f_getUTF8StringLength ( p_avpData ), c_vendId3gpp ), - aVP_Data := p_avpData - } // End of template m_aPNOIReplacement - - template (value) Teleservice_List_AVP m_teleserviceListTsCode ( in template (value) TS_Code_AVP p_tSCode ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_teleservice_List_AVP_Code, - f_getEncvalueLength ( encvalue ( p_tSCode ) ), - c_vendId3gpp ), - tS_Code := { p_tSCode }, - aVP_Type := omit - } // End of template m_teleserviceListTsCode - - template (value) TS_Code_AVP m_tSCode ( in template (value) octetstring p_aVPData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_ts_Code_AVP_Code, - f_getOctetStringLength ( p_aVPData ), - c_vendId3gpp ), - aVP_Data := p_aVPData - } // End of template m_tSCode - - template (value) SS_Code_AVP m_sSCode ( in template (value) octetstring p_aVPData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_ss_Code_AVP_Code, - f_getOctetStringLength(p_aVPData ), - c_vendId3gpp ), - aVP_Data := p_aVPData - } // End of template m_sSCode - - template (value) SS_Status_AVP m_sSStatus ( in template (value) octetstring p_aVPData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_ss_Status_AVP_Code, - f_getOctetStringLength(p_aVPData ), - c_vendId3gpp ), - aVP_Data := p_aVPData - } // End of template m_sSStatus - - template (value) CSG_Subscription_Data_AVP m_cSGSubscriptionData ( in template (value) CSG_Id_AVP p_cSGId ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_csg_Subscription_Data_AVP_Code, - p_cSGId.aVP_Header.aVP_len ,//16, - c_vendId3gpp ), - cSG_Id := p_cSGId, - expiration_Date := omit, - service_Selection := omit, - aVP_Type := omit - } // End of template m_cSGSubscriptionData - - template (value) CSG_Id_AVP m_cSGId ( in template (value) UInt32 p_aVPData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_csg_Id_AVP_Code, - 4, - c_vendId3gpp ), - aVP_Data := p_aVPData - } // End of template m_cSGId - - template (value) Call_Barring_Info_AVP m_callBarringInfo ( in template (value) SS_Code_AVP p_sSCode, - in template (value) SS_Status_AVP p_sSStatus ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_call_Barring_Info_AVP_Code, - f_getEncvalueLength ( encvalue ( p_sSCode )) + - f_getEncvalueLength ( encvalue ( p_sSStatus )), - c_vendId3gpp ), - sS_Code := p_sSCode, - sS_Status := p_sSStatus, - aVP_Type := omit - } // End of template m_callBarringInfo - - template (value) PDP_Context_AVP m_pdpContext_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Context_AVP_Code, 4, c_vendId3gpp ), - context_Identifier := m_contextIdentifier_dummy, - pDP_Type := m_pdpType_dummy, - pDP_Address := omit, - qoS_Subscribed := m_qosSubscribed_dummy, - vPLMN_Dynamic_Address_Allowed := omit, - service_Selection := m_service_Selection_AVP_dummy, - threeGPP_Charging_Char := omit, - ext_PDP_Type := omit, - ext_PDP_Address := omit, - aMBR := omit, - sIPTO_Permission := omit, - lIPA_Permission := omit, - aVP_Type := omit - } // End of template m_pdpContext_dummy - - template (value) PDP_Context_AVP m_pdpContext(in template (value) Context_Identifier_AVP p_context_Identifier, - in template (value) PDP_Type_AVP p_pDP_Type, - in template (value) QoS_Subscribed_AVP p_qoS_Subscribed, - in template (value) Service_Selection_AVP p_service_Selection) - modifies m_pdpContext_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pdp_Context_AVP_Code, - f_getEncvalueLength (encvalue ( p_context_Identifier )) + - f_getEncvalueLength (encvalue ( p_pDP_Type )) + - f_getEncvalueLength (encvalue ( p_qoS_Subscribed )) + - f_getEncvalueLength (encvalue ( p_service_Selection )), - c_vendId3gpp ), - context_Identifier := p_context_Identifier,//m_contextIdentifier_dummy, - pDP_Type := p_pDP_Type,//m_pdpType_dummy, - qoS_Subscribed := p_qoS_Subscribed,//m_qosSubscribed_dummy, - service_Selection := p_service_Selection//m_service_Selection_AVP_dummy - } // End of template m_pdpContext - - /** - * @desc Send Complete-DL-Included-Indicator AVP message - * @param p_code - */ - template (value) Complete_DL_Included_Indicator_AVP m_completeDLIncludedIndicator ( in template (value) - Complete_DL_Included_Indicator_Code - p_code ) := { - aVP_Header:= m_aVP_HeaderVid_Mbit1 ( - c_complete_Data_List_Included_Indicator_AVP_Code, - f_getEncvalueLength ( encvalue ( p_code ) ), - c_vendId3gpp ), - complete_DL_Included_Indicator := p_code - } // End of template m_completeDLIncludedIndicator - - /** - * @desc Send GPRS-Subscription-Data AVP message - * @param p_completeDLIncludedIndicator TODO - * @param p_pDPContext TODO - */ - template (value) GPRS_Subscription_Data_AVP m_gprsSubscriptionData ( in template (value) Complete_DL_Included_Indicator_AVP p_completeDLIncludedIndicator, - in template (value) PDP_Context_AVP p_pDPContext ) := { - aVP_Header:= m_aVP_HeaderVid_Mbit1 ( - c_gprs_Subscription_Data_AVP_Code, - f_getEncvalueLength ( encvalue ( p_completeDLIncludedIndicator ) ) - + f_getEncvalueLength ( encvalue ( p_pDPContext ) ), - c_vendId3gpp ), - complete_Data_List_Included_Indicator := p_completeDLIncludedIndicator, - pDP_Context := { p_pDPContext }, - aVP_Type := omit - } // End of template m_gprsSubscriptionData - - /** - * @desc Send PUER_Flags AVP message - * @param p_aVP_Data The PUER_Flags value - */ - template (value) PUER_Flags_AVP m_puerFlags_AVP( - in UInt32 p_aVP_Data - ):= { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_puer_Flags_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_aVP_Data - } // End of template m_puerFlags_AVP - - /** - * @desc Send PUEA_Flags AVP message - * @param p_aVP_Data The PUEA_Flags value - */ - template (value) PUEA_Flags_AVP m_pueaFlags( - in template (value) UInt32 p_aVP_Data - ):= { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_pua_Flags_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_aVP_Data - } // End of template m_pueaFlags - - /** - * @desc Send DSR_Flags AVP message - * @param p_aVP_Data The DSR_Flags value - */ - template (value) DSR_Flags_AVP m_dsrFlags( - in UInt32 p_aVP_Data - ):= { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_dsr_Flags_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_aVP_Data - } // End of template m_dsrFlags - - /** - * @desc Send template specifying no state maintained - */ - template (value) Auth_Session_State_AVP md_auth_Session_State_noStateMaintained - modifies m_auth_Session_State_dummy := { - aVP_Data := NO_STATE_MAINTAINED_E - } // End of template m_auth_Session_State_noStateMaintained - - /** - * @desc Send ULR_Flags_AVP message with bits configuration - * @param p_aVP_Data ULR-Flags - * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.7/1: ULR-Flags - */ - template (value) ULR_Flags_AVP md_ulr_Flags_AVP( in UInt32 p_aVP_Data ) - modifies m_ulrFlags_dummy := { - aVP_Data := p_aVP_Data - } // End of template m_ulr_Flags_AVP - - /** - * @desc - * @param p_aVP_Data - */ - template (value) Homogeneous_Support_AVP md_homogeneous_Support_AVP( in Homogeneous_Support_Type p_aVP_Data ) - modifies m_homogeneous_Support_dummy := { - aVP_Data := p_aVP_Data - } // End of template m_homogeneous_Support_AVP - - /** - * @desc Identifies the per subscriber"s default APN configuration - * @param p_aVP_Data Per subscriber"s default APN configuration - */ - template (value) Context_Identifier_AVP md_contextIdentifier( in UInt32 p_aVP_Data ) - modifies m_contextIdentifier_dummy := { - aVP_Data := p_aVP_Data - } // End of template m_contextIdentifier - - /** - * @desc APN for the selected and dynamically allocated PDN GW - * @param p_aVP_Data The APN value - */ - template (value) Service_Selection_AVP md_service_Selection_AVP( in charstring p_aVP_Data ) - modifies m_service_Selection_AVP_dummy := { - aVP_Header := m_aVP_Header_Mbit1 ( c_service_Selection_AVP_Code, f_getCharStringLength(p_aVP_Data)), - aVP_Data := p_aVP_Data - } // End of template m_service_Selection_AVP - - /** - * @desc HA IP address - * @param The HA IP address - * @see RFC4004 - */ - template (value) MIP_Home_Agent_Address_AVP md_mip_Home_Agent_Address_AVP( in Address p_Address ) - modifies m_mip_Home_Agent_Address_AVP_dummy := { - aVP_Header := m_aVP_Header_Mbit1 ( c_mIP_Home_Agent_Address_AVP_Code, f_IPAdressLengthUInt24()), - aVP_Data := p_Address - } // End of template m_mip_Home_Agent_Address_AVP - template (value) MIP_Home_Agent_Address_AVP md_mipHomeAgentAddress( in Address p_Address ) := md_mip_Home_Agent_Address_AVP(p_Address); //Alias - - /** - * @desc HA FQDN - * @param p_destinationRealm Realm of the PDN-GW - * @param p_destinationHost Hostname of the PDN-GW - */ - template (value) MIP_Home_Agent_Host_AVP md_mip_Home_Agent_Host_AVP( - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) Destination_Host_AVP p_destinationHost) - modifies m_mip_Home_Agent_Host_AVP_dummy := { - - aVP_Header := m_aVP_Header_Mbit1 ( c_mIP_Home_Agent_Host_AVP_Code, - f_getEncvalueLength ( encvalue (p_destinationRealm))+ - f_getEncvalueLength ( encvalue (p_destinationHost))), - destination_Realm := p_destinationRealm, - destination_Host := p_destinationHost - } // End of template m_mip_Home_Agent_Host_AVP - - /** - * @desc HA FQDN - * @param p_destinationRealm Realm of the PDN-GW - * @param p_destinationHost Hostname of the PDN-GW - * @remark This is an alias on template md_mip_Home_Agent_Host_AVP - */ - template (value) MIP_Home_Agent_Host_AVP md_mipHomeAgentHost( - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) Destination_Host_AVP p_destinationHost - ) := md_mip_Home_Agent_Host_AVP(p_destinationRealm, p_destinationHost); //Alias - - /** - * @desc Contains the IPv6 or the IPv4 address information of the HA - * @param p_mip_Home_Agent_Address1 HA IP address - * @param p_mip_Home_Agent_Host HA FQDN of the PDN-GW - */ - template (value) MIP6_Agent_Info_AVP md_mip6_Agent_Info_AVP( - in template (value) MIP_Home_Agent_Address_AVP p_mip_Home_Agent_Address1, - in template (value) MIP_Home_Agent_Host_AVP p_mip_Home_Agent_Host - ) modifies m_mip6_Agent_Info_AVP_dummy := { - aVP_Header := m_aVP_Header_Mbit1 ( c_mIP6_Agent_Info_AVP_Code, - f_getEncvalueLength ( encvalue (p_mip_Home_Agent_Address1 ))+ - f_getEncvalueLength ( encvalue (p_mip_Home_Agent_Host ))), - mip_Home_Agent_Address1 := p_mip_Home_Agent_Address1, - mip_Home_Agent_Host := p_mip_Home_Agent_Host - } // End of template m_mip6_Agent_Info_AVP - - /** - * @desc Identity of the network where the PDN-GW was allocated, in the case of dynamic PDN-GW assignment - * @param p_aVP_Data Identity value - */ - template (value) Visited_Network_Identifier_AVP md_visited_Network_Identifier_AVP( in octetstring p_aVP_Data ) - modifies m_visited_Network_Identifier_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_Network_Identifier_AVP_Code, - f_getOctetStringLength(p_aVP_Data), - c_vendId3gpp ), - aVP_Data := p_aVP_Data - } // End of template m_visited_Network_Identifier_AVP - - /** - * @desc Send template for radio access technology that is serving the UE - * @param p_avpData Radio access technology value - */ - template (value) RAT_Type_AVP m_rAT_Type(in RAT_Type p_avpData ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1(c_rAT_Type_AVP_Code, 4, c_vendId3gpp), - aVP_Data := p_avpData - } // End of template m_rAT_Type - - /** - * @desc Cancellation_Type_AVP - * @param p_cancellation_Type - */ - template (value) Cancellation_Type_AVP m_cancellationTypeParam ( - in template (value) Cancellation_Type_Code p_cancellation_Type - ) modifies m_cancellationType_dummy := { - cancellation_Type := p_cancellation_Type - } // End of template m_cancellationTypeParam - - /** - * @desc Visited_PLMN_Id_AVP - * @param p_aVP_Data - */ - template (value) Visited_PLMN_Id_AVP md_visitedPLMNId( - in template (value) Oct3 p_aVP_Data - ) modifies m_visitedPLMNId_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_visited_PLMN_Id_AVP_Code, 4, c_vendId3gpp ), - aVP_Data := p_aVP_Data - } // End of template m_visitedPLMNId_dummy - - /** - * @desc Req_EUTRAN_Auth_Info_AVP - * @param p_re_synchronization_Info - */ - template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo( - in template (value) Re_synchronization_Info_AVP p_re_synchronization_Info - ) modifies m_reqEUTRANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue ( p_re_synchronization_Info)), - c_vendId3gpp ), - re_synchronization_Info := p_re_synchronization_Info - } // End of template m_reqEUTRANAuthInfo - - /** - * @desc Req_EUTRAN_Auth_Info_AVP - * @param p_number_Of_Requested_Vectors - */ - template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_NumReqVec( - in template (value) Number_Of_Requested_Vectors_AVP p_number_Of_Requested_Vectors - ) modifies m_reqEUTRANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue (p_number_Of_Requested_Vectors )), - c_vendId3gpp ), - number_Of_Requested_Vectors := p_number_Of_Requested_Vectors - } // End of template m_reqEUTRANAuthInfo - - /** - * @desc Req_EUTRAN_Auth_Info_AVP - * @param p_immediate_Response_Preferred - */ - template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_ImResPre( - in template (value) Immediate_Response_Preferred_AVP p_immediate_Response_Preferred - ) modifies m_reqEUTRANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue (p_immediate_Response_Preferred )), - c_vendId3gpp ), - immediate_Response_Preferred := p_immediate_Response_Preferred - } // End of template m_reqEUTRANAuthInfo_ImResPre - - /** - * @desc Req_EUTRAN_Auth_Info_AVP - * @param p_re_synchronization_Info - */ - template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_ReSynInf( - in template (value) Re_synchronization_Info_AVP p_re_synchronization_Info - ) modifies m_reqEUTRANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue (p_re_synchronization_Info )), - c_vendId3gpp ), - re_synchronization_Info := p_re_synchronization_Info - } // End of template m_reqEUTRANAuthInfo_ImResPre - - /** - * @desc Req_EUTRAN_Auth_Info_AVP - * @param p_number_Of_Requested_Vectors - * @param p_immediate_Response_Preferred - */ - template (value) Req_EUTRAN_Auth_Info_AVP m_reqEUTRANAuthInfo_NumReqVec_ImResPre( - in template (value) Number_Of_Requested_Vectors_AVP p_number_Of_Requested_Vectors, - in template (value) Immediate_Response_Preferred_AVP p_immediate_Response_Preferred - ) modifies m_reqEUTRANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_EUTRAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue (p_number_Of_Requested_Vectors ))+ - f_getEncvalueLength ( encvalue (p_immediate_Response_Preferred )), - c_vendId3gpp ), - number_Of_Requested_Vectors := p_number_Of_Requested_Vectors, - immediate_Response_Preferred := p_immediate_Response_Preferred - } // End of template m_reqEUTRANAuthInfo_NumReqVec_ImResPre - - /** - * @desc Re_synchronization_Info_AVP - * @param p_aVP_Data - */ - template (value) Re_synchronization_Info_AVP m_re_synchronization_Info_AVP( - in template (value) octetstring p_aVP_Data - ) modifies m_re_synchronization_Info_AVP_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_re_Synchronization_Info_AVP_Code, f_getOctetStringLength(p_aVP_Data), c_vendId3gpp ), - aVP_Data := p_aVP_Data - } // End of template m_re_synchronization_Info_AVP - - /** - * @desc Number_Of_Requested_Vectors_AVP - * @param p_aVP_Data - */ - template (value) Number_Of_Requested_Vectors_AVP m_numberOfRequestedVectorsAVP( - in template (value) UInt32 p_aVP_Data - ) modifies m_numberOfRequestedVectorsAVP_dummy := { - aVP_Data := p_aVP_Data - } // End of template m_numberOfRequestedVectorsAVP - - /** - * @desc Immediate_Response_Preferred_AVP - * @param p_aVP_Data - */ - template (value) Immediate_Response_Preferred_AVP m_immediateResponsePreferredAVP( - in template (value) UInt32 p_aVP_Data - ) modifies m_immediateResponsePreferredAVP_dummy := { - aVP_Data := p_aVP_Data - } // End of template m_immediateResponsePreferredAVP - - /** - * @desc Req_UTRAN_GERAN_Auth_Info_AVP - * @param p_re_synchronization_Info - */ - template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo( - in template (value) Re_synchronization_Info_AVP p_re_synchronization_Info - ) modifies m_reqUTRANGERANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue( p_re_synchronization_Info) ), - c_vendId3gpp ), - re_synchronization_Info := p_re_synchronization_Info - } // End of template m_reqUTRANGERANAuthInfo - - /** - * @desc Req_UTRAN_GERAN_Auth_Info_AVP - * @param p_number_Of_Requested_Vectors - */ - template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfoNumReq( - in template (present) Number_Of_Requested_Vectors_AVP p_number_Of_Requested_Vectors - ) modifies m_reqUTRANGERANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue( p_number_Of_Requested_Vectors) ), - c_vendId3gpp ), - number_Of_Requested_Vectors := p_number_Of_Requested_Vectors - } // End of template m_reqUTRANGERANAuthInfoNumReq - - /** - * @desc Req_UTRAN_GERAN_Auth_Info_AVP - * @param p_immediate_Response_Preferred - * @param p_re_synchronization_Info - */ - template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_ImResPre_ReSynInf( - in template Immediate_Response_Preferred_AVP p_immediate_Response_Preferred, - in template Re_synchronization_Info_AVP p_re_synchronization_Info - ) modifies m_reqUTRANGERANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue( p_immediate_Response_Preferred)) + - f_getEncvalueLength ( encvalue( p_re_synchronization_Info)), - c_vendId3gpp ), - immediate_Response_Preferred := p_immediate_Response_Preferred, - re_synchronization_Info := p_re_synchronization_Info - } // End of template m_reqUTRANGERANAuthInfo_ImResPre_ReSynInf - - /** - * @desc Req_UTRAN_GERAN_Auth_Info_AVP - * @param p_immediate_Response_Preferred - */ - template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_ImResPre( - in template (value) Immediate_Response_Preferred_AVP p_immediate_Response_Preferred - ) modifies m_reqUTRANGERANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue (p_immediate_Response_Preferred )), - c_vendId3gpp ), - immediate_Response_Preferred := p_immediate_Response_Preferred - } // End of template m_reqUTRANGERANAuthInfo_ImResPre_ReSynInf - - /** - * @desc Req_UTRAN_GERAN_Auth_Info_AVP - * @param p_re_synchronization_Info - */ - template (value) Req_UTRAN_GERAN_Auth_Info_AVP m_reqUTRANGERANAuthInfo_ReSynInf( - in template Re_synchronization_Info_AVP p_re_synchronization_Info - ) modifies m_reqUTRANGERANAuthInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code, - f_getEncvalueLength ( encvalue( p_re_synchronization_Info)), - c_vendId3gpp ), - re_synchronization_Info := p_re_synchronization_Info - } // End of template m_reqUTRANGERANAuthInfo_ReSynInf - - /** - * @desc Subscriber_Status_AVP - * @param p_subscriber_Status_Code - */ - template (value) Subscriber_Status_AVP m_subscriber_Status( - in template (value) Subscriber_Status_Code p_subscriber_Status_Code - ) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_subscriber_Status_AVP_Code, 4, c_vendId3gpp ), - subscriber_Status_Code := p_subscriber_Status_Code - } // End of template m_subscriber_Status - - template User_Id_AVP m_userId(template (value) UTF8String p_avpData) := { - aVP_Header := m_aVP_HeaderVid_Mbit0(c_user_Id_AVP_Code, f_getUTF8StringLength(p_avpData), omit), - aVP_Data := p_avpData - } - - /** - * @desc TODO - */ - template (value) LCS_Info_AVP m_lcsInfo_GMLCNumber(template (value) GMLC_Number_AVP p_gMLC_Number) modifies m_lcsInfo_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 (c_lcs_Info_AVP_Code, - f_getEncvalueLength ( encvalue ( p_gMLC_Number ) ), - c_vendId3gpp ), - gMLC_Number := {p_gMLC_Number} - } // End of template m_lcsInfo_dummy - - - template (value) GMLC_Number_AVP m_GMLC_Number(template (value) octetstring p_avp_Data) := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( c_gmlc_Number_AVP_Code, f_getOctetStringLength(p_avp_Data), c_vendId3gpp ), - aVP_Data := p_avp_Data - } - - } // End of group sendingTemplatesForAVPs - - /** AVPs basic templates for receive */ - group awaitingTemplatesForAVPs{ - - /** - * @desc Experimental-Code AVP receive message - * @param p_experimental_Result_Code Expected sExperimental-Result-Code AVP - */ - template (present) Experimental_Result_AVP mw_experimentalResult(template (present) Experimental_Result_Code_AVP p_experimental_Result_Code) := { - aVP_Header := mw_aVP_Header_Vbit0Mbit1 (c_experimental_Result_AVP_Code), - vendor_Id := ?, - experimental_Result_Code := p_experimental_Result_Code - } // End of template mw_experimentalResult - - /** - * @desc Experimental-Result-Code AVP receive message - * @param p_avpData Expected status code - */ - template (present) Experimental_Result_Code_AVP mw_experimentalResultCode(template (present) Experimental_Result_Type p_avpData) := { - aVP_Header := mw_aVP_Header_Vbit0Mbit1 (c_experimental_Result_Code_AVP_Code), - aVP_Data := p_avpData - } // End of template mw_experimentalResultCode - - /** - * @desc Error-Diagnostic AVP receive message - * @param p_error_Diagnostic_Code Expected status code - */ - template (present) Error_Diagnostic_AVP mw_errorDiagnostic( - in template (present) Error_Diagnostic_Code_Type p_error_Diagnostic_Code - ) := { - aVP_Header := mw_aVP_Header_Vbit1Mbit0 (c_error_Diagnostic_AVP_Code), - error_Diagnostic_Code := p_error_Diagnostic_Code - } // End of template mw_errorDiagnostic - - /** - * @desc Operator-Determined-Barring AVP receive message - * @param p_aVP_Data Services of a subscriber that are barred by the operator - */ - template (present) Operator_Determined_Barring_AVP mw_operator_Determined_Barring( - in template (present) UInt32 p_aVP_Data - ) := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_operator_Determined_Barring_AVP_Code, - ?, - c_vendId3gpp - ), - aVP_Data := p_aVP_Data - } // End of template mw_operator_Determined_Barring - - /** - * @desc HPLMN-ODB AVP receive message - * @param p_aVP_Data HPLMN specific services of a subscriber that are barred by the operator - */ - template (present) HPLMN_ODB_AVP mw_hplmn_ODB( - in template (present) UInt32 p_aVP_Data - ) := { - aVP_Header := mw_aVP_HeaderVid_Mbit1 ( - c_hplmn_ODB_AVP_Code, - ?, - c_vendId3gpp - ), - aVP_Data := p_aVP_Data - } // End of template mw_hplmn_ODB - - /** - * @desc APN-Configuration AVP receive message with expected ePS-Subscribed-QoS-Profile/AMBR AVPs - */ - template (present) APN_Configuration_AVP mdw_aPN_Configuration_ePS_aMBR - modifies mw_aPN_Configuration_dummy := { - ePS_Subscribed_QoS_Profile := ?, - aMBR := ? - } // End of template mw_aPN_Configuration_ePS_aMBR - - /** - * @desc APN-Configuration AVP receive message with expected APN-Configuration AVP - * @param p_context_Identifier TODO - * @param p_all_APN_Conf_Included_Id TODO - */ - template (present) APN_Configuration_Profile_AVP mdw_apnConfigurationProfile( - in template (present) Context_Identifier_AVP p_context_Identifier, - in template (present) All_APN_Conf_Included_Id_AVP p_all_APN_Conf_Included_Id - ) modifies mw_apnConfigurationProfile_dummy := { - context_Identifier := p_context_Identifier, - all_APN_Conf_Included_Id := p_all_APN_Conf_Included_Id, - aPN_Configuration := superset(mdw_aPN_Configuration_ePS_aMBR), - aVP_Type := * - } // End of template mw_apnConfigurationProfile - - /** - * @desc APN-Configuration AVP receive message with expected Context-Identifier/All-APN-Conf-Included-Id/APN-Configuration AVPs - * @param p_context_Identifier TODO - * @param p_all_APN_Conf_Included_Id TODO - * @param p_aPN_Configuration TODO - */ - template (present) APN_Configuration_Profile_AVP mdw_apnConfigurationProfile_e( - in template (present) Context_Identifier_AVP p_context_Identifier, - in template (present) All_APN_Conf_Included_Id_AVP p_all_APN_Conf_Included_Id, - in template (present) APN_Configuration_AVP p_aPN_Configuration - ) modifies mdw_apnConfigurationProfile := { - context_Identifier := p_context_Identifier, - all_APN_Conf_Included_Id := p_all_APN_Conf_Included_Id, - aPN_Configuration := { p_aPN_Configuration } - } // End of template mw_apnConfigurationProfile_e - - /** - * @desc APN-Configuration AVP receive message with expected Service-Selection/EPS-Subscribed-QoS-Profile/AMBR AVPs - */ - template (present) APN_Configuration_AVP mdw_aPN_Configuration - modifies mw_aPN_Configuration_dummy := { - service_Selection := ?, - ePS_Subscribed_QoS_Profile := ?, - aMBR := ?, - specific_APN_Info := omit - } // End of template mw_aPN_Configurations - - template Supported_Features_AVP mw_supportedFeatures - modifies mw_supportedFeatures_dummy := { - feature_list_Id := ? - } // End of template mw_supportedFeatures - - /** - * @desc Subscription-Data AVP receive message with an expected Operator-Determined-Barring AVP field - * @param p_operator_Determined_Barring TODO - * @param p_hPLMN_ODB TODO - */ - template (present) Subscription_Data_AVP mdw_subscriptionData_operator_Determined_Barring( - in template (present) Operator_Determined_Barring_AVP p_operator_Determined_Barring, - in template (present) HPLMN_ODB_AVP p_hPLMN_ODB - ) modifies mw_subscriptionData_dummy := { - subscriber_Status := mdw_subscriber_Status(OPERATOR_DETERMINED_BARRING_E), - operator_Determined_Barring := p_operator_Determined_Barring ifpresent, - hPLMN_ODB := p_hPLMN_ODB ifpresent - } // End of template mdw_subscriptionData_aPN_Configuration_Profile - - /** - * @desc Subscription-Data AVP receive message with an expected APN-Configuration-Profile AVP field - * @param p_aPN_Configuration_Profile - */ - template (present) Subscription_Data_AVP mdw_subscriptionData_aPN_Configuration_Profile( - in template (present) APN_Configuration_Profile_AVP p_aPN_Configuration_Profile - ) modifies mw_subscriptionData_dummy := { - aPN_Configuration_Profile := p_aPN_Configuration_Profile - } // End of template mdw_subscriptionData_operator_Determined_Barring - - /** - * @desc Subscription-Data AVP receive message with an expected Subscriber-Status AVP field - * @param p_subscriber_Status TODO - */ - template (present) Subscription_Data_AVP mdw_subscriptionData_subscriptionStatus( - in template (present) Subscriber_Status_AVP p_subscriber_Status - ) modifies mw_subscriptionData_dummy := { - subscriber_Status := p_subscriber_Status - } // End of template mw_subscriptionData_subscriptionStatus - - /** - * @desc Subscription-Data AVP receive message with an expected Access-Restriction-Data AVP field - * @param p_access_Restriction_Data TODO - */ - template (present) Subscription_Data_AVP mdw_subscriptionData_accessRestrictionData ( - in template (present) Access_Restriction_Data_AVP p_access_Restriction_Data - ) modifies mw_subscriptionData_dummy := { - access_Restriction_Data := p_access_Restriction_Data - } // End of template mw_subscriptionData_accessRestrictionData - - /** - * @desc Subscription-Data AVP receive message with an expected APN-OI-Replacement AVP field - * @param p_aPN_OI_Replacement TODO - */ - template (present) Subscription_Data_AVP mdw_subscriptionData_apnOiReplacement ( - in template (present) APN_OI_Replacement_AVP p_aPN_OI_Replacement - ) modifies mw_subscriptionData_dummy := { - aPN_OI_Replacement := p_aPN_OI_Replacement - } // End of template mw_subscriptionData_apnOiReplacement - - /** - * @desc Subscription-Data AVP receive message with an expected APN-Configuration-Profile AVP field - * @param p_aPN_Configuration_Profile TODO - */ - template (present) Subscription_Data_AVP mdw_subscriptionData_apnConfigurationProfile ( - in template (present) APN_Configuration_Profile_AVP p_aPN_Configuration_Profile - ) modifies mw_subscriptionData_dummy := { - aPN_Configuration_Profile := p_aPN_Configuration_Profile - } // End of template mw_subscriptionData_apnConfigurationProfile - - /** - * @desc Subscription-Data AVP receive message with an expected GPRS-Subscription-Data AVP field - * @param p_gPRS_Subscription_Data TODO - */ - template (present) Subscription_Data_AVP mdw_subscriptionData_gprs_Subscription_Data ( - in template (present) GPRS_Subscription_Data_AVP p_gPRS_Subscription_Data - ) modifies mw_subscriptionData_dummy := { - gPRS_Subscription_Data := p_gPRS_Subscription_Data - } // End of template mw_subscriptionData_gprs_Subscription_Data - - /** - * @desc GPRS-Subscription-Data AVP receive message - * @param p_completeDLIncludedIndicator Expected Complete-DL-Included-Indicator AVP - * @param p_pDPContext Expected PDP-Context AVP - */ - template (present) GPRS_Subscription_Data_AVP mdw_gprsSubscriptionData( - in template (present) Complete_DL_Included_Indicator_AVP p_completeDLIncludedIndicator, - in template (present) PDP_Context_AVP p_pDPContext ) - modifies mw_gprsSubscriptionData_dummy := { - } // End of template mdw_gprsSubscriptionData - - /** - * @desc SGSN-Number AVP receive message - * @param p_cancellation_Type Expected type of cancellation - */ - template (present) Cancellation_Type_AVP mdw_cancellationType( - in template (present) Cancellation_Type_Code p_cancellation_Type - ) modifies mw_cancellationType_dummy := { - cancellation_Type := p_cancellation_Type - } // End of template mw_cancellationType - - /** - * @desc SGSN-Number AVP receive message - * @param p_avpData Roaming/outbound subscriber's SGSN number - */ - template (value) SGSN_Number_AVP mdw_sGSN_Number(in template (value) octetstring p_aVP_Data) - modifies mw_sGSN_Number_dummy := { - aVP_Header := m_aVP_HeaderVid_Mbit1 ( - c_sgsn_Number_AVP_Code, - f_getOctetStringLength(p_aVP_Data), - c_vendId3gpp - ), - aVP_Data := p_aVP_Data - } // End of template mdw_sGSN_Number - - /** - * @desc Subscriber_Status AVP receive message - * @param p_subscriber_Status_Code TODO - */ - template (present) Subscriber_Status_AVP mdw_subscriber_Status(in template (present) Subscriber_Status_Code p_subscriber_Status_Code) - modifies mw_subscriber_Status_dummy := { - subscriber_Status_Code := p_subscriber_Status_Code - } // End of template mw_subscriber_Status_dummy - - /** - * @desc Access-Restriction-Data AVP receive message - * @param p_avpData TODO - */ - template (present) Access_Restriction_Data_AVP mdw_accessRestrictionData(in template (present) UInt32 p_avpData) - modifies mw_access_Restriction_Data_dummy := { - aVP_Data := p_avpData - } // End of template mw_accessRestrictionData - - /** - * @desc APN-OI-Replacement AVP receive message - * @param p_avpData TODO - */ - template (present) APN_OI_Replacement_AVP mdw_aPN_OI_Replacement(in template (present) UTF8String p_avpData) - modifies mw_aPN_OI_Replacement_dummy := { - aVP_Data := p_avpData - } // End of template mw_aPN_OI_Replacement - - /** - * @desc Received ULA_Flags_AVP message with Separation-indicator bit set - * @param p_aVP_Data ULA-Flags - * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.8/1: ULA-Flags - */ - template (present) ULA_Flags_AVP mdw_ula_Flags_AVP( in UInt32 p_aVP_Data ) - modifies mw_ulaFlags_dummy := { - aVP_Data := p_aVP_Data - } // End of template mw_ula_Flags - - /** - * @desc IDR-Flags AVP receive message - */ - template (present) IDR_Flags_AVP mdw_iDRFlags( - in template (present) UInt32 p_aVP_Data - ) modifies mw_iDRFlags_dummy := { - aVP_Data := p_aVP_Data - } // End of template mdw_iDRFlags - - /** - * @desc DSR-Flags AVP receive message - */ - template (present) DSR_Flags_AVP mdw_dSRFlags( - in template (present) UInt32 p_aVP_Data - ) modifies mw_dSRFlags_dummy := { - aVP_Data := p_aVP_Data - } // End of template mdw_dSRFlags - - /** - * @desc PUER-Flags AVP receive message - */ - template (present) PUER_Flags_AVP mdw_pUERFlags( - in template (present) UInt32 p_aVP_Data - ) modifies mw_pUERFlags_dummy := { - aVP_Data := p_aVP_Data - } // End of template mdw_pURFlags - - - /** - * @desc Await PUEA_Flags AVP message - * @param p_aVP_Data The PUEA_Flags value - */ - template (present) PUEA_Flags_AVP mw_pueaFlags ( in template UInt32 p_aVP_Data ):= { - aVP_Header := mw_aVP_S6a_HeaderVid_Mbit1 (c_pua_Flags_AVP_Code, c_vendId3gpp ), - aVP_Data := p_aVP_Data - } // End of template m_pueaFlags - - /** - * @desc Received generic CLR Flags AVP template - */ - template (present) CLR_Flags_AVP mw_clrFlags := { - aVP_Header := mw_aVP_S6a_HeaderVid_Mbit1 ( c_clr_Flags_AVP_Code, c_vendId3gpp ), - aVP_Data := 1 - } // End of template m_clrFlags_dummy - - /** - * @desc Authentication-Info AVP receive message with an expected specific E-UTRAN authentication vector - * @param p_e_UTRAN_Vector E-UTRAN authentication vector - */ - template (present) Authentication_Info_AVP mdw_authentication_Info_e_UTRAN_Vector( - in template (present) E_UTRAN_Vector_AVP p_e_UTRAN_Vector - ) modifies mw_authentication_Info_dummy := { - e_UTRAN_Vector := subset(p_e_UTRAN_Vector) - } // End of template mdw_authentication_Info_e_UTRAN_Vector - - /** - * @desc Authentication-Info AVP receive message with an expected E-UTRAN authentication vectors - * @param p_e_UTRAN_Vectors E-UTRAN authentication vectors - */ - template (present) Authentication_Info_AVP mdw_authentication_Info_e_UTRAN_Vectors( - in template (present) Authentication_Info_AVP.e_UTRAN_Vector p_e_UTRAN_Vectors - ) modifies mw_authentication_Info_dummy := { - e_UTRAN_Vector := p_e_UTRAN_Vectors - } // End of template mdw_authentication_Info_e_UTRAN_Vectors - - /** - * @desc Authentication-Info AVP receive message with an expected UTRAN authentication vectors - * @param p_gERAN_Vector UTRAN authentication vectors - */ - template (present) Authentication_Info_AVP mdw_authentication_Info_UTRAN_Vectors( - in template (present) Authentication_Info_AVP.uTRAN_Vector p_uTRAN_Vector - ) modifies mw_authentication_Info_dummy := { - uTRAN_Vector := p_uTRAN_Vector - } // End of template mdw_authentication_Info_UTRAN_Vectors - - /** - * @desc Authentication-Info AVP receive message with an expected GERAN authentication vectors - * @param p_gERAN_Vector GERAN authentication vectors - */ - template (present) Authentication_Info_AVP mdw_authentication_Info_GERAN_Vectors( - in template (present) Authentication_Info_AVP.gERAN_Vector p_gERAN_Vector - ) modifies mw_authentication_Info_dummy := { - gERAN_Vector := p_gERAN_Vector - } // End of template mdw_authentication_Info_GERAN_Vectors - - /** - * @desc Authentication-Info AVP receive message with an expected authentication vectors fields - * @param p_uTRAN_Vectors UTRAN authentication vectors - * @param p_gERAN_Vectors GERAN authentication vectors - */ - template (present) Authentication_Info_AVP mdw_authentication_Info_UTRAN_GERAN_Vectors( - in template (present) Authentication_Info_AVP.uTRAN_Vector p_uTRAN_Vectors, - in template (present) Authentication_Info_AVP.gERAN_Vector p_gERAN_Vectors - ) modifies mw_authentication_Info_dummy := { - uTRAN_Vector := p_uTRAN_Vectors, - gERAN_Vector := p_gERAN_Vectors - } // End of template mdw_authentication_Info_UTRAN_GERAN_Vectors - - /** - * @desc E-UTRAN-Vector AVP receive message with an expected item_Number field - */ - template (present) E_UTRAN_Vector_AVP mw_e_UTRAN_Vector_itemNumber modifies mw_e_UTRAN_Vector_dummy := { - item_Number := ? - } // End of template mw_e_UTRAN_Vector_itemNumber - - /** - * @desc UTRAN-Vector AVP receive message with an expected item_Number field - */ - template (present) UTRAN_Vector_AVP mw_UTRAN_Vector_itemNumber modifies mw_UTRAN_Vector_dummy := { - item_Number := ? - } // End of template mw_UTRAN_Vector_itemNumber - - /** - * @desc GERAN-Vector AVP receive message with an expected item_Number field - */ - template (present) GERAN_Vector_AVP mw_GERAN_Vector_itemNumber modifies mw_GERAN_Vector_dummy := { - item_Number := ? - } // End of template mw_GERAN_Vector_itemNumber - - /** - * @desc Req-UTRAN-Auth-Info AVP receive message with an expected immediate_Response_Preferred field - */ - template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_ImRespPre - (template Immediate_Response_Preferred_AVP p_immediateResponsePreferred) - modifies mw_reqEUTRANAuthInfo_dummy := { - immediate_Response_Preferred := p_immediateResponsePreferred - } // End of template mw_reqEUTRANAuthInfo_ImRespPre - - /** - * @desc Req-UTRAN-Auth-Info AVP receive message with an unexpected re_synchronization_Info field - */ - template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_noReSynInfo - modifies mw_reqEUTRANAuthInfo_dummy := { - re_synchronization_Info := omit - } // End of template mw_reqEUTRANAuthInfo_noReSynInfo - - /** - * @desc Req-UTRAN-Auth-Info AVP receive message with an expected re_synchronization_Info field - */ - template Req_EUTRAN_Auth_Info_AVP mw_reqEUTRANAuthInfo_withReSynInfo - modifies mw_reqEUTRANAuthInfo_dummy := { - re_synchronization_Info := ? - } // End of template mw_reqEUTRANAuthInfo_withReSynInfo - - /** - * @desc Req-UTRAN-GERAN-Auth-Info AVP receive message with an expected immediate_Response_Preferred field - */ - template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_ImRespPre - (template Immediate_Response_Preferred_AVP p_immediateResponsePreferred) - modifies mw_reqUTRANGERANAuthInfo_dummy := { - immediate_Response_Preferred := p_immediateResponsePreferred - } // End of template mw_reqUTRANGERANAuthInfo_ImRespPre - - /** - * @desc Req-UTRAN-GERAN-Auth-Info AVP receive message with an unexpected re_synchronization_Info field - */ - template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_noReSynInfo := - modifies mw_reqUTRANGERANAuthInfo_dummy:= { - re_synchronization_Info := omit - } // End of template mw_reqUTRANGERANAuthInfo_noReSynInfo - - /** - * @desc Req-UTRAN-GERAN-Auth-Info AVP receive message with an expected re_synchronization_Info field - */ - template Req_UTRAN_GERAN_Auth_Info_AVP mw_reqUTRANGERANAuthInfo_withReSynInfo - modifies mw_reqUTRANGERANAuthInfo_dummy:= { - re_synchronization_Info := ? - } // End of template mw_reqUTRANGERANAuthInfo_withReSynInfo - - } // End of group awaitingTemplatesForAVPs - - } // End of group SpecificAVPHeaders - - } // End of group HeaderFieldTemplates - - /** Message templates for ULR, ULA, AIR, AIA.... methods */ - group S6aMessageTemplates { - - /** Basic templates for ULR, ULA, AIR, AIA.... methods */ - group S6aDummy_templates { - - /** Send basic templates for Request methods */ - group S6aDummy_request_templates_send { - - /** - * @desc Generic send message for UL-Request message - */ - template (value) ULR_MSG m_S6a_ULR_dummy := { - header := m_diameterHeaderReq_dummy ( ULR_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - uLR_Body := m_S6a_ULR_Body_dummy - } // End of template m_S6a_ULR_dummy - - /** - * @desc Generic send message for UL-Request message body - */ - template (value) ULR_Body_AVP m_S6a_ULR_Body_dummy := { - vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id(c_applId_S6a), - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := omit, - destination_Realm := m_destinationRealm_dummy, - user_Name := m_user_Name_dummy, - supported_Features := omit, - terminal_Information := omit, - rat_Type := m_rATType_dummy, - ulr_Flags := m_ulrFlags_dummy, - ue_SRVCC_Capability := omit, - visited_PLMN_Id := m_visitedPLMNId_dummy, - sgsn_Number := omit, - homogeneous_Support := omit, - gmlc_Address := omit, - active_APN := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_ULR_Body_dummy - - /** - * @desc Generic send message for CL-Request message - */ - template (value) AIR_MSG m_S6a_AIR_dummy := { - header := m_diameterHeaderReq_dummy ( AIR_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - aIR_Body := m_S6a_AIR_Body_dummy - } // End of template m_S6a_AIR_dummy - template (value) AIR_Body_AVP m_S6a_AIR_Body_dummy := { - vendor_Specific_Application_Id := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := omit, - destination_Realm := m_destinationRealm_dummy, - user_Name := m_user_Name_dummy, - supported_Features := omit, - req_EUTRAN_Auth_Info := m_reqEUTRANAuthInfo_dummy, - req_UTRAN_GERAN_Auth_Info := m_reqUTRANGERANAuthInfo_dummy, - visited_PLMN_Id := m_visitedPLMNId_dummy, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_AIR_Body_dummy - - /** - * @desc Generic send message for CL-Request message body - */ - template (value) CLR_MSG m_S6a_CLR_dummy := { - header := m_diameterHeaderReq_dummy ( CLR_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - cLR_Body := m_S6a_CLR_Body_dummy - } // End of template m_S6a_CLR_dummy - - /** - * @desc Generic send message for ID-Request message - */ - template (value) CLR_Body_AVP m_S6a_CLR_Body_dummy := { - vendor_Specific_Application_Id := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := m_destinationHost_dummy, - destination_Realm := m_destinationRealm_dummy, - user_Name := m_user_Name_dummy, - supported_Features := omit, - cancellation_Type := m_cancellationType_dummy, - cLR_Flags := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_CLR_dummy - - /** - * @desc Generic send message for ID-Request message body - */ - template (value) IDR_MSG m_S6a_IDR_dummy := { - header := m_diameterHeaderReq_dummy ( IDR_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - iDR_Body := m_S6a_IDR_Body_dummy - } // End of template m_S6a_IDR_dummy - - template (value) IDR_Body_AVP m_S6a_IDR_Body_dummy := { - vendor_Specific_Application_Id := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := m_destinationHost_dummy, - destination_Realm := m_destinationRealm_dummy, - user_Name := m_user_Name_dummy, - supported_Features := omit, - subscription_Data := m_subscriptionData_dummy, - iDR_Flags := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_IDR_Body_dummy - - /** - * @desc Generic send message for DS-Request message - */ - template (value) DSR_MSG m_S6a_DSR_dummy := { - header := m_diameterHeaderReq_dummy ( DSR_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - dSR_Body := m_S6a_DSR_Body_dummy - } // End of template m_S6a_DSR_dummy - - /** - * @desc Generic send message for DS-Request message body - */ - template (value) DSR_Body_AVP m_S6a_DSR_Body_dummy := { - vendor_Specific_Application_Id := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := m_destinationHost_dummy, - destination_Realm := m_destinationRealm_dummy, - user_Name := m_user_Name_dummy, - supported_Features := omit, - dSR_Flags := m_dSRFlags_dummy, - context_Identifier := omit, - trace_Reference := omit, - tS_Code := omit, - sS_Code := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_DSR_Body_dummy - - /** - * @desc Generic send message for PUER-Request message - */ - template (value) PUER_MSG m_S6a_PUER_dummy := { - header := m_diameterHeaderReq_dummy ( PUER_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - pUER_Body := m_S6a_PUER_Body_dummy - } // End of template m_S6a_PUR_dummy - - /** - * @desc Generic send message for PUER-Request message body - */ - template (value) PUER_Body_AVP m_S6a_PUER_Body_dummy := { - vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id(c_applId_S6a), - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := omit, - destination_Realm := m_destinationRealm_dummy, - supported_Features := omit, - user_Name := m_user_Name_dummy, - pUER_Flags := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_PUER_Body_dummy - - /** - * @desc Generic send message for RS-Request message - */ - template (value) RSR_MSG m_S6a_RSR_dummy := { - header := m_diameterHeaderReq_dummy ( RSR_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - rSR_Body := m_S6a_RSR_Body_dummy - } // End of template m_S6a_RSR_dummy - - /** - * @desc Generic send message for RS-Request message body - */ - template (value) RSR_Body_AVP m_S6a_RSR_Body_dummy := { - vendor_Specific_Application_Id := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := m_destinationHost_dummy, - destination_Realm := m_destinationRealm_dummy, - supported_Features := omit, - user_Id := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_RSR_Body_dummy - - /** - * @desc Generic send message for NO-Request message - */ - template (value) NOR_MSG m_S6a_NOR_dummy := { - header := m_diameterHeaderReq_dummy ( NOR_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - nOR_Body := m_S6a_NOR_Body_dummy - } // End of template m_S6a_NOR_dummy - - /** - * @desc Generic send message for NO-Request message body - */ - template (value) NOR_Body_AVP m_S6a_NOR_Body_dummy := { - vendor_Specific_Application_Id := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - destination_Host := omit, - destination_Realm := m_destinationRealm_dummy, - user_Name := m_user_Name_dummy, - supported_Features := omit, - terminal_Information := omit, - mIP6_Agent_Info := omit, - visited_Network_Identifier := omit, - context_Identifier := omit, - service_Selection := omit, - alert_Reason := omit, - uE_SRVCC_Capability := omit, - nOR_Flags := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_NOR_Body_dummy - - } // End of group S6aDummy_request_templates_send - - /** Receive basic templates for Request methods */ - group S6aDummy_request_templates_receive { - - /** - * @desc Generic receive message for UL-Request message - */ - template (present) ULR_MSG mw_S6a_uLR_dummy := { - header := mw_diameterHeaderReq_dummy ( ULR_E, c_applId_S6a ), - session_Id := ?, - uLR_Body := mw_S6a_ULR_Body_dummy - } // End of template mw_S6a_uLR_dummy - - /** - * @desc Generic receive message for UL-Request message body - */ - template (present) ULR_Body_AVP mw_S6a_ULR_Body_dummy := { - vendor_Specific_Application_Id := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := *, - destination_Realm := ?, - user_Name := ?, - supported_Features := *, - terminal_Information := *, - rat_Type := ?, - ulr_Flags := ?, - ue_SRVCC_Capability := *, - visited_PLMN_Id := ?, - sgsn_Number := *, - homogeneous_Support := *, - gmlc_Address := *, - active_APN := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_ULR_Body_dummy - - /** - * @desc Generic receive message for AI-Request message - */ - template (present) AIR_MSG mw_S6a_AIR_dummy := { - header := mw_diameterHeaderReq_dummy ( AIR_E, c_applId_S6a ), - session_Id := ?, - aIR_Body := mw_S6a_AIR_Body_dummy - } // End of template mw_S6a_AIR_dummy - - /** - * @desc Generic receive message for AI-Request message body - */ - template (present) AIR_Body_AVP mw_S6a_AIR_Body_dummy := { - vendor_Specific_Application_Id := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := *, - destination_Realm := ?, - user_Name := ?, - supported_Features := *, - req_EUTRAN_Auth_Info := ?, - req_UTRAN_GERAN_Auth_Info := ?, - visited_PLMN_Id := ?, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_AIR_Body_dummy - - /** - * @desc Generic receive message for CL-Request message - */ - template (present) CLR_MSG mw_S6a_CLR_dummy := { - header := mw_diameterHeaderReq_dummy ( CLR_E, c_applId_S6a ), - session_Id := ?, - cLR_Body := mw_S6a_CLR_Body_dummy - } // End of template mw_S6a_CLR_dummy - - /** - * @desc Generic receive message for CL-Request message body - */ - template (present) CLR_Body_AVP mw_S6a_CLR_Body_dummy := { - vendor_Specific_Application_Id := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := ?, - destination_Realm := ?, - user_Name := ?, - supported_Features := *, - cancellation_Type := ?, - cLR_Flags := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_CLR_Body_dummy - - /** - * @desc Generic receive message for ID-Request message - */ - template (present) IDR_MSG mw_S6a_IDR_dummy := { - header := mw_diameterHeaderReq_dummy ( IDR_E, c_applId_S6a ), - session_Id := ?, - iDR_Body := mw_S6a_IDR_Body_dummy - } // End of template mw_S6a_IDR_dummy - - - /** - * @desc Generic receive message for ID-Request message body - */ - template (present) IDR_Body_AVP mw_S6a_IDR_Body_dummy := { - vendor_Specific_Application_Id := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := ?, - destination_Realm := ?, - user_Name := ?, - supported_Features := *, - subscription_Data := ?, - iDR_Flags := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_IDR_Body_dummy - - /** - * @desc Generic receive message for DS-Request message - */ - template(present) DSR_MSG mw_S6a_DSR_dummy := { - header := mw_diameterHeaderReq_dummy ( DSR_E, c_applId_S6a ), - session_Id := ?, - dSR_Body := mw_S6a_DSR_Body_dummy - } // End of template mw_S6a_DSR_dummy - - /** - * @desc Generic receive message for DS-Request message body - */ - template (present) DSR_Body_AVP mw_S6a_DSR_Body_dummy := { - vendor_Specific_Application_Id := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := ?, - destination_Realm := ?, - user_Name := ?, - supported_Features := *, - dSR_Flags := ?, - context_Identifier := *, - trace_Reference := *, - tS_Code := *, - sS_Code := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_DSR_Body_dummy - - /** - * @desc Generic receive message for PUE-Request message - */ - template (present) PUER_MSG mw_S6a_PUER_dummy := { - header := mw_diameterHeaderReq_dummy ( PUER_E, c_applId_S6a ), - session_Id := ?, - pUER_Body := mw_S6a_PUER_Body_dummy - } // End of template mw_S6a_PUR_dummy - - /** - * @desc Generic receive message for PUE-Request message body - */ - template (present) PUER_Body_AVP mw_S6a_PUER_Body_dummy := { - vendor_Specific_Application_Id := ?, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := *, - destination_Realm := ?, - supported_Features := *, - user_Name := ?, - pUER_Flags := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_PUER_Body_dummy - - /** - * @desc Generic receive message for RS-Request message - */ - template (present) RSR_MSG mw_S6a_RSR_dummy := { - header := mw_diameterHeaderReq_dummy ( RSR_E, c_applId_S6a ), - session_Id := ?, - rSR_Body := mw_S6a_RSR_Body_dummy - } // End of template mw_S6a_RSR_dummy - - /** - * @desc Generic receive message for RS-Request message body - */ - template (present) RSR_Body_AVP mw_S6a_RSR_Body_dummy := { - vendor_Specific_Application_Id := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := ?, - destination_Realm := ?, - supported_Features := *, - user_Id := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_RSR_Body_dummy - - /** - * @desc Generic receive message for NO-Request message - */ - template (present) NOR_MSG mw_S6a_NOR_dummy := { - header := mw_diameterHeaderReq_dummy ( NOR_E, c_applId_S6a ), - session_Id := ?, - nOR_Body := mw_S6a_NOR_Body_dummy - } // End of template mw_S6a_NOR_dummy - - /** - * @desc Generic receive message for NO-Request message body - */ - template (present) NOR_Body_AVP mw_S6a_NOR_Body_dummy := { - vendor_Specific_Application_Id := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - destination_Host := *, - destination_Realm := ?, - user_Name := ?, - supported_Features := *, - terminal_Information := *, - mIP6_Agent_Info := *, - visited_Network_Identifier := *, - context_Identifier := *, - service_Selection := *, - alert_Reason := *, - uE_SRVCC_Capability := *, - nOR_Flags := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_NOR_Body_dummy - - } // End of group S6aDummy_request_templates_receive - - /** Receive basic templates for Answer methods */ - group S6aDummy_answer_templates_send { - - /** - * @desc Generic send message for UL-Answer message - */ - template (value) ULA_MSG m_S6a_ULA_dummy := { - header := m_diameterHeaderAns_dummy ( ULA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - uLA_Body := m_S6a_ULA_Body_dummy - } // End of template m_S6a_ULA_dummy - - /** - * @desc Generic send message for UL-Answer message body - */ - template (value) ULA_Body_AVP m_S6a_ULA_Body_dummy := { - vendor_Specific_Application_Id := omit, - result_Code := omit, - experimental_Result := omit, - error_Diagnostic := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - supported_Features := omit, - ula_Flags := omit, - subscription_Data := omit, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_ULA_Body_dummy - - /** - * @desc Generic send message forAI-Answer message - */ - template (value) AIA_MSG m_S6a_AIA_dummy := { - header := m_diameterHeaderAns_dummy ( AIA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - aIA_Body := m_S6a_AIA_Body_dummy - } // End of template m_S6a_AIA_dummy - - /** - * @desc Generic send message for AI-Answer message body - */ - template (value) AIA_Body_AVP m_S6a_AIA_Body_dummy := { - vendor_Specific_Application_Id := omit, - result_Code := omit, - experimental_Result := omit, - error_Diagnostic := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - supported_Features := omit, - authentication_Info := omit, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_AIA_Body_dummy - - /** - * @desc Generic send message for CL-Answer message - */ - template (value) CLA_MSG m_S6a_CLA_dummy := { - header := m_diameterHeaderAns_dummy ( CLA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - cLA_Body := m_S6a_CLA_Body_dummy - } // End of template m_S6a_CLA_dummy - - /** - * @desc Generic send message for CL-Answer message body - */ - template (value) CLA_Body_AVP m_S6a_CLA_Body_dummy := { - vendor_Specific_Application_Id := omit, - supported_Features := omit, - result_Code := omit, - experimental_Result := omit, - auth_Session_State := m_auth_Session_State_no_maintained, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_CLA_Body_dummy - - /** - * @desc Generic send message for ID-Answer message - */ - template (value) IDA_MSG m_S6a_IDA_dummy := { - header := m_diameterHeaderAns_dummy ( IDA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - iDA_Body := m_S6a_IDA_Body_dummy - } // End of template m_S6a_IDA_dummy - - /** - * @desc Generic send message for ID-Answer message body - */ - template (value) IDA_Body_AVP m_S6a_IDA_Body_dummy := { - vendor_Specific_Application_Id := omit, - supported_Features := omit, - result_Code := omit, - experimental_Result := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - iMS_Voice_PS_Sessions_Support := omit, - last_UE_Activity_Time_AVP := omit, - rat_Type := omit, - iDA_Flags := omit, - ePS_User_State := omit, - ePS_Location_Information := omit, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_IDA_Body_dummy - - /** - * @desc Generic send message for DS-Answer message - */ - template (value) DSA_MSG m_S6a_DSA_dummy := { - header := m_diameterHeaderAns_dummy ( DSA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - dSA_Body := m_S6a_DSA_Body_dummy - } // End of template m_S6a_DSA_dummy - - /** - * @desc Generic send message for DS-Answer message body - */ - template (value) DSA_Body_AVP m_S6a_DSA_Body_dummy := { - vendor_Specific_Application_Id := omit, - supported_Features := omit, - result_Code := omit, - experimental_Result := omit, - error_Diagnostic := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - dSA_Flags := omit, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_DSA_Body_dummy - - /** - * @desc Generic send message for PUE-Answer message - */ - template (value) PUEA_MSG m_S6a_PUEA_dummy := { - header := m_diameterHeaderAns_dummy ( PUEA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - pUEA_Body := m_S6a_PUEA_Body_dummy - } // End of template m_S6a_PUEA_dummy - - /** - * @desc Generic send message for PUE-Answer message body - */ - template (value) PUEA_Body_AVP m_S6a_PUEA_Body_dummy := { - vendor_Specific_Application_Id := omit, - result_Code := omit, - experimental_Result := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - pUEA_Flags := omit, - supported_Features := omit, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_PUEA_Body_dummy - - /** - * @desc Generic send message for RS-Answer message - */ - template (value) RSA_MSG m_S6a_RSA_dummy := { - header := m_diameterHeaderAns_dummy ( RSA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - rSA_Body := m_S6a_RSA_Body_dummy - } // End of template m_S6a_RSA_dummy - - /** - * @desc Generic send message for RS-Answer message body - */ - template (value) RSA_Body_AVP m_S6a_RSA_Body_dummy := { - vendor_Specific_Application_Id := omit, - supported_Features := omit, - result_Code := omit, - experimental_Result := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_RSA_Body_dummy - - /** - * @desc Generic send message for NO-Answer message - */ - template (value) NOA_MSG m_S6a_NOA_dummy := { - header := m_diameterHeaderAns_dummy ( NOA_E, c_applId_S6a ), - session_Id := m_sessionId_dummy, - nOA_Body := m_S6a_NOA_Body_dummy - } // End of template m_S6a_NOA_dummy - - /** - * @desc Generic send message for NO-Answer message body - */ - template (value) NOA_Body_AVP m_S6a_NOA_Body_dummy := { - vendor_Specific_Application_Id := omit, - result_Code := omit, - experimental_Result := omit, - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - supported_Features := omit, - failed := omit, - proxy_Info := omit, - route_Record := omit, - aVP_Type := omit - } // End of template m_S6a_NOA_Body_dummy - - } - - group S6aDummy_answer_templates_receive { - - /** - * @desc Generic receive message for UL-Answer message - */ - template (present) ULA_MSG mw_S6a_ULA_dummy := { - header := mw_diameterHeaderAns_dummy ( ULA_E, c_applId_S6a ), - session_Id := ?, - uLA_Body := mw_S6a_ULA_Body_dummy - } // End of template mw_S6a_ULA_dummy - - /** - * @desc Generic receive message for UL-Answer message body - */ - template (present) ULA_Body_AVP mw_S6a_ULA_Body_dummy := { - vendor_Specific_Application_Id := *, - result_Code := *, - experimental_Result := *, - error_Diagnostic := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - supported_Features := *, - ula_Flags := *, - subscription_Data := *, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } // End of template mw_S6a_ULA_Body_dummy - - /** - * @desc Generic receive message for AI-Answer message - */ - template (present) AIA_MSG mw_S6a_AIA_dummy := { - header := mw_diameterHeaderAns_dummy ( AIA_E, c_applId_S6a ), - session_Id := ?, - aIA_Body := mw_S6a_AIA_Body_dummy - } // End of template mw_S6a_AIA_dummy - - /** - * @desc Generic receive message for AI-Answer message body - */ - template (present) AIA_Body_AVP mw_S6a_AIA_Body_dummy := { - vendor_Specific_Application_Id := *, - result_Code := *, - experimental_Result := *, - error_Diagnostic := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - supported_Features := *, - authentication_Info := *, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } - - /** - * @desc Generic receive message for CL-Answer message - */ - template (present) CLA_MSG mw_S6a_CLA_dummy := { - header := mw_diameterHeaderAns_dummy ( CLA_E, c_applId_S6a ), - session_Id := ?, - cLA_Body := mw_S6a_CLA_Body_dummy - } - - /** - * @desc Generic receive message for CL-Answer message body - */ - template (present) CLA_Body_AVP mw_S6a_CLA_Body_dummy := { - vendor_Specific_Application_Id := *, - supported_Features := *, - result_Code := *, - experimental_Result := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } - - /** - * @desc Generic receive message for ID-Answer message - */ - template (present) IDA_MSG mw_S6a_IDA_dummy := { - header := mw_diameterHeaderAns_dummy ( IDA_E, c_applId_S6a ), - session_Id := ?, - iDA_Body := mw_S6a_IDA_Body_dummy - } - - /** - * @desc Generic receive message for ID-Answer message body - */ - template (present) IDA_Body_AVP mw_S6a_IDA_Body_dummy := { - vendor_Specific_Application_Id := *, - supported_Features := *, - result_Code := *, - experimental_Result := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - iMS_Voice_PS_Sessions_Support := *, - last_UE_Activity_Time_AVP := *, - rat_Type := *, - iDA_Flags := *, - ePS_User_State := *, - ePS_Location_Information := *, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } - - /** - * @desc Generic receive message for DS-Answer message - */ - template (present) DSA_MSG mw_S6a_DSA_dummy := { - header := mw_diameterHeaderAns_dummy ( DSA_E, c_applId_S6a ), - session_Id := ?, - dSA_Body := mw_S6a_DSA_Body_dummy - } - - /** - * @desc Generic receive message for DS-Answer message body - */ - template (present) DSA_Body_AVP mw_S6a_DSA_Body_dummy := { - vendor_Specific_Application_Id := *, - supported_Features := *, - result_Code := *, - experimental_Result := *, - error_Diagnostic := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - dSA_Flags := *, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } - - /** - * @desc Generic receive message for PUE-Answer message - */ - template (present) PUEA_MSG mw_S6a_PUEA_dummy := { - header := mw_diameterHeaderAns_dummy ( PUEA_E, c_applId_S6a ), - session_Id := ?, - pUEA_Body := mw_S6a_PUEA_Body_dummy - } - - /** - * @desc Generic receive message for PUE-Answer message body - */ - template (present) PUEA_Body_AVP mw_S6a_PUEA_Body_dummy := { - vendor_Specific_Application_Id := ?, - supported_Features := *, - result_Code := *, - experimental_Result := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - pUEA_Flags := *, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } - - /** - * @desc Generic receive message for RS-Answer message - */ - template (present) RSA_MSG mw_S6a_RSA_dummy := { - header := mw_diameterHeaderAns_dummy ( RSA_E, c_applId_S6a ), - session_Id := ?, - rSA_Body := mw_S6a_RSA_Body_dummy - } - - /** - * @desc Generic receive message for RS-Answer message body - */ - template (present) RSA_Body_AVP mw_S6a_RSA_Body_dummy := { - vendor_Specific_Application_Id := *, - supported_Features := *, - result_Code := *, - experimental_Result := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } - - /** - * @desc Generic receive message for NO-Answer message - */ - template (present) NOA_MSG mw_S6a_NOA_dummy := { - header := mw_diameterHeaderAns_dummy ( NOA_E, c_applId_S6a ), - session_Id := ?, - nOA_Body := mw_S6a_NOA_Body_dummy - } - - /** - * @desc Generic receive message for NO-Answer message body - */ - template (present) NOA_Body_AVP mw_S6a_NOA_Body_dummy := { - vendor_Specific_Application_Id := *, - result_Code := *, - experimental_Result := *, - auth_Session_State := ?, - origin_Host := ?, - origin_Realm := ?, - supported_Features := *, - failed := *, - proxy_Info := *, - route_Record := *, - aVP_Type := * - } - - } // End of group S6aDummy_answer_templates_receive - - } // End of group S6aDummy_templates - - group S6aBase_templates { - - group S6aBasic_request_templates_send { - - /** - * @desc Main send message for MME_S6a port - * @param p_CLR_MSG CL-Request send message message - */ - template (value) DIAMETER_MSG m_mmeCancelLocationRequest ( in template (value) CLR_MSG p_CLR_MSG) := { - cLR_MSG := p_CLR_MSG - } // End of template m_mmeCancelLocationRequest - - /** - * @desc Main send message for MME_S6a port - * @param p_IDR_MSG ID-Request send message message - */ - template (value) DIAMETER_MSG m_mmeInsertSubscriberDataRequest ( in template (value) IDR_MSG p_IDR_MSG) := { - iDR_MSG := p_IDR_MSG - } // End of template m_mmeInsertSubscriberDataRequest - - /** - * @desc Main send message for MME_S6a port - * @param p_DSR_MSG SD-Request send message message - */ - template (value) DIAMETER_MSG m_mmeDeleteSubscriberDataRequest ( in template (value) DSR_MSG p_DSR_MSG) := { - dSR_MSG := p_DSR_MSG - } // End of template m_mmeDeleteSubscriberDataRequest - - /** - * @desc Main send message for MME_S6a port - * @param p_RSR_MSG RS-Request send message message - */ - template (value) DIAMETER_MSG m_mmeResetRequest ( in template (value) RSR_MSG p_RSR_MSG) := { - rSR_MSG := p_RSR_MSG - } // End of template m_mmeResetRequest - - /** - * @desc Main send message for MME_S6a port - * @param p_NOR_MSG NO-Request send message message - */ - template (value) DIAMETER_MSG m_mmeNotificationRequest ( in template (value) NOR_MSG p_NOR_MSG) := { - nOR_MSG := p_NOR_MSG - } // End of template m_mmeNotificationRequest - - /** - * @desc Main send message for MME_S6a port - * @param p_PUER_MSG PU-Request send message message - */ - template (value) DIAMETER_MSG m_mmePurgeUeRequest ( in template (value) PUER_MSG p_PUER_MSG) := { - pUER_MSG := p_PUER_MSG - } // End of template m_mmePurgeUeRequest - - } // End of group S6aBasic_request_templates_send - - group S6basic_request_templates_receive { - - /** - * @desc Main receive message for MME_S6a port - * @param p_uLR_MSG UL-Request receive message message - */ - template (present) DIAMETER_MSG mw_hssUpdateLocationRequest(in template (present) ULR_MSG p_uLR_MSG) := { - uLR_MSG := p_uLR_MSG - } // End of template mw_hssUpdateLocationRequest - - /** - * @desc Main receive message for MME_S6a port - * @param p_iDR_MSG ID-Request receive message message - */ - template (present) DIAMETER_MSG mw_hssInsertSubscriberDataRequest(in template (present) IDR_MSG p_iDR_MSG) := { - iDR_MSG := p_iDR_MSG - } // End of template mw_hssInsertSubscriberDataRequest - - /** - * @desc Main receive message for MME_S6a port - * @param p_cLR_MSG CL-Request receive message message - */ - template (present) DIAMETER_MSG mw_mmeCancelLocationRequest(in template (present) CLR_MSG p_cLR_MSG) := { - cLR_MSG := p_cLR_MSG - } // End of template mw_mmeCancelLocationRequest - - /** - * @desc Main receive message for MME_S6a port - * @param p_iDR_MSG ID-request receive message message - */ - template (present) DIAMETER_MSG mw_mmeInsertSubscriberDataRequest(in template (present) IDR_MSG p_iDR_MSG) := { - iDR_MSG := p_iDR_MSG - } // End of template mw_mmeInsertSubscriberDataRequest - - /** - * @desc Main receive message for MME_S6a port - * @param p_dSR_MSG DS-Request receive message message - */ - template (present) DIAMETER_MSG mw_mmeDeleteSubscriberDataRequest(in template (present) DSR_MSG p_dSR_MSG) := { - dSR_MSG := p_dSR_MSG - } // End of template mw_mmeDeleteSubscriberDataRequest - - /** - * @desc Main receive message for MME_S6a port - * @param p_s6a_CCA_MSG UL-Answer receive message message - */ - template (present) DIAMETER_MSG mw_mmeAuthenticationInformationAnswer(in template (present) AIA_MSG p_aIA_MSG) := { - aIA_MSG := p_aIA_MSG - } // End of template mw_mmeAuthenticationInformationAnswer - - /** - * @desc Main receive message for MME_S6a port - * @param p_s6a_AIR_MSG Request receive message message - */ - template (present) DIAMETER_MSG mw_mmeAuthenticationInformationRequest(in template (present) AIR_MSG p_aIR_MSG) := { - aIR_MSG := p_aIR_MSG - } // End of template mw_mmeAuthenticationInformationRequest - - /** - * @desc Main receive message for MME_S6a port - * @param p_rSR_MSG RS-Request receive message message - */ - template (present) DIAMETER_MSG mw_mmeResetRequest(in template (present) RSR_MSG p_rSR_MSG) := { - rSR_MSG := p_rSR_MSG - } // End of template mw_mmeResetRequest - - /** - * @desc Main receive message for MME_S6a port - * @param p_rSA_MSG RS-Answer receive message message - */ - template (present) DIAMETER_MSG mw_hssResetAnswer(in template (present) RSA_MSG p_rSA_MSG) := { - rSA_MSG := p_rSA_MSG - } // End of template mw_hssResetAnswer - - /** - * @desc Main receive message for MME_S6a port - * @param p_nOR_MSG NO-Request receive message message - */ - template (present) DIAMETER_MSG mw_hssNotificationRequest(in template (present) NOR_MSG p_nOR_MSG) := { - nOR_MSG := p_nOR_MSG - } // End of template mw_hssNotificationRequest - - /** - * @desc Main receive message for HSS_S6a port - * @param p_pUER_MSG PU-Request receive message message - */ - template (present) DIAMETER_MSG mw_mmePurgeUeRequest ( in template (present) PUER_MSG p_pUER_MSG) := { - pUER_MSG := p_pUER_MSG - } // End of template mw_mmePurgeUeRequest - - } // End of group S6basic_request_templates_receive - - group S6aBasic_answer_templates_send { - - /** - * @desc Main send message for MME_S6a port - * @param p_uLA_MSG UL-Answer send message message - */ - template (present) DIAMETER_MSG m_hssUpdateLocationAnswer(in template (value) ULA_MSG p_uLA_MSG) := { - uLA_MSG := p_uLA_MSG - } // End of tempate m_hssUpdateLocationAnswer - - /** - * @desc ULA message send message - * @param p_ulaBody UL-Answer message body template - */ - template (value) ULA_MSG m_S6a_ULA (in template (value) ULA_Body_AVP p_ulaBody) modifies m_S6a_ULA_dummy := { - uLA_Body := p_ulaBody - } // End of template m_S6a_ULA - - /** - * @desc ULA message body send message - * @param p_supportedFeatures Features to be sent - */ - template (value) ULA_Body_AVP m_S6a_ULA_Body (template ULA_Body_AVP.supported_Features p_supportedFeatures) modifies m_S6a_ULA_Body_dummy:= { - auth_Session_State := m_auth_Session_State_dummy, - origin_Host := m_originHost_dummy, - origin_Realm := m_originRealm_dummy, - supported_Features := p_supportedFeatures - } // End of template m_S6a_ULA_Body - - } // end of group S6aBasic_answer_templates_send - - group S6aBasic_answer_templates_receive { - - /** - * @desc Main receive message for MME_S6a port - * @param p_uLA_MSG UL-Answer receive message message - */ - template (present) DIAMETER_MSG mw_hssUpdateLocationAnswer(in template (present) ULA_MSG p_uLA_MSG) := { - uLA_MSG := p_uLA_MSG - } // End of tempate mw_hssUpdateLocationAnswer - - /** - * @desc Main receive message for HSS_S6a port - * @param p_CLA_MSG CL-Answer receive message message - */ - template (present) DIAMETER_MSG mw_hssCancelLocationAnswer ( in template (present) CLA_MSG p_CLA_MSG) := { - cLA_MSG := p_CLA_MSG - } // End of template mw_hssCancelLocationAnswer - - /** - * @desc Main receive message for HSS_S6a port - * @param p_IDA_MSG ID-Answer receive message message - */ - template (present) DIAMETER_MSG mw_hssInsertSubscriberDataAnswer ( in template (present) IDA_MSG p_IDA_MSG) := { - iDA_MSG := p_IDA_MSG - } // End of template mw_hssInsertSubscriberDataAnswer - - /** - * @desc Main receive message for HSS_S6a port - * @param p_DSA_MSG DS-Answer receive message message - */ - template (present) DIAMETER_MSG mw_hssDeleteSubscriberDataAnswer ( in template (present) DSA_MSG p_DSA_MSG) := { - dSA_MSG := p_DSA_MSG - } // End of template mw_hssDeleteSubscriberDataAnswer - - /** - * @desc Main receive message for MME_S6a port - * @param p_uLA_MSG UL-Answer receive message message - */ - template (present) DIAMETER_MSG mw_mmeUpdateLocationAnswer(in template (present) ULA_MSG p_uLA_MSG) := { - uLA_MSG := p_uLA_MSG - } // End of template mw_mmeUpdateLocationAnswer - - /** - * @desc Main receive message for MME_S6a port - * @param p_cLA_MSG CL-Answer receive message message - */ - template (present) DIAMETER_MSG mw_mmeCancelLocationAnswer(in template (present) CLA_MSG p_cLA_MSG) := { - cLA_MSG := p_cLA_MSG - } // End of template mw_mmeCancelLocationAnswer - - /** - * @desc Main receive message for MME_S6a port - * @param p_pUEA_MSG PUE-Answer receive message message - */ - template (present) DIAMETER_MSG mw_mmePurgeLocationAnswer(in template (present) PUEA_MSG p_pUEA_MSG) := { - pUEA_MSG := p_pUEA_MSG - } // End of template mw_mmePurgeLocationAnswer - - /** - * @desc Main receive message for MME_S6a port - * @param p_nOA_MSG NO-Answer receive message message - */ - template (present) DIAMETER_MSG mw_mmeNotifyAnswer(in template (present) NOA_MSG p_nOA_MSG) := { - nOA_MSG := p_nOA_MSG - } // End of template mw_mmeNotifyAnswer - - } // End of group S6aBasic_answer_templates_receive - - } // End of group S6aBase_templates - - group S6aModified_templates { - - group S6aModified_request_templates_send { - - /** - * @desc Send template for ULR - * @param p_sessionId Session identifier - * @param p_ulrBody ULR message body - */ - template (value) ULR_MSG md_ULR( - in template (value) Session_Id_AVP p_sessionId, - in template (value) ULR_Body_AVP p_ulrBody - ) modifies m_S6a_ULR_dummy := { - session_Id := p_sessionId, - uLR_Body := p_ulrBody - } // End of template md_ULR - - /** - * @desc Send template for CLR - * @param p_sessionId Session identifier - * @param p_clrBody CLR message body - */ - template (value) CLR_MSG md_CLR ( - in template (value) Session_Id_AVP p_sessionId, - in template (value) CLR_Body_AVP p_clrBody - ) modifies m_S6a_CLR_dummy := { - session_Id := p_sessionId, - cLR_Body := p_clrBody - } // End of template md_CLR - - /** - * @desc Send template for IDR - * @param p_sessionId Session identifier - * @param p_idrBody IDR message body - */ - template (value) IDR_MSG md_IDR ( - in template (value) Session_Id_AVP p_sessionId, - in template (value) IDR_Body_AVP p_idrBody - ) modifies m_S6a_IDR_dummy := { - session_Id := p_sessionId, - iDR_Body := p_idrBody - } // End of template md_IDR - - /** - * @desc Send template for DSR - * @param p_sessionId Session identifier - * @param p_dsrBody DSR message body - */ - template (value) DSR_MSG md_DSR ( - in template (value) Session_Id_AVP p_sessionId, - in template (value) DSR_Body_AVP p_dsrBody - ) modifies m_S6a_DSR_dummy := { - session_Id := p_sessionId, - dSR_Body := p_dsrBody - } // End of template md_DSR - - /** - * @desc Send template for CLA - * @param p_sessionId Session identifier - * @param p_claBody CLA message body - */ - template (value) PUER_MSG md_PUER( - in template (value) Session_Id_AVP p_sessionId, - in template (value) PUER_Body_AVP p_purBody - ) modifies m_S6a_PUER_dummy := { - session_Id := p_sessionId, - pUER_Body := p_purBody - } // End of template md_PUR - - /** - * @desc Send template for AIR - * @param p_sessionId Session identifier - * @param p_airBody AIR message body - */ - template (value) AIR_MSG md_AIR( - in template (value) Session_Id_AVP p_sessionId, - in template (value) AIR_Body_AVP p_airBody - ) modifies m_S6a_AIR_dummy := { - session_Id := p_sessionId, - aIR_Body := p_airBody - } // End of template md_AIR - - /** - * @desc Send template for RSR - * @param p_sessionId Session identifier - * @param p_rsrBody RSR message body - */ - template (value) RSR_MSG md_RSR ( - in template (value) Session_Id_AVP p_sessionId, - in template (value) RSR_Body_AVP p_rsrBody - ) modifies m_S6a_RSR_dummy := { - session_Id := p_sessionId, - rSR_Body := p_rsrBody - } // End of template md_RSR - - /** - * @desc Send template for NOR - * @param p_sessionId Session identifier - * @param p_norBody NOR message body - */ - template (value) NOR_MSG md_NOR( - in template (value) Session_Id_AVP p_sessionId, - in template (value) NOR_Body_AVP p_norBody - ) modifies m_S6a_NOR_dummy := { - session_Id := p_sessionId, - nOR_Body := p_norBody - } // End of template md_NOR - - /** - * @desc Send template for RSR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_cancellation_Type The cancellation type - */ - template (value) RSR_Body_AVP md_rsrBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm//, - //in template (value) User_Id_AVP p_user_Id - ) modifies m_S6a_RSR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Host := p_destinationHost, - destination_Realm := p_destinationRealm//, - //user_Id := {p_user_Id} - } // End of template md_rsrBodyAvps - - /** - * @desc Send template for CLR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_cancellation_Type The cancellation type - */ - template (value) CLR_Body_AVP md_clrBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Cancellation_Type_AVP p_cancellation_Type - ) modifies m_S6a_CLR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Host := p_destinationHost, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - cancellation_Type := p_cancellation_Type - } // End of template md_clrBodyAvps - - /** - * @desc Send template for IDR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (value) IDR_Body_AVP md_idrBodyAvps_WithoutFlags( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Subscription_Data_AVP p_subscription_Data - ) modifies m_S6a_IDR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Host := p_destinationHost, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - subscription_Data := p_subscription_Data - } // End of template md_idrBodyAvps_WithoutFlags - - /** - * @desc Send template for IDR message body with IDR-Flags AVP with T-ADS Data Request bit set, - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (value) IDR_Body_AVP md_idrBodyAvps_FlagTADS( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Subscription_Data_AVP p_subscription_Data - ) modifies md_idrBodyAvps_WithoutFlags := { - iDR_Flags := m_iDRFlags_dummy ( 2 ) - } // End of template md_idrBodyAvps_FlagTADS - - /** - * @desc Send template for IDR message body with IDR-Flags AVP with EPS User State Request bit set, - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_State( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Subscription_Data_AVP p_subscription_Data - ) modifies md_idrBodyAvps_WithoutFlags := { - iDR_Flags := m_iDRFlags_dummy ( 4 ) - } // End of template md_idrBodyAvps_FlagEPS_State - - /** - * @desc Send template for IDR message body with IDR-Flags AVP with EPS Location Information Request bit set, - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_Location( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Subscription_Data_AVP p_subscription_Data - ) modifies md_idrBodyAvps_WithoutFlags := { - iDR_Flags := m_iDRFlags_dummy ( 8 ) - } // End of template md_idrBodyAvps_FlagEPS_Location - - /** - * @desc Send template for IDR message body with IDR-Flags AVP with EPS Location Information Request and EPS User State - * Request bits set, - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_StateAndLocation( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Subscription_Data_AVP p_subscription_Data - ) modifies md_idrBodyAvps_WithoutFlags := { - iDR_Flags := m_iDRFlags_dummy ( 12 ) - } // End of template md_idrBodyAvps_FlagEPS_StateAndLocation - - /** - * @desc Send template for IDR message body with IDR-Flags AVP with EPS Location Information Request and EPS User State - * Request and Current Location Request bits set, - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (value) IDR_Body_AVP md_idrBodyAvps_FlagEPS_StateAndCurrentLocation( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Subscription_Data_AVP p_subscription_Data - ) modifies md_idrBodyAvps_WithoutFlags := { - iDR_Flags := m_iDRFlags_dummy ( 28 ) - } // End of template md_idrBodyAvps_FlagEPS_StateAndCurrentLocation - - /** - * @desc Send template for IDR message body with IDR-Flags AVP with Current Location Request bit set, - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (value) IDR_Body_AVP md_idrBodyAvps_FlagCurrentLocation( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Subscription_Data_AVP p_subscription_Data - ) modifies md_idrBodyAvps_WithoutFlags := { - iDR_Flags := m_iDRFlags_dummy ( 16 ) - } // End of template md_idrBodyAvps_FlagCurrentLocation - - /** - * @desc Send template for DSR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_dSRFlags DSR-Flags AVP - */ - template (value) DSR_Body_AVP md_dsrBodyAvps_Flags( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) DSR_Flags_AVP p_dSR_Flags - ) modifies m_S6a_DSR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Host := p_destinationHost, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - dSR_Flags := p_dSR_Flags - } // End of template md_dsrBodyAvps_Flags - - /** - * @desc Send template for DSR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_dSRFlags DSR-Flags AVP - */ - template (value) DSR_Body_AVP md_dsrBodyAvps_Flags_ContextId( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Host_AVP p_destinationHost, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) DSR_Flags_AVP p_dSR_Flags, - in template DSR_Body_AVP.context_Identifier p_contextIdentifier - ) modifies md_dsrBodyAvps_Flags := { - context_Identifier := p_contextIdentifier - } // End of template md_dsrBodyAvps_Flags_ContextId - - /** - * @desc Send template for ULR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_rat_Type Radio access type the UE is using - * @param p_ulr_Flags ULR Bit mask - * @param p_visited_PLMN_Id Concatenation of MCC and MNC - */ - template (value) ULR_Body_AVP md_ulrBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) RAT_Type_AVP p_rat_Type, - in template (value) ULR_Flags_AVP p_ulr_Flags, - in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id - ) modifies m_S6a_ULR_Body_dummy := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name, - rat_Type := p_rat_Type, - ulr_Flags := p_ulr_Flags, - visited_PLMN_Id := p_visited_PLMN_Id - } // End of template md_ulrBodyAvps - - /** - * @desc Send template for ULR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name - * @param p_rat_Type Radio access type the UE is using - * @param p_ulr_Flags ULR Bit mask - * @param p_visited_PLMN_Id Concatenation of MCC and MNC - * @param p_homogeneous_Support Indicates if there is homogeneous support of IMS Voice Over PS Sessions on all the TA/RAs of the serving node, or if the homogeneity of this support is kown to the serving node - * @param p_active_APN Contains information about a dynamically established APN on a serving node - */ - template (value) ULR_Body_AVP md_ulrBodyAvps_active_APN( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) RAT_Type_AVP p_rat_Type, - in template (value) ULR_Flags_AVP p_ulr_Flags, - in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id, - in template (value) Homogeneous_Support_AVP p_homogeneous_Support, - in template (value) Active_APN_AVP p_active_APN - ) modifies md_ulrBodyAvps := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name, - rat_Type := p_rat_Type, - ulr_Flags := p_ulr_Flags, - visited_PLMN_Id := p_visited_PLMN_Id, - homogeneous_Support := p_homogeneous_Support, - active_APN := p_active_APN - } // End of template md_ulrBodyAvps_active_APN - - /** - * @desc Send template for ULR message body - * @param p_user_Name User-Name AVP - */ - template (value) ULR_Body_AVP md_ulrBodyAvps_user_Name( - in template (value) User_Name_AVP p_user_Name - ) modifies m_S6a_ULR_Body_dummy := { - origin_Host := valueof(m_originHost(PX_ORIGIN_HOST)), - origin_Realm := valueof(m_originRealm(PX_ORIGIN_REALM)), - destination_Realm := valueof(m_destinationRealm(PX_DESTINATION_REALM)), - user_Name := p_user_Name - } // End of template md_ulrBodyAvps_user_Name - - /** - * @desc Send template for CLR message body - */ - template (value) CLA_Body_AVP md_claBodyAvps - modifies m_S6a_CLA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - origin_Host := valueof(m_originHost(PX_ORIGIN_HOST)), - origin_Realm := valueof(m_originRealm(PX_ORIGIN_REALM)) - } // End of template md_claBodyAvps - - /** - * @desc Send template for CLR message body - */ - template (value) CLA_Body_AVP md_claBodyAvps_OrigHost(in template (value) Origin_Host_AVP p_originHost) - modifies m_S6a_CLA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - origin_Host := p_originHost, - origin_Realm := valueof(m_originRealm(PX_ORIGIN_REALM)) - } // End of template md_claBodyAvps_OrigHost - - /** - * @desc Send template for PUER message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - */ - template PUER_Body_AVP md_puerBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name - ) modifies m_S6a_PUER_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name - } // End of template md_puerBodyAvps - - /** - * @desc Send template for PUER message body with PUER-Flags AVP - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_user_Name User-Name AVP - * @param p_puer_Flags_AVP PUER Bit mask - */ - template PUER_Body_AVP md_purBodyAvps_puer_Flags( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) PUER_Flags_AVP p_puer_Flags_AVP - ) modifies m_S6a_PUER_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - pUER_Flags := p_puer_Flags_AVP - } // End of template md_purBodyAvps_puer_Flags - - /** - * @desc Send template for AIR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_visited_PLMN_Id Concatenation of MCC and MNC - * @param p_req_EUTRAN_Auth_Info Information related to the to authentication requests for UTRAN or GERAN - */ - template (value) AIR_Body_AVP md_airBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id, - in template (omit) Req_EUTRAN_Auth_Info_AVP p_req_EUTRAN_Auth_Info - ) modifies m_S6a_AIR_Body_dummy := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name, - visited_PLMN_Id := p_visited_PLMN_Id, - req_EUTRAN_Auth_Info := p_req_EUTRAN_Auth_Info, - req_UTRAN_GERAN_Auth_Info:= omit - } // End of template md_airBodyAvps - - /** - * @desc Send template for AIR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_visited_PLMN_Id Concatenation of MCC and MNC - * @param p_req_EUTRAN_Auth_Info Information related to the to authentication requests for UTRAN or GERAN - * @param p_req_UTRAN_GERAN_Auth_Info Information related to the to authentication requests for UTRAN or GERAN - */ - template (value) AIR_Body_AVP md_airBodyAvps_req_UTRAN_GERAN_Auth_Info( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name, - in template (value) Visited_PLMN_Id_AVP p_visited_PLMN_Id, - in template (omit) Req_EUTRAN_Auth_Info_AVP p_req_EUTRAN_Auth_Info, - in template (omit) Req_UTRAN_GERAN_Auth_Info_AVP p_req_UTRAN_GERAN_Auth_Info - ) modifies md_airBodyAvps := { - req_UTRAN_GERAN_Auth_Info := p_req_UTRAN_GERAN_Auth_Info - } // End of template md_airBodyAvps_req_UTRAN_GERAN_Auth_Info - - /** - * @desc Send template for NOR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - */ - template (value) NOR_Body_AVP md_norBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Destination_Realm_AVP p_destinationRealm, - in template (value) User_Name_AVP p_user_Name - ) modifies m_S6a_NOR_Body_dummy := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name - } // End of template md_norBodyAvps - - } // End of group S6aModified_request_templates_send - - group S6aModified_request_templates_receive { - - /** - * @desc Send template for ULR - * @param p_sessionId Session identifier - * @param p_ulrBody ULR message body - */ - template (present) ULR_MSG mdw_ULR( - in template (present) Session_Id_AVP p_sessionId, - in template (present) ULR_Body_AVP p_ulrBody - ) modifies mw_S6a_uLR_dummy := { - session_Id := p_sessionId, - uLR_Body := p_ulrBody - } // End of template mdw_ULR - - /** - * @desc Send template for IDR - * @param p_sessionId Session identifier - * @param p_idrBody IDR message body - */ - template (present) IDR_MSG mdw_IDR ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) IDR_Body_AVP p_idrBody - ) modifies mw_S6a_IDR_dummy := { - session_Id := p_sessionId, - iDR_Body := p_idrBody - } // End of template mdw_IDR - - /** - * @desc Send template for DSR - * @param p_sessionId Session identifier - * @param p_dsrBody DSR message body - */ - template (present) DSR_MSG mdw_DSR ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) DSR_Body_AVP p_dsrBody - ) modifies mw_S6a_DSR_dummy := { - session_Id := p_sessionId, - dSR_Body := p_dsrBody - } // End of template mdw_DSR - - /** - * @desc Send template for PUER - * @param p_sessionId Session identifier - * @param p_purBody PUER message body - */ - template (present) PUER_MSG mdw_PUER ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) PUER_Body_AVP p_puerBody - ) modifies mw_S6a_PUER_dummy := { - session_Id := p_sessionId, - pUER_Body := p_puerBody - } // End of template mdw_PUR - - template (present) NOR_MSG mdw_NOR( - in template (present) Session_Id_AVP p_sessionId, - in template (present) NOR_Body_AVP p_norBody - ) modifies mw_S6a_NOR_dummy := { - session_Id := p_sessionId, - nOR_Body := p_norBody - } // End of template mdw_NOR - - /** - * @desc Send template for AIR - * @param p_sessionId Session identifier - * @param p_airBody AIR message body - */ - template (present) AIR_MSG mdw_AIR ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) AIR_Body_AVP p_airBody - ) modifies mw_S6a_AIR_dummy := { - session_Id := p_sessionId, - aIR_Body := p_airBody - } // End of template mdw_AIR - - /** - * @desc Receive template for RSR - * @param p_sessionId Session identifier - * @param p_rsrBody RSR message body - */ - template (present) RSR_MSG mdw_RSR( - in template (present) Session_Id_AVP p_sessionId, - in template (present) RSR_Body_AVP p_rsrBody - ) modifies mw_S6a_RSR_dummy := { - session_Id := p_sessionId, - rSR_Body := p_rsrBody - } // End of template mdw_RSR - - /** - * @desc Receive template for ULR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name - * @param p_rat_Type Radio access type the UE is using - * @param p_ulr_Flags ULR Bit mask - * @param p_visited_PLMN_Id Concatenation of MCC and MNC - */ - template (present) ULR_Body_AVP mdw_ulrBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template (present) RAT_Type_AVP p_rat_Type, - in template (present) ULR_Flags_AVP p_ulr_Flags, - in template (present) Visited_PLMN_Id_AVP p_visited_PLMN_Id - ) modifies mw_S6a_ULR_Body_dummy := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name, - rat_Type := p_rat_Type, - ulr_Flags := p_ulr_Flags, - visited_PLMN_Id := p_visited_PLMN_Id - } // End of template mdw_ulrBodyAvps - - /** - * @desc Receive template for ULR message body with specific flags AVP - * @param p_ulr_Flags ULR-Flags AVP - */ - template (present) ULR_Body_AVP mdw_ulrBodyAvps_uLR_Flags( - in template (present) ULR_Flags_AVP p_ulr_Flags - ) modifies mw_S6a_ULR_Body_dummy := { - ulr_Flags := p_ulr_Flags - } // End of tempate mdw_ulrBodyAvps_uLR_Flags - - template (present) ULR_Body_AVP mdw_ulrBodyAvps_uLR_Flags_supported_Features( - in template (present) ULR_Flags_AVP p_ulr_Flags, - in template (present) Supported_Features_AVPs p_supported_Features - ) modifies mdw_ulrBodyAvps_uLR_Flags := { - supported_Features := p_supported_Features - } // End of tempate mdw_ulrBodyAvps_uLR_Flags_supported_Features - - /** - * @desc Receive template for ULA message body with specific Subscription Data AVP - * @param p_subscription_Data Subscription-Data AVP - */ - template (present) ULA_Body_AVP mdw_hssUlaBodyAvps_subscription_Data( - in template (present) Subscription_Data_AVP p_subscription_Data - ) modifies mw_S6a_ULA_Body_dummy := { - subscription_Data := p_subscription_Data - } // End of tempate mdw_hssUlaBodyAvps_subscription_Data - - /** - * @desc Receive template for ULR message body with specific Subscription Data AVP - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name - * @param p_rat_Type Radio access type the UE is using - * @param p_ulr_Flags ULR Bit mask - * @param p_visited_PLMN_Id Concatenation of MCC and MNC - * @param p_sgsn_Number SGSN-Number AVP - */ - template (present) ULR_Body_AVP mdw_hssUlrBodyAvps_sGSN_Number( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template (present) RAT_Type_AVP p_rat_Type, - in template (present) ULR_Flags_AVP p_ulr_Flags, - in template (present) Visited_PLMN_Id_AVP p_visited_PLMN_Id, - in template (present) SGSN_Number_AVP p_sgsn_Number - ) modifies mdw_ulrBodyAvps := { - sgsn_Number := p_sgsn_Number - } // End of tempate mdw_hssUlrBodyAvps_sGSN_Number - - /** - * @desc Receive template for RSA message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_rat_Type Radio access type the UE is using - * @param p_ulr_Flags ULR Bit mask - * @param p_visited_PLMN_Id Concatenation of MCC and MNC - */ - template (present) RSA_Body_AVP mdw_rsaBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Result_Code_AVP p_result - ) modifies mw_S6a_RSA_Body_dummy := { - result_Code := p_result, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - auth_Session_State := p_auth_Session_State - } // End of template mdw_rsaBodyAvps - - /** - * @desc Receive template for ULR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - */ - template (present) NOR_Body_AVP mdw_norBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name - ) modifies mw_S6a_NOR_Body_dummy := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name - } // End of template mdw_norBodyAvps - - /** - * @desc Receive template for AIR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - */ - template (present) AIR_Body_AVP mdw_airBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template (present) Visited_PLMN_Id_AVP p_visitedPlmnId, - in template Req_EUTRAN_Auth_Info_AVP p_reqEutranAuthInfo, - in template Req_UTRAN_GERAN_Auth_Info_AVP p_reqUtranGeranAuthInfo - ) modifies mw_S6a_AIR_Body_dummy := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name, - visited_PLMN_Id := p_visitedPlmnId, - req_EUTRAN_Auth_Info := p_reqEutranAuthInfo, - req_UTRAN_GERAN_Auth_Info := p_reqUtranGeranAuthInfo - } // End of template mdw_airBodyAvps - - /** - * @desc Receive template for PUR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - */ - template (present) PUER_Body_AVP mdw_purBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template PUER_Flags_AVP p_puerFlags - ) modifies mw_S6a_PUER_Body_dummy := { - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - auth_Session_State := p_auth_Session_State, - user_Name := p_user_Name, - pUER_Flags := p_puerFlags - } // End of template mdw_purBodyAvps - - } // End of group S6aModified_request_templates_receive - - group S6aModified_answer_templates_send { - - /** - * @desc Send template for CLA - * @param p_sessionId Session identifier - * @param p_claBody CLA message body - */ - template (value) CLA_MSG md_CLA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) CLA_Body_AVP p_claBody - ) modifies m_S6a_CLA_dummy := { - session_Id := p_sessionId, - cLA_Body := p_claBody - } // End of template md_CLA - - /** - * @desc Send template for ULA - * @param p_sessionId Session identifier - * @param p_ulaBody ULA message body - */ - template (value) ULA_MSG md_ULA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) ULA_Body_AVP p_ulaBody - ) modifies m_S6a_ULA_dummy := { - session_Id := p_sessionId, - uLA_Body := p_ulaBody - } // End of template md_ULA - - /** - * @desc Send template for ULA message body - */ - template (value) ULA_Body_AVP md_ulaBodyAvps( - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Auth_Session_State_AVP p_auth_Session_State - ) modifies m_S6a_ULA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - origin_Host := p_originHost, - origin_Realm := p_originRealm, - auth_Session_State := p_auth_Session_State - } // End of template md_ulaBodyAvps - - /** - * @desc Send template for PUEA - * @param p_sessionId Session identifier - * @param p_pueaBody PUEA message body - */ - template (value) PUEA_MSG md_PUEA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) PUEA_Body_AVP p_pueaBody - ) modifies m_S6a_PUEA_dummy := { - session_Id := p_sessionId, - pUEA_Body := p_pueaBody - } // End of template md_PUEA - - /** - * @desc Send template for PUEA message body - */ - template (value) PUEA_Body_AVP md_pueaBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm - ) modifies m_S6a_PUEA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template md_pueaBodyAvps - - /** - * @desc Send template for AIA - * @param p_sessionId Session identifier - * @param p_aiaBody AIA message body - */ - template (value) AIA_MSG md_AIA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) AIA_Body_AVP p_aiaBody - ) modifies m_S6a_AIA_dummy := { - session_Id := p_sessionId, - aIA_Body := p_aiaBody - } // End of template md_AIA - - /** - * @desc Send template for AIA message body - */ - template (value) AIA_Body_AVP md_aiaBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm - ) modifies m_S6a_AIA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template md_aiaBodyAvps - - /** - * @desc Send template for NOA - * @param p_sessionId Session identifier - * @param p_noaBody NOA message body - */ - template (value) NOA_MSG md_NOA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) NOA_Body_AVP p_noaBody - ) modifies m_S6a_NOA_dummy := { - session_Id := p_sessionId, - nOA_Body := p_noaBody - } // End of template md_NOA - - /** - * @desc Send template for NOA message body - */ - template (value) NOA_Body_AVP md_noaBodyAvps( - in template (value) Auth_Session_State_AVP p_auth_Session_State, - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm - ) modifies m_S6a_NOA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template md_noaBodyAvps - - /** - * @desc Send template for IDA - * @param p_sessionId Session identifier - * @param p_idaBody IDA message body - */ - template (value) IDA_MSG md_IDA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) IDA_Body_AVP p_idaBody - ) modifies m_S6a_IDA_dummy := { - session_Id := p_sessionId, - iDA_Body := p_idaBody - } // End of template md_IDA - - /** - * @desc Send template for IDA message body - */ - template (value) IDA_Body_AVP md_idaBodyAvps( - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Auth_Session_State_AVP p_auth_Session_State - ) modifies m_S6a_IDA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - origin_Host := p_originHost, - origin_Realm := p_originRealm, - auth_Session_State := p_auth_Session_State - } // End of template md_idaBodyAvps - - /** - * @desc Send template for DSA - * @param p_sessionId Session identifier - * @param p_dsaBody DSA message body - */ - template (value) DSA_MSG md_DSA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) DSA_Body_AVP p_dsaBody - ) modifies m_S6a_DSA_dummy := { - session_Id := p_sessionId, - dSA_Body := p_dsaBody - } // End of template md_DSA - - /** - * @desc Send template for DSA message body - */ - template (value) DSA_Body_AVP md_dsaBodyAvps( - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Auth_Session_State_AVP p_auth_Session_State - ) modifies m_S6a_DSA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - origin_Host := p_originHost, - origin_Realm := p_originRealm, - auth_Session_State := p_auth_Session_State - } // End of template md_dsaBodyAvps - - /** - * @desc Send template for RSA - * @param p_sessionId Session identifier - * @param p_rsaBody RSA message body - */ - template (value) RSA_MSG md_RSA( - in template (value) Session_Id_AVP p_sessionId, - in template (value) RSA_Body_AVP p_rsaBody - ) modifies m_S6a_RSA_dummy := { - session_Id := p_sessionId, - rSA_Body := p_rsaBody - } // End of template md_RSA - - /** - * @desc Send template for RSA message body - */ - template (value) RSA_Body_AVP md_rsaBodyAvps( - in template (value) Origin_Host_AVP p_originHost, - in template (value) Origin_Realm_AVP p_originRealm, - in template (value) Auth_Session_State_AVP p_auth_Session_State - ) modifies m_S6a_RSA_Body_dummy := { - result_Code := m_resultCode(DIAMETER_SUCCESS_E), - origin_Host := p_originHost, - origin_Realm := p_originRealm, - auth_Session_State := p_auth_Session_State - } // End of template md_rsaBodyAvps - - } // End of group S6aModified_answer_templates_send - - group S6aModified_answer_templates_receive { - - /** - * @desc Receive template for ULA - * @param p_sessionId Session identifier - * @param p_ulaBody ULA message body - */ - template (present) ULA_MSG mdw_ULA( - in template (present) Session_Id_AVP p_sessionId, - in template (present) ULA_Body_AVP p_ulaBody - ) modifies mw_S6a_ULA_dummy := { - session_Id := p_sessionId, - uLA_Body := p_ulaBody - } // End of template mdw_ULA - - /** - * @desc Receive template for CLR - * @param p_sessionId Session identifier - * @param p_clrBody CLR message body - */ - template (present) CLR_MSG mdw_CLR( - in template (present) Session_Id_AVP p_sessionId, - in template (present) CLR_Body_AVP p_clrBody - ) modifies mw_S6a_CLR_dummy := { - session_Id := p_sessionId, - cLR_Body := p_clrBody - } // End of template mdw_CLR - - /** - * @desc Receive template for CLA - * @param p_sessionId Session identifier - * @param p_claBody CLA message body - */ - template (present) CLA_MSG mdw_CLA ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) CLA_Body_AVP p_claBody - ) modifies mw_S6a_CLA_dummy := { - session_Id := p_sessionId, - cLA_Body := p_claBody - } // End of template mdw_CLA - - /** - * @desc Receive template for PUEA - * @param p_sessionId Session identifier - * @param p_ulaBody PUA message body - */ - template (present) PUEA_MSG mdw_PUEA( - in template (present) Session_Id_AVP p_sessionId, - in template (present) PUEA_Body_AVP p_pueaBody - ) modifies mw_S6a_PUEA_dummy := { - session_Id := p_sessionId, - pUEA_Body := p_pueaBody - } // End of template mdw_PUEA - - /** - * @desc Receive template for AIA - * @param p_sessionId Session identifier - * @param p_aiaBody AIA message body - */ - template (present) AIA_MSG mdw_AIA( - in template (present) Session_Id_AVP p_sessionId, - in template (present) AIA_Body_AVP p_aiaBody - ) modifies mw_S6a_AIA_dummy := { - session_Id := p_sessionId, - aIA_Body := p_aiaBody - } // End of template mdw_AIA - - /** - * @desc Receive template for NOA - * @param p_sessionId Session identifier - * @param p_noaBody NOA message body - */ - template (present) NOA_MSG mdw_NOA( - in template (present) Session_Id_AVP p_sessionId, - in template (present) NOA_Body_AVP p_noaBody - ) modifies mw_S6a_NOA_dummy := { - session_Id := p_sessionId, - nOA_Body := p_noaBody - } // End of template mdw_NOA - - /** - * @desc Send template for DSA - * @param p_sessionId Session identifier - * @param p_dsaBody DSA message body - */ - template (present) DSA_MSG mdw_DSA ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) DSA_Body_AVP p_dsaBody - ) modifies mw_S6a_DSA_dummy := { - session_Id := p_sessionId, - dSA_Body := p_dsaBody - } // End of template mdw_DSA - - /** - * @desc Send template for IDA - * @param p_sessionId Session identifier - * @param p_idaBody IDA message body - */ - template (present) IDA_MSG mdw_IDA ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) IDA_Body_AVP p_idaBody - ) modifies mw_S6a_IDA_dummy := { - session_Id := p_sessionId, - iDA_Body := p_idaBody - } // End of template mdw_IDA - - /** - * @desc Send template for RSA - * @param p_sessionId Session identifier - * @param p_rsaBody RSA message body - */ - template (present) RSA_MSG mdw_RSA ( - in template (present) Session_Id_AVP p_sessionId, - in template (present) RSA_Body_AVP p_rsaBody - ) modifies mw_S6a_RSA_dummy := { - session_Id := p_sessionId, - rSA_Body := p_rsaBody - } // End of template mdw_RSA - - /** - * @desc Receive template for ULA message body - * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_ula_Flags ULA Bit mask - */ - template (present) ULA_Body_AVP mdw_ulaBodyAvps( - in template (present) Result_Code_AVP p_resultCode, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) ULA_Flags_AVP p_ula_Flags, - in template (present) Subscription_Data_AVP p_subscription_Data - ) modifies mw_S6a_ULA_Body_dummy := { - result_Code := p_resultCode, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - ula_Flags := p_ula_Flags, - subscription_Data := p_subscription_Data - } // End of template mdw_ulaBodyAvps - - /** - * @desc Receive template for ULA message body with specific Expected Experimantal Result AVP - * @param p_experimental_Result Expected Experimantal Result Code value - */ - template (present) ULA_Body_AVP mdw_ulaBodyAvps_experimental_Result( - in template (present) Experimental_Result_AVP p_experimental_Result - ) modifies mw_S6a_ULA_Body_dummy := { - experimental_Result := p_experimental_Result - } // End of template mdw_ulaBodyAvps_experimental_Result - - /** - * @desc Receive template for ULA message body with specific supported_Features AVP - * @param p_supportedFeatures Expected Features - */ - template (present) ULA_Body_AVP mdw_ulaBodyAvps_supportedFeatures( - in template (present) Supported_Features_AVP p_supportedFeatures - ) modifies mw_S6a_ULA_Body_dummy := { - supported_Features := {p_supportedFeatures} - } // End of template mdw_ulaBodyAvps_supportedFeatures - - /** - * @desc Receive template for ULA message body with specific Expected Experimantal Result and Error Diagnostic AVPs - * @param p_experimental_Result Expected Experimantal Result Code value - * @param p_error_Diagnostic Expected error diagnostic value - */ - template (present) ULA_Body_AVP mdw_ulaBodyAvps_experimental_Result_error_Diagnostic( - in template (present) Experimental_Result_AVP p_experimental_Result, - in template (present) Error_Diagnostic_AVP p_error_Diagnostic - ) modifies mdw_ulaBodyAvps_experimental_Result := { - error_Diagnostic := p_error_Diagnostic - } // End of template mdw_ulaBodyAvps_experimental_Result_error_Diagnostic - - /** - * @desc Receive template for CLR message body with Cancellation-Type AVP - * @param p_cancellation_Type Cancellation type code value - */ - template (present) CLR_Body_AVP mdw_clrBodyAvps_cancellation_Type( - in template (present) Cancellation_Type_AVP p_cancellation_Type - ) modifies mw_S6a_CLR_Body_dummy := { - cancellation_Type := p_cancellation_Type - } // End of template mdw_clrBodyAvps_cancellation_Type - - /** - * @desc Receive template for ULA message body with specific Subscription-Data AVP - * @param p_subscription_Data The Subscription-Data AVP - */ - template (present) ULA_Body_AVP mdw_ulaBodyAvps_subscription_Data( - in template (present) Subscription_Data_AVP p_subscription_Data - ) modifies mw_S6a_ULA_Body_dummy := { - subscription_Data := p_subscription_Data - } // End of template mdw_ulaBodyAvps_subscription_Data - - /** - * @desc Receive template for CLR message body - * @param p_cancellation_Type Cancellation type code value - */ - template (present) CLR_Body_AVP mdw_clrBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template (present) Cancellation_Type_AVP p_cancellation_Type - ) modifies mw_S6a_CLR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - cancellation_Type := p_cancellation_Type - } // End of template mdw_clrBodyAvps - - /** - * @desc Receive template for CLR message body - * @param p_cancellation_Type Cancellation type code value - */ - template (present) CLR_Body_AVP mdw_clrBodyAvps_flags( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template (present) Cancellation_Type_AVP p_cancellation_Type, - in template (present) CLR_Flags_AVP p_cLR_Flags - ) modifies mdw_clrBodyAvps := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - cancellation_Type := p_cancellation_Type, - cLR_Flags := p_cLR_Flags - } // End of template mdw_clrBodyAvps_flags - - /** - * @desc Receive template for PUEA message body - * @param p_cancellation_Type Cancellation type code value - */ - template (present) PUEA_Body_AVP mdw_pueaBodyAvps( - in template (present) Result_Code_AVP p_resultCode, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_PUEA_Body_dummy := { - result_Code := p_resultCode, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template mdw_pueaBodyAvps - - /** - * @desc Receive template for PUEA message body with Experimental-Result AVP - * @param p_experimental_Result Experimental-Result AVP value - */ - template (present) PUEA_Body_AVP mdw_pueaBodyAvps_experimental_Result( - in template (present) Experimental_Result_AVP p_experimental_Result - ) modifies mw_S6a_PUEA_Body_dummy := { - experimental_Result := p_experimental_Result - } // End of template mdw_pueaBodyAvps_experimental_Result - - - /** - * @desc Receive template for PUEA message body with Experimental-Result AVP - * @param p_experimental_Result Experimental-Result AVP value - * @param p_pur_Flags - */ - template (present) PUEA_Body_AVP mdw_pueaBodyAvps_experimental_Result_Flags( - in template (present) Result_Code_AVP p_result_Code, - in template (present) PUEA_Flags_AVP p_puea_Flags - ) modifies mw_S6a_PUEA_Body_dummy := { - result_Code := p_result_Code, - pUEA_Flags := p_puea_Flags - } // End of template mdw_pueaBodyAvps_experimental_Result_Flags - - /** - * @desc Receive template for IDR message body - * @param p_auth_Session_State - * @param p_originHost - * @param p_originRealm - * @param p_destinationRealm - * @param p_user_Name - * @param p_subscription_Data Subscription-Data AVP - */ - template (present) IDR_Body_AVP mdw_idrBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template (present) Subscription_Data_AVP p_subscription_Data - ) modifies mw_S6a_IDR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - subscription_Data := p_subscription_Data - } // End of template mdw_idrBodyAvps - - /** - * @desc Receive template for IDR message body with specific Subscription-Data AVP - * @param p_cancellation_Type Cancellation type code value - */ - template (present) IDR_Body_AVP mdw_idrBodyAvps_subscription_Data( - in template (present) Subscription_Data_AVP p_subscription_Data - ) modifies mw_S6a_IDR_Body_dummy := { - subscription_Data := p_subscription_Data - } // End of template mdw_idrBodyAvps_subscription_Data - - /** - * @desc Receive template for IDR message body with specific values - * @param p_subscription_Data Subscription-Data AVP value - * @param p_iDR_Flags - */ - template (present) IDR_Body_AVP mdw_idrBodyAvps_subscription_Data_iDR_Flags( - in template (present) Subscription_Data_AVP p_subscription_Data, - in template (present) IDR_Flags_AVP p_iDR_Flags - ) modifies mdw_idrBodyAvps_subscription_Data := { - iDR_Flags := p_iDR_Flags - } // End of template mdw_idrBodyAvps_subscription_Data_iDR_Flags - - /** - * @desc Receive template for IDR message body with general values - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - * @param p_user_Name User-Name AVP - * @param p_dsr_Flags - */ - template (present) DSR_Body_AVP mdw_dsrBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Host_AVP p_destinationHost, - in template (present) Destination_Realm_AVP p_destinationRealm, - in template (present) User_Name_AVP p_user_Name, - in template (present) DSR_Flags_AVP p_dsr_Flags - ) modifies mw_S6a_DSR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Host := p_destinationHost, - destination_Realm := p_destinationRealm, - user_Name := p_user_Name, - dSR_Flags := p_dsr_Flags - } // End of template mdw_dsrBodyAvps - - /** - * @desc Receive template for DSR message body with specific DSR flags value - * @param p_dsr_Flags DSR flags value - */ - template (present) DSR_Body_AVP mdw_dsrBodyAvps_dSRFlags( - in template (present) DSR_Flags_AVP p_dsr_Flags - ) modifies mw_S6a_DSR_Body_dummy := { - dSR_Flags := p_dsr_Flags - } // End of template mdw_dsrBodyAvps_dSRFlags - - /** - * @desc Receive template for AIA message body - * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - */ - template (present) AIA_Body_AVP mdw_aiaBodyAvps( - in template (present) Result_Code_AVP p_resultCode, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_AIA_Body_dummy := { - result_Code := p_resultCode, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template mdw_aiaBodyAvps - - /** - * @desc Receive template for AIA message body with Experimental-Result AVP - * @param p_experimental_Result Expected Experimantal Result Code value - */ - template (present) AIA_Body_AVP mdw_aiaBodyAvps_experimental_Result( - in template (present) Experimental_Result_AVP p_experimental_Result - ) modifies mw_S6a_AIA_Body_dummy := { - experimental_Result := p_experimental_Result - } // End of template mdw_aiaBodyAvps_experimental_Result - - /** - * @desc Receive template for AIA message body with Experimental-Result AVP - * @param p_experimental_Result Expected Experimantal Result Code value - * @param p_errorDiagnostic Error-Diagnostic AVP value - */ - template (present) AIA_Body_AVP mdw_aiaBodyAvps_experimental_Result_errorDiagnostic( - in template (present) Experimental_Result_AVP p_experimental_Result, - in template (present) Error_Diagnostic_AVP p_errorDiagnostic - ) modifies mdw_aiaBodyAvps_experimental_Result := { - experimental_Result := p_experimental_Result, - error_Diagnostic := p_errorDiagnostic - } // End of template mdw_aiaBodyAvps_experimental_Result_errorDiagnostic - - /** - * @desc Receive template for AIA message body - * @param p_result_Code Result Code value - * @param p_authentication_Info Contains Authentication Vectors - */ - template (present) AIA_Body_AVP mdw_aiaBodyAvps_result_Code( - in template (present) Result_Code_AVP p_result_Code - ) modifies mw_S6a_AIA_Body_dummy := { - result_Code := p_result_Code - } // End of template mdw_aiaBodyAvps_result_Code - - /** - * @desc Receive template for AIA message body - * @param p_result_Code Result Code value - * @param p_authentication_Info Contains Authentication Vectors - */ - template (present) AIA_Body_AVP mdw_aiaBodyAvps_result_Code_authentication_Info( - in template (present) Result_Code_AVP p_result_Code, - in template Authentication_Info_AVP p_authentication_Info - ) modifies mdw_aiaBodyAvps_result_Code := { - authentication_Info := p_authentication_Info - } // End of template mdw_aiaBodyAvps_result_Code_authentication_Info - - /** - * @desc Receive template for CLA message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_result Result of CLR execution - */ - template (present) CLA_Body_AVP mdw_claBodyAvps ( - in template (present) Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_CLA_Body_dummy := { - result_Code := p_result, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template mdw_claBodyAvps - - /** - * @desc Receive template for IDA message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_result Result of IDR execution - */ - template (present) IDA_Body_AVP mdw_idaBodyAvps_Result ( - in template (present) Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_IDA_Body_dummy := { - result_Code := p_result, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template mdw_idaBodyAvps_Result - - /** - * @desc Receive template for IDA message body with Experimental-Result AVP - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_experimentalResult Result of IDR execution - */ - template (present) IDA_Body_AVP mdw_idaBodyAvps_ExperimentalResult ( - in template (present) Experimental_Result_Type p_experimentalResult, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_IDA_Body_dummy := { - experimental_Result := mw_experimentalResult ( mw_experimentalResultCode ( p_experimentalResult )), - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - result_Code := omit - } // End of template mdw_idaBodyAvps_ExperimentalResult - - /** - * @desc Receive template for IDA message body with IMS-Voice-Over-PS-Sessions-Supported AVP, Last-UE-Activity-Time AVP and RAT-Type AVP - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_result Result of IDR execution - */ - template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_TADS ( - in template (present) Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_IDA_Body_dummy := { - result_Code := p_result, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - iMS_Voice_PS_Sessions_Support := ?, - last_UE_Activity_Time_AVP := ?, - rat_Type := ? - } // End of template mdw_idaBodyAvps_Result_TADS - - /** - * @desc Receive template for IDA message body with IMS-Voice-Over-PS-Sessions-Supported AVP, Last-UE-Activity-Time AVP and RAT-Type AVP - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_result Result of IDR execution - */ - template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_noTADS ( - in template (present) Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_IDA_Body_dummy := { - result_Code := p_result, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - iMS_Voice_PS_Sessions_Support := omit, - last_UE_Activity_Time_AVP := omit, - rat_Type := omit - } // End of template mdw_idaBodyAvps_Result_noTADS - - /** - * @desc Receive template for IDA message body with EPS-User-State AVP - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_result Result of IDR execution - */ - template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_EPS_State ( - in template (present) Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_IDA_Body_dummy := { - result_Code := p_result, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - ePS_User_State := ? - } // End of template mdw_idaBodyAvps_Result_EPS_State - - /** - * @desc Receive template for IDA message body with EPS-Location-Information AVP - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_result Result of IDR execution - */ - template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_EPS_Location ( - in template (present) Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_IDA_Body_dummy := { - result_Code := p_result, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - ePS_Location_Information := ? - } // End of template mdw_idaBodyAvps_Result_EPS_Location - - /** - * @desc Receive template for IDA message body with EPS-User-State AVP and EPS-Location-Information AVP - * @param p_result Result of IDR execution - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - */ - template (present) IDA_Body_AVP mdw_idaBodyAvps_Result_EPS_StateAndLocation ( - in template (present) Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mdw_idaBodyAvps_Result_EPS_Location := { - ePS_User_State := ? - } // End of template mdw_idaBodyAvps_Result_EPS_StateAndLocation - - /** - * @desc Receive template for DSA message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_result Result of DSR execution - */ - template (present) DSA_Body_AVP mdw_dsaBodyAvps_Result ( - in template Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_DSA_Body_dummy := { - result_Code := p_result, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template mdw_dsaBodyAvps_Result - - /** - * @desc Receive template for DSA message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_experimentalResult Experimental result of DSR execution - */ - template (present) DSA_Body_AVP mdw_dsaBodyAvps_ExperimentalResult ( - in template Result_Code_AVP p_result, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Experimental_Result_Type p_experimentalResult - ) modifies mdw_dsaBodyAvps_Result := { - experimental_Result := mw_experimentalResult ( mw_experimentalResultCode ( p_experimentalResult )) - } // End of template mdw_dsaBodyAvps_ExperimentalResult - - /** - * @desc Receive template for RSR message body - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_destinationHost The Host to which the message is to be routed - * @param p_destinationRealm The realm to which the message is to be routed - */ - template (present) RSR_Body_AVP mdw_rsrBodyAvps( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Destination_Host_AVP p_destinationHost, - in template (present) Destination_Realm_AVP p_destinationRealm - ) modifies mw_S6a_RSR_Body_dummy := { - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm, - destination_Host := p_destinationHost, - destination_Realm := p_destinationRealm - } // End of template mdw_rsrBodyAvps - - /** - * @desc Receive template for NOA message body - * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - */ - template (present) NOA_Body_AVP mdw_noaBodyAvps( - in template (present) Result_Code_AVP p_resultCode, - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm - ) modifies mw_S6a_NOA_Body_dummy := { - result_Code := p_resultCode, - auth_Session_State := p_auth_Session_State, - origin_Host := p_originHost, - origin_Realm := p_originRealm - } // End of template mdw_noaBodyAvps - - /** - * @desc Receive template for NOA message body - * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred - * @param p_auth_Session_State Specifies if the state is maintained for a particular session - * @param p_originHost Identifies the endpoint that originated the Diameter message - * @param p_originRealm Realm of the originator - * @param p_experimentalResult Experimental result of NOR execution - */ - template (present) NOA_Body_AVP mdw_noaBodyAvps_ExperimentalResult( - in template (present) Auth_Session_State_AVP p_auth_Session_State, - in template (present) Origin_Host_AVP p_originHost, - in template (present) Origin_Realm_AVP p_originRealm, - in template (present) Experimental_Result_Type p_experimentalResult - ) modifies mw_S6a_NOA_Body_dummy := { - experimental_Result := mw_experimentalResult ( mw_experimentalResultCode ( p_experimentalResult )) - } // End of template mdw_noaBodyAvps_ExperimentalResult - - } // End of group S6aModified_answer_templates_receive - - } // End of group S6aModified_templates - - } // End of group S6aMessageTemplates - -} // End of module DiameterS6a_Templates \ No newline at end of file diff --git a/ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn b/ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn deleted file mode 100644 index 90bfa65..0000000 --- a/ttcn/AtsImsIot/DiameterS6a_TypesAndValues.ttcn +++ /dev/null @@ -1,352 +0,0 @@ -/** - * @author STF 466 - * @version $Id: $ - * @desc - * This module defines message, header, structured and simple Diameter - * S6a types as well constants used by DiameterS6a constructs.
- * Note that any changes made to the definitions in this module - * may be overwritten by future releases of this library - * End users are encouraged to contact the distributers of this - * module regarding their modifications or additions - * @remark Adding of new message and header types is ok; Existing message or header types shall not be changed or removed - */ -module DiameterS6a_TypesAndValues { - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibDiameter - import from LibDiameter_Types_Base_AVPs { - type all - }; - import from LibDiameter_Types_S6a_AVPs all; - import from LibDiameter_TypesAndValues all; - import from LibDiameter_Types_Gx_AVPs { - type RAT_Type_AVP - }; - - group BasicTypesAndConstants { - - group DiameterS6aConstants { - - group S6aApplicationIdConstants { - - const UInt32 c_applId_S6a := 16777251; - - } // End of group S6aApplicationIdConstants - - group S6aAVPCodeConstants { - - group AVPCodeConstantsTS129_722 { - - const integer c_subscription_Data_AVP_Code := 1400; - // Ref: table 7.3.1/1 - const integer c_terminal_Information_AVP_Code := 1401; - // Ref: table 7.3.1/1 - const integer c_imei_AVP_Code := 1402; - // Ref: table 7.3.1/1 - const integer c_software_Version_AVP_Code := 1403; - // Ref: table 7.3.1/1 - const integer c_qos_Subscribed_AVP_Code := 1404; - // Ref: table 7.3.1/1 - const integer c_ulr_Flags_AVP_Code := 1405; - // Ref: table 7.3.1/1 - const integer c_ula_Flags_AVP_Code := 1406; - // Ref: table 7.3.1/1 - const integer c_visited_PLMN_Id_AVP_Code := 1407; - // Ref: table 7.3.1/1 - const integer c_requested_EUTRAN_Authentication_Info_AVP_Code := 1408; - // Ref: table 7.3.1/1 - const integer c_requested_UTRAN_GERAN_Authentication_Info_AVP_Code := 1409; - // Ref: table 7.3.1/1 - const integer c_number_Of_Requested_Vectors_AVP_Code := 1410; - // Ref: table 7.3.1/1 - const integer c_re_Synchronization_Info_AVP_Code := 1411; - // Ref: table 7.3.1/1 - const integer c_immediate_Response_Preferred_AVP_Code := 1412; - // Ref: table 7.3.1/1 - const integer c_authentication_Info_AVP_Code := 1413; - // Ref: table 7.3.1/1 - const integer c_e_UTRAN_Vector_AVP_Code := 1414; - // Ref: table 7.3.1/1 - const integer c_utran_Vector_AVP_Code := 1415; - // Ref: table 7.3.1/1 - const integer c_geran_Vector_AVP_Code := 1416; - // Ref: table 7.3.1/1 - const integer c_network_Access_Mode_AVP_Code := 1417; - // Ref: table 7.3.1/1 - const integer c_hplmn_ODB_AVP_Code := 1418; - // Ref: table 7.3.1/1 - const integer c_item_Number_AVP_Code := 1419; - // Ref: table 7.3.1/1 - const integer c_cancellation_Type_AVP_Code := 1420; - // Ref: table 7.3.1/1 - const integer c_dsr_Flags_AVP_Code := 1421; - // Ref: table 7.3.1/1 - const integer c_dsa_Flags_AVP_Code := 1422; - // Ref: table 7.3.1/1 - const integer c_context_Identifier_AVP_Code := 1423; - // Ref: table 7.3.1/1 - const integer c_subscriber_Status_AVP_Code := 1424; - // Ref: table 7.3.1/1 - const integer c_operator_Determined_Barring_AVP_Code := 1425; - // Ref: table 7.3.1/1 - const integer c_access_Restriction_Data_AVP_Code := 1426; - // Ref: table 7.3.1/1 - const integer c_apn_OI_Replacement_AVP_Code := 1427; - // Ref: table 7.3.1/1 - const integer c_all_APN_Configurations_Included_Indicator_AVP_Code := 1428; - // Ref: table 7.3.1/1 - const integer c_apn_Configuration_Profile_AVP_Code := 1429; - // Ref: table 7.3.1/1 - const integer c_apn_Configuration_AVP_Code := 1430; - // Ref: table 7.3.1/1 - const integer c_eps_Subscribed_QoS_Profile_AVP_Code := 1431; - // Ref: table 7.3.1/1 - const integer c_vplmn_Dynamic_Address_Allowed_AVP_Code := 1432; - // Ref: table 7.3.1/1 - const integer c_stn_SR_AVP_Code := 1433; - // Ref: table 7.3.1/1 - const integer c_alert_Reason_AVP_Code := 1434; - // Ref: table 7.3.1/1 - const integer c_ambr_AVP_Code := 1435; - // Ref: table 7.3.1/1 - const integer c_csg_Subscription_Data_AVP_Code := 1436; - // Ref: table 7.3.1/1 - const integer c_csg_Id_AVP_Code := 1437; - // Ref: table 7.3.1/1 - const integer c_pdn_GW_Allocation_Type_AVP_Code := 1438; - // Ref: table 7.3.1/1 - const integer c_expiration_Date_AVP_Code := 1439; - // Ref: table 7.3.1/1 - const integer c_rat_Frequency_Selection_Priority_ID_AVP_Code := 1440; - // Ref: table 7.3.1/1 - const integer c_ida_Flags_AVP_Code := 1441; - // Ref: table 7.3.1/1 - const integer c_pua_Flags_AVP_Code := 1442; - // Ref: table 7.3.1/1 - const integer c_nor_Flags_AVP_Code := 1443; - // Ref: table 7.3.1/1 - const integer c_user_Id_AVP_Code := 1444; - // Ref: table 7.3.1/1 - const integer c_equipment_Status_AVP_Code := 1445; - // Ref: table 7.3.1/1 - const integer c_regional_Subscription_Zone_Code_AVP_Code := 1446; - // Ref: table 7.3.1/1 - const integer c_rand_AVP_Code := 1447; - // Ref: table 7.3.1/1 - const integer c_xres_AVP_Code := 1448; - // Ref: table 7.3.1/1 - const integer c_autn_AVP_Code := 1449; - // Ref: table 7.3.1/1 - const integer c_kasme_AVP_Code := 1450; - // Ref: table 7.3.1/1 - const integer c_trace_Collection_Entity_AVP_Code := 1452; - // Ref: table 7.3.1/1 - const integer c_kc_AVP_Code := 1453; - // Ref: table 7.3.1/1 - const integer c_sres_AVP_Code := 1454; - // Ref: table 7.3.1/1 - const integer c_pdn_Type_AVP_Code := 1456; - // Ref: table 7.3.1/1 - const integer c_roaming_Restricted_Due_To_Unsupported_Feature_AVP_Code := 1457; - // Ref: table 7.3.1/1 - const integer c_trace_Data_AVP_Code := 1458; - // Ref: table 7.3.1/1 - const integer c_trace_Reference_AVP_Code := 1459; - // Ref: table 7.3.1/1 - const integer c_trace_Depth_AVP_Code := 1462; - // Ref: table 7.3.1/1 - const integer c_trace_NE_Type_List_AVP_Code := 1463; - // Ref: table 7.3.1/1 - const integer c_trace_Interface_List_AVP_Code := 1464; - // Ref: table 7.3.1/1 - const integer c_trace_Event_List_AVP_Code := 1465; - // Ref: table 7.3.1/1 - const integer c_omc_Id_AVP_Code := 1466; - // Ref: table 7.3.1/1 - const integer c_gprs_Subscription_Data_AVP_Code := 1467; - // Ref: table 7.3.1/1 - const integer c_complete_Data_List_Included_Indicator_AVP_Code := 1468; - // Ref: table 7.3.1/1 - const integer c_pdp_Context_AVP_Code := 1469; - // Ref: table 7.3.1/1 - const integer c_pdp_Type_AVP_Code := 1470; - // Ref: table 7.3.1/1 - const integer c_3gpp2_MEID_AVP_Code := 1471; - // Ref: table 7.3.1/1 - const integer c_specific_APN_Info_AVP_Code := 1472; - // Ref: table 7.3.1/1 - const integer c_lcs_Info_AVP_Code := 1473; - // Ref: table 7.3.1/1 - const integer c_gmlc_Number_AVP_Code := 1474; - // Ref: table 7.3.1/1 - const integer c_lcs_PrivacyException_AVP_Code := 1475; - // Ref: table 7.3.1/1 - const integer c_ss_Code_AVP_Code := 1476; - // Ref: table 7.3.1/1 - const integer c_ss_Status_AVP_Code := 1477; - // Ref: table 7.3.1/1 - const integer c_notification_To_UE_User_AVP_Code := 1478; - // Ref: table 7.3.1/1 - const integer c_external_Client_AVP_Code := 1479; - // Ref: table 7.3.1/1 - const integer c_client_Identity_AVP_Code := 1480; - // Ref: table 7.3.1/1 - const integer c_gmlc_Restriction_AVP_Code := 1481; - // Ref: table 7.3.1/1 - const integer c_plmn_Client_AVP_Code := 1482; - // Ref: table 7.3.1/1 - const integer c_service_Type_AVP_Code := 1483; - // Ref: table 7.3.1/1 - const integer c_serviceTypeIdentity_AVP_Code := 1484; - // Ref: table 7.3.1/1 - const integer c_mo_LR_AVP_Code := 1485; - // Ref: table 7.3.1/1 - const integer c_teleservice_List_AVP_Code := 1486; - // Ref: table 7.3.1/1 - const integer c_ts_Code_AVP_Code := 1487; - // Ref: table 7.3.1/1 - const integer c_call_Barring_Info_AVP_Code := 1488; - // Ref: table 7.3.1/1 - const integer c_sgsn_Number_AVP_Code := 1489; - // Ref: table 7.3.1/1 - const integer c_idr_Flags_AVP_Code := 1490; - // Ref: table 7.3.1/1 - const integer c_ics_Indicator_AVP_Code := 1491; - // Ref: table 7.3.1/1 - const integer c_ims_Voice_Over_PS_Sessions_Supported_AVP_Code := 1492; - // Ref: table 7.3.1/1 - const integer c_homogeneous_Support_of_IMS_Voice_Over_PS_Sessions_AVP_Code := 1493; - // Ref: table 7.3.1/1 - const integer c_last_UE_Activity_Time_AVP_Code := 1494; - // Ref: table 7.3.1/1 - const integer c_eps_User_State_AVP_Code := 1495; - // Ref: table 7.3.1/1 - const integer c_eps_Location_Information_AVP_Code := 1496; - // Ref: table 7.3.1/1 - const integer c_mme_User_State_AVP_Code := 1497; - // Ref: table 7.3.1/1 - const integer c_sgsn_User_State_AVP_Code := 1498; - // Ref: table 7.3.1/1 - const integer c_user_State_AVP_Code := 1499; - // Ref: table 7.3.1/1 - const integer c_mme_Location_Information_AVP_Code := 1600; - // Ref: table 7.3.1/1 - const integer c_sgsn_Location_Information_AVP_Code := 1601; - // Ref: table 7.3.1/1 - const integer c_e_UTRAN_Cell_Global_Identity_AVP_Code := 1602; - // Ref: table 7.3.1/1 - const integer c_tracking_Area_Identity_AVP_Code := 1603; - // Ref: table 7.3.1/1 - const integer c_cell_Global_Identity_AVP_Code := 1604; - // Ref: table 7.3.1/1 - const integer c_routing_Area_Identity_AVP_Code := 1605; - // Ref: table 7.3.1/1 - const integer c_location_Area_Identity_AVP_Code := 1606; - // Ref: table 7.3.1/1 - const integer c_service_Area_Identity_AVP_Code := 1607; - // Ref: table 7.3.1/1 - const integer c_geographical_Information_AVP_Code := 1608; - // Ref: table 7.3.1/1 - const integer c_geodetic_Information_AVP_Code := 1609; - // Ref: table 7.3.1/1 - const integer c_current_Location_Retrieved_AVP_Code := 1610; - // Ref: table 7.3.1/1 - const integer c_age_Of_Location_Information_AVP_Code := 1611; - // Ref: table 7.3.1/1 - const integer c_active_APN_AVP_Code := 1612; - // Ref: table 7.3.1/1 - const integer c_error_Diagnostic_AVP_Code := 1614; - // Ref: table 7.3.1/1 - const integer c_ext_PDP_Address_AVP_Code := 1621; - // Ref: table 7.3.1/1 - const integer c_ue_SRVCC_Capability_AVP_Code := 1615; - // Ref: table 7.3.1/1 - const integer c_mps_Priority_AVP_Code := 1616; - // Ref: table 7.3.1/1 - const integer c_vplmn_LIPA_Allowed_AVP_Code := 1617; - // Ref: table 7.3.1/1 - const integer c_lipa_Permission_AVP_Code := 1618; - // Ref: table 7.3.1/1 - const integer c_subscribed_Periodic_RAU_TAU_Timer_AVP_Code := 1619; - // Ref: table 7.3.1/1 - const integer c_ext_PDP_Type_AVP_Code := 1620; - // Ref: table 7.3.1/1 - const integer c_sipto_Permission_AVP_Code := 1613; - // Ref: table 7.3.1/1 - const integer c_mdt_Configuration_AVP_Code := 1622; - // Ref: table 7.3.1/1 - const integer c_job_Type_AVP_Code := 1623; - // Ref: table 7.3.1/1 - const integer c_area_Scope_AVP_Code := 1624; - // Ref: table 7.3.1/1 - const integer c_list_Of_Measurements_AVP_Code := 1625; - // Ref: table 7.3.1/1 - const integer c_reporting_Trigger_AVP_Code := 1626; - // Ref: table 7.3.1/1 - const integer c_report_Interval_AVP_Code := 1627; - // Ref: table 7.3.1/1 - const integer c_report_Amount_AVP_Code := 1628; - // Ref: table 7.3.1/1 - const integer c_event_Threshold_RSRP_AVP_Code := 1629; - // Ref: table 7.3.1/1 - const integer c_event_Threshold_RSRQ_AVP_Code := 1630; - // Ref: table 7.3.1/1 - const integer c_logging_Interval_AVP_Code := 1631; - // Ref: table 7.3.1/1 - const integer c_logging_Duration_AVP_Code := 1632; - // Ref: table 7.3.1/1 - const integer c_relay_Node_Indicator_AVP_Code := 1633; - // Ref: table 7.3.1/1 - const integer c_mdt_User_Consent_AVP_Code := 1634; - // Ref: table 7.3.1/1 - const integer c_puer_Flags_AVP_Code := 1635; - // Ref: table 7.3.1/1 - const integer c_clr_Flags_AVP_Code := 1638; - // Ref: table 7.3.1/1 - } - group AVPCodeConstantsOther { - const integer c_gMLC_Address_AVP_Code := 2405; - // Ref: TS 129 173 6.4.7 - const integer c_service_Selection_AVP_Code := 493; - // Ref: IETF RFC 5778 6.2 - const integer c_mIP_Home_Agent_Address_AVP_Code := 334; - // Ref: IETF RFC 4004 7.40 - const integer c_mIP_Home_Agent_Host_AVP_Code := 348; - // Ref: IETF RFC 4004 7.11 - const integer c_mIP6_Home_Link_Prefix_AVP_Code := 125; - // Ref: IETF RFC 5447 4.2.4 - const integer c_mIP6_Agent_Info_AVP_Code := 486; - // Ref: 7.3.45 - IETF RFC 5447 - const integer c_visited_Network_Identifier_AVP_Code := 600; - // Ref: TS 129 229 6.3.1 - const integer c_max_Requested_Bandwidth_DL_AVP_Code := 515; - // Ref: TS 129 214 5.3.14 - const integer c_max_Requested_Bandwidth_UL_AVP_Code := 516; - // Ref: TS 129 214 5.3.15 - const integer c_threeGPP_Charging_Characteristics_AVP_Code := 13; - // Ref: TS 129 601 - const integer c_served_Party_IP_Address_AVP_Code := 848; - // Ref: TS 132 299 7.2.187 - const integer c_qoS_Class_Identifier_AVP_Code := 1028; - // Ref: TS 129 212 5.3.17 - const integer c_pDP_Address_AVP_Code := 1227; - // Ref: TS 132 299 7.2.137 - const integer c_confidentiality_Key_AVP_Code := 625; - // Ref: TS 129 229 - const integer c_integrity_Key_AVP_Code := 626; - // Ref: TS 129 229 - const integer c_cSG_Access_Mode_AVP_Code := 2317; - // Ref: TS 132 299 7.2.46A - const integer c_cSG_Membership_Indication_AVP_Code := 2318; - // Ref: TS 132 299 7.2.46B - const integer c_user_CSG_Information_AVP_Code := 2319; - // Ref: TS 132 299 7.2.240A - } - } - } - - } // End of group BasicTypes - -} // End of module DiameterS6a_TypesAndValues \ No newline at end of file diff --git a/ttcn/LibIms b/ttcn/LibIms index fd3b61d..d640fce 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 -- GitLab From edc1b714b7a372ea18d94f6040e3f441105bf3d1 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 29 Jun 2020 08:41:37 +0200 Subject: [PATCH 109/176] added attach TPs --- ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn index ad17613..2ae8396 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn @@ -125,14 +125,14 @@ module AtsImsIot_TD_ATT{ // Check that user A can register to IMS A //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check - //f_mtc_check_TP_S6A_MME_AIR_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - //f_mtc_check_TP_S6A_HSS_AIA_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_MME_ULR_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_HSS_ULA_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - f_mtc_check_TP_GX_PGW_CCR_01 ( vc_vxlte_monitor_components.gx, false ); - f_mtc_check_TP_S9_PCRF_CCR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR, CCA – Events 4, 5) - f_mtc_check_TP_S9_PCRF_CCA_01 ( vc_vxlte_monitor_components.s9, false ); - f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); + f_mtc_check_TP_S6A_MME_AIR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (AIR – Event 2) + f_mtc_check_TP_S6A_HSS_AIA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (AIA – Event 3) + f_mtc_check_TP_S6A_MME_ULR_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 4) + f_mtc_check_TP_S6A_HSS_ULA_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 5) + f_mtc_check_TP_GX_PGW_CCR_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR - Event 6) + f_mtc_check_TP_S9_PCRF_CCR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 7) + f_mtc_check_TP_S9_PCRF_CCA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA - Event 8) + f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA - Event 9) //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 @@ -185,7 +185,8 @@ module AtsImsIot_TD_ATT{ //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2) f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) - //?f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5) + f_mtc_check_TP_GX_PGW_CCR_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR - Event 4) + f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 5) //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 -- GitLab From 3e401e73b069e2de39f7b5f1b40f780e54c47a70 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 29 Jun 2020 08:41:56 +0200 Subject: [PATCH 110/176] added de-attach TPs --- ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 308 +++++++++++++++++++++------ 1 file changed, 248 insertions(+), 60 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn index dde6ace..d9bec49 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn @@ -29,6 +29,7 @@ module AtsImsIot_TD_DTC{ import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; + import from AtsImsIot_TP_behavior_RX all; import from AtsImsIot_TP_behavior_ISC all; import from AtsImsIot_TP_behavior_S6A all; import from AtsImsIot_TP_behavior_S9 all; @@ -45,25 +46,34 @@ module AtsImsIot_TD_DTC{ testcase TC_VxLTE_INT_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){ f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); + //f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + // test body + + f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3) + + //postamble //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + //f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -81,25 +91,52 @@ module AtsImsIot_TD_DTC{ testcase TC_VxLTE_INT_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_RX_INTERFACENAME,PX_DIAMETER_CX_IH_INTERFACENAME,PX_DIAMETER_CX_SH_INTERFACENAME,PX_SIP_MW_PS_INTERFACENAME,PX_SIP_MW_IS_INTERFACENAME/*,PX_SIP_MW_SI_INTERFACENAME*/})){ f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); + //f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //postamble + //f_PO_user_home_deregistration ( v_ueB ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + // test body + // Check that user A can register to IMS A + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message + //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check + f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3) + f_mtc_check_TP_MW_PCSCF_REGISTER_09 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 5) + //f_mtc_check_TP_RX_PCSCF_ASR_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4) + f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 13) + + f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 8) + //f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 8,11) + + f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 7) + f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 10,11) + + f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 14) + + //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + //postamble //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + //f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -123,7 +160,7 @@ module AtsImsIot_TD_DTC{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_RX_INTERFACENAME,PX_DIAMETER_CX_IH_INTERFACENAME,PX_DIAMETER_CX_SH_INTERFACENAME,PX_SIP_MW_PS_INTERFACENAME,PX_SIP_MW_IS_INTERFACENAME/*,PX_SIP_MW_SI_INTERFACENAME*/})){ f_cf_createVxLteMonitor(); // map/connect component ports @@ -132,7 +169,36 @@ module AtsImsIot_TD_DTC{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //TODO: user b enable and registration + //TODO: make call + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + // test body + f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3) + + + //f_mtc_check_TP_RX_PCSCF_ASR_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4) + f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 4,5) + f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 6,7) + //TODO: TP for check BYE? + f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 11,12) + f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 13,14) + + //f_mtc_check_TP_MW_PCSCF_REGISTER_11 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8,9,15,22) + + f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 18) + //f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 18,21) + + f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 16,17) + f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 19,20) + + //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); + //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5 + + //postamble //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -153,25 +219,35 @@ module AtsImsIot_TD_DTC{ testcase TC_VxLTE_INT_DTC_04 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); + //f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + // test body + f_mtc_check_TP_S6A_HSS_CLR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CLR – Event 1) + f_mtc_check_TP_GX_PCRF_CCA_03 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3,5) + f_mtc_check_TP_S6A_MME_CLA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CLA – Event 6) + + //postamble //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + //f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -189,25 +265,34 @@ module AtsImsIot_TD_DTC{ testcase TC_VxLTE_INT_DTC_05 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S6A_INTERFACENAME})){ f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); + //f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + //f_mtc_userRadioEnabled ( v_ueA, false, true ); + // test body + f_mtc_check_TP_S6A_MME_PUR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUR – Event 1) + f_mtc_check_TP_S6A_HSS_PUA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUA – Event 2) + + //postamble //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + //f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -229,25 +314,38 @@ module AtsImsIot_TD_DTC{ testcase TC_VxLTE_RMI_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME})){ f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); + //f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + // test body + + f_mtc_check_TP_GX_PGW_CCR_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1) + f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2) + f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4) + + //postamble - //unmap/disconnet component ports - f_cf_user_down ( v_ueB ); + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -265,9 +363,9 @@ module AtsImsIot_TD_DTC{ testcase TC_VxLTE_RMI_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD @@ -277,13 +375,41 @@ module AtsImsIot_TD_DTC{ // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); + //f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + // test body + + f_mtc_check_TP_GX_PGW_CCR_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1) + f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2) + f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4) + + f_mtc_check_TP_S9_PCRF_ASR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6) + f_mtc_check_TP_RX_PCSCF_ASR_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7) + + //f_mtc_check_TP_MW_PCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8) + f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9) + //f_mtc_check_TP_MW_SCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 10) + + f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 11,12) + f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 14,15) + + f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22) + f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23) + f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25) + + + //postamble //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + //f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -316,7 +442,44 @@ module AtsImsIot_TD_DTC{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + // test body + + f_mtc_check_TP_GX_PGW_CCR_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1) + f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2) + f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4) + + //f_mtc_check_TP_MW_PCSCF_BYE_07 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8) + f_mtc_check_TP_IC_IBCF_BYE_03 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9) + + f_mtc_check_TP_S9_PCRF_ASR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6) + f_mtc_check_TP_RX_PCSCF_ASR_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7) + f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22) + f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23) + f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25) + + f_mtc_check_TP_S9_PCRF_ASR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6) + f_mtc_check_TP_RX_PCSCF_ASR_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7) + + //f_mtc_check_TP_MW_PCSCF_REGISTER_13 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8) + f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9) + //f_mtc_check_TP_MW_SCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 10) + + f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 11,12) + f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 14,15) + + f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22) + f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23) + f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25) + + + //postamble //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -352,7 +515,23 @@ module AtsImsIot_TD_DTC{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + // test body + f_mtc_check_TP_S6A_HSS_CLR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CCA – Event 4) + + f_mtc_check_TP_GX_PGW_CCR_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1) + f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2) + f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3) + f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4) + + f_mtc_check_TP_S6A_MME_CLA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CCA – Event 4) + + //postamble //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -372,29 +551,38 @@ module AtsImsIot_TD_DTC{ */ testcase TC_VxLTE_RMI_DTC_05 ( ) runs on ImsTestCoordinator system IotSystemInterface { - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + //var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + //var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - f_setVxLteMonIterfacesAvailability(); + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_user_up ( v_ueB ); - f_cf_VxLteMonitor_Up(); + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + //f_cf_user_up ( v_ueB ); + f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble - - //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + //f_mtc_userRegistration ( v_ueA, v_userInfoA ); + //f_PO_user_home_deregistration ( v_ueA ); + //f_mtc_userRadioEnabled ( v_ueA, false, true ); + // test body + f_mtc_check_TP_S6A_MME_PUR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUR – Event 1) + f_mtc_check_TP_S6A_HSS_PUA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUA – Event 2) + + //postamble + + //unmap/disconnect component ports + //f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); }else{ //log... setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") -- GitLab From 288afc836dc80dbd8d2e75d76d9d217f1c98badd Mon Sep 17 00:00:00 2001 From: Bostjan Date: Mon, 29 Jun 2020 09:18:45 +0200 Subject: [PATCH 111/176] TDs added in Control module. --- ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn index 1e0d88d..ef002b6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn @@ -18,14 +18,57 @@ module AtsImsIot_TestControl { // REG TCs execute(TC_VxLTE_INT_REG_01()); + //execute(TC_VxLTE_INT_REG_02()); + //execute(TC_VxLTE_INT_REG_03()); + //execute(TC_VxLTE_RMI_REG_01()); + //execute(TC_VxLTE_RMI_REG_02()); + //execute(TC_VxLTE_RMI_REG_03()); // INI TCs //execute(TC_VxLTE_INT_INI_01()); + //execute(TC_VxLTE_INT_INI_02()); + //execute(TC_VxLTE_INT_INI_03()); + //execute(TC_VxLTE_INT_INI_04()); + //execute(TC_VxLTE_INT_REL_01()); + //execute(TC_VxLTE_INT_REL_02()); + //execute(TC_VxLTE_INT_REL_03()); + //execute(TC_VxLTE_INT_ABT_01()); + //execute(TC_VxLTE_INT_ABT_02()); + //execute(TC_VxLTE_INT_REJ_01()); + //execute(TC_VxLTE_INT_REJ_02()); + //execute(TC_VxLTE_RMI_INI_01()); + //execute(TC_VxLTE_RMI_INI_02()); + //execute(TC_VxLTE_RMI_INI_03()); + //execute(TC_VxLTE_RMI_INI_04()); + //execute(TC_VxLTE_RMI_REL_01()); + //execute(TC_VxLTE_RMI_REL_02()); + //execute(TC_VxLTE_RMI_REL_03()); + //execute(TC_VxLTE_RMI_ABT_01()); + //execute(TC_VxLTE_RMI_ABT_02()); + //execute(TC_VxLTE_RMI_REJ_01()); + //execute(TC_VxLTE_RMI_REJ_02()); + // DRG TCs //execute(TC_VxLTE_INT_DRG_01()); + //execute(TC_VxLTE_INT_DRG_02()); + //execute(TC_VxLTE_INT_DRG_03()); + //execute(TC_VxLTE_INT_DRG_04()); + //execute(TC_VxLTE_RMI_DRG_01()); + //execute(TC_VxLTE_RMI_DRG_02()); + //execute(TC_VxLTE_RMI_DRG_03()); + //execute(TC_VxLTE_RMI_DRG_04()); // DTC TCs //execute(TC_VxLTE_INT_DTC_01()); + //execute(TC_VxLTE_INT_DTC_02()); + //execute(TC_VxLTE_INT_DTC_03()); + //execute(TC_VxLTE_INT_DTC_04()); + //execute(TC_VxLTE_INT_DTC_05()); + //execute(TC_VxLTE_RMI_DTC_01()); + //execute(TC_VxLTE_RMI_DTC_02()); + //execute(TC_VxLTE_RMI_DTC_03()); + //execute(TC_VxLTE_RMI_DTC_04()); + //execute(TC_VxLTE_RMI_DTC_05()); } } \ No newline at end of file -- GitLab From 51688c2ce703503e085a175c7bf29b6392bec4dd Mon Sep 17 00:00:00 2001 From: Rennoch Date: Mon, 29 Jun 2020 10:20:55 +0200 Subject: [PATCH 112/176] cleaning some comments for TPs at Ic --- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 77 ++++++++-------------------- ttcn/LibIms | 2 +- 2 files changed, 21 insertions(+), 58 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 48c5746..8a9697f 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -69,15 +69,15 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); -// f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 -// f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 + f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 - //f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 6 + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 6 f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 @@ -87,14 +87,14 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9 f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 9 - //f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mw, true, true); // Event 11 + f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, true, true); // Event 11 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 14 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 15 - //f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, true); // Event 16 + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, true); // Event 16 f_mtc_userCheckRinging(v_ueB); f_mtc_userCheckPeerIsRinging(v_ueA); @@ -104,18 +104,18 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 18 - //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 20 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 20 f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 21 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 22 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 23 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 24 - //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 - //f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 26 - //f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 27 - //f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // ACK – Event 29 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 26 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 27 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // ACK – Event 29 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -209,50 +209,15 @@ module AtsImsIot_TD_INI{ //TP_GM_PCSCF_ACK_02 (Event 29) f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 - - - - -// //f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); -// -// f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 -// f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 3 -// -// f_mtc_check_TP_GM_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); -// f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); -// - // f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 - // f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 14 -// -// f_mtc_userCheckRinging(v_ueA); -// f_mtc_userCheckPeerIsRinging(v_ueB); -// f_mtc_userAnswerCall(v_ueA); -// -// f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 18 -// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 23 -// - // f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 - // f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 28 -// - // f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 1 - // f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 1 - // f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 1 -// f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 26 - // f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 - // f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 - // f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 16 - // f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 - // f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 - // f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 25 -// -// f_mtc_userCheckCallEstablished(v_ueA); // Event 30 -// f_mtc_userCheckCallEstablished(v_ueB); // Event 30 -// -// // Postamble -// f_mtc_EndCall(v_ueA); -// f_PO_user_home_deregistration(v_ueA); -// f_PO_user_home_deregistration(v_ueB); -// //f_cf_int_call_down(v_config); + + f_mtc_userCheckCallEstablished(v_ueA); // Event 30 + f_mtc_userCheckCallEstablished(v_ueB); // Event 30 + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); + //f_cf_int_call_down(v_config); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -329,8 +294,6 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 14 f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 15 -// f_mtc_userCheckNewMediaStream(v_ueB); -// f_mtc_userCheckNewMediaStream(v_ueA); f_mtc_userCheckCallEstablished(v_ueA); // Event 18 f_mtc_userCheckCallEstablished(v_ueB); // Event 18 @@ -395,7 +358,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 4 f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // Event 5 - //f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 //TP_RX_PCSCF_AAR_10 (AAR – Event 7) //TP_GX_PCRF_RAR_01 (RAR – Event 8) diff --git a/ttcn/LibIms b/ttcn/LibIms index d640fce..fd3b61d 160000 --- a/ttcn/LibIms +++ b/ttcn/LibIms @@ -1 +1 @@ -Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 +Subproject commit fd3b61dfd76385d9bc8a51c518649644418ce36e -- GitLab From 6825013b626c6bef3024a3ff1f7da12c0f0be49c Mon Sep 17 00:00:00 2001 From: Bostjan Date: Mon, 29 Jun 2020 10:35:40 +0200 Subject: [PATCH 113/176] Minor changes done on DTC and INI modules to resolve TODOs and interface updates. --- ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 36 ++- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 393 ++++++++++++++++++--------- 2 files changed, 300 insertions(+), 129 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn index d9bec49..26d31c6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn @@ -97,7 +97,14 @@ module AtsImsIot_TD_DTC{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_RX_INTERFACENAME,PX_DIAMETER_CX_IH_INTERFACENAME,PX_DIAMETER_CX_SH_INTERFACENAME,PX_SIP_MW_PS_INTERFACENAME,PX_SIP_MW_IS_INTERFACENAME/*,PX_SIP_MW_SI_INTERFACENAME*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME/*, + PX_SIP_MW_SI_INTERFACENAME*/})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -369,7 +376,16 @@ module AtsImsIot_TD_DTC{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME/*, + PX_SIP_MW_SI_INTERFACENAME*/})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -433,7 +449,16 @@ module AtsImsIot_TD_DTC{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_CX_IH_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME/*, + PX_SIP_MW_SI_INTERFACENAME*/})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -506,7 +531,10 @@ module AtsImsIot_TD_DTC{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_S6A_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 48c5746..6b32e78 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -53,7 +53,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -69,15 +75,15 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); -// f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 1 -// f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, true, true); + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, false); // Event 1 + f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, false); f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 - //f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, true, true); // Event 6 + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, false); // Event 6 f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 @@ -87,14 +93,14 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9 f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 9 - //f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mw, true, true); // Event 11 + f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, false); // Event 11 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 14 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 15 - //f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, true); // Event 16 + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, false); // Event 16 f_mtc_userCheckRinging(v_ueB); f_mtc_userCheckPeerIsRinging(v_ueA); @@ -104,18 +110,18 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 18 - //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 20 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, false); // Event 20 f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 21 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 22 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 23 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 24 - //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 - //f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 26 - //f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, true, true); // Event 27 - //f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // ACK – Event 29 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, false); // Event 26 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, false); // Event 27 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // ACK – Event 29 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -153,7 +159,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -172,7 +184,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 1 f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1 - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true,true); // ( Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, true,true); // ( Event 3) f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) @@ -186,7 +198,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) //TP_MW_PCSCF_180RINGING_02 ( Event 14) - f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 14 + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, true); // Event 14 //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) @@ -205,7 +217,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 //TP_MW_PCSCF_ACK_02 (Event 28) - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 28 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, true, true); // Event 28 //TP_GM_PCSCF_ACK_02 (Event 29) f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 @@ -216,23 +228,23 @@ module AtsImsIot_TD_INI{ // //f_mtc_userInitiateCall (v_ueB, v_userTelInfoA); // // f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 -// f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 3 +// f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, true, true); // Event 3 // // f_mtc_check_TP_GM_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); -// f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, true, true); +// f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.mwPS, true, true); // // f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 - // f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 14 + // f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, true); // Event 14 // // f_mtc_userCheckRinging(v_ueA); // f_mtc_userCheckPeerIsRinging(v_ueB); // f_mtc_userAnswerCall(v_ueA); // // f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 18 -// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, true); // Event 23 +// f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, true); // Event 23 // // f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 - // f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 28 + // f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, true, true); // Event 28 // // f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 1 // f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 1 @@ -284,7 +296,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -309,12 +327,12 @@ module AtsImsIot_TD_INI{ // Test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 3 - f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 4 + f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwPS); // Event 3 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwIS); // Event 4 f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 5 f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic,1); // 200 OK – Event 6 - f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 8 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS); // Event 8 //TP_RX_PCSCF_AAR_09 (AAR – Event 9) //TP_GX_PCRF_RAR_01 (RAR – Event 10) @@ -327,7 +345,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 13 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 14 - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 15 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS); // Event 15 // f_mtc_userCheckNewMediaStream(v_ueB); // f_mtc_userCheckNewMediaStream(v_ueA); @@ -367,7 +385,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -392,8 +416,8 @@ module AtsImsIot_TD_INI{ // Test body f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 2 f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 3 - f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 4 - f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // Event 5 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 4 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIB); // Event 5 //f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 @@ -407,9 +431,9 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 11 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS); // Event 11 f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 - f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 16 + f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS); // Event 16 f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // 200 OK – Event 13 // f_mtc_userCheckNewMediaStream(v_ueA); @@ -451,7 +475,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -474,7 +504,7 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 3 + f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.mwPS); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 //TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -487,7 +517,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 12 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS); // Event 12 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 f_mtc_userCheckCallTerminated(v_ueA); // Event 14 @@ -524,7 +554,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -547,7 +583,7 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 3 + f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.mwPS); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 //TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -559,7 +595,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 12 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS); // Event 12 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 f_mtc_userCheckCallTerminated(v_ueA); // Event 14 @@ -596,7 +632,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -620,9 +662,9 @@ module AtsImsIot_TD_INI{ f_mtc_userLooseConnection(v_ueB); - f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA); // Event 2 - f_mtc_check_TP_MW_SCSCF_BYE_03(vc_vxlte_monitor_components.gmA/*FIXME: mwSI*/); // Event 3 - f_mtc_check_TP_MW_SCSCF_BYE_01(vc_vxlte_monitor_components.gmA/*FIXME: mwIB*/); // Event 3 + f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.mwPS); // Event 2 + f_mtc_check_TP_MW_SCSCF_BYE_03(vc_vxlte_monitor_components.mwIS); // Event 3 + f_mtc_check_TP_MW_SCSCF_BYE_01(vc_vxlte_monitor_components. mwIB); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 4 f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA); // Event 5 @@ -673,7 +715,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -682,7 +730,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_01 (Event 1) //Gm TP_GM_PCSCF_INVITE_01 (Event 3) @@ -701,10 +749,10 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 8) //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) - f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 8) + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8) f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 8) - f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 9) - f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIB); // (Event 9) //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) @@ -734,10 +782,10 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 22) //MwPS TP_MW_PCSCF_CANCEL_01 (Event 23) - f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA); // Event 23 + f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.mwPS); // Event 23 //MwSI TP_MW_SCSCF_CANCEL_01 (Event 24) //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) - f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 24) + f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.mwIS); // (Event 24) f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25) //Gx TP_GX_PGW_RAA_03 (RAA – Event 26) @@ -750,12 +798,12 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 31) //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 32) f_mtc_check_TP_IC_IBCF_CANCEL_OK_01(vc_vxlte_monitor_components.ic); // (OK – Event 28) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA); // (Event 30) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS); // (Event 30) f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA); // (Event 31) f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 32) //MwPS TP_MW_PCSCF_487INVITE_01 (Event 34) - f_mtc_check_TP_MW_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA); // Event 34 + f_mtc_check_TP_MW_PCSCF_487INVITE_01(vc_vxlte_monitor_components.mwPS); // Event 34 //Gm TP_GM_PCSCF_487INVITE_01 (Event 35) f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA); // Event 35 //Ic TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 37) @@ -791,7 +839,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -800,7 +854,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_01 (Events 1,2) @@ -821,8 +875,8 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 10) //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) - f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 8) - f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9) f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 10) f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) @@ -835,8 +889,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_486INVITE_01 (Event 13) //Gm TP_GM_PCSCF_486INVITE_01 (Event 14) f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic, false); // (Event 11) - f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 12) - f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 12) + f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 13) f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 14) //Rx TP_RX_PCSCF_STR_05 (STR – Event 15) @@ -884,7 +938,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -893,7 +953,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); @@ -916,8 +976,8 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) - f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 4) - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 5) + f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 5) //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 6) //Gx TP_GX_PCRF_RAR_01 (RAR – Event 7) @@ -947,8 +1007,8 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 18) //Ic TP_IC_IBCF_180RESP_02 (180 Ringing – Event 18) //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 18) - f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB); // (Event 16) - f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB); // (Event 17) + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS); // (Event 16) + f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.mwIS); // (Event 17) f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) @@ -961,8 +1021,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_CANCEL_02 (Event 22) //Gm TP_GM_PCSCF_CANCEL_02 (Event 23) f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 20) - f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB); // (Event 21) - f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB); // (Event 22) + f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.mwIS); // (Event 21) + f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.mwPS); // (Event 22) f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB); // (Event 23) //Rx TP_RX_PCSCF_STR_04 (STR – Event 24) @@ -980,10 +1040,10 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_487INVITE_02 (Event 32) //MwPS TP_MW_PCSCF_487INVITE_02 (Event 33) f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 28) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 29) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS); // (Event 29) f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 31) f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 32) - f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 33) + f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 33) //Ic TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 35) //Ic TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 38) @@ -1024,7 +1084,13 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1033,7 +1099,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_01 (Events 1,2) @@ -1045,8 +1111,8 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 4) - f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 4) + f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4) //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 6) //Gx TP_GX_PCRF_RAR_01 (RAR – Event 7) @@ -1064,8 +1130,8 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_486INVITE_02 (486 Busy – Event 14) f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 11) - f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 12) - f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 12) + f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 13) f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic, false); // (486 Busy – Event 14) //Rx TP_RX_PCSCF_STR_06 (STR – Event 15) @@ -1115,7 +1181,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1124,7 +1197,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Gm TP_GM_PCSCF_INVITE_03 (Event 1) f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1) @@ -1145,7 +1218,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_INVITE_03 (Event 8) //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 9) //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9) - f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 8) + f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 8) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9) f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9) @@ -1153,7 +1226,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_180RINGING_03 (Event 13) //Rx TP_RX_PCSCF_AAR_04 (AAR – Events 14) f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12) - f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS); // (Event 13) f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14) //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) @@ -1173,7 +1246,7 @@ module AtsImsIot_TD_INI{ //Rx TP_RX_PCSCF_AAR_05 (AAR – Events 25) f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB); // (Event 20) f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 23) - f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 24) + f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS); // (Event 24) f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25) //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) @@ -1192,7 +1265,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_ACK_03 (Event 33) f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 31) f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 32) - f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 33) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS); // (Event 33) //Rtp TP_RTP_06 (Event 36) @@ -1224,7 +1297,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1233,7 +1313,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 2) //Ic TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 2) @@ -1241,7 +1321,7 @@ module AtsImsIot_TD_INI{ //Rx TP_RX_PCSCF_AAR_06 (AAR – Events 4) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 2) f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 2) - f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 3) f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) @@ -1275,7 +1355,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_180RINGING_04 (Event 18) //Ic TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 19) - f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB); // (Event 18) + f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.mwPS); // (Event 18) f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 19) //Gm TP_GM_PCSCF_200OK_04 (Event 22) @@ -1299,10 +1379,10 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_ACK_01 (ACK – Event 33) //MwPS TP_MW_PCSCF_ACK_04 (Event 34) //Gm TP_GM_PCSCF_ACK_04 (Event 35) - f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 29) + f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS); // (Event 29) f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 30) f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33) - f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 34) + f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS); // (Event 34) f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 35) //Rtp TP_RTP_06 (Event 36) @@ -1337,7 +1417,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1346,7 +1433,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_06 (Event 1) @@ -1356,8 +1443,8 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_REINVITE_01 (INVITE – Event 5) //Ic TP_IC_IBCF_2XXRESP_04 (200 OK – Event 8) f_mtc_check_TP_GM_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2) - f_mtc_check_TP_MW_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 3) - f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_MW_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 3) + f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIS); // (Event 4) f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 5) f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 8) @@ -1379,7 +1466,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_ACK_03 (Event 19) f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 17) f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 18) - f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 19) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS); // (Event 19) //Rtp TP_RTP_05 (Event 23) @@ -1410,7 +1497,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1419,7 +1513,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_06 (Event 1) @@ -1427,8 +1521,8 @@ module AtsImsIot_TD_INI{ //MwSI TP_MW_SCSCF_RE_INVITE_04 (Event 4) //MwPS TP_MW_PCSCF_RE_INVITE_04 (Event 5) f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 3) - f_mtc_check_TP_MW_SCSCF_RE_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 4) - f_mtc_check_TP_MW_PCSCF_RE_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 5) + f_mtc_check_TP_MW_SCSCF_RE_INVITE_04(vc_vxlte_monitor_components.mwIS); // (Event 4) + f_mtc_check_TP_MW_PCSCF_RE_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 5) //Gm TP_GM_PCSCF_RE_INVITE_04 (Event 6) //Gm TP_GM_PCSCF_200OK_04 (Event 7) @@ -1450,12 +1544,12 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_04 (Event 14) //Ic TP_IC_IBCF_2XXRESP_04 (200 OK – Event 16) - f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS); // (Event 14) f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 16) //MwPS TP_MW_PCSCF_ACK_04 (Event 21) //Gm TP_GM_PCSCF_ACK_04 (Event 22) - f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 21) + f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS); // (Event 21) f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 22) //Rtp TP_RTP_05 (Event 23) @@ -1490,7 +1584,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1499,7 +1600,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_06 (Event 1) @@ -1508,7 +1609,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_BYE_04 (Event 3) //Ic TP_IC_IBCF_BYE_01 (Event 4) f_mtc_check_TP_GM_PCSCF_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 2) - f_mtc_check_TP_MW_PCSCF_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 3) + f_mtc_check_TP_MW_PCSCF_BYE_04(vc_vxlte_monitor_components.mwPS); // (Event 3) f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (Event 4) //Rx TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -1526,7 +1627,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_BYE_04 (Event 14) //Gm TP_GM_PCSCF_200OK_BYE_04 (Event 15) - f_mtc_check_TP_MW_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.mwPS); // (Event 14) f_mtc_check_TP_GM_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 15) //Rtp TP_RTP_04 (Events 16) @@ -1559,7 +1660,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1568,7 +1676,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_06 (Event 1) @@ -1576,7 +1684,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_BYE_05 (Event 3) //Ic TP_IC_IBCF_BYE_01 (BYE – Event 4) f_mtc_check_TP_GM_PCSCF_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 2) - f_mtc_check_TP_MW_PCSCF_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 3) + f_mtc_check_TP_MW_PCSCF_BYE_05(vc_vxlte_monitor_components.mwPS); // (Event 3) f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (BYE – Event 4) //Rx TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -1594,7 +1702,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_BYE_05 (Event 14) //Gm TP_GM_PCSCF_200OK_BYE_05 (Event 15) - f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.mwPS); // (Event 14) f_mtc_check_TP_GM_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 15) //Rtp TP_RTP_04 (Events 16) @@ -1625,7 +1733,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1634,12 +1749,12 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_06 (Event 1) //MwPS TP_MW_PCSCF_BYE_06 (Event 2) - f_mtc_check_TP_MW_PCSCF_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 2) + f_mtc_check_TP_MW_PCSCF_BYE_06(vc_vxlte_monitor_components.mwPS); // (Event 2) //Gm TP_GM_PCSCF_BYE_06 (Event 4) //Ic TP_IC_IBCF_BYE_01 (BYE – Event 5) @@ -1663,7 +1778,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_BYE_06 (Event 17) //MwSI TP_MW_PCSCF_200OK_BYE_05 (Event 16) f_mtc_check_TP_GM_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 15) - f_mtc_check_TP_MW_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 17) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.mwPS); // (Event 17) f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 16) //Rtp TP_RTP_04 (Events 18) @@ -1696,7 +1811,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1705,7 +1827,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_04 (Events 1) @@ -1729,7 +1851,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 10) //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 10) //Ic TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 13) - f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 9) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 10) f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 13) @@ -1753,7 +1875,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_CANCEL_03 (Event 24) //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) f_mtc_check_TP_GM_PCSCF_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 23) - f_mtc_check_TP_MW_PCSCF_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 24) + f_mtc_check_TP_MW_PCSCF_CANCEL_03(vc_vxlte_monitor_components.mwPS); // (Event 24) f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25) //Rx TP_RX_PCSCF_STR_04 (STR – Event 27) @@ -1773,14 +1895,14 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_CANCEL_03 (Event 35) //Gm TP_GM_PCSCF_200OK_CANCEL_03 (Event 36) f_mtc_check_TP_IC_IBCF_CANCEL_OK_03(vc_vxlte_monitor_components.ic); // (OK – Event 34) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 35) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.mwPS); // (Event 35) f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 36) //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 38) //MwPS TP_MW_PCSCF_487INVITE_03 (Event 39) //Gm TP_GM_PCSCF_487INVITE_03 (Event 40) f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 38) - f_mtc_check_TP_MW_PCSCF_487INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 39) + f_mtc_check_TP_MW_PCSCF_487INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 39) f_mtc_check_TP_GM_PCSCF_487INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 40) //Ic TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 43) @@ -1813,7 +1935,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1822,7 +1951,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_04 (Events 1) @@ -1848,11 +1977,11 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_486INVITE_03 (Event 13) //MwPS TP_MW_PCSCF_486INVITE_03 (Event 14) //Gm TP_GM_PCSCF_486INVITE_03 (Event 15) - f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 9) + f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 9) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 10) f_mtc_check_TP_IC_IBCF_486INVITE_03(vc_vxlte_monitor_components.ic, false); // (Event 13) - f_mtc_check_TP_MW_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_MW_PCSCF_486INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 14) f_mtc_check_TP_GM_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 15) //Rx TP_RX_PCSCF_STR_06 (STR – Event 16) @@ -1899,7 +2028,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -1908,7 +2044,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_04 (Events 1) @@ -1917,7 +2053,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_INVITE_04 (Event 4) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 3) - f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 4) //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 5) //S9 TP_S9_PCRF_AAR_01 (AAR – Event 6) @@ -1956,7 +2092,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_CANCEL_02 (CANCEL – Event 24) //MwPS TP_MW_PCSCF_CANCEL_04 (Event 25) f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 24) - f_mtc_check_TP_MW_PCSCF_CANCEL_04(vc_vxlte_monitor_components.gmB); // (Event 25) + f_mtc_check_TP_MW_PCSCF_CANCEL_04(vc_vxlte_monitor_components.mwPS); // (Event 25) //Gm TP_GM_PCSCF_CANCEL_04 (Event 26) //Rx TP_RX_PCSCF_STR_03 (STR – Event 27) @@ -1981,7 +2117,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 39) //Ic TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 42) f_mtc_check_TP_GM_PCSCF_487INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 37) - f_mtc_check_TP_MW_PCSCF_487INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 38) + f_mtc_check_TP_MW_PCSCF_487INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 38) f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 39) f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 42) @@ -2013,7 +2149,14 @@ module AtsImsIot_TD_INI{ f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({/*TODO*/})){ + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_DIAMETER_S9_INTERFACENAME, + PX_SIP_IC_INTERFACENAME, + PX_SIP_MW_PS_INTERFACENAME, + PX_SIP_MW_IS_INTERFACENAME})) + { f_cf_createVxLteMonitor(); // map/connect component ports @@ -2022,7 +2165,7 @@ module AtsImsIot_TD_INI{ f_cf_user_up ( v_ueB ); f_cf_VxLteMonitor_Up(); - //TODO preambel/test body/postamble + //test body //Rtp TP_RTP_04 (Events 1) @@ -2031,7 +2174,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_INVITE_04 (Event 4) f_mtc_check_TP_IC_IBCF_INVITE_05(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 3) - f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 4) //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 5) //S9 TP_S9_PCRF_AAR_01 (AAR – Event 6) @@ -2052,7 +2195,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_486INVITE_04 (Event 14) f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 11) f_mtc_check_TP_GM_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 12) - f_mtc_check_TP_MW_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 13) + f_mtc_check_TP_MW_PCSCF_486INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 13) f_mtc_check_TP_IC_IBCF_486INVITE_04(vc_vxlte_monitor_components.ic, false); // (Event 14) //Rx TP_RX_PCSCF_STR_03 (STR – Event 16) -- GitLab From 99bd9ddd238187e5d0fb41653e34f1d2aa2e073c Mon Sep 17 00:00:00 2001 From: pintar Date: Wed, 29 Jul 2020 23:21:47 +0200 Subject: [PATCH 114/176] Updates due to Edit help findings. --- test_purposes/Cx/TP_CX.tplan2 | 26 +++--- test_purposes/Gm/TP_GM.tplan2 | 134 ++++++++++++++--------------- test_purposes/Gx/TP_GX.tplan2 | 30 +++---- test_purposes/Ic/TP_IC.tplan2 | 100 +++++++++++----------- test_purposes/Mw/TP_MW_IS.tplan2 | 22 ++--- test_purposes/Mw/TP_MW_PS.tplan2 | 142 +++++++++++++++---------------- test_purposes/Mw/TP_MW_SI.tplan2 | 126 +++++++++++++-------------- test_purposes/Rtp/TP_Rtp.tplan2 | 12 +-- test_purposes/Rx/TP_RX.tplan2 | 50 +++++------ test_purposes/S9/TP_S9.tplan2 | 28 +++--- 10 files changed, 335 insertions(+), 335 deletions(-) diff --git a/test_purposes/Cx/TP_CX.tplan2 b/test_purposes/Cx/TP_CX.tplan2 index cea3197..5cc3ee8 100644 --- a/test_purposes/Cx/TP_CX.tplan2 +++ b/test_purposes/Cx/TP_CX.tplan2 @@ -25,8 +25,8 @@ Package TP_CX { Test objective "IUT successfully processes all mandatory AVPs in a MA-Request received due to S-CSCF registration notification procedure and sends SA-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.1.2", - "TS 129 229 (V15.0.0) [5], clauses 6.1.3 and 6.1.4" + "TS 129 228 [4], clause 6.1.2", + "TS 129 229 [5], clauses 6.1.3 and 6.1.4" Config Id CF_VxLTE_INT @@ -84,8 +84,8 @@ Package TP_CX { Test objective "IUT successfully processes all mandatory AVPs in a RT-Request received due to S-CSCF network de-registration notification procedure and sends RT-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.1.3", - "TS 129 229 (V15.0.0) [5], clauses 6.1.9 and 6.1.10" + "TS 129 228 [4], clause 6.1.3", + "TS 129 229 [5], clauses 6.1.9 and 6.1.10" Config Id CF_VxLTE_INT @@ -134,8 +134,8 @@ Package TP_CX { Test objective "IUT successfully processes all mandatory AVPs in a SA-Request received due to S-CSCF registration notification procedure and sends SA-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.3", - "TS 129 229 (V15.0.0) [5], clauses 6.1.7 and 6.1.8" + "TS 129 228 [4], clause 6.3", + "TS 129 229 [5], clauses 6.1.7 and 6.1.8" Config Id CF_VxLTE_INT @@ -188,8 +188,8 @@ Package TP_CX { Test objective "IUT successfully processes all mandatory AVPs in an SA-Request received due to S-CSCF de-registration procedure and sends SA-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.1.2.1, A.4.3", - "TS 129 229 (V15.0.0) [5], clauses 6.1.3 and 6.1.4" + "TS 129 228 [4], clause 6.1.2.1, A.4.3", + "TS 129 229 [5], clauses 6.1.3 and 6.1.4" Config Id CF_VxLTE_INT @@ -240,8 +240,8 @@ Package TP_CX { Test objective "IUT successfully processes all mandatory AVPs in a UA-Request received due to first UE initial registration and sends UA-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.1.1 and tables 6.1.1.1 and 6.1.1.2", - "TS 129 229 (V15.0.0) [5], clauses 6.1.1 and 6.1.2" + "TS 129 228 [4], clause 6.1.1 and tables 6.1.1.1 and 6.1.1.2", + "TS 129 229 [5], clauses 6.1.1 and 6.1.2" Config Id CF_VxLTE_INT @@ -295,7 +295,7 @@ Package TP_CX { Test objective "IUT successfully processes all mandatory AVPs in a UA-Request received due to protected UE initial registration and sends UA-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.1.1.1" + "TS 129 228 [4], clause 6.1.1.1" Config Id CF_VxLTE_INT @@ -335,7 +335,7 @@ Package TP_CX { Test objective "Verify that the IUT checks that the Private User Identity and the Public User Identity exists in the HSS and if not then IUT sets the appropriate experimental result code in the UA-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.1.1.1" + "TS 129 228 [4], clause 6.1.1.1" Config Id CF_VxLTE_INT @@ -374,7 +374,7 @@ Package TP_CX { Test objective "IUT successfully processes all mandatory AVPs in a UA-Request received due to UE de-registration and sends UA-Answer." Reference - "TS 129 228 (V15.1.0) [4], clause 6.1.1.1" + "TS 129 228 [4], clause 6.1.1.1" Config Id CF_VxLTE_INT diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index e8cf92a..7e1f50a 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -25,7 +25,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference - "TS 124 229 (V15.6.0) [1], clause 4.2A (1st paragraph)" + "TS 124 229 [1], clause 4.2A (1st paragraph)" Config Id CF_VxLTE_INT @@ -80,7 +80,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_INT @@ -142,7 +142,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" Config Id CF_VxLTE_INT @@ -205,7 +205,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_INT @@ -254,7 +254,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3" Config Id CF_VxLTE_RMI_B @@ -317,7 +317,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.13" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.13" Config Id CF_VxLTE_RMI_B @@ -381,7 +381,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1" Config Id CF_VxLTE_RMI_B @@ -430,7 +430,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.1" Config Id CF_VxLTE_INT @@ -462,7 +462,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -498,7 +498,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.1" Config Id CF_VxLTE_INT @@ -535,7 +535,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_INT @@ -578,7 +578,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" + "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_RMI_B @@ -622,7 +622,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2" + "ETSI TS 124 229 [1], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_INT @@ -656,7 +656,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2" + "ETSI TS 124 229 [1], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2" Config Id CF_VxLTE_RMI_B @@ -692,7 +692,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) NOTIFY (IMS Administrative de-registration)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -727,7 +727,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 5.4.4.1 and Clause 5.4.4.2 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 5.4.4.1 and Clause 5.4.4.2 and Clause 6.1" Config Id CF_VxLTE_INT @@ -772,7 +772,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -815,7 +815,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -858,7 +858,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -901,7 +901,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -936,7 +936,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -984,7 +984,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -1019,7 +1019,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -1067,7 +1067,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -1104,7 +1104,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_INT @@ -1158,7 +1158,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -1197,7 +1197,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.5 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -1251,7 +1251,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1290,7 +1290,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.4 and 6.1.1" Config Id CF_VxLTE_INT @@ -1344,7 +1344,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_B @@ -1383,7 +1383,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.4 and 6.1.1" Config Id CF_VxLTE_RMI_A @@ -1437,7 +1437,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1478,7 +1478,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1526,7 +1526,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1567,7 +1567,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_A @@ -1613,7 +1613,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1657,7 +1657,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1703,7 +1703,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_B @@ -1749,7 +1749,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_A @@ -1795,7 +1795,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" + "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_INT @@ -1837,7 +1837,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" + "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_INT @@ -1879,7 +1879,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Network initiated)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" + "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_INT @@ -1921,7 +1921,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" + "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -1963,7 +1963,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" + "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -2005,7 +2005,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE (Network initiated)." Reference - "ETIS TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" + "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -2045,7 +2045,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_INT @@ -2094,7 +2094,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_INT @@ -2143,7 +2143,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Network initiated)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_INT @@ -2180,7 +2180,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -2229,7 +2229,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -2278,7 +2278,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Network initiated)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -2316,7 +2316,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2357,7 +2357,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2398,7 +2398,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2439,7 +2439,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -2481,7 +2481,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2520,7 +2520,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2564,7 +2564,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_B @@ -2603,7 +2603,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.4 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.4 and 6.1.1" Config Id CF_VxLTE_RMI_A @@ -2647,7 +2647,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2688,7 +2688,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2729,7 +2729,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -2770,7 +2770,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI_A @@ -2810,7 +2810,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2850,7 +2850,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_INT @@ -2893,7 +2893,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI_B @@ -2933,7 +2933,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.1" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1" Config Id CF_VxLTE_RMI_B diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2 index a83868a..77fdf1c 100644 --- a/test_purposes/Gx/TP_GX.tplan2 +++ b/test_purposes/Gx/TP_GX.tplan2 @@ -25,7 +25,7 @@ Package TP_GX { Test objective "Verify that IUT when receives CC-Request for PCC Rules sends a CC-Answer in case of attachment procedure." Reference - "TS 129 212 (V15.3.0) [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" + "TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" Config Id CF_VxLTE_INT @@ -99,7 +99,7 @@ Package TP_GX { Test objective "Verify that IUT when receives CC-Request for PCC Rules sends a CC-Answer in case of detachment procedure." Reference - "TS 129 212 (V15.3.0) [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" + "TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" Config Id CF_VxLTE_INT @@ -135,7 +135,7 @@ Package TP_GX { Test objective "Verify that IUT when receives CC-Request for session release sends a CC-Answer in case of detachment procedure." Reference - "TS 129 212 (V15.3.0) [9], clauses 4.5.7" + "TS 129 212 [9], clauses 4.5.7" Config Id CF_VxLTE_INT @@ -171,7 +171,7 @@ Package TP_GX { Test objective "Verify that IUT receives CC-Answer from home PCRF and it sends CC-Answer towards home P-GW." Reference - "TS 129 212 (V15.3.0) [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" + "TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" Config Id CF_VxLTE_RMI @@ -217,7 +217,7 @@ Package TP_GX { Test objective "Verify that IUT receives CC-Answer from home PCRF and it sends CC-Answer towards home P-GW." Reference - "TS 129 212 (V15.3.0) [9], clauses 4.5.7" + "TS 129 212 [9], clauses 4.5.7" Config Id CF_VxLTE_RMI @@ -250,7 +250,7 @@ Package TP_GX { Test objective "Verify that when IUT is invoked with a create session request the CC-Request is sent towards PCRF." Reference - "TS 129 212 (V15.3.0) [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" + "TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1)" Config Id CF_VxLTE_RMI @@ -307,7 +307,7 @@ Package TP_GX { Test objective "Verify that when IUT is invoked with a delete session request the CC-Request is sent towards PCRF." Reference - "TS 129 212 (V15.3.0) [9], clauses 4.5.7" + "TS 129 212 [9], clauses 4.5.7" Config Id CF_VxLTE_RMI @@ -339,7 +339,7 @@ Package TP_GX { Test objective "IUT successfully processes all mandatory AVPs in an RA-Request received due provision of PCC rules and sends RA-Answer." Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_INT @@ -384,7 +384,7 @@ Package TP_GX { Test objective "IUT successfully processes an RA-Request received due to the Session Bearer procedure and sends RA-Answer with Result_Code_AVP." Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_INT @@ -417,7 +417,7 @@ Package TP_GX { Test objective "IUT successfully processes an RA-Request received due to the Session Bearer procedure and sends RA-Answer with Result_Code_AVP." Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_INT @@ -451,7 +451,7 @@ Package TP_GX { Test objective "IUT successfully processes an RA-Request received due to removal of Session Bearer procedure and sends RA-Answer with Result_Code_AVP." Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_INT @@ -487,7 +487,7 @@ Package TP_GX { Test objective "When IUT receives AA-Request from P-CSCF successfully sends an RA-Request due to the Session Bearer procedure" Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_INT @@ -540,7 +540,7 @@ Package TP_GX { Test objective "When IUT receives ST-Request from P-CSCF to remove all relevant previously created bearers then IUT sends an RA-Request." Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_INT @@ -575,7 +575,7 @@ Package TP_GX { Test objective "When IUT receives AA-Answer from home PCRF then IUT sends an RA-Request due to the Session Bearer procedure" Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_RMI @@ -629,7 +629,7 @@ Package TP_GX { Test objective "When IUT receives ST-Answer from home PCRF then IUT sends an RA-Request." Reference - "TS 129 212 (V15.3.0) [9], clause 4.5.2" + "TS 129 212 [9], clause 4.5.2" Config Id CF_VxLTE_RMI diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2 index 359ca2f..f963878 100644 --- a/test_purposes/Ic/TP_IC.tplan2 +++ b/test_purposes/Ic/TP_IC.tplan2 @@ -25,7 +25,7 @@ Package TP_IC { Test objective "IMS CN components shall support SIP messages > 1 300 bytes" Reference - "TS 124 229 (V15.6.0) [1], clause 4.2A" + "TS 124 229 [1], clause 4.2A" Config Id CF_VxLTE_INT @@ -62,7 +62,7 @@ Package TP_IC { REGISTER requests received from the UE to the entry point in the home network" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.2.1 ¶16 (2nd numbered list) and 5.2.2.2" + "TS 124 229 [1], clause 5.2.2.1 ¶16 (2nd numbered list) and 5.2.2.2" Config Id CFG_IC_01 Initial conditions with { the IMS_A entity isNotConfiguredForTopologyHiding and @@ -83,7 +83,7 @@ Package TP_IC { "S-CSCF shall insert orig-ioi parameter, remove access-network-charging-info parameter and P-Access-Network-Info header before sending initial INVITE or a initial request over NNI" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 ¶11 (1st numbered list), clause 5.10.3.2" + "TS 124 229 [1], clause 5.4.3.2 ¶11 (1st numbered list), clause 5.10.3.2" Config Id CF_VxLTE_INT PICS Selection NONE @@ -129,7 +129,7 @@ Package TP_IC { "S-CSCF inserts a second P-Asserted-Identity header indicating a registered tel URI or sip URI whichever is not present in initial INVITE" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 ¶9 (item 9 1st numbered list)" + "TS 124 229 [1], clause 5.4.3.2 ¶9 (item 9 1st numbered list)" Config Id CF_VxLTE_INT PICS Selection NONE @@ -169,7 +169,7 @@ Package TP_IC { Test objective "S-CSCF uses ENUM/DNS to translate Tel URIs to SIP URIs in initial INVITE requests" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 10 1st numbered list)" + "TS 124 229 [1], clause 5.4.3.2 (item 10 1st numbered list)" Config Id CF_VxLTE_INT PICS Selection NONE @@ -219,7 +219,7 @@ Package TP_IC { Route header list exists without topology hiding and the UE is not performing the functions of an external attached network using static mode of operation" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.6.3.3 (1st numbered list)" + "TS 124 229 [1], clause 5.2.6.3.3 (1st numbered list)" Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -274,7 +274,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes an initial INVITE (Terminating Leg)." Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.6.3.3 (1st numbered list)" + "TS 124 229 [1], clause 5.2.6.3.3 (1st numbered list)" Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -312,7 +312,7 @@ Package TP_IC { "S-CSCF include term-ioi parameter and restores orig-ioi in 180 responses from UE to initial requests in terminating network" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.3 (item 2 in 3rd numbered list)" + "TS 124 229 [1], clause 5.4.3.3 (item 2 in 3rd numbered list)" Config Id CF_VxLTE_INT @@ -349,7 +349,7 @@ Package TP_IC { Test objective "I-CSCF shall remove P-Charging-Function-Addresses header from 180 response to initial request" Reference - "TS 124 229 (V15.06.0) [1], clause 5.3.2.1 (paragraph after note 10)" + "TS 124 229 [1], clause 5.3.2.1 (paragraph after note 10)" Config Id CF_VxLTE_INT @@ -386,7 +386,7 @@ Package TP_IC { "S-CSCF inserts a second P-Asserted-Identity header in 1xx response indicating a registered tel URI or SIP URI whichever is not present" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.3 (item 3 in 3rd numbered list)" + "TS 124 229 [1], clause 5.4.3.3 (item 3 in 3rd numbered list)" Config Id CF_VxLTE_INT @@ -423,7 +423,7 @@ Package TP_IC { Test objective "The P-CSCF receives a 180 response to an initial request for a dialog from the UE" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + "TS 124 229 [1], clause 5.2.6.4.4 (1st numbered list)" Config Id CF_VxLTE_INT @@ -469,7 +469,7 @@ Package TP_IC { Test objective "The P-CSCF receives a 180 response to an initial request for a dialog from the UE (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + "TS 124 229 [1], clause 5.2.6.4.4 (1st numbered list)" Config Id CF_VxLTE_RMI_B @@ -516,7 +516,7 @@ Package TP_IC { Test objective "The P-CSCF receives a 180 response to an initial request for a dialog from the UE (Terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + "TS 124 229 [1], clause 5.2.6.4.4 (1st numbered list)" Config Id CF_VxLTE_RMI_A @@ -565,7 +565,7 @@ Package TP_IC { "S-CSCF include term-ioi parameter and restores orig-ioi in 2xx responses from UE to initial requests in terminating network" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.3 (item 2 in 3rd numbered list)" + "TS 124 229 [1], clause 5.4.3.3 (item 2 in 3rd numbered list)" Config Id CF_VxLTE_INT @@ -603,7 +603,7 @@ Package TP_IC { "S-CSCF inserts a second P-Asserted-Identity header in 1xx response indicating a registered tel URI or SIP URI whichever is not present" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.3 (item 3 in 3rd numbered list)" + "TS 124 229 [1], clause 5.4.3.3 (item 3 in 3rd numbered list)" Config Id CF_VxLTE_INT @@ -640,7 +640,7 @@ Package TP_IC { Test objective "I-CSCF shall remove P-Charging-Function-Addresses header from 200 response to initial request" Reference - "TS 124 229 (V15.06.0) [1], clause 5.3.2.1 (paragraph after note 10)" + "TS 124 229 [1], clause 5.3.2.1 (paragraph after note 10)" Config Id CF_VxLTE_INT @@ -676,7 +676,7 @@ Package TP_IC { "S-CSCF remove access-network-charging-info parameter from 2xx response to subsequent or target refresh requests" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.3 (9th numbered list)" + "TS 124 229 [1], clause 5.4.3.3 (9th numbered list)" Config Id CF_VxLTE_INT @@ -712,7 +712,7 @@ Package TP_IC { Test objective "The P-CSCF receives a 2xx response to an initial request for a dialog from the UE (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + "TS 124 229 [1], clause 5.2.6.4.4 (1st numbered list)" Config Id CF_VxLTE_RMI_B @@ -759,7 +759,7 @@ Package TP_IC { Test objective "The IBCF forwards a 2xx response to a successful initial request for a dialog from the UE A (Terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.6.4.4 (1st numbered list)" + "TS 124 229 [1], clause 5.2.6.4.4 (1st numbered list)" Config Id CF_VxLTE_RMI_A @@ -806,7 +806,7 @@ Package TP_IC { Test objective "S-CSCF shall handle subsequent INVITE prior to sending it over NNI" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (6th numbered list)" + "TS 124 229 [1], clause 5.4.3.2 (6th numbered list)" Config Id CF_VxLTE_INT @@ -849,7 +849,7 @@ Package TP_IC { Test objective "S-CSCF removes its own SIP URI from the route header before sending BYE" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 1 in 7th numbered list)" + "TS 124 229 [1], clause 5.4.3.2 (item 1 in 7th numbered list)" Config Id CF_VxLTE_INT PICS Selection NONE @@ -884,7 +884,7 @@ Package TP_IC { Test objective "IBCF successfully processes a BYE message" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 1 in 7th numbered list)" + "TS 124 229 [1], clause 5.4.3.2 (item 1 in 7th numbered list)" Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -920,7 +920,7 @@ Package TP_IC { Test objective "IBCF successfully processes a BYE message" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 1 in 7th numbered list)" + "TS 124 229 [1], clause 5.4.3.2 (item 1 in 7th numbered list)" Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -957,7 +957,7 @@ Package TP_IC { Test objective "S-CSCF removes its own SIP URI from the route header before sending ACK" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2 (item 1 in 7th numbered list)" + "TS 124 229 [1], clause 5.4.3.2 (item 1 in 7th numbered list)" Config Id CF_VxLTE_INT PICS Selection NONE @@ -990,7 +990,7 @@ Package TP_IC { "The IBCF shall respond with a 100 (Trying) provisional response on initial INVITE (terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2" + "TS 124 229 [1], clause 5.10.3.2" Config Id CF_VxLTE_RMI_A PICS Selection NONE @@ -1023,7 +1023,7 @@ Package TP_IC { "The IBCF shall respond with a 100 (Trying) provisional response on initial INVITE (originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2" + "TS 124 229 [1], clause 5.10.3.2" Config Id CF_VxLTE_RMI_B PICS Selection NONE @@ -1058,7 +1058,7 @@ Package TP_IC { Test objective "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + "TS 124 229 [1], clause 5.4.3.2" Config Id CF_VxLTE_INT PICS Selection NONE @@ -1094,7 +1094,7 @@ Package TP_IC { Test objective "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + "TS 124 229 [1], clause 5.4.3.2" Config Id CF_VxLTE_INT PICS Selection NONE @@ -1127,7 +1127,7 @@ Package TP_IC { Test objective "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + "TS 124 229 [1], clause 5.4.3.2" Config Id CF_VxLTE_RMI // CF_VxLTE_RMI_B PICS Selection NONE @@ -1160,7 +1160,7 @@ Package TP_IC { Test objective "S-CSCF removes its own SIP URI from the route header before sending CANCEL (Terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.4.3.2" + "TS 124 229 [1], clause 5.4.3.2" Config Id CF_VxLTE_RMI // CF_VxLTE_RMI_A PICS Selection NONE @@ -1197,7 +1197,7 @@ Package TP_IC { Test objective "The P-CSCF receives a 200 OK response to a CANCEL request from the UE receiving the CANCEL request (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" + "TS 124 229 [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" Config Id CF_VxLTE_INT @@ -1231,7 +1231,7 @@ Package TP_IC { Test objective "The P-CSCF receives a 200 OK response to a CANCEL request from the UE receiving the CANCEL request (Terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" + "TS 124 229 [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" Config Id CF_VxLTE_INT @@ -1263,7 +1263,7 @@ Package TP_IC { Test objective "The P-CSCF receives a 200 OK response to a CANCEL request from the UE receiving the CANCEL request (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" + "TS 124 229 [1], clause 5.2.8.1.1 and RFC 3261 [18], clause 9.2" Config Id CF_VxLTE_RMI // CF_VxLTE_RMI_B @@ -1298,7 +1298,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a 487 INVITE (Request Terminated). (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + "TS 124 229 [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" Config Id CF_VxLTE_INT @@ -1335,7 +1335,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a 487 INVITE (Request Terminated). (Terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + "TS 124 229 [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" Config Id CF_VxLTE_INT @@ -1369,7 +1369,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes an ACK response for a Request terminated. (Originating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + "TS 124 229 [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" Config Id CF_VxLTE_INT @@ -1406,7 +1406,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes an ACK response for a Request terminated. (Terminating leg)" Reference - "TS 124 229 (V15.06.0) [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" + "TS 124 229 [1], clause 5.3.2.2 and RFC 3261 [18], clause 9.2" Config Id CF_VxLTE_INT @@ -1444,7 +1444,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a 486 INVITE (BUSY) originating leg. " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + "TS 124 229 [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" Config Id CF_VxLTE_INT @@ -1481,7 +1481,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a 486 INVITE (BUSY) Terminating leg. " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + "TS 124 229 [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" Config Id CF_VxLTE_INT @@ -1518,7 +1518,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a 486 INVITE (BUSY) originating leg, roaming case. " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + "TS 124 229 [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" Config Id CF_VxLTE_RMI_B @@ -1554,7 +1554,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a 486 INVITE (BUSY) terminating leg, roaming case. " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + "TS 124 229 [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" Config Id CF_VxLTE_RMI_A @@ -1591,7 +1591,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes an ACK in response to a BUSY reply during session set-up (Originating leg). " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + "TS 124 229 [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" Config Id CF_VxLTE_INT @@ -1629,7 +1629,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes an ACK in response to a BUSY reply during session set-up (Terminating leg). " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" + "TS 124 229 [1], clause 5.10.3.2 and RFC 3261 [18], clause 13.3.1.3" Config Id CF_VxLTE_INT @@ -1667,7 +1667,7 @@ Package TP_IC { Test objective "The IBCF shall perform encryption for topology hiding before an initial REGISTER request is sent " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" Config Id CF_VxLTE_RMI_B @@ -1713,7 +1713,7 @@ Package TP_IC { Test objective "The IBCF shall perform encryption for topology hiding before a second REGISTER request is sent " Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" Config Id CF_VxLTE_RMI_B @@ -1761,7 +1761,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a user de-registration." Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" Config Id CF_VxLTE_RMI_B @@ -1799,7 +1799,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes an IMS de-registration due to expiration of registration timer." Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" Config Id CF_VxLTE_RMI_B @@ -1838,7 +1838,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes an IMS de-registration due user initiated network detachment." Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" + "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2" Config Id CF_VxLTE_RMI_B @@ -1879,7 +1879,7 @@ Package TP_IC { Test objective "Verify that the IBCF successfully processes a SUBSCRIBE." Reference - "TS 124 229 (V15.06.0) [1], clause 5.10.3.2" + "TS 124 229 [1], clause 5.10.3.2" Config Id CF_VxLTE_RMI_B @@ -1915,7 +1915,7 @@ Package TP_IC { TP Id TP_IC_IBCF_NOTIFY_01 Test objective "Verify that the IBCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "TS 124 229 (V15.06.0) [1], Clause 5.10.3.2" + "TS 124 229 [1], Clause 5.10.3.2" Config Id CF_VxLTE_RMI_B PICS Selection NONE diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2 index 945555f..23d4382 100644 --- a/test_purposes/Mw/TP_MW_IS.tplan2 +++ b/test_purposes/Mw/TP_MW_IS.tplan2 @@ -27,7 +27,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference - "TS 124 229 (V15.6.0) [1], clause 4.2A" + "TS 124 229 [1], clause 4.2A" Config Id CF_VxLTE_INT @@ -62,7 +62,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -115,7 +115,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -177,7 +177,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference - "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -229,7 +229,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -297,7 +297,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.4.1.1 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -375,7 +375,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference - "ETSI TS 124 229 [2], clauses 5.2.1, 5.2.2 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.1, 5.2.2 and 6.3" Config Id CF_VxLTE_RMI_B @@ -425,7 +425,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -462,7 +462,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.4.1.5 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.1.5 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -499,7 +499,7 @@ Package TP_MW_IS { Test objective "Verify that the P-CSCF successfully processes a network de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2" Config Id CF_VxLTE_INT @@ -532,7 +532,7 @@ Package TP_MW_IS { Test objective "Verify that the I-CSCF successfully processes a user de-registration (with SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3" Config Id CF_VxLTE_INT diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index a2c472e..fed2b0e 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -25,7 +25,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference - "TS 124 229 (V15.6.0) [1], clause 4.2A" + "TS 124 229 [1], clause 4.2A" Config Id CF_VxLTE_INT @@ -72,7 +72,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -105,7 +105,7 @@ Package TP_MW_PS { PChargingVector containing icid indicating value PX_TO_BE_DEFINED, PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - Require_HDR indicating value "path", + Require indicating value "path", Supported indicating value "path" ;; to the IMS_I_CSCF_A entity @@ -136,7 +136,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -213,7 +213,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference - "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -279,7 +279,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -312,7 +312,7 @@ Package TP_MW_PS { PChargingVector containing icid indicating value PX_TO_BE_DEFINED, PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - Require_HDR indicating value "path", + Require indicating value "path", Supported indicating value "path" ;; to the IMS_S_CSCF_B entity @@ -345,7 +345,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -425,7 +425,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)." Reference - "ETSI TS 124 229 [2], Clause 5.2.2.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -492,7 +492,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -529,7 +529,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -566,7 +566,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2" Config Id CF_VxLTE_INT @@ -600,7 +600,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -642,7 +642,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a user network detachment." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -682,7 +682,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -719,7 +719,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a user network detachment." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -753,7 +753,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3B and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.3B and 6.2" Config Id CF_VxLTE_INT @@ -809,7 +809,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], clauses 5.2.3B and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.3B and 6.2" Config Id CF_VxLTE_RMI_B @@ -863,7 +863,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2" Config Id CF_VxLTE_INT @@ -900,7 +900,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2" Config Id CF_VxLTE_INT @@ -935,7 +935,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -976,7 +976,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) NOTIFY (IMS Administrative de-registration)." Reference - "ETSI TS 124 229 [2], Clause 6.2" + "ETSI TS 124 229 [1], Clause 6.2" Config Id CF_VxLTE_INT @@ -1010,7 +1010,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1069,7 +1069,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1128,7 +1128,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.2 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -1187,7 +1187,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.2" Config Id CF_VxLTE_RMI_A @@ -1247,7 +1247,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1283,7 +1283,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1319,7 +1319,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -1355,7 +1355,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_RMI_A @@ -1391,7 +1391,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1427,7 +1427,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_INT @@ -1463,7 +1463,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.1 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -1499,7 +1499,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clauses 5.2.9.2 and Clause 6.2" + "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2" Config Id CF_VxLTE_RMI_A @@ -1535,7 +1535,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -1579,7 +1579,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -1623,7 +1623,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_B @@ -1667,7 +1667,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_A @@ -1711,7 +1711,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -1759,7 +1759,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -1807,7 +1807,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_B @@ -1855,7 +1855,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_A @@ -1901,7 +1901,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1957,7 +1957,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -2013,7 +2013,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_B @@ -2071,7 +2071,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_A @@ -2129,7 +2129,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_INT @@ -2178,7 +2178,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_INT @@ -2227,7 +2227,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Network)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_INT @@ -2269,7 +2269,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -2318,7 +2318,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_RMI_A @@ -2367,7 +2367,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a BYE (Network initiated)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2" Config Id CF_VxLTE_RMI_A @@ -2404,7 +2404,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a user network detachment (with Previously Established IMS Registration & IMS Sessions)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -2439,7 +2439,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -2485,7 +2485,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -2531,7 +2531,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Network)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -2564,7 +2564,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_B @@ -2610,7 +2610,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_A @@ -2656,7 +2656,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_A @@ -2704,7 +2704,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2754,7 +2754,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2804,7 +2804,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -2854,7 +2854,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_RMI_A @@ -2903,7 +2903,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2951,7 +2951,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_INT @@ -2999,7 +2999,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -3047,7 +3047,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_A @@ -3095,7 +3095,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -3143,7 +3143,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_INT @@ -3191,7 +3191,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_B @@ -3239,7 +3239,7 @@ Package TP_MW_PS { Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_B diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index 47c7ae4..3f7a1ca 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -27,7 +27,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes" Reference - "TS 124 229 (V15.6.0) [1], clause 4.2A" + "TS 124 229 [1], clause 4.2A" Config Id CF_VxLTE_INT @@ -62,7 +62,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.3.1.2" + "ETSI TS 124 229 [1], Clause 5.3.1.2" Config Id CF_VxLTE_INT @@ -115,7 +115,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.3.1.2" + "ETSI TS 124 229 [1], Clause 5.3.1.2" Config Id CF_VxLTE_INT @@ -180,7 +180,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a first registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.3.1.2" + "ETSI TS 124 229 [1], Clause 5.3.1.2" Config Id CF_VxLTE_RMI_B @@ -214,7 +214,7 @@ Package TP_MW_SI { PChargingVector containing icid indicating value PX_TO_BE_DEFINED, PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - Require_HDR indicating value "path", + Require indicating value "path", Supported indicating value "path" ;; to the IMS_IBCF_B entity @@ -248,7 +248,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a full registration (Successful)." Reference - "ETSI TS 124 229 [2], Clause 5.3.1.2" + "ETSI TS 124 229 [1], Clause 5.3.1.2" Config Id CF_VxLTE_RMI_B @@ -332,7 +332,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -367,7 +367,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.4.1.5 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.1.5 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -408,7 +408,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a user de-registration (with SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.4.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -452,7 +452,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a network de-registration (no SIP session active)." Reference - "ETSI TS 124 229 [2], Clause 5.2.5 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -490,7 +490,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" + "ETSI TS 124 229 [1], Clauses 5.4.2 and 6.3" Config Id CF_VxLTE_INT @@ -536,7 +536,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a SUBSCRIBE." Reference - "ETSI TS 124 229 [2], Clauses 5.4.2 and 6.3" + "ETSI TS 124 229 [1], Clauses 5.4.2 and 6.3" Config Id CF_VxLTE_RMI_B @@ -580,7 +580,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -618,7 +618,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2" Config Id CF_VxLTE_INT @@ -654,7 +654,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -693,7 +693,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration." Reference - "ETSI TS 124 229 [2], Clause 5.2.5.2 Clause 6.2" + "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2" Config Id CF_VxLTE_RMI_B @@ -733,7 +733,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -792,7 +792,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_INT @@ -851,7 +851,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.1 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.1 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -910,7 +910,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.3.2.1 and Clause 5.3.2.1A" + "ETSI TS 124 229 [1], Clause 5.3.2.1 and Clause 5.3.2.1A" Config Id CF_VxLTE_RMI_A @@ -970,7 +970,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1006,7 +1006,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1042,7 +1042,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -1078,7 +1078,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI_A @@ -1112,7 +1112,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1150,7 +1150,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_INT @@ -1188,7 +1188,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -1222,7 +1222,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.4.4.2.2 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3" Config Id CF_VxLTE_RMI_A @@ -1258,7 +1258,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1302,7 +1302,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1346,7 +1346,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_B @@ -1390,7 +1390,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_A @@ -1434,7 +1434,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1482,7 +1482,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -1530,7 +1530,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_B @@ -1578,7 +1578,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.2" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" Config Id CF_VxLTE_RMI_A @@ -1626,7 +1626,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1684,7 +1684,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_INT @@ -1742,7 +1742,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_B @@ -1800,7 +1800,7 @@ Package TP_MW_SI { Test objective "Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.1.3 and 6.1.1" + "ETSI TS 124 229 [1], clauses 5.1.3 and 6.1.1" Config Id CF_VxLTE_RMI_A @@ -1858,7 +1858,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" Config Id CF_VxLTE_INT @@ -1907,7 +1907,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" Config Id CF_VxLTE_INT @@ -1956,7 +1956,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Network)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" Config Id CF_VxLTE_INT @@ -2004,7 +2004,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -2051,7 +2051,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3" Config Id CF_VxLTE_RMI_A @@ -2100,7 +2100,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a BYE (Originating Network)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" Config Id CF_VxLTE_RMI_A @@ -2150,7 +2150,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a BYE (IMS De-registration with Active SIP Sessions)." Reference - "ETSI TS 124 229 [2], ETIS TS 124 229 [2] Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.1, Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -2198,7 +2198,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Originating Leg/Originating Network)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2244,7 +2244,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2292,7 +2292,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI_B @@ -2338,7 +2338,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 200 (OK) BYE (Terminating Leg/Originating Network)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI_A @@ -2388,7 +2388,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2438,7 +2438,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2488,7 +2488,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.1.3 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -2538,7 +2538,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_RMI_A @@ -2587,7 +2587,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses Clause 5.2.7 and Clause 6.3" + "ETSI TS 124 229 [1], clauses Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_INT @@ -2635,7 +2635,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_INT @@ -2683,7 +2683,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], Clause 5.2.7 and Clause 6.3" + "ETSI TS 124 229 [1], Clause 5.2.7 and Clause 6.3" Config Id CF_VxLTE_RMI_B @@ -2731,7 +2731,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI_A @@ -2779,7 +2779,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2827,7 +2827,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_INT @@ -2875,7 +2875,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI_B @@ -2923,7 +2923,7 @@ Package TP_MW_SI { Test objective "Verify that the S-CSCF successfully processes a 487 INVITE (busy) to reject call (Originating Leg)." Reference - "ETSI TS 124 229 [2], clauses 5.2.7 and 6.3" + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3" Config Id CF_VxLTE_RMI_B diff --git a/test_purposes/Rtp/TP_Rtp.tplan2 b/test_purposes/Rtp/TP_Rtp.tplan2 index 68eba4a..c2ebc9b 100644 --- a/test_purposes/Rtp/TP_Rtp.tplan2 +++ b/test_purposes/Rtp/TP_Rtp.tplan2 @@ -26,7 +26,7 @@ Package TP_RTP { Test objective "Verify that media between UE_A and UE_B is not delivered in any direction before call establishment." Reference - "TS 124 229 (V15.6.0) [1], clause 6" + "TS 124 229 [1], clause 6" Config Id CF_VxLTE_INT @@ -59,7 +59,7 @@ Package TP_RTP { Test objective "Verify that early media is delivered from UE_B to UE_A. " Reference - "TS 124 229 (V15.6.0) [1], clause 6" + "TS 124 229 [1], clause 6" Config Id CF_VxLTE_INT @@ -92,7 +92,7 @@ Package TP_RTP { Test objective "Verify that media between UE_A and UE_B is successfully routed." Reference - "TS 124 229 (V15.6.0) [1], clause 6" + "TS 124 229 [1], clause 6" Config Id CF_VxLTE_INT @@ -125,7 +125,7 @@ Package TP_RTP { Test objective "Verify that media between UE_A and UE_B is not delivered in any direction before call establishment." Reference - "TS 124 229 (V15.6.0) [1], clause 6" + "TS 124 229 [1], clause 6" Config Id CF_VxLTE_RMI @@ -158,7 +158,7 @@ Package TP_RTP { Test objective "Verify that early media is delivered from UE_B to UE_A. " Reference - "TS 124 229 (V15.6.0) [1], clause 6" + "TS 124 229 [1], clause 6" Config Id CF_VxLTE_RMI @@ -191,7 +191,7 @@ Package TP_RTP { Test objective "Verify that media between UE_A and UE_B is successfully routed." Reference - "TS 124 229 (V15.6.0) [1], clause 6" + "TS 124 229 [1], clause 6" Config Id CF_VxLTE_RMI diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index 28c2b50..3ef6692 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -25,7 +25,7 @@ Package TP_RX { Test objective "Verify that IUT after AA-Request is received due to provisioning of AF Signalling flow sends AA-Answer." Reference - "TS 129 214 (V15.6.0) [8], clause A.8, 4.4.5a and Annex B" + "TS 129 214 [8], clause A.8, 4.4.5a and Annex B" Config Id CF_VxLTE_INT @@ -75,7 +75,7 @@ Package TP_RX { Test objective "Verify that IUT sends AA-Answer after RAA is received from PGW." Reference - "TS 129 214 (V15.6.0) [8], clause A.8" + "TS 129 214 [8], clause A.8" Config Id CF_VxLTE_INT @@ -111,7 +111,7 @@ Package TP_RX { Test objective "Verify that IUT receives AA-Answer from home PCRF and it sends AA-Answer towards visited P-CSCF." Reference - "TS 129 214 (V15.6.0) [8], clause 4.4.5a, A.8 and annex B" + "TS 129 214 [8], clause 4.4.5a, A.8 and annex B" Config Id CF_VxLTE_RMI @@ -141,7 +141,7 @@ Package TP_RX { Test objective "Verify that IUT after 2XX_Response on REGISTER sends an AA-Request due to provisioning of AF Signalling flow." Reference - "TS 129 214 (V15.6.0) [8], clause A.8, 4.4.5a and Annex B" + "TS 129 214 [8], clause A.8, 4.4.5a and Annex B" Config Id CF_VxLTE_INT @@ -191,7 +191,7 @@ Package TP_RX { Test objective "IUT does not send AA-Request if 4XX_Response REGISTER is received." Reference - "TS 129 214 (V15.6.0) [8], clause A.8" + "TS 129 214 [8], clause A.8" Config Id CF_VxLTE_INT @@ -221,7 +221,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session establishment for originating side after INVITE is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.1, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -269,7 +269,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session establishment for originating side after 180 Ringing with SDP is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.1, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -319,7 +319,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session establishment for originating side after 200 OK with SDP is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.1, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -369,7 +369,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session establishment for terminating side after INVITE is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.1, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -417,7 +417,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session establishment for terminating side after 180 Ringing with SDP is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.1, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -467,7 +467,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session establishment for terminating side after 200 OK with SDP is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.1, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -517,7 +517,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session modification for originating side after 200 OK on re-INVITE is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.2, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.2, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -567,7 +567,7 @@ Package TP_RX { Test objective "Verify that IUT send AA-Request in case of session modification for terminating side after 200 OK on re-INVITE is received." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.2, A.1, A.2, B" + "TS 129 214 [8], clauses 4.4.2, A.1, A.2, B" Config Id CF_VxLTE_INT @@ -617,7 +617,7 @@ Package TP_RX { Test objective "Verify that IUT sends AA-Answer after RAA is received from PGW." Reference - "TS 129 214 (V15.6.0) [8], clause 4.4.6.1" + "TS 129 214 [8], clause 4.4.6.1" Config Id CF_VxLTE_INT @@ -653,7 +653,7 @@ Package TP_RX { Test objective "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards visited P-CSCF." Reference - "TS 129 214 (V15.6.0) [8], clause 4.4.6.1" + "TS 129 214 [8], clause 4.4.6.1" Config Id CF_VxLTE_RMI @@ -687,7 +687,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of RA-Request sends ST-Answer." Reference - "TS 129 214 (V15.6.0) [8], clause 4.4.4" + "TS 129 214 [8], clause 4.4.4" Config Id CF_VxLTE_INT @@ -721,7 +721,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of ST-Request sends ST-Answer." Reference - "TS 129 214 (V15.6.0) [8], clause 4.4.4, 4.4.5, A.8" + "TS 129 214 [8], clause 4.4.4, 4.4.5, A.8" Config Id CF_VxLTE_INT @@ -754,7 +754,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of BYE sends an ST-Request at originating leg." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4" + "TS 129 214 [8], clauses 4.4.4" Config Id CF_VxLTE_INT @@ -786,7 +786,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of BYE sends an ST-Request at terminating leg." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4" + "TS 129 214 [8], clauses 4.4.4" Config Id CF_VxLTE_INT @@ -818,7 +818,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of CANCEL sends an ST-Request at originating leg." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4" + "TS 129 214 [8], clauses 4.4.4" Config Id CF_VxLTE_INT @@ -849,7 +849,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of CANCEL sends an ST-Request at terminating leg." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4" + "TS 129 214 [8], clauses 4.4.4" Config Id CF_VxLTE_INT @@ -880,7 +880,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of 486 response sends an ST-Request at originating leg." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4" + "TS 129 214 [8], clauses 4.4.4" Config Id CF_VxLTE_INT @@ -911,7 +911,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of 486 response sends an ST-Request at terminating leg." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4" + "TS 129 214 [8], clauses 4.4.4" Config Id CF_VxLTE_INT @@ -942,7 +942,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of 200 response REGISTER sends an ST-Request." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4, 4.4.5a, A.8" + "TS 129 214 [8], clauses 4.4.4, 4.4.5a, A.8" Config Id CF_VxLTE_INT @@ -973,7 +973,7 @@ Package TP_RX { Test objective "Verify that IUT after reception of NOTIFY during administrative de-registration sends an ST-Request." Reference - "TS 129 214 (V15.6.0) [8], clauses 4.4.4, 4.4.5a, A.8" + "TS 129 214 [8], clauses 4.4.4, 4.4.5a, A.8" Config Id CF_VxLTE_INT diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index 06a5dec..ee14b18 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -22,10 +22,10 @@ Package TP_S9 { Test Purpose { TP Id TP_S9_PCRF_AAR_01 //TP_EPC_8001_07 from TS 103 029 V5.1.1 - Test objective "Verify that IUT receives AA-Request from visited P-CSCS and it sends AA-Request towards home PCRF." + Test objective "Verify that IUT receives AA-Request from visited P-CSCF and it sends AA-Request towards home PCRF." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + "TS 129 215 [11], clause 4.5.3.6" Config Id CF_VxLTE_RMI @@ -55,7 +55,7 @@ Package TP_S9 { Test objective "Verify when IUT receives AA-Request from visited PCRF then it sends a AA-Answer." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + "TS 129 215 [11], clause 4.5.3.6" Config Id CF_VxLTE_RMI @@ -105,7 +105,7 @@ Package TP_S9 { Test objective "Verify when IUT receives AA-Request from visited PCRF then it sends a AA-Answer." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + "TS 129 215 [11], clause 4.5.3.6" Config Id CF_VxLTE_RMI @@ -141,7 +141,7 @@ Package TP_S9 { Test objective "Verify that IUT receives AS-Request from home PCRF and it sends AS-Request towards visited PCRF." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.3" + "TS 129 215 [11], clause 4.5.3.3" Config Id CF_VxLTE_RMI @@ -174,7 +174,7 @@ Package TP_S9 { Test objective "Verify that IUT receives AS-Answer from visited P-CSCF and it sends AS-Answer towards home PCRF." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.3" + "TS 129 215 [11], clause 4.5.3.3" Config Id CF_VxLTE_RMI @@ -204,7 +204,7 @@ Package TP_S9 { Test objective "Verify that IUT receives CC-Request from P-GW and it sends CC-Request towards home PCRF." Reference - "TS 129 215 (V15.3.0) [11], clauses 4.5.1.1 and 4.5.3.1" + "TS 129 215 [11], clauses 4.5.1.1 and 4.5.3.1" Config Id CF_VxLTE_RMI @@ -267,7 +267,7 @@ Package TP_S9 { Test objective "Verify that IUT receives CC-Request from P-GW and it sends CC-Request towards home PCRF." Reference - "TS 129 215 (V15.3.0) [11], clauses 4.5.1.2 and 4.5.3.3" + "TS 129 215 [11], clauses 4.5.1.2 and 4.5.3.3" Config Id CF_VxLTE_RMI @@ -305,7 +305,7 @@ Package TP_S9 { Test objective "Verify when IUT receives CC-Request from visited PCRF then it sends a CC-Answer." Reference - "TS 129 215 (V15.3.0) [11], clauses 4.5.1.1 and 4.5.3.1" + "TS 129 215 [11], clauses 4.5.1.1 and 4.5.3.1" Config Id CF_VxLTE_RMI @@ -354,7 +354,7 @@ Package TP_S9 { Test objective "Verify when IUT receives CC-Request from visited PCRF then it sends a CC-Answer." Reference - "TS 129 215 (V15.3.0) [11], clauses 4.5.1.2 and 4.5.3.3" + "TS 129 215 [11], clauses 4.5.1.2 and 4.5.3.3" Config Id CF_VxLTE_RMI @@ -387,10 +387,10 @@ Package TP_S9 { Test Purpose { TP Id TP_S9_PCRF_STR_01 //TP_EPC_8002_04 and 8004_08 from TS 103 029 V5.1.1 - Test objective "Verify that IUT receives ST-Request from visited P-CSCS and it sends ST-Request towards home PCRF." + Test objective "Verify that IUT receives ST-Request from visited P-CSCF and it sends ST-Request towards home PCRF." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + "TS 129 215 [11], clause 4.5.3.6" Config Id CF_VxLTE_RMI @@ -420,7 +420,7 @@ Package TP_S9 { Test objective "Verify when IUT receives ST-Request from visited PCRF then it sends a ST-Answer." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + "TS 129 215 [11], clause 4.5.3.6" Config Id CF_VxLTE_RMI @@ -453,7 +453,7 @@ Package TP_S9 { Test objective "Verify when IUT receives ST-Request from visited PCRF then it sends a ST-Answer." Reference - "TS 129 215 (V15.3.0) [11], clause 4.5.3.6" + "TS 129 215 [11], clause 4.5.3.6" Config Id CF_VxLTE_RMI -- GitLab From 23ca946710ac03c47c64c1a0056f3d41fdb43a86 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 23 Nov 2020 15:14:28 +0100 Subject: [PATCH 115/176] ttcn 3 updates and TA source code --- .gitignore | 1 + build_ta_vxlte.xml | 104 + .../protocol/diameter/parser/AVP.java | 504 + .../diameter/parser/AVPDecodeException.java | 45 + .../protocol/diameter/parser/Codec.java | 312 + .../diameter/parser/DiameterMessage.java | 294 + .../DiameterMessageDecodeException.java | 47 + .../codec/DIAMETERCodec/DIAMETERCodec.java | 8537 +++++++++++++++++ .../ttcn/tci/codec/IOTCodec/IOTCodec.java | 698 ++ .../LibUpperTesterCodec.java | 214 + .../ttcn/tci/codec/SIPCodec/SIPCodec.java | 81 + .../iskratel/ttcn/tri/DummyConnection.java | 56 + .../iskratel/ttcn/tri/EaPortConnection.java | 63 + .../ttcn/tri/IotConnectionOffline.java | 398 + .../iskratel/ttcn/tri/LocalAdapterBase.java | 28 + .../iskratel/ttcn/tri/ReadCaptureThread.java | 186 + .../com/iskratel/ttcn/tri/VxlteAdapter.java | 347 + javasrc/net/CVS/Entries | 37 + javasrc/net/CVS/Repository | 1 + javasrc/net/CVS/Root | 1 + .../net/sourceforge/jpcap/capture/.gitignore | 11 + .../CaptureConfigurationException.java | 33 + .../CaptureDeviceInvalidException.java | 33 + .../capture/CaptureDeviceLookupException.java | 31 + .../CaptureDeviceNotFoundException.java | 31 + .../capture/CaptureDeviceOpenException.java | 31 + .../capture/CaptureFileOpenException.java | 31 + .../jpcap/capture/CapturePacketException.java | 31 + .../jpcap/capture/CaptureStatistics.java | 59 + .../jpcap/capture/CaptureTest.java | 125 + .../jpcap/capture/InvalidFilterException.java | 31 + .../jpcap/capture/PacketCapture.java | 214 + .../jpcap/capture/PacketCaptureBase.java | 91 + .../jpcap/capture/PacketCaptureCapable.java | 186 + .../jpcap/capture/PacketDispatchCapable.java | 48 + .../jpcap/capture/PacketDispatcher.java | 108 + .../jpcap/capture/PacketHandler.java | 40 + .../jpcap/capture/PacketListener.java | 27 + .../jpcap/capture/RawPacketListener.java | 27 + javasrc/net/sourceforge/jpcap/capture/jpcap.c | 825 ++ .../net/sourceforge/jpcap/capture/jpcap.def | 17 + .../net/sourceforge/jpcap/capture/makefile | 149 + .../sourceforge/jpcap/capture/package.html | 35 + .../net/sourceforge/jpcap/capture/process.cpp | 65 + .../net/sourceforge/jpcap/capture/process.hpp | 28 + .../net/sourceforge/jpcap/net/ARPFields.java | 116 + .../net/sourceforge/jpcap/net/ARPPacket.java | 164 + .../sourceforge/jpcap/net/EthernetFields.java | 53 + .../sourceforge/jpcap/net/EthernetPacket.java | 212 + .../jpcap/net/EthernetProtocol.java | 38 + .../jpcap/net/EthernetProtocols.java | 240 + .../net/sourceforge/jpcap/net/ICMPFields.java | 63 + .../sourceforge/jpcap/net/ICMPMessage.java | 79 + .../sourceforge/jpcap/net/ICMPMessages.java | 181 + .../net/sourceforge/jpcap/net/ICMPPacket.java | 168 + .../net/sourceforge/jpcap/net/IGMPFields.java | 73 + .../sourceforge/jpcap/net/IGMPMessage.java | 52 + .../sourceforge/jpcap/net/IGMPMessages.java | 42 + .../net/sourceforge/jpcap/net/IGMPPacket.java | 163 + .../net/sourceforge/jpcap/net/IPAddress.java | 107 + .../net/sourceforge/jpcap/net/IPFields.java | 123 + .../net/sourceforge/jpcap/net/IPPacket.java | 500 + javasrc/net/sourceforge/jpcap/net/IPPort.java | 1447 +++ .../net/sourceforge/jpcap/net/IPPorts.java | 721 ++ .../net/sourceforge/jpcap/net/IPProtocol.java | 88 + .../sourceforge/jpcap/net/IPProtocols.java | 165 + .../net/sourceforge/jpcap/net/IPVersions.java | 30 + .../net/sourceforge/jpcap/net/LinkLayer.java | 150 + .../net/sourceforge/jpcap/net/LinkLayers.java | 143 + .../net/sourceforge/jpcap/net/MACAddress.java | 56 + javasrc/net/sourceforge/jpcap/net/Packet.java | 62 + .../sourceforge/jpcap/net/PacketEncoding.java | 113 + .../sourceforge/jpcap/net/PacketFactory.java | 158 + .../net/sourceforge/jpcap/net/RawPacket.java | 95 + .../net/sourceforge/jpcap/net/TCPFields.java | 118 + .../net/sourceforge/jpcap/net/TCPPacket.java | 427 + .../sourceforge/jpcap/net/TypesOfService.java | 39 + .../net/sourceforge/jpcap/net/UDPFields.java | 68 + .../net/sourceforge/jpcap/net/UDPPacket.java | 168 + javasrc/net/sourceforge/jpcap/net/makefile | 68 + .../net/sourceforge/jpcap/net/package.html | 35 + javasrc/net/sourceforge/jpcap/tutorial/README | 11 + .../jpcap/tutorial/example1/Example1.java | 73 + .../jpcap/tutorial/example1/makefile | 20 + .../jpcap/tutorial/example15/Example15.java | 77 + .../jpcap/tutorial/example15/makefile | 20 + .../jpcap/tutorial/example2/Example2.java | 73 + .../jpcap/tutorial/example2/makefile | 20 + .../jpcap/tutorial/example3/Example3.java | 75 + .../jpcap/tutorial/example3/Example3b.java | 120 + .../jpcap/tutorial/example3/Example3c.java | 101 + .../jpcap/tutorial/example3/makefile | 22 + .../jpcap/tutorial/example4/Example4.java | 85 + .../jpcap/tutorial/example4/makefile | 20 + .../jpcap/tutorial/example5/Example5.java | 86 + .../jpcap/tutorial/example5/makefile | 20 + .../jpcap/tutorial/example6/Example6.java | 83 + .../jpcap/tutorial/example6/makefile | 20 + .../jpcap/tutorial/example7/Example7.java | 79 + .../jpcap/tutorial/example7/makefile | 20 + .../net/sourceforge/jpcap/tutorial/makefile | 22 + .../jpcap/tutorial/misc/ICMPTest.java | 95 + .../jpcap/tutorial/misc/MemoryTest.java | 76 + .../jpcap/tutorial/misc/OfflineTest.java | 135 + .../tutorial/misc/SerializationTest.java | 123 + .../sourceforge/jpcap/tutorial/misc/makefile | 23 + .../sourceforge/jpcap/tutorial/package.html | 22 + .../jpcap/tutorial/sniffer/Sniffer.java | 87 + .../jpcap/tutorial/sniffer/makefile | 20 + .../jpcap/util/AnsiEscapeSequences.java | 55 + .../sourceforge/jpcap/util/ArrayHelper.java | 97 + .../sourceforge/jpcap/util/AsciiHelper.java | 70 + .../net/sourceforge/jpcap/util/CVS/Entries | 9 + .../net/sourceforge/jpcap/util/CVS/Repository | 1 + javasrc/net/sourceforge/jpcap/util/CVS/Root | 1 + .../net/sourceforge/jpcap/util/HexHelper.java | 100 + .../jpcap/util/PropertyHelper.java | 222 + .../net/sourceforge/jpcap/util/Timeval.java | 52 + javasrc/net/sourceforge/jpcap/util/makefile | 29 + .../net/sourceforge/jpcap/util/package.html | 20 + lib/log4j-1.2.14.jar | Bin 0 -> 367444 bytes log4j.properties | 17 + tracefiles/TC_VxLTE_INT_REG_01.pcapng | Bin 0 -> 17020 bytes ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 2 +- .../AtsImsIot_TestConfiguration.ttcn | 8 +- ttcn/LibCommon | 2 +- ttcn/LibIot/LibIot_TypesAndValues.ttcn | 3 + ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 30 +- ttcn/LibIot/LibIot_VxLTE_Templates.ttcn | 2 +- ttcn/LibUpperTester/LibUpperTester.ttcn | 3 + 130 files changed, 23115 insertions(+), 22 deletions(-) create mode 100644 build_ta_vxlte.xml create mode 100644 javasrc/com/iskratel/protocol/diameter/parser/AVP.java create mode 100644 javasrc/com/iskratel/protocol/diameter/parser/AVPDecodeException.java create mode 100644 javasrc/com/iskratel/protocol/diameter/parser/Codec.java create mode 100644 javasrc/com/iskratel/protocol/diameter/parser/DiameterMessage.java create mode 100644 javasrc/com/iskratel/protocol/diameter/parser/DiameterMessageDecodeException.java create mode 100644 javasrc/com/iskratel/ttcn/tci/codec/DIAMETERCodec/DIAMETERCodec.java create mode 100644 javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java create mode 100644 javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java create mode 100644 javasrc/com/iskratel/ttcn/tci/codec/SIPCodec/SIPCodec.java create mode 100644 javasrc/com/iskratel/ttcn/tri/DummyConnection.java create mode 100644 javasrc/com/iskratel/ttcn/tri/EaPortConnection.java create mode 100644 javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java create mode 100644 javasrc/com/iskratel/ttcn/tri/LocalAdapterBase.java create mode 100644 javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java create mode 100644 javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java create mode 100644 javasrc/net/CVS/Entries create mode 100644 javasrc/net/CVS/Repository create mode 100644 javasrc/net/CVS/Root create mode 100644 javasrc/net/sourceforge/jpcap/capture/.gitignore create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureTest.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketCapture.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketHandler.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketListener.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java create mode 100644 javasrc/net/sourceforge/jpcap/capture/jpcap.c create mode 100644 javasrc/net/sourceforge/jpcap/capture/jpcap.def create mode 100644 javasrc/net/sourceforge/jpcap/capture/makefile create mode 100644 javasrc/net/sourceforge/jpcap/capture/package.html create mode 100644 javasrc/net/sourceforge/jpcap/capture/process.cpp create mode 100644 javasrc/net/sourceforge/jpcap/capture/process.hpp create mode 100644 javasrc/net/sourceforge/jpcap/net/ARPFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/ARPPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java create mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java create mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPMessage.java create mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPMessages.java create mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPMessage.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPMessages.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPAddress.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPPort.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPPorts.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPProtocol.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPProtocols.java create mode 100644 javasrc/net/sourceforge/jpcap/net/IPVersions.java create mode 100644 javasrc/net/sourceforge/jpcap/net/LinkLayer.java create mode 100644 javasrc/net/sourceforge/jpcap/net/LinkLayers.java create mode 100644 javasrc/net/sourceforge/jpcap/net/MACAddress.java create mode 100644 javasrc/net/sourceforge/jpcap/net/Packet.java create mode 100644 javasrc/net/sourceforge/jpcap/net/PacketEncoding.java create mode 100644 javasrc/net/sourceforge/jpcap/net/PacketFactory.java create mode 100644 javasrc/net/sourceforge/jpcap/net/RawPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/TCPFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/TCPPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/TypesOfService.java create mode 100644 javasrc/net/sourceforge/jpcap/net/UDPFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/UDPPacket.java create mode 100644 javasrc/net/sourceforge/jpcap/net/makefile create mode 100644 javasrc/net/sourceforge/jpcap/net/package.html create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/README create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example1/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example15/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example2/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example4/Example4.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example4/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example5/Example5.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example5/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example6/Example6.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example6/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example7/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/makefile create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/package.html create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java create mode 100644 javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile create mode 100644 javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java create mode 100644 javasrc/net/sourceforge/jpcap/util/ArrayHelper.java create mode 100644 javasrc/net/sourceforge/jpcap/util/AsciiHelper.java create mode 100644 javasrc/net/sourceforge/jpcap/util/CVS/Entries create mode 100644 javasrc/net/sourceforge/jpcap/util/CVS/Repository create mode 100644 javasrc/net/sourceforge/jpcap/util/CVS/Root create mode 100644 javasrc/net/sourceforge/jpcap/util/HexHelper.java create mode 100644 javasrc/net/sourceforge/jpcap/util/PropertyHelper.java create mode 100644 javasrc/net/sourceforge/jpcap/util/Timeval.java create mode 100644 javasrc/net/sourceforge/jpcap/util/makefile create mode 100644 javasrc/net/sourceforge/jpcap/util/package.html create mode 100644 lib/log4j-1.2.14.jar create mode 100644 log4j.properties create mode 100644 tracefiles/TC_VxLTE_INT_REG_01.pcapng diff --git a/.gitignore b/.gitignore index c12601e..4e22650 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /bin/ /ttcn3build/ +/.apt_generated/ diff --git a/build_ta_vxlte.xml b/build_ta_vxlte.xml new file mode 100644 index 0000000..25780c0 --- /dev/null +++ b/build_ta_vxlte.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compile ${ant.project.name} Test Adapter and Codec + + + + + + + + + + + + + Create ${ant.project.name}TA.jar + + + + + + + + + + + + + + + + + + + diff --git a/javasrc/com/iskratel/protocol/diameter/parser/AVP.java b/javasrc/com/iskratel/protocol/diameter/parser/AVP.java new file mode 100644 index 0000000..e91ae8e --- /dev/null +++ b/javasrc/com/iskratel/protocol/diameter/parser/AVP.java @@ -0,0 +1,504 @@ +/* ######################################################################### */ +/* # # */ +/* # # */ +/* # Copyright (c) 2012 Sintesio Org. # */ +/* # # */ +/* # # */ +/* # File Name : AVP.java # */ +/* # # */ +/* # File Code : # */ +/* # # */ +/* # Description : Implementation of DIAMETER parser class. # */ +/* # # */ +/* # Revision : 1.0 # */ +/* # # */ +/* # Project Name : # */ +/* # # */ +/* # Date : Apr 2012 # */ +/* # # */ +/* # Author : Sintesio # */ +/* # # */ +/* # Translation : javac # */ +/* # # */ +/* # # */ +/* ######################################################################### */ + +package com.iskratel.protocol.diameter.parser; + +import java.util.Vector; + +/** + * Provides methods to create and manipulate of AVPs and Diameter messages. + */ + +/** + * This class defines the basic AVP data structure. + * + * The attributes can be accessed directly. + *
    + *
  • If you know that one AVP is a grouped AVP then you can parse its content and fill + * the childs Vector by calling the avp.ungroup() method. This will also set the is_ungrouped flag. + *
  • To create a new AVP just call one of the constructors. Don't forget to set the data with + * one of the setData functions or add the child avps if grouped. + *
  • If you have child avps the data that you set with setData will be discarded on encoding, + * as the grouped avps have priority. + *
+ */ +public class AVP { + + /** The AVP code */ + public int code=0; + + /** The AVP Vendor Specific flag. If not set, vendor_id will not be used */ + public boolean flag_vendor_specific=false; + + /** The AVP Mandatory Flag */ + public boolean flag_mandatory=true; + + /** The AVP Protected Flag indicating the need for end-to-end security */ + public boolean flag_protected=false; + + /** The Vendor Identifier. Should only be used when the vendor specific flag is set */ + public int vendor_id=0; + + /** The length of the encoded data of this AVP with padded bytes*/ + public int encoded_length=0; + + /** The length of the encoded data of this AVP */ + public int length=0; + + /** The binary data actually contained inside */ + public byte[] data={}; + + /** The integer value, precomputed for faster operation if the data is an integer */ + public int int_data; + public long long_data; + + /** Vector of child AVPs if the avps is a grouped one */ + public Vector childs = null; + + /** Indication if this AVP actually is a grouped AVP */ + public boolean is_ungrouped=false; + + + /** + * Dumb constructor used on decoding + */ + public AVP() + { + } + + /** + * Creates a new AVP. + * + * @param Code AVP code. + * @param Vendor_Specific true, if this AVP is vendor specific. + * @param Mandatory true, if mandatory tag should be set. + * @param Protected true, if protected tag should be send. + * @param Vendor_id Vendor-Id. + */ + public AVP(int Code,boolean Vendor_Specific,boolean Mandatory,boolean Protected, + int Vendor_id) + { + this.code = Code; + this.flag_vendor_specific = Vendor_Specific; + this.flag_mandatory = Mandatory; + this.flag_protected = Protected; + this.vendor_id = Vendor_id; + if (this.vendor_id!=0) this.flag_vendor_specific = true; + } + + + /** + * Creates a new AVP. + * + * @param Code AVP code. + * @param Mandatory true, if mandatory tag should be set. + * @param Vendor_id Vendor-Id + */ + public AVP(int Code,boolean Mandatory,int Vendor_id) + { + this.code = Code; + this.flag_mandatory = Mandatory; + this.vendor_id = Vendor_id; + if (this.vendor_id!=0) this.flag_vendor_specific = true; + } + + /** + * Sets the data to an array of bytes. + * + * @param Data Date field of an AVP represented in byte[]. + */ + public void setData(byte[] Data) + { + this.data = Data; + for(int i=0;i<4&&i>24) &0xFF); + data[1] = (byte)((Data>>16) &0xFF); + data[2] = (byte)((Data>> 8) &0xFF); + data[3] = (byte)((Data ) &0xFF); + int_data = Data; + long_data= Data; + } + + + /** + * Get String value. + * + * @return The data field of an AVP converted to string. + */ + public String getStringData() { + StringBuffer x = new StringBuffer(); + + for(int i=0;i=32&&data[i]<=126) + x.append((char)data[i]); + else + x.append("."); + + return x.toString(); + } + + /** + * Get int value. + * + * @return The data field of an AVP converted to int. + */ + public int getIntData() { + return int_data; + } + + /** + * Get int value. + * + * @return The data field of an AVP converted to int. + */ + public long getLongData() { + return long_data; + } + + /** + * Get byte[] value. + * + * @return The data field of an AVP converted to byte[]. + */ + public byte[] getData() { + return data; + } + + /** + * Adds one child avp to the avp and converts it to a grouped one. + * + * @param child Child AVP added to this AVP. + */ + public void addChildAVP(AVP child) + { + if (!is_ungrouped) is_ungrouped = true; + if (childs == null) childs = new Vector(); + childs.add(child); + } + + /** + * Returns the count of the child AVPs if the AVP is a grouped one, or 0 if not. + * + * @return the count of child avps, 0 if not. + */ + public int getChildCount() + { + if (!is_ungrouped||childs==null) return 0; + return childs.size(); + } + + /** + * Returns the child AVP at index if the AVP is a grouped one. + * + * @param index The position of the child AVP. + * @return the found AVP or null if out of bounds. + */ + public AVP getChildAVP(int index) + { + if (!is_ungrouped||childs==null) return null; + if (index>4)&0x0F]); + x.append(hexa[data[i]&0x0F]); + } + x.append(" INT_Data=");x.append(int_data); + x.append(" Char_Data=\""); + for(i=0;i=32&&data[i]<=126) + x.append((char)data[i]); + else + x.append("."); + x.append("\""); + if (is_ungrouped){ + x.append(" {"); + for(i=0;i + *
  • An AVP can be created most simply by parsing an array of bytes starting at at position + * and decoding it from the network format using the AVP decode(buffer,start) method. + *
  • To convert one AVP to the network format just call the byte[] encode(AVP) method + *
  • To compute the network representation of an AVP just call the avp.group() method. This will + * refresh the data attribute, but will not reset the is_ungrouped flag as the childs Vector is + * still filled with data. You don't need to call this before an encode as it is automatically + * called if the is_ungrouped flag is set. + * + * + */ +public class Codec { + + /** + * Creates an AVP object by decoding data from a byte array as represented on network + * + * @param from the byte array + * @param start from where to start decoding in the byte array + * @return the newly created AVP object + * @throws AVPDecodeException + */ + public static AVP decodeAVP(byte[] from,int start) throws AVPDecodeException + { + AVP to = new AVP(); + int i,j,len; + + if (from.length-start<8) throw new AVPDecodeException("Data is shorter than AVP Header"); + + to.code = ((int)from[start+0]&0xFF)<<24 | + ((int)from[start+1]&0xFF)<<16 | + ((int)from[start+2]&0xFF)<< 8 | + ((int)from[start+3]&0xFF); + + to.flag_vendor_specific = (from[start+4] & 0x80)!=0; + to.flag_mandatory = (from[start+4] & 0x40)!=0; + to.flag_protected = (from[start+4] & 0x20)!=0; + len = ((int)from[start+5]&0xFF)<<16 | + ((int)from[start+6]&0xFF)<< 8 | + ((int)from[start+7]&0xFF); + + if (to.flag_vendor_specific){ + to.vendor_id = ((int)from[start+ 8]&0xFF)<<24 | + ((int)from[start+ 9]&0xFF)<<16 | + ((int)from[start+10]&0xFF)<< 8 | + ((int)from[start+11]&0xFF); + j = 12; + } else { + to.vendor_id = 0; + j = 8; + } + + if (len>from.length-start) len = from.length-start; + to.data = new byte[len-j]; + System.arraycopy(from,start+j,to.data,0,len-j); + + if (len!=0) + for(i=0;i<4&&i> 24) & 0xFF); + to[1] = (byte) ((from.code >> 16) & 0xFF); + to[2] = (byte) ((from.code >> 8) & 0xFF); + to[3] = (byte) ( from.code & 0xFF); + + if (from.flag_vendor_specific) to[4] |= 0x80; + if (from.flag_mandatory) to[4] |= 0x40; + if (from.flag_protected) to[4] |= 0x20; + to[5] = (byte) ((send_len >> 16) & 0xFF); + to[6] = (byte) ((send_len >> 8) & 0xFF); + to[7] = (byte) ( send_len & 0xFF); + + if (from.flag_vendor_specific){ + to[ 8] = (byte) ((from.vendor_id >> 24) & 0xFF); + to[ 9] = (byte) ((from.vendor_id >> 16) & 0xFF); + to[10] = (byte) ((from.vendor_id >> 8) & 0xFF); + to[11] = (byte) ( from.vendor_id & 0xFF); + j = 12; + } + else j = 8; + + if (from.data.length!=0) + System.arraycopy(from.data,0,to,j,from.data.length); + + return to; + } + + /** + * Calculates the needed space for an encoded AVP + * + * @param avp + * @return The size of the AVP. + */ + public static int getEncodedAVPSize(AVP avp) + { + AVP avp2; + int datalen=0; + int i; + if (avp.is_ungrouped&&avp.childs!=null){ + for(i=0;ifrom.length-start) len=from.length-start; + to.flags=from[start+4]; + to.flagRequest = (from[start+4] & 0x80)!=0; + to.flagProxiable = (from[start+4] & 0x40)!=0; + to.flagError = (from[start+4] & 0x20)!=0; + to.flagRetransmission = (from[start+4] & 0x10)!=0; + + to.commandCode = ((int)from[start+ 5]&0xFF)<<16 | + ((int)from[start+ 6]&0xFF)<< 8 | + ((int)from[start+ 7]&0xFF); + + to.applicationID = ((int)from[start+ 8]&0xFF)<<24 | + ((int)from[start+ 9]&0xFF)<<16 | + ((int)from[start+10]&0xFF)<< 8 | + ((int)from[start+11]&0xFF); + + to.hopByHopID = ((int)from[start+12]&0xFF)<<24 | + ((int)from[start+13]&0xFF)<<16 | + ((int)from[start+14]&0xFF)<< 8 | + ((int)from[start+15]&0xFF); + + to.endToEndID = ((int)from[start+16]&0xFF)<<24 | + ((int)from[start+17]&0xFF)<<16 | + ((int)from[start+18]&0xFF)<< 8 | + ((int)from[start+19]&0xFF); + + i = start+20; + while (i temp; + byte[] t; + + temp = new Vector(); + for(i=0;i> 16) & 0xFF); + to[2] = (byte) ((total_len >> 8) & 0xFF); + to[3] = (byte) ( total_len & 0xFF); + + if (from.flagRequest) to[4] |= 0x80; + if (from.flagProxiable) to[4] |= 0x40; + if (from.flagError) to[4] |= 0x20; + if (from.flagRetransmission) to[4] |= 0x10; + to[5] = (byte) ((from.commandCode >> 16) & 0xFF); + to[6] = (byte) ((from.commandCode >> 8) & 0xFF); + to[7] = (byte) ( from.commandCode & 0xFF); + + to[ 8] = (byte) ((from.applicationID >> 24) & 0xFF); + to[ 9] = (byte) ((from.applicationID >> 16) & 0xFF); + to[10] = (byte) ((from.applicationID >> 8) & 0xFF); + to[11] = (byte) ( from.applicationID & 0xFF); + + to[12] = (byte) ((from.hopByHopID >> 24) & 0xFF); + to[13] = (byte) ((from.hopByHopID >> 16) & 0xFF); + to[14] = (byte) ((from.hopByHopID >> 8) & 0xFF); + to[15] = (byte) ( from.hopByHopID & 0xFF); + + to[16] = (byte) ((from.endToEndID >> 24) & 0xFF); + to[17] = (byte) ((from.endToEndID >> 16) & 0xFF); + to[18] = (byte) ((from.endToEndID >> 8) & 0xFF); + to[19] = (byte) ( from.endToEndID & 0xFF); + + len = 20; + for(i=0;i avps; + public int numberOfAvps=0; + + + /** statistical time - close to media */ + public long networkTime=0; + + + /** + * Dumb constructor. + */ + public DiameterMessage() + { + avps = new Vector(); + } + + /** + * Constructor that initializes everything. + * @param Command_Code + * @param Request + * @param Proxiable + * @param Application_id + * @param HopByHop_id + * @param EndToEnd_id + */ + public DiameterMessage(int Command_Code,boolean Request,boolean Proxiable, + int Application_id,/*long*/int HopByHop_id, /*long*/int EndToEnd_id) + { + this.commandCode = Command_Code; + this.flagRequest = Request; + this.flagProxiable = Proxiable; + this.applicationID = Application_id; + this.hopByHopID = HopByHop_id; + this.endToEndID = EndToEnd_id; + avps = new Vector(); + } + + /** + * Constructor that initializes just the needed attributes. + * @param Command_Code + * @param Request + * @param Application_id + */ + public DiameterMessage(int Command_Code,boolean Request,int Application_id) + { + this.commandCode = Command_Code; + this.flagRequest = Request; + this.flagProxiable = false; + this.applicationID = Application_id; + avps = new Vector(); + } + + /** + * Adds one AVP to the message. + * @param child + */ + public void addAVP(AVP child) + { + avps.add(child); + } + + /** + * Returns the count of the AVPs. + * + * @return The number of all available AVPs. + */ + public int getAVPCount() + { + return avps.size(); + } + + /** + * Returns the AVP. + * @param index + * @return the found AVP or null if out of bounds + */ + public AVP getAVP(int index) + { + if (index + * + * Class DIAMETER Codec is extending AbstractBaseCodec class + * and provides DIAMETER Codec and Decodec. + *

    + * @author SINTESIO + * + * */ +public class DIAMETERCodec extends AbstractBaseCodec implements TciCDProvided { + + private TciCDRequired typeServer; + private TciTMProvided management; + + private Type booleanType; + private Type octetstringType; + private Type charstringType; + private Type universalcharstringType; + private Type integerType; + private Type bigintegerType; + + private byte[] encodedMsg = null ; + private int UsedBitsInByte; + private boolean padding = true; + + /*used for decoding of unsupported AVPs inside messages*/ + RecordOfValue rov_any_AVP; + + /** Command code of Request/Answer */ + public static final int Code_CE=257;// Capabilities-Exchange + public static final int Code_RA=258;// Re-Auth + public static final int Code_AC=271;// Accounting + public static final int Code_AS=274;// Abort-Session + public static final int Code_ST=275;// Session-Termination + public static final int Code_DW=280;// Device-Watchdog + public static final int Code_DP=282;// Disconnect-Peer + + /* Codes on Cx */ + public static final int Code_UA=300;// User-Authorization + public static final int Code_SA=301;// Server-Assignment-Request SAR (284 in RFC4740 or 301 in TS 129 229) + public static final int Code_LI=302;// Location-Info-Request LIR (285 in RFC4740 or 302 in TS 129 229) + public static final int Code_MA=303;// Multimedia-Auth-Request MAR (286 in RFC4740 or 303 in TS 129 229) + public static final int Code_RT=304;// Registration-Termination-Request RTR (287 in RFC4740 or 304 in TS 129 229) + public static final int Code_PP=305;// Push-Profile-Request PPR (288 in RFC4740 or 305 in TS 129 229) + + /* Codes on Sh/Dh interface */ + public static final int Code_UD=306;// UDR User-Data-Request AS->HSS UDR (306) + public static final int Code_PU=307;// PUR Profile-Update-Request AS->HSS PUR (307) + public static final int Code_SN=308;// SNR Subscribe-Notifications-Request AS->HSS SNR (308) + public static final int Code_PN=309;// PNR Profile-Notification-Request HSS->AS PNR (309) + + /* Codes on Rx interface */ + public static final int Code_AA=265;// Auth-Accounting + + /* Codes on Gx interface - RFC4006 and TS 129 212 */ + public static final int Code_CC=272;// Credit-Control + + /* Codes on S6a interface - TS 129 272 */ + public static final int Code_UL=316; // Update-Location-Request ULR (316)- Ref: TS 129 272 7.2.3-4 + public static final int Code_CL=317; // Cancel-Location-Request CLR (317)- Ref: TS 129 272 7.2.7-8 + public static final int Code_AI=318; // Authentication-Information-Request AIR (318)- Ref: TS 129 272 7.2.5-6 + public static final int Code_ID=319; // Insert-Subscriber-Data-Request IDR (319)- Ref: TS 129 272 7.2.9-10 + public static final int Code_DS=320; // Delete-Subscriber-Data-Request DSR (320)- Ref: TS 129 272 7.2.11-12 + public static final int Code_PUE=321; // Purge-UE-Request PUR (321)- Ref: TS 129 272 7.2.13-14 + public static final int Code_RS=322; // Reset-Request DSR (322)- Ref: TS 129 272 7.2.15-16 + public static final int Code_NO=323; // Notify-Request NOR (323)- Ref: TS 129 272 7.2.17-18 + + + /*RFC3588 AVP codes*/ + private static final int AVP_Accounting_Realtime_Required_AVP = 483; //Ref: RFC3588 9.8.7. Accounting-Realtime-Required AVP + private static final int AVP_Accounting_Record_Number_AVP = 485; //Ref: RFC3588 9.8.3. Accounting-Record-Number AVP + private static final int AVP_Accounting_Record_Type_AVP = 480; //Ref: RFC3588 9.8.1. Accounting-Record-Type AVP + private static final int AVP_Accounting_Sub_Session_Id_AVP = 287; //Ref: RFC3588 9.8.6. Accounting-Sub-Session-Id AVP + private static final int AVP_Acct_Application_Id_AVP = 259; //Ref: RFC3588 6.9. Acct-Application-Id AVP + private static final int AVP_Acct_Interim_Interval_AVP = 85; //Ref: RFC3588 9.8.2. Acct-Interim-Interval + private static final int AVP_Acct_Multi_Session_Id_AVP = 50; //Ref: RFC3588 9.8.5. Acct-Multi-Session-Id AVP + private static final int AVP_Acct_Session_Id_AVP = 44; //Ref: RFC3588 9.8.4. Acct-Session-Id AVP + private static final int AVP_Auth_Application_Id_AVP = 258; //Ref: RFC3588 6.8. Auth-Application-Id AVP + private static final int AVP_Class_AVP = 25; //Ref: RFC3588 8.20. Class AVP + private static final int AVP_Destination_Host_AVP = 293; //Ref: RFC3588 6.5. Destination-Host AVP + private static final int AVP_Destination_Realm_AVP = 283; //Ref: RFC3588 6.6. Destination-Realm AVP + private static final int AVP_Disconnect_Cause_AVP = 273; //Ref: RFC3588 5.4.3. Disconnect-Cause AVP + private static final int AVP_Error_Message_AVP = 281; //Ref: RFC3588 7.3. Error-Message AVP + private static final int AVP_Error_Reporting_Host_AVP = 294; //Ref: RFC3588 7.4. Error-Reporting-Host AVP + private static final int AVP_Event_Timestamp_AVP = 55; //Ref: RFC3588 8.21. Event-Timestamp AVP + private static final int AVP_Failed_AVP = 279; //Ref: RFC3588 7.5. Failed-AVP AVP + private static final int AVP_Firmware_Revision_AVP = 267; //Ref: RFC3588 5.3.4. Firmware-Revision AVP + private static final int AVP_Host_IP_Address_AVP = 257; //Ref: RFC3588 5.3.5. Host-IP-Address AVP + private static final int AVP_Inband_Security_Id_AVP = 299; //Ref: RFC3588 6.10. Inband-Security-Id AVP + private static final int AVP_Origin_Host_AVP = 264; //Ref: RFC3588 6.3. Origin-Host AVP + private static final int AVP_Origin_Realm_AVP = 296; //Ref: RFC3588 6.4. Origin-Realm AVP + private static final int AVP_Origin_State_Id_AVP = 278; //Ref: RFC3588 8.16. Origin-State-Id AVP + private static final int AVP_Product_Name_AVP = 269; //Ref: RFC3588 5.3.7. Product-Name AVP + private static final int AVP_Proxy_Host_AVP = 280; //Ref: RFC3588 6.7.3. Proxy-Host AVP + private static final int AVP_Proxy_Info_AVP = 284; //Ref: RFC3588 6.7.2. Proxy-Info AVP + private static final int AVP_Proxy_State_AVP = 33; //Ref: RFC3588 6.7.4. Proxy-State AVP + private static final int AVP_Re_Auth_Request_Type_AVP = 285; //Ref: RFC3588 8.12. Re-Auth-Request-Type AVP + private static final int AVP_Redirect_Host_AVP = 292; //Ref: RFC3588 6.12. Redirect-Host AVP + private static final int AVP_redirect_Max_Cache_Time_AVP = 262; //Ref: RFC3588 redirect_Max_Cache_Time_AVP is not defined. + private static final int AVP_Redirect_Host_Usage_AVP = 261; //Ref: RFC3588 6.13. Redirect-Host-Usage AVP + private static final int AVP_Result_Code_AVP = 268; //Ref: RFC3588 7.1. Result-Code AVP + private static final int AVP_Route_Record_AVP = 282; //Ref: RFC3588 6.7.1. Route-Record AVP + private static final int AVP_Session_Id_AVP = 263; //Ref: RFC3588 8.8. Session-Id AVP + private static final int AVP_Supported_Vendor_Id_AVP = 265; //Ref; RFC3588 5.3.6. Supported-Vendor-Id AVP + private static final int AVP_Termination_Cause_AVP = 295; //Ref: RFC3588 8.15. Termination-Cause AVP + private static final int AVP_User_Name_AVP = 1; //Ref: RFC3588 8.14. User-Name AVP + private static final int AVP_Vendor_Id_AVP = 266; //Ref: RFC3588 5.3.3. Vendor-Id AVP + private static final int AVP_Vendor_Specific_Appl_Id_AVP = 260; //Ref: RFC3588 6.11. Vendor-Specific-Application-Id AVP + /*end RFC3588 AVP codes*/ + + //RFC4740 AVP codes{ +// private static final int AVP_Auth_Grace_Period_AVP = 276; //Ref: RFC3588 8.10. Auth-Grace-Period AVP + private static final int AVP_Auth_Session_State_AVP = 277; //Ref: RFC3588 8.11. Auth-Session-State AVP +// private static final int AVP_Authorization_Lifetime_AVP = 291; //Ref: RFC3588 8.9. Authorization-Lifetime AVP +// private static final int AVP_Redirect_Max_Cache_Time_AVP = 262; //Ref: RFC3588 6.14. Redirect-Max-Cache-Time AVP +// private static final int AVP_SIP_Accounting_Information_AVP = 368; //Ref: RFC4740 9.1. SIP-Accounting-Information AVP +// private static final int AVP_SIP_Accounting_Server_URI_AVP = 369; //Ref: RFC4740 9.1.1. SIP-Accounting-Server-URI AVP +// private static final int AVP_SIP_AOR_AVP = 122; //Ref: RFC4740 9.8. SIP-AOR AVP + private static final int AVP_SIP_Auth_Data_Item_RFC_AVP = 376; //Ref: RFC4740 9.5. SIP-Auth-Data-Item AVP + private static final int AVP_SIP_Item_Number_AVP = 378; + private static final int AVP_SIP_Authenticate_RFC_AVP = 379; //Ref: RFC4740 9.5.3. SIP-Authenticate AVP +// private static final int AVP_SIP_Authentication_Info_AVP = 381; //Ref: RFC4740 9.5.5. SIP-Authentication-Info AVP + private static final int AVP_SIP_Authentication_Scheme_RFC_AVP = 377; //Ref: RFC4740 9.5.1. SIP-Authentication-Scheme AVP + private static final int AVP_SIP_Authorization_RFC_AVP = 380; //Ref: RFC4740 9.5.4. SIP-Authorization AVP +// private static final int AVP_SIP_Credit_Control_Server_URI_AVP = 370; //Ref: RFC4740 9.1.2. SIP-Credit-Control-Server-URI AVP +// private static final int AVP_SIP_Deregistration_Reason_AVP = 383; //Ref: RFC4740 9.5.5. SIP-Authentication-Info AVP +// private static final int AVP_SIP_Item_Number_AVP = 378; //Ref: RFC4740 9.5.2 SIP-Item-Number AVP +// private static final int AVP_SIP_MandatoryCapability_AVP = 373; //Ref: RFC4740 9.3.1. SIP-Mandatory-Capability AVP + private static final int AVP_SIP_Method_AVP = 393; //Ref: RFC4740 9.14. SIP-Method AVP + private static final int AVP_SIP_Number_Auth_Items_RFC_AVP = 382; //Ref: RFC4740 9.6. SIP-Number-Auth-Items AVP +// private static final int AVP_SIP_OptionalCapability_AVP = 374; //Ref: RFC4740 9.3.2. SIP-Optional-Capability AVP +// private static final int AVP_SIP_Reason_Code_AVP = 384; //Ref: RFC4740 9.7.1. SIP-Reason-Code AVP +// private static final int AVP_SIP_Reason_Info_AVP = 385; //Ref: RFC4740 9.7.2. SIP-Reason-Info AVP +// private static final int AVP_SIP_Server_Assignment_Type_AVP = 375; //Ref: RFC4740 9.4. SIP-Server-Assignment-Type AVP +// private static final int AVP_SIP_Server_Capabilities_AVP = 372; //Ref: RFC4740 9.3. SIP-Server-Capabilities AVP +// private static final int AVP_SIP_Server_URI_AVP = 371; //Ref: RFC4740 9.2 SIP-Server-URI AVP +// private static final int AVP_SIP_Supported_User_Data_Type_AVP = 388; //Ref: RFC4740 9.12.1. SIP-User-Data-Type AVP +// private static final int AVP_SIP_User_Authorization_Type_AVP = 387; //Ref: RFC4740 9.10. SIP-User-Authorization-Type AVP +// private static final int AVP_SIP_User_Data_Already_Available_AVP = 392; //Ref: RFC4740 9.13. SIP-User-Data-Already-Available AVP +// private static final int AVP_SIP_User_Data_AVP = 389; //Ref: RFC4740 9.12. SIP-User-Data AVP +// private static final int AVP_SIP_User_Data_Contents_AVP = 391; //Ref: RFC4740 9.12.2. SIP-User-Data-Contents AVP +// private static final int AVP_SIP_User_Data_Type_AVP = 390; //Ref: RFC4740 9.12.1. SIP-User-Data-Type AVP +// private static final int AVP_SIP_Visited_Network_Id_AVP = 386; //Ref: RFC4740 9.9. SIP-Visited-Network-Id AVP + //end of RFC4740 AVP codes + + private static final int AVP_Digest_Realm_AVP = 104; + private static final int AVP_Digest_Nonce_AVP = 105; + private static final int AVP_Digest_Domain_AVP = 119; + private static final int AVP_Digest_Opaque_AVP = 116; + private static final int AVP_Digest_Stale_AVP = 120; + private static final int AVP_Digest_Algorithm_AVP = 111; + private static final int AVP_Digest_QoP_AVP = 110; + private static final int AVP_Digest_HA1_AVP = 121; + private static final int AVP_Digest_Auth_Param_AVP = 117; + private static final int AVP_Digest_Username_AVP = 115; + private static final int AVP_Digest_URI_AVP = 109; + private static final int AVP_Digest_Response_AVP = 103; + private static final int AVP_Digest_CNonce_AVP = 113; + private static final int AVP_Digest_Nonce_Count_AVP = 114; + private static final int AVP_Digest_Method_AVP = 108; + private static final int AVP_Digest_Entity_Body_Hash_AVP = 112; + private static final int AVP_Digest_Nextnonce_AVP = 107; + private static final int AVP_Digest_Response_Auth_AVP = 106; + + + //RFC4005 AVP codes + private static final int AVP_Called_Station_Id_AVP = 30; + private static final int AVP_Framed_IP_Address_AVP = 8; + private static final int AVP_Framed_IPv6_Prefix_AVP = 97; + private static final int AVP_Framed_Interface_Id_AVP = 96; + //end of RFC4005 AVP codes + + //RFC4006 AVP codes +// private static final int AVP_Rating_Group_AVP = 433; //Ref: RFC4006 8.29. Rating-Group AVP +private static final int AVP_Tariff_Time_Change_AVP = 451; //Ref: RFC4006 8.20. Tariff-Time-Change AVP +// private static final int AVP_CC_Correlation_Id_AVP = 411; //Ref: RFC4006 8.1. CC-Correlation-Id AVP +private static final int AVP_CC_Input_Octets_AVP = 412; //Ref: RFC4006 8.24. CC-Input-Octets AVP +private static final int AVP_CC_Money_AVP = 413; //Ref: RFC4006 8.22. CC-Money AVP +private static final int AVP_CC_Output_Octets_AVP = 414; //Ref: RFC4006 8.25. CC-Output-Octets AVP + private static final int AVP_CC_Request_Number_AVP = 415; //Ref: RFC4006 8.2. CC-Request-Number AVP + private static final int AVP_CC_Request_Type_AVP = 416; //Ref: RFC4006 8.3. CC-Request-Type AVP +private static final int AVP_CC_Service_Specific_Units_AVP = 417; //Ref: RFC4006 8.26. CC-Service-Specific-Units AVP +private static final int AVP_CC_Session_Failover_AVP = 418; //Ref: RFC4006 8.4. CC-Session-Failover AVP +// private static final int AVP_vendIdCC_Sub_Session_Id_AVP = 419; //Ref: RFC4006 8.5. CC-Sub-Session-Id AVP +private static final int AVP_CC_Time_AVP = 420; //Ref: RFC4006 8.21. CC-Time AVP +private static final int AVP_CC_Total_Octets_AVP = 421; //Ref: RFC4006 8.23. CC-Total-Octets AVP +private static final int AVP_CC_Unit_Type_AVP = 454; //Ref: RFC4006 8.32. CC-Unit-Type AVP +// private static final int AVP_vendIdCheck_Balance_Result_AVP = 422; //Ref: RFC4006 8.6. Check-Balance-Result AVP 12.8. Check-Balance-Result AVP +private static final int AVP_Cost_Information_AVP = 423; //Ref: RFC4006 8.7. Cost-Information AVP +private static final int AVP_Cost_Unit_AVP = 424; //Ref: RFC4006 8.12. Cost-Unit AVP +private static final int AVP_Credit_Control_Failure_Handling_AVP = 427; //Ref: RFC4006 8.14. Credit-Control-Failure-Handling AVP +private static final int AVP_Currency_Code_AVP = 425; //Ref: RFC4006 8.11. Currency-Code AVP +private static final int AVP_Direct_Debiting_Failure_Handling_AVP = 428; //Ref: RFC4006 8.15. Direct-Debiting-Failure-Handling AVP +private static final int AVP_Exponent_AVP = 429; //Ref: RFC4006 8.9. Exponent AVP +private static final int AVP_Filter_Id_AVP = 11; //Ref: RFC4005 6.7. Filter-Id AVP +private static final int AVP_Final_Unit_Action_AVP = 449; //Ref: RFC4006 8.35. Final-Unit-Action AVP +private static final int AVP_Final_Unit_Indication_AVP = 430; //Ref: RFC4006 8.34. Final-Unit-Indication AVP +private static final int AVP_G_S_U_Pool_Identifier_AVP = 453; //Ref: RFC4006 8.31. G-S-U-Pool-Identifier AVP +private static final int AVP_G_S_U_Pool_Reference_AVP = 457; //Ref: RFC4006 8.30. G-S-U-Pool-Reference AVP +private static final int AVP_Granted_Service_Unit_AVP = 431; //Ref: RFC4006 8.17. Granted-Service-Unit AVP +// private static final int AVP_vendIdMultiple_Services_Credit_Control_AVP = 456; //Ref: RFC4006 8.16. Multiple-Services-Credit-Control AVP +private static final int AVP_Multiple_Services_Indicator_AVP = 455; //Ref: RFC4006 8.40. Multiple-Services-Indicator AVP + private static final int AVP_Redirect_Address_Type_AVP = 433; //Ref: RFC4006 8.38. Redirect-Address-Type AVP + private static final int AVP_Redirect_Server_Address_AVP = 435; //Ref: RFC4006 8.39. Redirect-Server-Address AVP + private static final int AVP_Redirect_Server_AVP = 434; //Ref: RFC4006 8.37. Redirect-Server AVP +// private static final int AVP_vendIdRequested_Action_AVP = 436; //Ref: RFC4006 8.41. Requested-Action AVP +private static final int AVP_Requested_Service_Unit_AVP = 437; //Ref: RFC4006 8.18. Requested-Service-Unit AVP +private static final int AVP_Restriction_Filter_Rule_AVP = 438; //Ref: RFC4006 8.36. Restriction-Filter-Rule AVP + private static final int AVP_Service_Context_Id_AVP = 461; //Ref: RFC4006 8.42. Service-Context-Id AVP + private static final int AVP_Service_Identifier_AVP = 439; //Ref: RFC4006 8.28. Service-Identifier AVP + private static final int AVP_Requested_Action_AVP = 436; + // private static final int AVP_vendIdService_Parameter_Info_AVP = 440; //Ref: RFC4006 8.43. Service-Parameter-Info AVP +// private static final int AVP_vendIdService_Parameter_Type_AVP = 441; //Ref: RFC4006 8.44. Service-Parameter-Type AVP +// private static final int AVP_vendIdService_Parameter_Value_AVP = 442; //Ref: RFC4006 8.45. Service-Parameter-Value AVP + private static final int AVP_Subscription_Id_AVP = 443; //Ref: RFC4006 8.46. Subscription-Id AVP + private static final int AVP_Subscription_Id_Data_AVP = 444; //Ref: RFC4006 + private static final int AVP_Subscription_Id_Type_AVP = 450; //Ref: RFC4006 8.47. Subscription-Id-Type AVP + private static final int AVP_Tariff_Change_Usage_AVP = 452;//Ref: RFC4006 8.27. Tariff-Change-Usage AVP + private static final int AVP_Rating_Group_AVP = 433; +private static final int AVP_Unit_Value_AVP = 445; //Ref: RFC4006 8.8. Unit-Value AVP +private static final int AVP_Used_Service_Unit_AVP = 446; //Ref: RFC4006 8.19. Used-Service-Unit AVP +// private static final int AVP_vendIdUser_Equipment_Info_AVP = 458; //Ref: RFC4006 8.49. User-Equipment-Info AVP +// private static final int AVP_vendIdUser_Equipment_Info_Type_AVP = 459; //Ref: RFC4006 8.50. User-Equipment-Info-Type AVP +// private static final int AVP_vendIdUser_Equipment_Info_Value_AVP = 460; //Ref: RFC4006 8.51. User-Equipment-Info-Value AVP +private static final int AVP_Validity_Time_AVP = 448; //Ref: RFC4006 8.33. Validity-Time AVP +private static final int AVP_Value_Digits_AVP = 447; //Ref: RFC4006 8.10. Value-Digits AVP + /*end of RFC4006 AVP codes*/ + + //TS129_229 AVP codes +// private static final int AVP_vendIdCharging_Information_AVP = 61; //Ref: ETSI TS 129 229 Charging_Information_AVP +// private static final int AVP_vendIdPrimary_Event_Charging_Function_Name_AVP = 619; //Ref: ETSI TS 129 229 Primary_Event_Charging_Function_Name_AVP +// private static final int AVP_vendIdSecondary_Event_Charging_Function_Name_AVP = 620; //Ref: ETSI TS 129 229 Secondary_Event_Charging_Function_Name_AVP +// private static final int AVP_vendIdPrimary_Charging_Collection_Function_Name_AVP = 621; //Ref: ETSI TS 129 229 Primary_Charging_Collection_Function_Name_AVP +// private static final int AVP_vendIdSecondary_Charging_Collection_Function_Name_AVP = 622; //Ref: ETSI TS 129 229 Secondary_Charging_Collection_Function_Name_AVP + private static final int AVP_Charging_Rule_Remove_AVP = 1002; + private static final int AVP_Charging_Rule_Install_AVP = 1001; + private static final int AVP_Charging_Rule_Report_AVP = 1018; + private static final int AVP_Routing_Rule_Install_AVP = 1081; + private static final int AVP_Routing_Rule_Remove_AVP = 1075; + private static final int AVP_QoS_Information_AVP = 1016; + private static final int AVP_Server_Capabilities_AVP = 603; //Ref: ETSI TS 129 229 Server_Capabilities_AVP +// private static final int AVP_vendIdMandatory_Capability_AVP = 604; //Ref: ETSI TS 129 229 Mandatory_Capability_AVP +// private static final int AVP_vendIdOptional_Capability_AVP = 605; //Ref: ETSI TS 129 229 Optional_Capability_AVP + private static final int AVP_IP_CAN_Type_AVP = 1027; + private static final int AVP_RAT_Type_AVP = 1032; //Ref: ETSI TS 129 212 RAT_Type_AVP + private static final int AVP_Event_Trigger_AVP = 1006; + private static final int AVP_Session_Release_Cause_AVP = 1045; + private static final int AVP_Charging_Rule_Name_AVP = 1005; + private static final int AVP_AN_GW_Address_AVP = 1050; + + private static final int AVP_Experimental_Result_AVP = 297; + private static final int AVP_Experimental_Result_Code_AVP = 298; + private static final int AVP_User_Data_AVP = 606; + + /*end of TS129_229 AVP codes*/ + + //tS129_329 + private static final int AVP_Public_Identity_AVP = 601; + private static final int AVP_Server_Name_AVP = 602; + private static final int AVP_Feature_List_ID_AVP = 629; // Ref: 3GPP TS 29.229, clause 6.3.30 + private static final int AVP_Feature_List_AVP = 630; // Ref: 3GPP TS 29.229, clause 6.3.31 + private static final int AVP_Supported_Features_AVP = 628; // Ref: 3GPP TS 29.329 6.3.11 Supported-Features AVP (See 3GPP TS 29.229, clause 6.3.29) + /*End TS129_329*/ + + //Sh AVP codes + + ////private static final int AVP_Public_Identity_AVP = 601; + private static final int AVP_User_Identity_AVP = 700; + private static final int AVP_MSISDN_AVP= 701; + private static final int AVP_User_Data_Sh_AVP= 702; + private static final int AVP_Data_Reference_AVP = 703; + private static final int AVP_Service_Indication_AVP = 704; + private static final int AVP_Subs_Req_Type_AVP =705; + private static final int AVP_Requested_Domain_AVP = 706; + private static final int AVP_Current_Location_AVP = 707; + private static final int AVP_Identity_Set_AVP = 708; + private static final int AVP_Expiry_Time_AVP= 709; + private static final int AVP_Send_Data_Indication_AVP = 710; + private static final int AVP_Repository_Data_ID_AVP = 715; + private static final int AVP_Sequence_Number_AVP = 716; + ////private static final int AVP_Server_Name_AVP = 602; + ////private static final int AVP_Supported_Features_AVP = 628; + ////private static final int AVP_Feature_List_ID_AVP = 629; + ////private static final int AVP_Feature_List_AVP = 630; + private static final int AVP_Wildcarded_PSI_AVP = 634; + private static final int AVP_Wildcarded_IMPU_AVP = 636; + private static final int AVP_DSAI_Tag_AVP = 711; + ////private static final int AVP_Experimental_Result_Code_AVP = 298; + ////private static final int AVP_Experimental_Result_AVP = 297; + ////private static final int AVP_User_Data_AVP = 606; + + + //TS129_215 AVP codes + private static final int AVP_QoS_Rule_Name_AVP = 1054; + private static final int AVP_Rule_Failure_Code_AVP = 1031; + private static final int AVP_PDN_Connection_ID_AVP = 1065; + private static final int AVP_QoS_Rule_Report_AVP = 1055; + private static final int AVP_QoS_Rule_Install_AVP = 1051; + private static final int AVP_Multiple_BBERF_Action_AVP = 2204; + private static final int AVP_Session_Linking_Indicator_AVP = 1064; + private static final int AVP_Subses_Decision_Info_AVP = 2200; + private static final int AVP_Subses_Enforcement_Info_AVP = 2201; + private static final int AVP_Subsession_Id_AVP = 2202; + private static final int AVP_Subsession_Operation_AVP = 2203; + //End TS129_215 AVP codes + + //TS129_272 AVP codes + private static final int AVP_ULR_Flags_AVP = 1405; //ref: 7.3.7 ETSI TS 129 272 + private static final int AVP_ULA_Flags_AVP = 1406; //ref: 7.3.8 + private static final int AVP_Visited_PLMN_Id_AVP = 1407; //ref: 7.3.9 + private static final int AVP_UE_SRVCC_Capability_AVP = 1615; //ref: 7.3.130 + private static final int AVP_SGSN_Number_AVP = 1489; //ref: 7.3.102 + private static final int AVP_Homogeneous_Support_AVP = 1493; //ref: 7.3.107 + + private static final int AVP_Context_Identifier_AVP = 1423; //ref: 7.3.27 + private static final int AVP_Service_Selection_AVP = 493; //ref: 7.3.36 + private static final int AVP_MIP_Home_Agent_Address_AVP = 334; //ref: 7.3.42 - IETF RFC 4004 7.4 + private static final int AVP_MIP_Home_Agent_Host_AVP = 348; //ref: 7.3.43 - IETF RFC 4004 7.11 + private static final int AVP_MIP6_Home_Link_Prefix_AVP = 125; //ref:IETF RFC 5447 4.2.4 + private static final int AVP_MIP6_Agent_Info_AVP = 486; //ref: 7.3.45 + private static final int AVP_Visited_Network_Identifier_AVP = 600; //ref: 7.3.105 - TS 129 229 6.3.1 + private static final int AVP_SIP_Authentication_Context_AVP = 611; + private static final int AVP_UAR_Flags_AVP = 637; + private static final int AVP_User_Authorization_Type_AVP = 623; + private static final int AVP_Server_Assignment_Type_AVP = 614; + private static final int AVP_User_Data_Already_Available_AVP = 624; + private static final int AVP_SIP_Digest_Authenticate_AVP = 635; + private static final int AVP_SCSCF_Restoration_Info_AVP = 639; + private static final int AVP_Restoration_Info_AVP = 649; + private static final int AVP_Path_AVP = 640; + private static final int AVP_Contact_AVP = 641; + private static final int AVP_Subscription_Info_AVP = 642; + private static final int AVP_Originating_Request_AVP = 652; + private static final int AVP_Deregistration_Reason_AVP = 615; + private static final int AVP_Reason_Code_AVP = 616; + private static final int AVP_Reason_Info_AVP = 617; + private static final int AVP_Specific_APN_Info_AVP = 1472; //ref: 7.3.82 + private static final int AVP_Active_APN_AVP = 1612; //ref: 7.3.127 + private static final int AVP_Error_Diagnostic_AVP = 1614; //ref: 7.3.128; + private static final int AVP_Subscriber_Status_AVP = 1424; + private static final int AVP_Operator_Determined_Barring_AVP = 1425; + private static final int AVP_HPLMN_ODB_AVP = 1418; + private static final int AVP_Access_Restriction_Data_AVP = 1426; + private static final int AVP_APN_OI_Replacement_AVP = 1427; + private static final int AVP_Max_Requested_Bandwidth_UL_AVP = 516; + private static final int AVP_Max_Requested_Bandwidth_DL_AVP = 515; + private static final int AVP_AMBR_AVP = 1435; + + private static final int AVP_All_APN_Conf_Included_Id_AVP = 1428; + private static final int AVP_APN_Configuration_Profile_AVP = 1429; + private static final int AVP_PDN_Type_AVP = 1456; + private static final int AVP_QoS_Class_Identifier_AVP=1028; + private static final int AVP_Priority_Level_AVP = 1046; + private static final int AVP_Allocation_Retention_Priority_AVP =1034; + private static final int AVP_EPS_Subscribed_QoS_Profile_AVP = 1431; + private static final int AVP_APN_Configuration_AVP = 1430; + private static final int AVP_GMLC_Address_AVP = 2405; //ref: 7.3.109 - TS 129 173 6.4.7 + //.... + private static final int AVP_Complete_DL_Included_Indicator_AVP = 1468; + private static final int AVP_QoS_Subscribed_AVP = 1404; + private static final int AVP_PDP_Type_AVP = 1470; + private static final int AVP_PDP_Context_AVP = 1469; + private static final int AVP_GPRS_Subscription_Data_AVP = 1467; + private static final int AVP_Subscription_Data_AVP = 1400; //ref: 7.3.2 + private static final int AVP_Immediate_Response_Preferred_AVP = 1412; //ref: 7.3.16 + private static final int AVP_Re_synchronization_Info_AVP = 1411; //ref: 7.3.15 + private static final int AVP_Req_EUTRAN_Auth_Info_AVP = 1408; //ref: 7.3.11 + private static final int AVP_Req_UTRAN_GERAN_Auth_Info_AVP = 1409; //ref: 7.3.12 + + private static final int AVP_Item_Number_AVP = 1419; + private static final int AVP_RAND_AVP = 1447; + private static final int AVP_XRES_AVP = 1448; + private static final int AVP_AUTN_AVP = 1449; + private static final int AVP_KASME_AVP = 1450; + private static final int AVP_E_UTRAN_Vector_AVP = 1414; + private static final int AVP_SIP_Authentication_Scheme_3GPP_AVP = 608; + private static final int AVP_SIP_Authenticate_3GPP_AVP = 609; + private static final int AVP_SIP_Authorization_3GPP_AVP = 610; + private static final int AVP_SIP_Number_Auth_Items_3GPP_AVP = 607; + private static final int AVP_SIP_Auth_Data_Item_3GPP_AVP = 612;//ETSI TS 129 229 V10.5.0 (2013-04) Clause 6.3.13 SIP-Auth-Data-Item AVP + private static final int AVP_Identity_with_Emergency_Registration_AVP = 651; + private static final int AVP_Confidentiality_Key_AVP = 625; + private static final int AVP_Integrity_Key_AVP = 626; + private static final int AVP_Line_Identifier_AVP = 500; + private static final int AVP_UTRAN_Vector_AVP = 1415; + private static final int AVP_SRES_AVP = 1454; + private static final int AVP_Kc_AVP = 1453; + private static final int AVP_GERAN_Vector_AVP = 1416; + private static final int AVP_Authentication_Info_AVP = 1413; + + private static final int AVP_Cancellation_Type_AVP = 1420; + private static final int AVP_CLR_Flags_AVP = 1638; //ref: 7.3.152 + private static final int AVP_IDR_Flags_AVP = 1490; //ref: 7.3.103 + private static final int AVP_DSR_Flags_AVP = 1421; //ref: 7.3.25 + private static final int AVP_DSA_Flags_AVP = 1422; //ref: 7.3.26 + private static final int AVP_PUER_Flags_AVP= 1635; //ref: 7.3.149 + private static final int AVP_PUEA_Flags_AVP= 1442; //ref: 7.3.48 + private static final int AVP_IDA_Flags_AVP = 1441; //ref: 7.3.47 + private static final int AVP_NOR_Flags_AVP = 1443; //ref: 7.3.49 + private static final int AVP_IMS_Voice_PS_Sessions_Support_AVP = 1492; + private static final int AVP_Last_UE_Activity_Time_AVP = 1494; + private static final int AVP_EPS_User_State_AVP = 1495; + private static final int AVP_EPS_Location_Information_AVP = 1496; + //end TS129_272 AVP codes + + + //TS132_299 AVP codes + private static final int AVP_Charging_Information_AVP = 618; + private static final int AVP_Primary_Event_Charging_Function_Name_AVP = 619; + private static final int AVP_Secondary_Event_Charging_Function_Name_AVP = 620; + private static final int AVP_Primary_Charging_Collection_Function_Name_AVP = 621; + private static final int AVP_Secondary_Charging_Collection_Function_Name_AVP = 622; +// private static final int AVP_User_CSG_Information_AVP = 2319; //Ref: ETSI TS 132 299 User_CSG_Information_AVP +// private static final int AVP_CSG_Id_AVP = 1437; //Ref: ETSI TS 132 299 CSG_Id_AVP +// private static final int AVP_CSG_Access_Mode_AVP = 2317; //Ref: ETSI TS 132 299 CSG_Access_Mode_AVP +// private static final int AVP_CSG_Membership_Indication_AVP = 2318; //Ref: ETSI TS 132 299 CSG_Membership_Indication_AVP + private static final int AVP_Service_Information_AVP = 873; //Ref: ETSI TS 132 299 Service_Information_AVP + private static final int AVP_PS_Information_AVP = 874; //Ref: ETSI TS 132 299 PS_Information_AVP + private static final int AVP_WLAN_Information_AVP = 875; //Ref: ETSI TS 132 299 WLAN_Information_AVP + private static final int AVP_IMS_Information_AVP = 876; //Ref: ETSI TS 132 299 IMS_Information_AVP +// private static final int AVP_MMS_Information_AVP = 877; //Ref: ETSI TS 132 299 MMS_Information_AVP +// private static final int AVP_LCS_Information_AVP = 878; //Ref: ETSI TS 132 299 LCS_Information_AVP +// private static final int AVP_PoC_Information_AVP = 879; //Ref: ETSI TS 132 299 PoC_Information_AVP +// private static final int AVP_MBMS_Information_AVP = 880; //Ref: ETSI TS 132 299 MBMS_Information_AVP + private static final int AVP_Service_Generic_Information_AVP = 1256; //Ref: ETSI TS 132 299 Service_Generic_Information_AVP + private static final int AVP_Event_Type_AVP = 825; //Ref: ETSI TS 132 299 Event_Type_AVP + private static final int AVP_Event_AVP = 823; //Ref: ETSI TS 132 299 Event_AVP + private static final int AVP_Expires_AVP = 888; //Ref: ETSI TS 132 299 Expires_AVP + private static final int AVP_Role_Of_Node_AVP = 829; //Ref: ETSI TS 132 299 Role_Of_Node_AVP + private static final int AVP_Node_Functionality_AVP = 862; //Ref: ETSI TS 132 299 Node_Functionality_AVP + private static final int AVP_User_Session_ID_AVP = 830; //Ref: ETSI TS 132 299 User_Session_ID_AVP + private static final int AVP_Calling_Party_Address_AVP = 831; //Ref: ETSI TS 132 299 Calling_Party_Address_AVP + private static final int AVP_Called_Party_Address_AVP = 832; //Ref: ETSI TS 132 299 Called_Party_Address_AVP + private static final int AVP_Called_Asserted_Identity_AVP = 1250; //Ref: ETSI TS 132 299 Called_Asserted_Identity_AVP + private static final int AVP_Alternate_Charged_Party_Address_AVP = 1280;//Ref: ETSI TS 132 299 Alternate_Charged_Party_Address_AVP + private static final int AVP_Requested_Party_Address_AVP = 1251; //Ref: ETSI TS 132 299 Requested_Party_Address_AVP + private static final int AVP_Associated_URI_AVP = 856; //Ref: ETSI TS 132 299 Associated_URI_AVP + private static final int AVP_Time_Stamps_AVP = 833; //Ref: ETSI TS 132 299 Time_Stamps_AVP + private static final int AVP_SIP_Request_Timestamp_AVP = 834; //Ref: ETSI TS 132 299 SIP_Request_Timestamp_AVP + private static final int AVP_SIP_Response_Timestamp_AVP = 835; //Ref: ETSI TS 132 299 SIP_Response_Timestamp_AVP + private static final int AVP_Application_Server_Information_AVP = 850;//Ref: ETSI TS 132 299 Application_Server_Information_AVP + private static final int AVP_Application_Server_AVP = 836; //Ref: ETSI TS 132 299 Application_Server_AVP + private static final int AVP_Application_Provided_Called_Party_Address_AVP = 837; //Ref: ETSI TS 132 299 Application_Provided_Called_Party_Address_AVP + private static final int AVP_Inter_Operator_Identifier_AVP = 838; //Ref: ETSI TS 132 299 Inter_Operator_Identifier_AVP + private static final int AVP_Originating_IOI_AVP = 839; //Ref: ETSI TS 132 299 Originating_IOI_AVP + private static final int AVP_Terminating_IOI_AVP = 840; //Ref: ETSI TS 132 299 Terminating_IOI_AVP + private static final int AVP_IMS_Charging_Identifier_AVP = 841; //Ref: ETSI TS 132 299 IMS_Charging_Identifier_AVP + private static final int AVP_SDP_Session_Description_AVP = 842; //Ref: ETSI TS 132 299 SDP_Session_Description_AVP + private static final int AVP_SDP_Media_Component_AVP = 844; //Ref: ETSI TS 132 299 SDP_Media_Name_AVP +// private static final int AVP_SDP_Media_Name_AVP = 844; //Ref: ETSI TS 132 299 SDP_Media_Name_AVP +// private static final int AVP_SDP_Media_Description_AVP = 845; //Ref: ETSI TS 132 299 SDP_Media_Description_AVP +// private static final int AVP_Media_Initiator_Flag_AVP = 882; //Ref: ETSI TS 132 299 Media_Initiator_Flag_AVP +// private static final int AVP_Media_Initiator_Party_AVP = 1288; //Ref: ETSI TS 132 299 Media_Initiator_Party_AVP +// private static final int AVP_Authorized_QoS_AVP = 849; //Ref: ETSI TS 132 299 Authorized_QoS_AVP + private static final int AVP_Served_Party_IP_Address_AVP = 848; //Ref: ETSI TS 132 299 Served_Party_IP_Address_AVP + private static final int AVP_Trunk_Group_ID_AVP = 851; //Ref: ETSI TS 132 299 Trunk_Group_ID_AVP + private static final int AVP_Incoming_Trunk_Group_ID_AVP = 852; //Ref: ETSI TS 132 299 Incoming_Trunk_Group_ID_AVP + private static final int AVP_Outgoing_Trunk_Group_ID_AVP = 853; //Ref: ETSI TS 132 299 Outgoing_Trunk_Group_ID_AVP + + private static final int AVP_Delivery_Status_AVP =2104; + private static final int AVP_Application_Session_ID_AVP=2103; + private static final int AVP_Application_Service_Type_AVP=2102; + private static final int AVP_Application_Server_ID_AVP=2101; + + private static final int AVP_Reporting_Reason_AVP=872; + private static final int AVP_Time_Quota_Threshold_AVP=868; + private static final int AVP_Volume_Quota_Threshold_AVP=869; + private static final int AVP_Unit_Quota_Threshold_AVP=1226; + private static final int AVP_Quota_Holding_Time_AVP=871; + private static final int AVP_Quota_Consumption_Time_AVP=881; + private static final int AVP_Time_Quota_Type_AVP=1271; + private static final int AVP_Base_Time_Interval_AVP=1265; + private static final int AVP_Time_Quota_Mechanism_AVP=1270; + private static final int AVP_Envelope_Start_Time_AVP=1269; + private static final int AVP_Envelope_End_Time_AVP=1267; + private static final int AVP_Envelope_AVP=1266; + private static final int AVP_Envelope_Reporting_AVP=1268; + private static final int AVP_Trigger_AVP=1264; + private static final int AVP_Trigger_Type_AVP=870; + private static final int AVP_Refund_Information_AVP=2022; + private static final int AVP_Multiple_Services_Credit_Control_AVP = 456; + + private static final int AVP_Offline_Charging_AVP = 1278; + private static final int AVP_Low_Balance_Indication_AVP=2020; + private static final int AVP_Remaining_Balance_AVP = 2021; + //end of TS132_299 AVP codes + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] command_codes ={ + /* Ref: RFC3588 p.3.1 */ + + Code_CE, // Capabilities-Exchange-Request CER (257) + Code_CE, // Capabilities-Exchange-Answer CEA (257) + Code_RA, // Re-Auth-Request RAR (258) + Code_RA, // Re-Auth-Answer RAA (258) + /**/ + Code_AC, // Accounting-Request ACR(271) + Code_AC, // Accounting-Answer ACA (271) + /**/ + Code_AS, // Abort-Session-Request ASR (274) + Code_AS, // Abort-Sesion-Answer ASA (274) + Code_ST, // Session-Termination-Request STR (275) + Code_ST, // Session-Termination-Answer STA (275) + /**/ + Code_DW, // Device-Watchdog-Request DWR (280) + Code_DW, // Device-Watchdog-Answer DWA (280) + Code_DP, // Disconnect-Peer-Request DPR (282) + Code_DP, // Disconnect-Peer-Answer DPA (282) + + /* Codes on Cx */ + Code_UA, // User-Authorization-Request UAR 300 + Code_UA, // User-Authorization-Answer UAA 300 + Code_SA, // Server-Assignment-Request SAR 301 + Code_SA, // Server-Assignment-Answer SAA 301 + Code_LI, // Location-Info-Request LIR 302 + Code_LI, // Location-Info-Answer LIA 302 + Code_MA, // Multimedia-Auth-Request MAR 303 + Code_MA, // Multimedia-Auth-Answer MAA 303 + Code_RT, // Registration-Termination-Request RTR 304 + Code_RT, // Registration-Termination-Answer RTA 304 + Code_PP, // Push-Profile-Request PPR 305 + Code_PP, // Push-Profile-Answer PPA 305 + + /* Codes on Sh/Dh interface */ + Code_UD, // UDR User-Data-Request AS->HSS 306 + Code_UD, // UDA User-Data-Answer HSS->AS 306 + Code_PU, // PUR Profile-Update-Request AS->HSS 307 + Code_PU, // PUA Profile-Update-Answer HSS->AS 307 + Code_SN, // SNR Subscribe-Notifications-Request AS->HSS 308 + Code_SN, // SNA Subscribe-Notifications-Answer HSS->AS 308 + Code_PN, // PNR Profile-Notification-Request HSS->AS 309 + Code_PN, // PNA Profile-Notification-Answer AS->HSS 309 + + /* Codes on Rx interface */ + Code_AA, // AAR Auth-Accounting-Request 265 + Code_AA, // AAA Auth-Accounting-Request 265 + + /*RFC4006*/ + Code_CC, // CCR Credit-Control-Request 272 + Code_CC, // CCA Credit-Control-Answer 272 + + /* Codes on S6a interface - TS 129 272 */ + Code_UL, // Update-Location-Request ULR (316)- Ref: TS 129 272 7.2.3 + Code_UL, // Update-Location-Answer ULA (316)- Ref: TS 129 272 7.2.4 + Code_CL, // Cancel-Location-Request CLR (317)- Ref: TS 129 272 7.2.7 + Code_CL, // Cancel-Location-Answer CLA (317)- Ref: TS 129 272 7.2.8 + Code_AI, // Authentication-Information-Request AIR (318)- Ref: TS 129 272 7.2.5 + Code_AI, // Authentication-Information-Answer AIA (318)- Ref: TS 129 272 7.2.6 + Code_ID, // Insert-Subscriber-Data-Request IDR (319)- Ref: TS 129 272 7.2.9 + Code_ID, // Insert-Subscriber-Data-Answer IDA (319)- Ref: TS 129 272 7.2.10 + Code_DS, // Delete-Subscriber-Data-Request DSR (320)- Ref: TS 129 272 7.2.11 + Code_DS, // Delete-Subscriber-Data-Answer DSA (320)- Ref: TS 129 272 7.2.12 + Code_PUE, // Purge-UE-Request PUR (321)- Ref: TS 129 272 7.2.13 + Code_PUE, // Purge-UE-Answer PUA (321)- Ref: TS 129 272 7.2.14 + Code_RS, // Reset-Request DSR (322)- Ref: TS 129 272 7.2.15 + Code_RS, // Reset-Answer DSA (322)- Ref: TS 129 272 7.2.16 + Code_NO, // Notify-Request NOR (323)- Ref: TS 129 272 7.2.17 + Code_NO // Notify-Answer NOA (323)- Ref: TS 129 272 7.2.18 + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] result_codes ={ + 0, // DIAMETER_DUMMY_E (0), + + 1001, // DIAMETER_MULTI_ROUND_AUTH_E (1001), + + 2001, // DIAMETER_SUCCESS_E (2001), + 2002, // DIAMETER_LIMITED_SUCCESS_E (2002), + + 3001, // DIAMETER_COMMAND_UNSUPPORTED_E (3001), + 3002, // DIAMETER_UNABLE_TO_DELIVER_E (3002), + 3003, // DIAMETER_REALM_NOT_SERVED_E (3003), + 3004, // DIAMETER_TOO_BUSY_E (3004), + 3005, // DIAMETER_LOOP_DETECTED_E (3005), + 3006, // DIAMETER_REDIRECT_INDICATION_E (3006), + 3007, // DIAMETER_APPLICATION_UNSUPPORTED_E (3007), + 3008, // DIAMETER_INVALID_HDR_BITS_E (3008), + 3009, // DIAMETER_INVALID_AVP_BITS_E (3009), + 3010, // DIAMETER_UNKNOWN_PEER_E (3010), + + 4001, // DIAMETER_AUTHENTICATION_REJECTED_E (4001), + 4002, // DIAMETER_OUT_OF_SPACE_E (4002), + 4003, // DIAMETER_ELECTION_LOST_E (4003), + + 5001, // DIAMETER_AVP_UNSUPPORTED_E (5001), + 5002, // DIAMETER_UNKNOWN_SESSION_ID_E (5002), + 5003, // DIAMETER_AUTHORIZATION_REJECTED_E (5003), + 5004, // DIAMETER_INVALID_AVP_VALUE_E (5004), + 5005, // DIAMETER_MISSING_AVP_E (5005), + 5006, // DIAMETER_RESOURCES_EXCEEDED_E (5006), + 5007, // DIAMETER_CONTRADICTING_AVPS_E (5007), + 5008, // DIAMETER_AVP_NOT_ALLOWED_E (5008), + 5009, // DIAMETER_AVP_OCCURS_TOO_MANY_TIMES_E (5009), + 5010, // DIAMETER_NO_COMMON_APPLICATION_E (5010), + 5011, // DIAMETER_UNSUPPORTED_VERSION_E (5011), + 5012, // DIAMETER_UNABLE_TO_COMPLY_E (5012), + 5013, // DIAMETER_INVALID_BIT_IN_HEADER_E (5013), + 5014, // DIAMETER_INVALID_AVP_LENGTH_E (5014), + 5015, // DIAMETER_INVALID_MESSAGE_LENGTH_E (5015), + 5016, // DIAMETER_INVALID_AVP_BIT_COMBO_E (5016), + 5017 // DIAMETER_NO_COMMON_SECURITY_E (5017) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Redirect_Host_Usage={ + 0,// DONT_CACHE_E (0), + 1,// ALL_SESSION_E (1), + 2,// ALL_REALM_E (2), + 3,// REALM_AND_APPLICATION_E (3), + 4,// ALL_APPLICATION_E (4), + 5,// ALL_HOST_E (5), + 6 // ALL_USER_E (6) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Acc_Record={ + 1,// EVENT_RECORD_E (1), + 2,// START_RECORD_E (2), + 3,// INTERIM_RECORD_E (3), + 4 // STOP_RECORD_E (4) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Acc_Realtime_Req={ + 1,// DELIVER_AND_GRANT_E (1), + 2,// GRANT_AND_STORE_E (2), + 3 // GRANT_AND_LOSE_E (3) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Termination_Cause={ + 1,// DIAMETER_LOGOUT_E (1), + 2,// DIAMETER_SERVICE_NOT_PROVIDED_E (2), + 3,// DIAMETER_BAD_ANSWER_E (3), + 4,// DIAMETER_ADMINISTRATIVE_E (4), + 5,// DIAMETER_LINK_BROKEN_E (5), + 6,// DIAMETER_AUTH_EXPIRED_E (6), + 7,// DIAMETER_USER_MOVED_E (7), + 8 // DIAMETER_SESSION_TIMEOUT_E (8) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Disconnect_Cause={ + 0,// REBOOTING_E (0), + 1,// BUSY_E (1), + 2 // DO_NOT_WANT_TO_TALK_TO_YOU_E (2) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Role_Of_Node={ + 0,// ORIGINATING_ROLE_E (0), + 1,// TERMINATING_ROLE_E (1), + 2,// PROXY_ROLE_E (2), + 3 // B2BUA_ROLE_E (3) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Node_Functionality={ + 0,// S_CSCF_E (0), + 1,// P_CSCF_E (1), + 2,// I_CSCF_E (2), + 3,// MRFC_E (3), + 4,// MGCF_E (4), + 5,// BGCF_E (5), + 6 // AS_E (6) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] CC_Request={ + // Ref: RFC4006 8.3. CC-Request-Type AVP + 1,// INITIAL_REQUEST_E (1), + 2,// UPDATE_REQUEST_E (2), + 3,// TERMINATION_REQUEST_E (3), + 4 // EVENT_REQUEST_E (4) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Requested_Action={ + // Ref: RFC4006 8.41. Requested-Action AVP + 0,// DIRECT_DEBITING_E (0), + 1,// REFUND_ACCOUNT_E (1), + 2,// CHECK_BALANCE_E (2), + 3 // PRICE_ENQUIRY_E (3) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Multi_Serv_Indi={ + // Ref: RFC4006 8.40. Multiple-Services-Indicator AVP + 0,// MULTIPLE_SERVICES_NOT_SUPPORTED_E (0), + 1 // MULTIPLE_SERVICES_SUPPORTED_E (1) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] User_Equipment_Info={ + //Ref: RFC4006 8.50. User-Equipment-Info-Type AVP + 0,// IMEISV_E (0), + 1,// MAC_E (1), + 2,// EUI64_E (2), + 3 // MODIFIED_EUI64_E (3) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] CC_Session_Failover={ + // Ref: RFC4006 8.4. CC-Session-Failover AVP + 0,// FAILOVER_NOT_SUPPORTED_E (0), + 1 // FAILOVER_SUPPORTED_E (1) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] CC_Failure_Handling={ + //Ref: RFC4006 8.14. Credit-Control-Failure-Handling AVP + 0,// TERMINATE_E (0), + 1,// CONTINUE_E (1), + 2 // RETRY_AND_TERMINATE_E (2) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] DD_Failure_Handling={ + //Ref: RFC4006 8.15. Direct-Debiting-Failure-Handling AVP + 0,// TERMINATE_OR_BUFFER_E (0), + 1 // CONTINUE_E (1) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Tariff_Change_Usage={ + // Ref: RFC4006 8.27. Tariff-Change-Usage AVP + 0,// UNIT_BEFORE_TARIFF_CHANGE_E (0), + 1,// UNIT_AFTER_TARIFF_CHANGE_E (1), + 2 // UNIT_INDETERMINATE_E (2) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] CC_Unit_Type={ + //Ref: RFC4006 8.31. G-S-U-Pool-Identifier AVP + 0,// TIME_E (0), + 1,// MONEY_E (1), + 2,// TOTAL_OCTETS_E (2), + 3,// INPUT_OCTETS_E (3), + 4,// OUTPUT_OCTETS_E (4), + 5 // SERVICE_SPECIFIC_UNITS_E (5) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[]Final_Unit_Action_Type={ + // Ref: RFC4006 8.35. Final-Unit-Action AVP + 0,// TERMINATE_E (0), + 1,// REDIRECT_E (1), + 2 // RESTRICT_ACCESS_E (2) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Redirect_Address_Type={ + // Ref: RFC4006 8.38. Redirect-Address-Type AVP + 0,// IPV4_ADDRESS_E (0), + 1,// IPV6_ADDRESS_E (1), + 2,// URL_E (2), + 3 // SIP_URI_E (3) + }; + + //NOTE: The order of constants in the following array is very important. + //It must exactly match order specified in TTCN-3 module. + private final int[] Auth_Session_State_Type={ + 0,// STATE_MAINTAINED_E (0), + 1,// NO_STATE_MAINTAINED_E (1) + }; + + private final int[] RAT_Type={ + // Ref: ETSI TS 129 212 5.3.31 + 0,// WLAN_E (0), + 1,//VIRTUAL_E (1), + 1000,//UTRAN_E (1000), + 1001,//GERAN_E (1001), + 1002,//GAN_E (1002), + 1003,//HSPA_EVOLUTION_E (1003), + 1004,//EUTRAN_E (1004), + 2000,//CDMA2000_IX_E (2000), + 2002,//(2002), + 2003//EHRPD_E(2003) + }; + + //129.329 -sh + private final int[] Experimental_Result_Type={ + 2001,//DIAMETER_FIRST_REGISTRATION_E (2001), + 2002,//DIAMETER_SUBSEQUENT_REGISTRATION_E (2002), + 2003,//DIAMETER_UNREGISTERED_SERVICE_E (2003), + 2004,//DIAMETER_SUCCESS_SERVER_NAME_NOT_STORED_E (2004), + 4181,//DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE_E (4181), + 5001,//DIAMETER_ERROR_USER_UNKNOWN_E (5001), + 5002,//DIAMETER_ERROR_IDENTITIES_DONT_MATCH_E (5002), + 5003,//DIAMETER_ERROR_IDENTITY_NOT_REGISTERED_E (5003), + 5004,//DIAMETER_ERROR_ROAMING_NOT_ALLOWED_E (5004), + 5005,//DIAMETER_ERROR_IDENTITY_ALREADY_REGISTERED_E (5005), + 5006,//DIAMETER_ERROR_AUTH_SCHEME_NOT_SUPPORTED_E (5006), + 5007,//DIAMETER_ERROR_IN_ASSIGNMENT_TYPE_E (5007), + 5008,//DIAMETER_ERROR_TOO_MUCH_DATA_E (5008), + 5009,//DIAMETER_ERROR_NOT_SUPPORTED_USER_DATA_E (5009), + // Ref: ETSI TS 129 214 5.5 + 5061,//INVALID_SERVICE_INFORMATION_E (5061), + 5062,//FILTER_RESTRICTIONS_E (5062), + 5063,//REQUESTED_SERVICE_NOT_AUTHORIZED_E (5063), + 5064,//DUPLICATED_AF_SESSION_E (5064), + 5065,//IP_CAN_SESSION_NOT_AVAILABLE_E (5065), + 5066,//UNAUTHORIZED_NON_EMERGENCY_SESSION_E (5066), + 5067,//UNAUTHORIZED_SPONSORED_DATA_CONNECTIVITY_E (5067), + 5140,//DIAMETER_ERROR_INITIAL_PARAMETERS_E (5140), + 5141,//DIAMETER_ERROR_TRIGGER_EVENT_E (5141), + 5142,//DIAMETER_PCC_RULE_EVENT_E (5142), + 5143,//DIAMETER_ERROR_BEARER_NOT_AUTHORIZED_E (5143), + 5144,//DIAMETER_ERROR_TRAFFIC_MAPPING_INFO_REJECTED_E (5144), + 5147,//DIAMETER_ERROR_CONFLICTING_REQUEST_E (5147), + // Ref: 3GPP TS 29.215 + 5470,//DIAMETER_ERROR_SUBSESSION_E (5470), + 5420,//DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION_E (5420),//(9990), // Set the correct error code value - See ETSI TS 129 272 Clause 5.2.1.1.3 Detailed behaviour of the HSS + 5421,//DIAMETER_ERROR_RAT_NOT_ALLOWED_E (5421),//(9991), // Set the correct error code value - See ETSI TS 129 272 Clause 5.2.1.1.3 Detailed behaviour of the HSS + 5422,//DIAMETER_ERROR_EQUIPMENT_UNKNOWN_E (5422), + 5423//DIAMETER_ERROR_UNKOWN_SERVING_NODE_E (5423), + + //unknown + }; + + private final int[] Cancellation_Type_Code_Type ={ + 0, //MME_UPDATE_PROCEDURE_E (0), + 1,//SGSN_UPDATE_PROCEDURE_E (1), + 2,//SUBSCRIPTION_WITHDRAWAL_E (2), + 3,//UPDATE_PROCEDURE_IWF_E (3), + 4//INITIAL_ATTACH_PROCEDURE_E (4) + }; + + //*End 129.329 -sh + + //129_272 + private final int[] UE_SRVCC_Capability_Type={ + 0, //UE_SRVCC_NOT_SUPPORTED_E (0), + 1 //UE_SRVCC_SUPPORTED_E (1) + }; + + private final int[] Homogeneous_Support_Type={ + 0,// NOT_SUPPORTED_E (0), + 1 // SUPPORTED_E (1) + }; + + private final int[] Error_Diagnostic_Code_Type={ + 0,// GPRS_DATA_SUBSCRIBED_E (0), + 1,// NO_GPRS_DATA_SUBSCRIBED_E (1), + 2,// ODB_ALL_APN_E (2), + 3,// ODB_HPLMN_APN_E (3), + 4 // ODB_VPLMN_APN_E (4) + }; + + //End 129_272 + + /** + * + * Constructor method DefaultCodec creates new object and prepares RB. + *

    + * @param rb needed to resolve specific information (e.g. which logging to + * use) + * + * */ + public DIAMETERCodec(RB rb) { + super(rb); + typeServer = RB.getTciCDRequired(); + octetstringType = typeServer.getOctetstring(); + charstringType = typeServer.getCharstring(); + universalcharstringType = typeServer.getUniversalCharstring(); + integerType = typeServer.getInteger(); + bigintegerType = typeServer.getFloat(); + booleanType = typeServer.getBoolean(); + management = RB.getTciTMProvided(); + } + + /** + * + * Method encode codes a message according to the native encoding + * rules. + *

    + * @param template value should be encoded. + *

    + * @return TriMessage represents the collected byteArray + * message. + * + * */ + public TriMessage encode(Value template) { + // The template is given to the AbstractBaseCodec which handles the basic encoding + TriMessage encodedMessage = super.encode(template); + return encodedMessage; + } + + /** + * + * Method decode decodes a received message according to the native + * decoding rules. + *

    + * @param rcvdMessage message that shall be decoded. + * @param decodingHypothesis the decoding hypothesis against which the + * message will be decoded. + *

    + * @return the received message decoded according to the decoding hypothesis + * or null if message was not of type + * decodingHypothesis. + * + * */ + public Value decode(TriMessage rcvdMessage, Type decodingHypothesis) { + DiameterMessage Message = null; + // Get the received byte array + encodedMsg = rcvdMessage.getEncodedMessage(); + // Set the bitpos to 0 (this is needed to know the actual bit position from the byte array) + bitpos = 0; + // The the encoded message is null, nothing can be done, so return null + if(encodedMsg.length == 0) return null; + + // Check which type class the decoding hypothesis is of + switch (decodingHypothesis.getTypeClass()) { + + case TciTypeClass.BOOLEAN: + BooleanValue booleanValue = (BooleanValue) booleanType.newInstance(); + + if (encodedMsg[0] == 0x00) {booleanValue.setBoolean(false);} + else {booleanValue.setBoolean(true);} + + return booleanValue; + + case TciTypeClass.UNION: + //UnionValue NewHypotesisu = (UnionValue) decodingHypothesis.newInstance(); + try { + // Now we parse the received String instead of the byteArray + Message = Codec.decodeDiameterMessage(encodedMsg,0); + } + catch (DiameterMessageDecodeException ex) { + RB.getTciTLProvidedV321TT().tliRT("", System.currentTimeMillis(), "", -1, null, RTLoggingConstants.RT_LOG_ERROR, "DIAMETERCodec: exception:"+ex.getMessage()); + return null; + } + + return decode_DIAMETERMessage(Message, decodingHypothesis); + + case TciTypeClass.RECORD: + //RecordValue NewHypotesis = (RecordValue) decodingHypothesis.newInstance(); + try { + // Now we parse the received String instead of the byteArray + Message = Codec.decodeDiameterMessage(encodedMsg,0); + } + catch (DiameterMessageDecodeException ex) { + RB.getTciTLProvidedV321TT().tliRT("", System.currentTimeMillis(), "", -1, null, RTLoggingConstants.RT_LOG_ERROR, "DIAMETERCodec: exception:"+ex.getMessage()); + return null; + } + + return decode_DIAMETERMessage(Message, decodingHypothesis); + + default: + + return super.decode(rcvdMessage,decodingHypothesis); + } + } + + public Value decode_DIAMETERMessage(DiameterMessage parsedMessage, Type type){ + + switch (type.getTypeClass()){ + case TciTypeClass.UNION: + + UnionValue uDM = (UnionValue) type.newInstance(); + + String messagebodyvar=MessageVariant(parsedMessage.commandCode,parsedMessage.flagRequest); + String messagevar = messagebodyvar + "MSG"; + String bodyvar = messagebodyvar + "Body"; + + RecordValue DM = (RecordValue) uDM.getVariant(messagevar).getType().newInstance(); + RecordValue DMBody = (RecordValue) DM.getField(bodyvar).getType().newInstance(); + + decode_DiameterHeader(DM,parsedMessage); + decode_Session_Id_AVP(DM,parsedMessage); + decode_DiameterAVPs(DMBody,parsedMessage); + //decode_DiameterAVPs_(DMBody,parsedMessage); + + DM.setField(bodyvar, DMBody); + uDM.setVariant(messagevar, DM); + + return uDM; + + case TciTypeClass.RECORD: + //RecordValue rDM = (RecordValue) type.newInstance(); + //decode_DiameterHeader(rDM,parsedMessage); + return null;//rDM; + default:return null; + } + } + + private String MessageVariant(int code, boolean r_a){ + + String variant="uNKNOWN_"/*"uNKNOWN_MSG"*/; + if(r_a){ + switch(code){ + case Code_CE: variant="cER_"/*"cER_MSG"*/; break; + case Code_RA: variant="rAR_"/*"rAR_MSG"*/; break; + case Code_AC: variant="aCR_"/*"aCR_MSG"*/; break; + case Code_AS: variant="aSR_"/*"aSR_MSG"*/; break; + case Code_ST: variant="sTR_"/*"sTR_MSG"*/; break; + case Code_DW: variant="dWR_"/*"dWR_MSG"*/; break; + case Code_DP: variant="dPR_"/*"dPR_MSG"*/; break; + + /* Codes on Cx */ + case Code_UA: variant="uAR_"/*"uAR_MSG"*/; break; + case Code_SA: variant="sAR_"/*"sAR_MSG"*/; break; + case Code_LI: variant="lIR_"/*"lIR_MSG"*/; break; + case Code_MA: variant="mAR_"/*"mAR_MSG"*/; break; + case Code_RT: variant="rTR_"/*"rTR_MSG"*/; break; + case Code_PP: variant="pPR_"/*"pPR_MSG"*/; break; + + /* Codes on Sh/Dh interface */ + case Code_UD: variant="uDR_"/*"uDR_MSG"*/; break;// UDR User-Data-Request AS->HSS UDR (306) + case Code_PU: variant="pUR_"/*"pUR_MSG"*/; break;// PUR Profile-Update-Request AS->HSS PUR (307) + case Code_SN: variant="sNR_"/*"sNR_MSG"*/; break;// SNR Subscribe-Notifications-Request AS->HSS SNR (308) + case Code_PN: variant="pNR_"/*"pNR_MSG"*/; break;// PNR Profile-Notification-Request HSS->AS PNR (309) + + /* Codes on Rx */ + case Code_AA: variant="aAR_"/*"aAR_MSG"*/; break; + //4006 + case Code_CC: variant="cCR_"/*"cCR_MSG"*/; break; + + /* Codes on S6a interface - TS 129 272 */ + case Code_UL: variant="uLR_"/*"uLR_MSG"*/; break; // Update-Location-Request ULR (316)- Ref: TS 129 272 7.2.3-4 + case Code_CL: variant="cLR_"/*"cLR_MSG"*/; break; // Cancel-Location-Request CLR (317)- Ref: TS 129 272 7.2.7-8 + case Code_AI: variant="aIR_"/*"aIR_MSG"*/; break; // Authentication-Information-Request AIR (318)- Ref: TS 129 272 7.2.5-6 + case Code_ID: variant="iDR_"/*"iDR_MSG"*/; break; // Insert-Subscriber-Data-Request IDR (319)- Ref: TS 129 272 7.2.9-10 + case Code_DS: variant="dSR_"/*"dSR_MSG"*/; break; // Delete-Subscriber-Data-Request DSR (320)- Ref: TS 129 272 7.2.11-12 + case Code_PUE: variant="pUER_"/*"pUER_MSG"*/; break; // Purge-UE-Request PUR (321)- Ref: TS 129 272 7.2.13-14 + case Code_RS: variant="rSR_"/*"rSR_MSG"*/; break; // Reset-Request DSR (322)- Ref: TS 129 272 7.2.15-16 + case Code_NO: variant="nOR_"/*"nOR_MSG"*/; break; // Notify-Request NOR (323)- Ref: TS 129 272 7.2.17-18 + } + }else{ + switch(code){ + case Code_CE: variant="cEA_"/*"cEA_MSG"*/; break; + case Code_RA: variant="rAA_"/*"rAA_MSG"*/; break; + case Code_AC: variant="aCA_"/*"aCA_MSG"*/; break; + case Code_AS: variant="aSA_"/*"aSA_MSG"*/; break; + case Code_ST: variant="sTA_"/*"sTA_MSG"*/; break; + case Code_DW: variant="dWA_"/*"dWA_MSG"*/; break; + case Code_DP: variant="dPA_"/*"dPA_MSG"*/; break; + //CxDx + case Code_UA: variant="uAA_"/*"uAA_MSG"*/; break; + case Code_SA: variant="sAA_"/*"sAA_MSG"*/; break; + case Code_LI: variant="lIA_"/*"lIA_MSG"*/; break; + case Code_MA: variant="mAA_"/*"mAA_MSG"*/; break; + case Code_RT: variant="rTA_"/*"rTA_MSG"*/; break; + case Code_PP: variant="pPA_"/*"pPA_MSG"*/; break; + + /* Codes on Sh/Dh interface */ + case Code_UD: variant="uDA_"/*"uDA_MSG"*/; break;// UDR User-Data-Request AS->HSS UDR (306) + case Code_PU: variant="pUA_"/*"pUA_MSG"*/; break;// PUR Profile-Update-Request AS->HSS PUR (307) + case Code_SN: variant="sNA_"/*"sNA_MSG"*/; break;// SNR Subscribe-Notifications-Request AS->HSS SNR (308) + case Code_PN: variant="pNA_"/*"pNA_MSG"*/; break;// PNR Profile-Notification-Request HSS->AS PNR (309) + + //Rx + case Code_AA: variant="aAA_"/*"aAA_MSG"*/; break; + //4006 + case Code_CC: variant="cCA_"/*"cCA_MSG"*/; break; + + /* Codes on S6a interface - TS 129 272 */ + case Code_UL: variant="uLA_"/*"uLA_MSG"*/; break; // Update-Location-Request ULR (316)- Ref: TS 129 272 7.2.3-4 + case Code_CL: variant="cLA_"/*"cLA_MSG"*/; break; // Cancel-Location-Request CLR (317)- Ref: TS 129 272 7.2.7-8 + case Code_AI: variant="aIA_"/*"aIA_MSG"*/; break; // Authentication-Information-Request AIR (318)- Ref: TS 129 272 7.2.5-6 + case Code_ID: variant="iDA_"/*"iDA_MSG"*/; break; // Insert-Subscriber-Data-Request IDR (319)- Ref: TS 129 272 7.2.9-10 + case Code_DS: variant="dSA_"/*"dSA_MSG"*/; break; // Delete-Subscriber-Data-Request DSR (320)- Ref: TS 129 272 7.2.11-12 + case Code_PUE: variant="pUEA_"/*"pUEA_MSG"*/; break; // Purge-UE-Request PUR (321)- Ref: TS 129 272 7.2.13-14 + case Code_RS: variant="rSA_"/*"rSA_MSG"*/; break; // Reset-Request DSR (322)- Ref: TS 129 272 7.2.15-16 + case Code_NO: variant="nOA_"/*"nOA_MSG"*/; break; // Notify-Request NOR (323)- Ref: TS 129 272 7.2.17-18 + } + } + return variant; + } + + private void decode_DiameterHeader(RecordValue rv_DiameterM, DiameterMessage msg){ + + RecordValue DH = (RecordValue) rv_DiameterM.getField("header").getType().newInstance(); + + IntegerValue version = (IntegerValue)DH.getField("version").getType().newInstance(); + version.setInt(1); + DH.setField("version", version); + + IntegerValue msglen = (IntegerValue)DH.getField("msglen").getType().newInstance(); + msglen.setInt(msg.length); + DH.setField("msglen", msglen); + + RecordValue cmdf = (RecordValue)DH.getField("cmdflags").getType().newInstance(); + byte[] buffer = new byte[] {msg.flags}; + UsedBitsInByte = 0; + cmdf.setField("r_bit", BufferToBitString(buffer, 1)); //Request + cmdf.setField("p_bit", BufferToBitString(buffer, 1)); //Proxiable + cmdf.setField("e_bit", BufferToBitString(buffer, 1)); //Error + cmdf.setField("t_bit", BufferToBitString(buffer, 1)); //Potentialy re-transmited message + cmdf.setField("reserved_bits", BufferToBitString(buffer, 4)); //reserved_bits + DH.setField("cmdflags", cmdf); + + EnumeratedValue cmd = (EnumeratedValue) DH.getField("cmdcode").getType().newInstance(); + cmd.setEnum(CommandCodeEnumerated(msg.commandCode,msg.flagRequest)); + DH.setField("cmdcode", cmd); + + IntegerValue applid = (IntegerValue)DH.getField("applid").getType().newInstance(); + applid.setInt(msg.applicationID); + DH.setField("applid", applid); + + IntegerValue hopid = (IntegerValue)DH.getField("hopid").getType().newInstance(); + hopid.setInt(msg.hopByHopID); + DH.setField("hopid", hopid); + + DH.setField("endid", mkInt((long)msg.endToEndID)); + + rv_DiameterM.setField("header", DH); + } + + private String CommandCodeEnumerated(int code, boolean r_a){ + + String codeEnum=""; + if(r_a){ + switch(code){ + case Code_CE: codeEnum="CER_E"; break; + case Code_RA: codeEnum="RAR_E"; break; + case Code_AC: codeEnum="ACR_E"; break; + case Code_AS: codeEnum="ASR_E"; break; + case Code_ST: codeEnum="STR_E"; break; + case Code_DW: codeEnum="DWR_E"; break; + case Code_DP: codeEnum="DPR_E"; break; + //CxDx + case Code_UA: codeEnum="UAR_E"; break; + case Code_SA: codeEnum="SAR_E"; break; + case Code_LI: codeEnum="LIR_E"; break; + case Code_MA: codeEnum="MAR_E"; break; + case Code_RT: codeEnum="RTR_E"; break; + case Code_PP: codeEnum="PPR_E"; break; + + /* Codes on Sh/Dh interface */ + case Code_UD: codeEnum="UDR_E"; break;// UDR User-Data-Request AS->HSS UDR (306) + case Code_PU: codeEnum="PUR_E"; break;// PUR Profile-Update-Request AS->HSS PUR (307) + case Code_SN: codeEnum="SNR_E"; break;// SNR Subscribe-Notifications-Request AS->HSS SNR (308) + case Code_PN: codeEnum="PNR_E"; break;// PNR Profile-Notification-Request HSS->AS + + //Rx + case Code_AA: codeEnum="AAR_E"; break; + //4006 + case Code_CC: codeEnum="CCR_E"; break; + + //s6a + case Code_UL: codeEnum="ULR_E"; break; // Update-Location-Request ULR (316)- Ref: TS 129 272 7.2.3-4 + case Code_CL: codeEnum="CLR_E"; break; // Cancel-Location-Request CLR (317)- Ref: TS 129 272 7.2.7-8 + case Code_AI: codeEnum="AIR_E"; break; // Authentication-Information-Request AIR (318)- Ref: TS 129 272 7.2.5-6 + case Code_ID: codeEnum="IDR_E"; break; // Insert-Subscriber-Data-Request IDR (319)- Ref: TS 129 272 7.2.9-10 + case Code_DS: codeEnum="DSR_E"; break; // Delete-Subscriber-Data-Request DSR (320)- Ref: TS 129 272 7.2.11-12 + case Code_PUE: codeEnum="PUER_E"; break; // Purge-UE-Request PUR (321)- Ref: TS 129 272 7.2.13-14 + case Code_RS: codeEnum="RSR_E"; break; // Reset-Request DSR (322)- Ref: TS 129 272 7.2.15-16 + case Code_NO: codeEnum="NOR_E"; break; // Notify-Request NOR (323)- Ref: TS 129 272 7.2.17-18 + } + }else{ + switch(code){ + case Code_CE: codeEnum="CEA_E"; break; + case Code_RA: codeEnum="RAA_E"; break; + case Code_AC: codeEnum="ACA_E"; break; + case Code_AS: codeEnum="ASA_E"; break; + case Code_ST: codeEnum="STA_E"; break; + case Code_DW: codeEnum="DWA_E"; break; + case Code_DP: codeEnum="DPA_E"; break; + //CxDx + case Code_UA: codeEnum="UAA_E"; break; + case Code_SA: codeEnum="SAA_E"; break; + case Code_LI: codeEnum="LIA_E"; break; + case Code_MA: codeEnum="MAA_E"; break; + case Code_RT: codeEnum="RTA_E"; break; + case Code_PP: codeEnum="PPA_E"; break; + + /* Codes on Sh/Dh interface */ + case Code_UD: codeEnum="UDA_E"; break;// UDR User-Data-Request AS->HSS UDR (306) + case Code_PU: codeEnum="PUA_E"; break;// PUR Profile-Update-Request AS->HSS PUR (307) + case Code_SN: codeEnum="SNA_E"; break;// SNR Subscribe-Notifications-Request AS->HSS SNR (308) + case Code_PN: codeEnum="PNA_E"; break;// PNR Profile-Notification-Request HSS->AS + //Rx + case Code_AA: codeEnum="AAA_E"; break; + //4006 + case Code_CC: codeEnum="CCA_E"; break; + + //S6a + case Code_UL: codeEnum="ULA_E"; break; // Update-Location-Request ULR (316)- Ref: TS 129 272 7.2.3-4 + case Code_CL: codeEnum="CLA_E"; break; // Cancel-Location-Request CLR (317)- Ref: TS 129 272 7.2.7-8 + case Code_AI: codeEnum="AIA_E"; break; // Authentication-Information-Request AIR (318)- Ref: TS 129 272 7.2.5-6 + case Code_ID: codeEnum="IDA_E"; break; // Insert-Subscriber-Data-Request IDR (319)- Ref: TS 129 272 7.2.9-10 + case Code_DS: codeEnum="DSA_E"; break; // Delete-Subscriber-Data-Request DSR (320)- Ref: TS 129 272 7.2.11-12 + case Code_PUE: codeEnum="PUEA_E"; break; // Purge-UE-Request PUR (321)- Ref: TS 129 272 7.2.13-14 + case Code_RS: codeEnum="RSA_E"; break; // Reset-Request DSR (322)- Ref: TS 129 272 7.2.15-16 + case Code_NO: codeEnum="NOA_E"; break; // Notify-Request NOR (323)- Ref: TS 129 272 7.2.17-1 + } + } + return codeEnum; + } + + private void decode_AVPHeader (RecordValue rvAvp, AVP avp) { + + RecordValue AvpH = (RecordValue)rvAvp.getField("aVP_Header").getType().newInstance(); + + IntegerValue avpcode = (IntegerValue)AvpH.getField("aVP_Code").getType().newInstance(); + avpcode.setInt(avp.code); + AvpH.setField("aVP_Code", avpcode); + + RecordValue avpflags = (RecordValue) AvpH.getField("aVP_flags").getType().newInstance(); + byte[] buffer = new byte[] {(byte) ((((avp.flag_vendor_specific?1:0)<<7) | ((avp.flag_mandatory?1:0)<<6) | ((avp.flag_protected?1:0)<<5)) & 0xFF)}; + UsedBitsInByte = 0; + avpflags.setField("v_bit", BufferToBitString(buffer, 1)); // + avpflags.setField("m_bit", BufferToBitString(buffer, 1)); // + avpflags.setField("p_bit", BufferToBitString(buffer, 1)); // + avpflags.setField("reserved_bits", BufferToBitString(buffer, 5)); //reserved_bits + AvpH.setField("aVP_flags", avpflags); + + IntegerValue avplen = (IntegerValue)AvpH.getField("aVP_len").getType().newInstance(); + avplen.setInt(avp.length); + AvpH.setField("aVP_len", avplen); + + if(avp.vendor_id!=0){ + IntegerValue avpvid = (IntegerValue)AvpH.getField("aVP_vid").getType().newInstance(); + avpvid.setInt(avp.vendor_id); + AvpH.setField("aVP_vid", avpvid); + } + + rvAvp.setField("aVP_Header",AvpH); + return; + } + + private void decode_DiameterAVPs_(RecordValue rv_, DiameterMessage msg){ + + rov_any_AVP = (RecordOfValue) rv_.getField("aVP_Type").getType().newInstance(); + System.out.println("decode_DiameterAVPs_"); + String[] fields = rv_.getFieldNames(); + for(int i=0;i avps=msg.avps; + for(int i=0;i0){ + rv_.setField("aVP_Type", rov_any_AVP); + } + } + private void decode_DiameterAVPs(RecordValue rv_DiameterM, DiameterMessage msg){ + + rov_any_AVP = (RecordOfValue) rv_DiameterM.getField("aVP_Type").getType().newInstance(); + + /*RFC3588 AVPs*/ + decode_Origin_Host_AVP( rv_DiameterM, msg); + decode_Origin_Realm_AVP( rv_DiameterM, msg); + decode_Host_IP_Address_AVP( rv_DiameterM, msg); + decode_Vendor_Id_AVP( rv_DiameterM, msg); + decode_Product_Name_AVP( rv_DiameterM, msg); + decode_Origin_State_Id_AVP( rv_DiameterM, msg); + decode_Supported_Vendor_Id_AVP( rv_DiameterM, msg); + decode_Auth_Application_Id_AVP( rv_DiameterM, msg); + decode_Inband_Security_Id_AVP( rv_DiameterM, msg); + decode_Acct_Application_Id_AVP( rv_DiameterM, msg); + decode_Vendor_Specific_Appl_Id_AVP( rv_DiameterM, msg); + decode_Firmware_Revision_AVP( rv_DiameterM, msg); + decode_Result_Code_AVP( rv_DiameterM, msg); + decode_Error_Message_AVP( rv_DiameterM, msg); + decode_Failed_AVP( rv_DiameterM, msg); + decode_Destination_Realm_AVP( rv_DiameterM, msg); + decode_Destination_Host_AVP( rv_DiameterM, msg); + decode_Re_Auth_Request_Type_AVP( rv_DiameterM, msg); + decode_User_Name_AVP( rv_DiameterM, msg); + //decode_Proxy_Host_AVP( rv_DiameterM, msg); + //decode_Proxy_State_AVP( rv_DiameterM, msg); + decode_Proxy_Info_AVP( rv_DiameterM, msg); + decode_Route_Record_AVP( rv_DiameterM, msg); + decode_Error_Reporting_Host_AVP( rv_DiameterM, msg); + decode_Redirect_Host_AVP( rv_DiameterM, msg); + decode_Redirect_Host_Usage_AVP( rv_DiameterM, msg); + decode_redirect_Max_Cache_Time_AVP( rv_DiameterM, msg); + decode_Accounting_Record_Type_AVP( rv_DiameterM, msg); + decode_Accounting_Record_Number_AVP( rv_DiameterM, msg); + decode_Accounting_Sub_Session_Id_AVP( rv_DiameterM, msg); + decode_Acct_Session_Id_AVP( rv_DiameterM, msg); + decode_Acct_Multi_Session_Id_AVP( rv_DiameterM, msg); + decode_Acct_Interim_Interval_AVP( rv_DiameterM, msg); + decode_Accounting_Realtime_Required_AVP( rv_DiameterM, msg); + decode_Event_Timestamp_AVP( rv_DiameterM, msg); + decode_Termination_Cause_AVP( rv_DiameterM, msg); + decode_Class_AVP( rv_DiameterM, msg); + decode_Disconnect_Cause_AVP( rv_DiameterM, msg); + /*End RFC3588 AVPs*/ + + /*RFC4740*/ + decode_Auth_Session_State_AVP(rv_DiameterM, msg); + decode_SIP_Number_Auth_Items_AVP(rv_DiameterM, msg); + decode_SIP_Auth_Data_Item_AVP(rv_DiameterM, msg); + /*End RFC4740 AVPs*/ + + /*RFC4005*/ + decode_Framed_IP_Address_AVP(rv_DiameterM, msg); + decode_Framed_IPv6_Prefix_AVP(rv_DiameterM, msg); + /*End RFC4005 AVPs*/ + + /*RFC4006*/ + decode_Service_Context_Id_AVP(rv_DiameterM, msg); + decode_CC_Request_Type_AVP(rv_DiameterM, msg); + decode_CC_Request_Number_AVP(rv_DiameterM, msg); + //decode_CC_Sub_Session_Id_AVP(rv_DiameterM, msg); + decode_Subscription_Id_AVP(rv_DiameterM, msg); + decode_Service_Identifier_AVP(rv_DiameterM, msg); + decode_Requested_Service_Unit_AVP(rv_DiameterM, msg); + decode_Requested_Action_AVP(rv_DiameterM, msg); + decode_Used_Service_Unit_AVP(rv_DiameterM, msg);// used_Service_Unit optional, //RFC4006 + decode_Multiple_Services_Indicator_AVP(rv_DiameterM, msg); + decode_Multiple_Services_Credit_Control_AVP(rv_DiameterM, msg); +// set of Service_Parameter_Info_AVP service_Parameter_Info optional, //RFC4006 +// CC_Correlation_Id_AVP cC_Correlation_Id optional, + //decode_User_Equipment_Info_AVP(rv_DiameterM, msg); + decode_CC_Session_Failover_AVP(rv_DiameterM, msg); + decode_Cost_Information_AVP(rv_DiameterM, msg); +// Check_Balance_Result_AVP check_Balance_Result optional, //RFC4006 + decode_Low_Balance_Indication_AVP(rv_DiameterM, msg); + decode_Remaining_Balance_AVP(rv_DiameterM, msg); + decode_Credit_Control_Failure_Handling_AVP(rv_DiameterM, msg); + decode_Direct_Debiting_Failure_Handling_AVP(rv_DiameterM, msg); + /*End RFC4006 AVPs*/ + + //sh-29.329 + decode_Public_Identity_AVP(rv_DiameterM, msg); + decode_User_Identity_AVP(rv_DiameterM, msg); + decode_Data_Reference_AVP(rv_DiameterM, msg); + decode_Service_Indication_AVP(rv_DiameterM, msg); + decode_Subs_Req_Type_AVP(rv_DiameterM, msg); + decode_Requested_Domain_AVP(rv_DiameterM, msg); + decode_Current_Location_AVP(rv_DiameterM, msg); + decode_Identity_Set_AVP(rv_DiameterM, msg); + decode_Expiry_Time_AVP(rv_DiameterM, msg); + decode_Send_Data_Indication_AVP(rv_DiameterM, msg); + decode_Repository_Data_ID_AVP(rv_DiameterM, msg); + decode_Wildcarded_PSI_AVP(rv_DiameterM, msg); + decode_Wildcarded_IMPU_AVP(rv_DiameterM, msg); + decode_DSAI_Tag_AVP(rv_DiameterM, msg); + decode_Server_Name_AVP(rv_DiameterM, msg); + decode_Supported_Features_AVP(rv_DiameterM, msg); + decode_Experimental_Result_AVP(rv_DiameterM, msg); + decode_User_Data_AVP(rv_DiameterM, msg); + /*End Sh*/ + + //TS129_215 AVP codes + decode_Routing_Rule_Install_AVP(rv_DiameterM, msg); + decode_Routing_Rule_Remove_AVP(rv_DiameterM, msg); + decode_QoS_Rule_Report_AVP(rv_DiameterM, msg); + decode_QoS_Rule_Install_AVP(rv_DiameterM, msg); + decode_Multiple_BBERF_Action_AVP(rv_DiameterM, msg); + decode_Subses_Decision_Info_AVP(rv_DiameterM, msg); + decode_Subses_Enforcement_Info_AVP(rv_DiameterM, msg); + + //TS129_229 + decode_Visited_Network_Identifier_AVP(rv_DiameterM, msg); + decode_UAR_Flags_AVP(rv_DiameterM, msg); + decode_User_Authorization_Type_AVP(rv_DiameterM, msg); + decode_Server_Assignment_Type_AVP_AVP(rv_DiameterM, msg); + decode_User_Data_Already_Available_AVP(rv_DiameterM, msg); + decode_SCSCF_Restoration_Info_AVP(rv_DiameterM, msg); + decode_Originating_Request_AVP(rv_DiameterM, msg); + decode_Deregistration_Reason_AVP(rv_DiameterM, msg); + decode_Identity_with_Emergency_Registration_AVP(rv_DiameterM, msg); + + //TS129_272 AVP codes + decode_ULR_Flags_AVP(rv_DiameterM, msg); + decode_ULA_Flags_AVP(rv_DiameterM, msg); + decode_UE_SRVCC_Capability_AVP(rv_DiameterM, msg); + decode_SGSN_Number_AVP(rv_DiameterM, msg); + decode_Homogeneous_Support_AVP(rv_DiameterM, msg); + decode_Error_Diagnostic_AVP(rv_DiameterM, msg); + decode_GMLC_Address_AVP(rv_DiameterM, msg); + decode_Active_APN_AVP(rv_DiameterM, msg); + + decode_Subscription_Data_AVP(rv_DiameterM, msg); + decode_Req_EUTRAN_Auth_Info_AVP(rv_DiameterM, msg); + decode_Req_UTRAN_GERAN_Auth_Info_AVP(rv_DiameterM, msg); + decode_Authentication_Info_AVP(rv_DiameterM, msg); + decode_Cancellation_Type_AVP(rv_DiameterM, msg); + decode_CLR_Flags_AVP(rv_DiameterM, msg); + decode_IDR_Flags_AVP(rv_DiameterM, msg); + decode_DSR_Flags_AVP(rv_DiameterM, msg); + decode_DSA_Flags_AVP(rv_DiameterM, msg); + decode_PUER_Flags_AVP(rv_DiameterM, msg); + decode_PUEA_Flags_AVP(rv_DiameterM, msg); + decode_IDA_Flags_AVP(rv_DiameterM, msg); + decode_NOR_Flags_AVP(rv_DiameterM, msg); + decode_IMS_Voice_PS_Sessions_Support_AVP(rv_DiameterM, msg); + decode_Last_UE_Activity_Time_AVP(rv_DiameterM, msg); + decode_EPS_User_State_AVP(rv_DiameterM, msg); + decode_EPS_Location_Information_AVP(rv_DiameterM, msg); + + /*TS132_299*/ + decode_Charging_Information_AVP(rv_DiameterM, msg); + decode_Charging_Rule_Report_AVP(rv_DiameterM, msg); + decode_QoS_Information_AVP(rv_DiameterM, msg); + decode_Service_Information_AVP(rv_DiameterM, msg); + decode_Visited_PLMN_Id_AVP(rv_DiameterM, msg); + decode_IP_CAN_Type_AVP(rv_DiameterM, msg); + decode_RAT_Type_AVP(rv_DiameterM, msg); + decode_Event_Trigger_AVP(rv_DiameterM, msg); + decode_Session_Release_Cause_AVP(rv_DiameterM, msg); + decode_AN_GW_Addr_AVP(rv_DiameterM, msg); + + if (rov_any_AVP.getLength()>0){ + rv_DiameterM.setField("aVP_Type", rov_any_AVP); + } + } + + private void decode_DiameterIdentity ( RecordValue rvAvp, AVP avp) { + + if(avp.getStringData()!=null) + rvAvp.setField("aVP_Data",mkCv(avp.getStringData())); + return; + } + + private void decode_DiameterURI ( RecordValue rvAvp, AVP avp) { + + if(avp.getStringData()!=null){ + + URI uri=null; + try{ + uri = new URI(avp.getStringData()); + + RecordValue rv= (RecordValue)rvAvp.getField("aVP_Data").getType().newInstance(); + + //charstring scheme ("aaa", "aaas"), + rv.setField("scheme",mkCv(uri.getScheme())); + //charstring diameterId_FQDN, + rv.setField("diameterId_FQDN",mkCv(uri.getHost())); + //integer portField optional, + //charstring transport ("tcp", "sctp", "udp") optional, + //charstring protocol ("diameter", "radius", "tacacs+") optional + + rvAvp.setField("aVP_Data",rv); + return; + } + catch (Exception ex){ + System.out.println("DiameterURI not in correct format("+avp.getStringData()+")" ); + return; + } + } + return; + } + + private void decode_Origin_Host_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Origin_Host_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue origHost = (RecordValue) rv_DiameterM.getField("origin_Host").getType().newInstance(); + + decode_AVPHeader( origHost ,avps[0]); + decode_DiameterIdentity(origHost, avps[0]); + + rv_DiameterM.setField("origin_Host",origHost); + } + return; + } + + private void decode_Origin_Realm_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Origin_Realm_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue origRealm = (RecordValue) rv_DiameterM.getField("origin_Realm").getType().newInstance(); + + decode_AVPHeader( origRealm ,avps[0]); + decode_DiameterIdentity(origRealm, avps[0]); + + rv_DiameterM.setField("origin_Realm",origRealm); + } + return; + } + +/* private void decode_IPV4Addr (ByteArrayOutputStream out, RecordValue data) { + + return; + } + private void decode_IPV6Addr (ByteArrayOutputStream out, RecordValue data) { + + return; + } +*/ + private void decode_Address (RecordValue data, AVP avp) { + + RecordValue rdata = (RecordValue)data.getField("aVP_Data").getType().newInstance(); + + int version=avp.data[0]<<8|avp.data[1]; + + OctetstringValue family=(OctetstringValue)rdata.getField("addressFamily").getType().newInstance(); + rdata.setField("addressFamily", createOctetstringValue(avp.data, 2 * 8)); + + UnionValue diam_address = (UnionValue)rdata.getField("ipAddress").getType().newInstance(); + if(version==1){ + RecordOfValue IP = (RecordOfValue) diam_address.getVariant("ipv4").getType().newInstance(); + IP.setLength(4); + for(int i=0;i<4;i++){ + IP.setField(i, mkInt((avp.data[i+2]) & 0xff)); + } + diam_address.setVariant("ipv4", IP); + } + else{ + RecordOfValue IP = (RecordOfValue) diam_address.getVariant("ipv6").getType().newInstance(); + IP.setLength(8); + for(int i=0;i<8;i++){ + IP.setField(i, mkInt((avp.data[i+2]) & 0xffff)); + } + diam_address.setVariant("ipv6", IP); + } + + rdata.setField("ipAddress", diam_address); + data.setField("aVP_Data",rdata); + + /*if (udata.getPresentVariantName().equals("ipv4")) { + //decode_IPV4Addr(out, (RecordValue) data.getVariant("ipv4")); + }else if (udata.getPresentVariantName().equals("ipv6")){ + //decode_IPV6Addr(out, (RecordValue) data.getVariant("ipv6")); + }*/ + return; + } + + private void decode_Host_IP_Address_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Host_IP_Address_AVP); + if (avps==null) return; + + if (avps.length>=1){ + + RecordOfValue recOfhostIPAddr = (RecordOfValue) rv_DiameterM.getField("host_IP_Address").getType().newInstance(); + recOfhostIPAddr.setLength(0); + + for(int i=0;i1){} //Should never be more than one AVP + else{ + RecordValue vendor = (RecordValue) rv_DiameterM.getField("vendor_Id").getType().newInstance(); + + decode_AVPHeader( vendor ,avps[0]); + vendor.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("vendor_Id",vendor); + } + return; + } + + private void decode_Product_Name_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Product_Name_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvproduct_Name = (RecordValue) rv_DiameterM.getField("product_Name").getType().newInstance(); + + decode_AVPHeader( rvproduct_Name ,avps[0]); + rvproduct_Name.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_DiameterM.setField("product_Name",rvproduct_Name); + } + return; + } + + private void decode_Origin_State_Id_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Origin_State_Id_AVP); + if (avps==null) return; + + if (avps.length>1){ + + RecordOfValue recOfOrigin_State = (RecordOfValue) rv_DiameterM.getField("origin_State_Id").getType().newInstance(); + recOfOrigin_State.setLength(0); + + for(int i=0;i=1){ + + RecordOfValue recOfSupported_Vendor = (RecordOfValue) rv_DiameterM.getField("supported_Vendor_Id").getType().newInstance(); + recOfSupported_Vendor.setLength(0); + + for(int i=0;i=1){ + try{ + RecordValue rvAuth_Application = (RecordValue) (RecordValue) rv_DiameterM.getField("auth_Application_Id").getType().newInstance(); + + decode_AVPHeader( rvAuth_Application ,avps[0]); + rvAuth_Application.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("auth_Application_Id",rvAuth_Application); + rv_present=true; + return; + }catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + try{ + RecordOfValue recOfAuth_Application = (RecordOfValue) rv_DiameterM.getField("auth_Application_Id").getType().newInstance(); + recOfAuth_Application.setLength(0); + + for(int i=0;i=1){ + + RecordOfValue recOfInband_Security = (RecordOfValue) rv_DiameterM.getField("inband_Security_Id").getType().newInstance(); + recOfInband_Security.setLength(0); + + for(int i=0;i=1){ + + try{ + RecordValue rvAcct_Application = (RecordValue) (RecordValue) rv_DiameterM.getField("acct_Application_Id").getType().newInstance(); + + decode_AVPHeader( rvAcct_Application ,avps[0]); + rvAcct_Application.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("acct_Application_Id",rvAcct_Application); + rv_present=true; + return; + }catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + + if(!rv_present){ + try{ + RecordOfValue recOfAcct_Application = (RecordOfValue) rv_DiameterM.getField("acct_Application_Id").getType().newInstance(); + recOfAcct_Application.setLength(0); + + for(int i=0;i=1){ + try{ + RecordValue rv_vSAId = (RecordValue) (RecordValue) rv_DiameterM.getField("vendor_Specific_Application_Id").getType().newInstance(); + + decode_AVPHeader( rv_vSAId ,avps[0]); + decode_Vendor_Specific_Appl_Id_AVP(rv_vSAId,avps[0]); + + rv_DiameterM.setField("vendor_Specific_Application_Id",rv_vSAId); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + try{ + RecordOfValue recOfrv_vSAId = (RecordOfValue) rv_DiameterM.getField("vendor_Specific_Application_Id").getType().newInstance(); + recOfrv_vSAId.setLength(0); + + for(int i=0;i1){} + else{ + RecordValue rvFirmware_Revision = (RecordValue) (RecordValue) rv_DiameterM.getField("firmware_Revision").getType().newInstance(); + + decode_AVPHeader( rvFirmware_Revision ,avps[0]); + rvFirmware_Revision.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("firmware_Revision",rvFirmware_Revision); + } + return; + } + + private void decode_Result_Code_AVP(RecordValue rv_DiameterM, AVP msg){ + + AVP[] avps=msg.findChildAVPs(AVP_Result_Code_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvResult_Code = (RecordValue) (RecordValue) rv_DiameterM.getField("result_Code").getType().newInstance(); + + decode_AVPHeader( rvResult_Code ,avps[0]); + rvResult_Code.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("result_Code",rvResult_Code); + } + return; + } + + private void decode_Result_Code_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Result_Code_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvResult_Code = (RecordValue) (RecordValue) rv_DiameterM.getField("result_Code").getType().newInstance(); + + decode_AVPHeader( rvResult_Code ,avps[0]); + rvResult_Code.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("result_Code",rvResult_Code); + } + return; + } + + private void decode_Error_Message_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Error_Message_AVP); + if (avps==null) return; + + if (useList(rv_DiameterM.getFieldNames(),"error_Message")){ + if (avps.length>1){} + else{ + RecordValue rvError_Message = (RecordValue) (RecordValue) rv_DiameterM.getField("error_Message").getType().newInstance(); + + decode_AVPHeader( rvError_Message ,avps[0]); + //rvError_Message.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + rvError_Message.setField("aVP_Data", mkCv(avps[0].getStringData())); + + rv_DiameterM.setField("error_Message",rvError_Message); + } + } + else{ + RecordValue rv_avp = (RecordValue)rov_any_AVP.getElementType().newInstance(); + decode_AVP_Type(rv_avp,avps[0]); + rov_any_AVP.appendField(rv_avp); + } + return; + } + + private void decode_Failed_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Failed_AVP); + if (avps==null) return; + + if (avps.length>=1){ + + RecordOfValue recOfFailed = (RecordOfValue) rv_DiameterM.getField("failed").getType().newInstance(); + recOfFailed.setLength(0); + + for(int i=0;i1){} + else{ + RecordValue rvSession_Id = (RecordValue) (RecordValue) rv_DiameterM.getField("session_Id").getType().newInstance(); + + decode_AVPHeader( rvSession_Id ,avps[0]); + rvSession_Id.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + ///rvSession_Id.setField("aVP_Data", mkCv(avps[0].getStringData())); + rv_DiameterM.setField("session_Id",rvSession_Id); + } + return; + } + + private void decode_Destination_Realm_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Destination_Realm_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + //String[] fields = rv_DiameterM.getFieldNames(); + if (useList(rv_DiameterM.getFieldNames(),"destination_Realm")){ + RecordValue destRealm = (RecordValue) rv_DiameterM.getField("destination_Realm").getType().newInstance(); + + decode_AVPHeader( destRealm ,avps[0]); + decode_DiameterIdentity(destRealm, avps[0]); + + rv_DiameterM.setField("destination_Realm",destRealm); + }else{ + RecordValue rv_avp = (RecordValue)rov_any_AVP.getElementType().newInstance(); + decode_AVP_Type(rv_avp,avps[0]); + rov_any_AVP.appendField(rv_avp); + } + } + return; + } + + private void decode_Destination_Realm_AVP(RecordValue rv_DiameterM, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Destination_Realm_AVP); + if (avp==null) return; + + RecordValue destRealm = (RecordValue) rv_DiameterM.getField("destination_Realm").getType().newInstance(); + + decode_AVPHeader( destRealm ,avp); + decode_DiameterIdentity(destRealm, avp); + + rv_DiameterM.setField("destination_Realm",destRealm); + return; + } + + private void decode_Destination_Host_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Destination_Host_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + //String[] fields = rv_DiameterM.getFieldNames(); + if (useList(rv_DiameterM.getFieldNames(),"destination_Host")){ + RecordValue destHost = (RecordValue) rv_DiameterM.getField("destination_Host").getType().newInstance(); + + decode_AVPHeader( destHost ,avps[0]); + decode_DiameterIdentity(destHost, avps[0]); + + rv_DiameterM.setField("destination_Host",destHost); + }else{ + RecordValue rv_avp = (RecordValue)rov_any_AVP.getElementType().newInstance(); + decode_AVP_Type(rv_avp,avps[0]); + rov_any_AVP.appendField(rv_avp); + } + } + return; + } + + private void decode_Destination_Host_AVP(RecordValue rv_DiameterM, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Destination_Host_AVP); + if (avp==null) return; + + RecordValue destHost = (RecordValue) rv_DiameterM.getField("destination_Host").getType().newInstance(); + + decode_AVPHeader( destHost ,avp); + decode_DiameterIdentity(destHost, avp); + + rv_DiameterM.setField("destination_Host",destHost); + return; + } + + private void decode_Re_Auth_Request_Type_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Re_Auth_Request_Type_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue reAuthReqType = (RecordValue) rv_DiameterM.getField("re_Auth_Request_Type").getType().newInstance(); + + decode_AVPHeader( reAuthReqType ,avps[0]); + reAuthReqType.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("re_Auth_Request_Type",reAuthReqType); + } + return; + } + + private void decode_User_Name_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avps=avp_.findChildAVPs(AVP_User_Name_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvUser_Name = (RecordValue) (RecordValue) rv_.getField("user_Name").getType().newInstance(); + + decode_AVPHeader( rvUser_Name ,avps[0]); + rvUser_Name.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + //rvUser_Name.setField("aVP_Data", mkCv(avps[0].getStringData())); + rv_.setField("user_Name",rvUser_Name); + } + return; + } + + private void decode_User_Name_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_User_Name_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvUser_Name = (RecordValue) (RecordValue) rv_DiameterM.getField("user_Name").getType().newInstance(); + + decode_AVPHeader( rvUser_Name ,avps[0]); + rvUser_Name.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + //rvUser_Name.setField("aVP_Data", mkCv(avps[0].getStringData())); + rv_DiameterM.setField("user_Name",rvUser_Name); + } + return; + } + + private void decode_Proxy_Host_AVP(RecordValue rv_proxy, AVP pi){ + + AVP[] proxy_Host=pi.findChildAVPs(AVP_Proxy_Host_AVP); + if (proxy_Host==null) return; + + if (proxy_Host.length>1){} //Should never be more than one AVP + else{ + RecordValue proxyHost = (RecordValue) rv_proxy.getField("proxy_Host").getType().newInstance(); + + decode_AVPHeader( proxyHost ,proxy_Host[0]); + decode_DiameterIdentity(proxyHost, proxy_Host[0]); + + rv_proxy.setField("proxy_Host",proxyHost); + } + return; + } + + private void decode_Proxy_State_AVP(RecordValue rv_proxy, AVP pi){ + + AVP[] proxy_State=pi.findChildAVPs(AVP_Proxy_State_AVP); + if (proxy_State==null) return; + + if (proxy_State.length>1){} //Should never be more than one AVP + else{ + RecordValue proxyState = (RecordValue) rv_proxy.getField("proxy_State").getType().newInstance(); + + decode_AVPHeader( proxyState ,proxy_State[0]); + proxyState.setField("aVP_Data", mkOctetstring(proxy_State[0].data)); + + rv_proxy.setField("proxy_State",proxyState); + } + return; + } + + private void decode_Proxy_Info_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Proxy_Info_AVP); + if (avps==null) return; + + if (avps.length>=1){ + RecordOfValue recOfproxy_Info = (RecordOfValue) rv_DiameterM.getField("proxy_Info").getType().newInstance(); + recOfproxy_Info.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfproxy_Info.getElementType().newInstance(); + decode_AVPHeader( rv ,avps[i]); + + decode_Proxy_Host_AVP(rv,avps[i]); + decode_Proxy_State_AVP(rv,avps[i]); + //decode_AVP_Type(rv,avps[i]); + + recOfproxy_Info.appendField(rv); + } + rv_DiameterM.setField("proxy_Info",recOfproxy_Info); + } + return; + } + + private void decode_Route_Record_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Route_Record_AVP); + if (avps==null) return; + + if (avps.length>=1){ + RecordOfValue recOfRoute_Record = (RecordOfValue) rv_DiameterM.getField("route_Record").getType().newInstance(); + recOfRoute_Record.setLength(0); + + for(int i=0;i1){} //Should never be more than one AVP + else{ + RecordValue error_Reporting_Host = (RecordValue) rv_DiameterM.getField("error_Reporting_Host").getType().newInstance(); + + decode_AVPHeader( error_Reporting_Host ,avps[0]); + decode_DiameterIdentity(error_Reporting_Host, avps[0]);//(CharstringValue)rv.getField("aVP_Data")); + + rv_DiameterM.setField("error_Reporting_Host",error_Reporting_Host); + } + return; + } + + private void decode_Redirect_Host_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + boolean rv_present=false; + AVP[] avps=msg.findAVPs(AVP_Redirect_Host_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv = (RecordValue) (RecordValue) rv_DiameterM.getField("redirect_Host").getType().newInstance(); + + decode_AVPHeader( rv ,avps[0]); + decode_DiameterIdentity(rv, avps[0]); + + rv_DiameterM.setField("redirect_Host",rv); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfRedirect_Host = (RecordOfValue) rv_DiameterM.getField("redirect_Host").getType().newInstance(); + recOfRedirect_Host.setLength(0); + + for(int i=0;i1){} + else{ + RecordValue rvRedirect_Host_Usage = (RecordValue) (RecordValue) rv_DiameterM.getField("redirect_Host_Usage").getType().newInstance(); + + decode_AVPHeader( rvRedirect_Host_Usage ,avps[0]); + rvRedirect_Host_Usage.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("redirect_Host_Usage",rvRedirect_Host_Usage); + } + return; + } + + private void decode_redirect_Max_Cache_Time_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_redirect_Max_Cache_Time_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvredirect_Max_Cache_Time = (RecordValue) (RecordValue) rv_DiameterM.getField("redirect_Max_Cache_Time").getType().newInstance(); + + decode_AVPHeader( rvredirect_Max_Cache_Time ,avps[0]); + rvredirect_Max_Cache_Time.setField("aVP_Data", mkInt64(avps[0].int_data)); + + rv_DiameterM.setField("redirect_Max_Cache_Time",rvredirect_Max_Cache_Time); + } + return; + } + + private void decode_Accounting_Record_Type_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Accounting_Record_Type_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvAccounting_Record_Type = (RecordValue) (RecordValue) rv_DiameterM.getField("accounting_Record_Type").getType().newInstance(); + + decode_AVPHeader( rvAccounting_Record_Type ,avps[0]); + rvAccounting_Record_Type.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("accounting_Record_Type",rvAccounting_Record_Type); + } + return; + } + + private void decode_Accounting_Record_Number_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Accounting_Record_Number_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvAccounting_Record_Number = (RecordValue) (RecordValue) rv_DiameterM.getField("accounting_Record_Number").getType().newInstance(); + + decode_AVPHeader( rvAccounting_Record_Number ,avps[0]); + rvAccounting_Record_Number.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("accounting_Record_Number",rvAccounting_Record_Number); + } + return; + } + + private void decode_Accounting_Sub_Session_Id_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Accounting_Sub_Session_Id_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rvAccounting_Sub_Session_Id = (RecordValue) (RecordValue) rv_DiameterM.getField("accounting_Sub_Session_Id").getType().newInstance(); + + decode_AVPHeader( rvAccounting_Sub_Session_Id ,avps[0]); + rvAccounting_Sub_Session_Id.setField("aVP_Data", mkInt64(avps[0].int_data)); + + rv_DiameterM.setField("accounting_Sub_Session_Id",rvAccounting_Sub_Session_Id); + } + return; + } + + private void decode_Acct_Session_Id_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Acct_Session_Id_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvAcct_Session_Id = (RecordValue) rv_DiameterM.getField("acct_Session_Id").getType().newInstance(); + + decode_AVPHeader( rvAcct_Session_Id ,avps[0]); + rvAcct_Session_Id.setField("aVP_Data", mkOctetstring(avps[0].data)); + + rv_DiameterM.setField("acct_Session_Id",rvAcct_Session_Id); + } + return; + } + + private void decode_Acct_Multi_Session_Id_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Acct_Multi_Session_Id_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvAcct_Multi_Session_Id = (RecordValue) rv_DiameterM.getField("acct_Multi_Session_Id").getType().newInstance(); + + decode_AVPHeader( rvAcct_Multi_Session_Id ,avps[0]); + rvAcct_Multi_Session_Id.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_DiameterM.setField("acct_Multi_Session_Id",rvAcct_Multi_Session_Id); + } + return; + } + + private void decode_Acct_Interim_Interval_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Acct_Interim_Interval_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvAcct_Interim_Interval = (RecordValue) rv_DiameterM.getField("acct_Interim_Interval").getType().newInstance(); + + decode_AVPHeader( rvAcct_Interim_Interval ,avps[0]); + rvAcct_Interim_Interval.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("acct_Interim_Interval",rvAcct_Interim_Interval); + } + return; + } + + private void decode_Accounting_Realtime_Required_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Accounting_Realtime_Required_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvAccounting_Realtime_Required = (RecordValue) rv_DiameterM.getField("accounting_Realtime_Required").getType().newInstance(); + + decode_AVPHeader( rvAccounting_Realtime_Required ,avps[0]); + rvAccounting_Realtime_Required.setField("aVP_Data", mkInt(avps[0].int_data));//TODO:Enumerated!!! + + rv_DiameterM.setField("accounting_Realtime_Required",rvAccounting_Realtime_Required); + } + return; + } + + private void decode_Event_Timestamp_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Event_Timestamp_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvEvent_Timestamp = (RecordValue) rv_DiameterM.getField("event_Timestamp").getType().newInstance(); + + decode_AVPHeader( rvEvent_Timestamp ,avps[0]); + //rvEvent_Timestamp.setField("aVP_Data", mkInt64(avps[0].int_data)); + rvEvent_Timestamp.setField("aVP_Data", mkInt(avps[0].long_data)); + + rv_DiameterM.setField("event_Timestamp",rvEvent_Timestamp); + } + return; + } + + private void decode_Termination_Cause_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Termination_Cause_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvTermination_Cause = (RecordValue) rv_DiameterM.getField("termination_Cause").getType().newInstance(); + + decode_AVPHeader( rvTermination_Cause ,avps[0]); + rvTermination_Cause.setField("aVP_Data", mkInt(avps[0].int_data));//TODO:Enumerated!!! + + rv_DiameterM.setField("termination_Cause",rvTermination_Cause); + } + return; + } + + private void decode_Class_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Class_AVP); + if (avps==null) return; + + if (avps.length>=1){ + RecordOfValue recOfClass = (RecordOfValue) rv_DiameterM.getField("class").getType().newInstance(); + recOfClass.setLength(0); + + for(int i=0;i1){} //Should never be more than one AVP + else{ + RecordValue rvDisconnect_Cause = (RecordValue) rv_DiameterM.getField("disconnect_Cause").getType().newInstance(); + + decode_AVPHeader( rvDisconnect_Cause ,avps[0]); + rvDisconnect_Cause.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("disconnect_Cause",rvDisconnect_Cause); + } + return; + } + /*End RFC3588 Types */ + + /*Rx Types */ + /*End Rx Types */ + + /*RFC4005 Types*/ + private void decode_Called_Station_Id_AVP(RecordValue rv_, AVP avp_){ + AVP[] avp=avp_.findChildAVPs(AVP_Called_Station_Id_AVP); + + if (avp==null) return; + + if (avp.length>1){} //Should never be more than one AVP + else{ + RecordValue rv = (RecordValue) rv_.getField("called_Station_Id").getType().newInstance(); + + decode_AVPHeader( rv ,avp[0]); + rv.setField("aVP_Data", mkCvUTF8(avp[0].getStringData())); + + rv_.setField("called_Station_Id",rv); + } + return; + } + + private void decode_Framed_IP_Address_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avps=avp_.findChildAVPs(AVP_Framed_IP_Address_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvframed_IP_Addr = (RecordValue) rv_.getField("framed_IP_Address").getType().newInstance(); + + decode_AVPHeader( rvframed_IP_Addr ,avps[0]); + rvframed_IP_Addr.setField("aVP_Data", mkOctetstring(avps[0].data)); + + rv_.setField("framed_IP_Address",rvframed_IP_Addr); + } + return; + } + + private void decode_Framed_IP_Address_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Framed_IP_Address_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvframed_IP_Addr = (RecordValue) rv_DiameterM.getField("framed_IP_Address").getType().newInstance(); + + decode_AVPHeader( rvframed_IP_Addr ,avps[0]); + rvframed_IP_Addr.setField("aVP_Data", mkOctetstring(avps[0].data)); + + rv_DiameterM.setField("framed_IP_Address",rvframed_IP_Addr); + } + return; + } + + private void decode_Framed_IPv6_Prefix_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avps=avp_.findChildAVPs(AVP_Framed_IPv6_Prefix_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvframed_IP_AddrPfx = (RecordValue) rv_.getField("framed_IPv6_Prefix").getType().newInstance(); + + decode_AVPHeader( rvframed_IP_AddrPfx ,avps[0]); + rvframed_IP_AddrPfx.setField("aVP_Data", mkOctetstring(avps[0].data)); + + rv_.setField("framed_IPv6_Prefix",rvframed_IP_AddrPfx); + } + return; + } + + private void decode_Framed_IPv6_Prefix_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Framed_IPv6_Prefix_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvframed_IP_AddrPfx = (RecordValue) rv_DiameterM.getField("framed_IPv6_Prefix").getType().newInstance(); + + decode_AVPHeader( rvframed_IP_AddrPfx ,avps[0]); + rvframed_IP_AddrPfx.setField("aVP_Data", mkOctetstring(avps[0].data)); + + rv_DiameterM.setField("framed_IPv6_Prefix",rvframed_IP_AddrPfx); + } + return; + } + + private void decode_Framed_Interface_Id_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avps=avp_.findChildAVPs(AVP_Framed_Interface_Id_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvframed_IP_AddrPfx = (RecordValue) rv_.getField("framed_Interface_Id").getType().newInstance(); + + decode_AVPHeader( rvframed_IP_AddrPfx ,avps[0]); + rvframed_IP_AddrPfx.setField("aVP_Data", mkOctetstring(avps[0].data)); + + rv_.setField("framed_Interface_Id",rvframed_IP_AddrPfx); + } + return; + } + /*EndRFC4005 Types*/ + + /*RFC4006 Types*/ + private void decode_Service_Context_Id_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Service_Context_Id_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvService_Context_Id = (RecordValue) rv_DiameterM.getField("service_Context_Id").getType().newInstance(); + + decode_AVPHeader( rvService_Context_Id ,avps[0]); + rvService_Context_Id.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_DiameterM.setField("service_Context_Id",rvService_Context_Id); + } + return; + } + + private void decode_CC_Request_Type_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_CC_Request_Type_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvCC_Request_Type = (RecordValue) rv_DiameterM.getField("cC_Request_Type").getType().newInstance(); + + decode_AVPHeader( rvCC_Request_Type ,avps[0]); + rvCC_Request_Type.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("cC_Request_Type",rvCC_Request_Type); + } + return; + } + + private void decode_CC_Request_Number_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_CC_Request_Number_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvCC_Request_Number = (RecordValue) rv_DiameterM.getField("cC_Request_Number").getType().newInstance(); + + decode_AVPHeader( rvCC_Request_Number ,avps[0]); + rvCC_Request_Number.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("cC_Request_Number",rvCC_Request_Number); + } + return; + } + + private void decode_Subscription_Id_Type_AVP(RecordValue rv_sid_type, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Subscription_Id_Type_AVP); + if (avp==null) return; + + //if (avp.length>1){} //Should never be more than one AVP + //else{ + RecordValue rvSubscription_Id_Type = (RecordValue) rv_sid_type.getField("subscription_Id_Type").getType().newInstance(); + + decode_AVPHeader( rvSubscription_Id_Type ,avp); + rvSubscription_Id_Type.setField("aVP_Data", mkInt(avp.int_data)); + + rv_sid_type.setField("subscription_Id_Type",rvSubscription_Id_Type); + //} + return; + } + + private void decode_Subscription_Id_Data_AVP(RecordValue rv_sid_data, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Subscription_Id_Data_AVP); + if (avp==null) return; + + //if (avp.length>1){} //Should never be more than one AVP + //else{ + RecordValue rvsubscription_Id_Data = (RecordValue) rv_sid_data.getField("subscription_Id_Data").getType().newInstance(); + + decode_AVPHeader( rvsubscription_Id_Data ,avp); + rvsubscription_Id_Data.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_sid_data.setField("subscription_Id_Data",rvsubscription_Id_Data); + //} + return; + } + + private void decode_Subscription_Id_AVP(RecordValue rv_sid, AVP sid){ + + AVP[] avps=sid.findChildAVPs(AVP_Subscription_Id_AVP); + if (avps==null) return; + + + RecordOfValue rov_Subscription_Id = (RecordOfValue) rv_sid.getField("subscription_Id").getType().newInstance(); + rov_Subscription_Id.setLength(0); + //try{avp.ungroup();}catch(Exception e){return;} + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) rov_Subscription_Id.getElementType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv ,avps[i]); + decode_Subscription_Id_Type_AVP(rv,avps[i]); + decode_Subscription_Id_Data_AVP(rv,avps[i]); + + rov_Subscription_Id.appendField(rv); + } + + rv_sid.setField("subscription_Id",rov_Subscription_Id); + return; + } + + private void decode_Subscription_Id_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + boolean rv_present=false; + AVP[] avps=msg.findAVPs(AVP_Subscription_Id_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_Subscription_Id = (RecordValue) (RecordValue) rv_DiameterM.getField("subscription_Id").getType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv_Subscription_Id ,avps[0]); + decode_Subscription_Id_Type_AVP(rv_Subscription_Id,avps[0]); + decode_Subscription_Id_Data_AVP(rv_Subscription_Id,avps[0]); + + rv_DiameterM.setField("subscription_Id",rv_Subscription_Id); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + + RecordOfValue recOfSubscription_Id = (RecordOfValue) rv_DiameterM.getField("subscription_Id").getType().newInstance(); + recOfSubscription_Id.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfSubscription_Id.getElementType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv ,avps[i]); + decode_Subscription_Id_Type_AVP(rv,avps[i]); + decode_Subscription_Id_Data_AVP(rv,avps[i]); + + recOfSubscription_Id.appendField(rv); + } + rv_DiameterM.setField("subscription_Id",recOfSubscription_Id); + } + } + return; + } + + private void decode_Service_Identifier_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + boolean rv_present=false; + AVP[] avps=msg.findAVPs(AVP_Service_Identifier_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rvService_Identifier = (RecordValue) rv_DiameterM.getField("service_Identifier").getType().newInstance(); + + decode_AVPHeader( rvService_Identifier ,avps[0]); + rvService_Identifier.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("service_Identifier",rvService_Identifier); + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfService_Identifier = (RecordOfValue) rv_DiameterM.getField("service_Identifier").getType().newInstance(); + recOfService_Identifier.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfService_Identifier.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkInt(avps[i].int_data)); + + recOfService_Identifier.appendField(rv); + } + rv_DiameterM.setField("service_Identifier",recOfService_Identifier); + } + } + return; + } + + private void decode_Requested_Action_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_Requested_Action_AVP); + if (avp==null) return; + + RecordValue rv_Request_Action = (RecordValue) rv_DiameterM.getField("requested_Action").getType().newInstance(); + + decode_AVPHeader( rv_Request_Action ,avp); + rv_Request_Action.setField("aVP_Data", mkInt(avp.int_data)); + + rv_DiameterM.setField("requested_Action",rv_Request_Action); + + return; + } + + private void decode_Multiple_Services_Indicator_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_Multiple_Services_Indicator_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_DiameterM.getField("multiple_Services_Indicator").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkInt(avp.int_data)); + + rv_DiameterM.setField("multiple_Services_Indicator",rv_); + + return; + } + + private void decode_CC_Session_Failover_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_CC_Session_Failover_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_DiameterM.getField("cC_Session_Failover").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkInt(avp.int_data)); + + rv_DiameterM.setField("cC_Session_Failover",rv_); + + return; + } + + private void decode_Cost_Unit_AVP(RecordValue rv_sid, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Cost_Unit_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_sid.getField("cost_Unit").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_sid.setField("cost_Unit",rv_); + + return; + } + + private void decode_Cost_Information_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_Cost_Information_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_DiameterM.getField("cost_Information").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv_ ,avp); + decode_Unit_Value_AVP( rv_ ,avp); // unit_Value, + decode_Currency_Code_AVP( rv_ ,avp); // currency_Code, + decode_Cost_Unit_AVP( rv_ ,avp); // cost_Unit optional + + rv_DiameterM.setField("cost_Information",rv_); + + return; + } + + private void decode_Low_Balance_Indication_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_Low_Balance_Indication_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_DiameterM.getField("low_Balance_Indication").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkInt(avp.int_data)); + + rv_DiameterM.setField("low_Balance_Indication",rv_); + + return; + } + + private void decode_Remaining_Balance_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_Remaining_Balance_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_DiameterM.getField("remaining_Balance").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv_ ,avp); + decode_Unit_Value_AVP( rv_ ,avp);// unit_Value, + decode_Currency_Code_AVP( rv_ ,avp);// currency_Code + + rv_DiameterM.setField("remaining_Balance",rv_); + + return; + } + + private void decode_Credit_Control_Failure_Handling_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_Credit_Control_Failure_Handling_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_DiameterM.getField("credit_Control_Failure_Handling").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkInt(avp.int_data)); + + rv_DiameterM.setField("credit_Control_Failure_Handling",rv_); + + return; + } + + private void decode_Direct_Debiting_Failure_Handling_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP avp=msg.findAVP(AVP_Direct_Debiting_Failure_Handling_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) rv_DiameterM.getField("direct_Debiting_Failure_Handling").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkInt(avp.int_data)); + + + rv_DiameterM.setField("direct_Debiting_Failure_Handling",rv_); + + return; + } + + + + /*End RFC 4006 Types*/ + + /*RFC4740 AVPs*/ + private void decode_Auth_Session_State_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Auth_Session_State_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rv_Auth_Session_State = (RecordValue) rv_DiameterM.getField("auth_Session_State").getType().newInstance(); + + decode_AVPHeader( rv_Auth_Session_State ,avps[0]); + rv_Auth_Session_State.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("auth_Session_State",rv_Auth_Session_State); + } + return; + } + + + private void decode_SIP_Method_AVP(RecordValue rv_sip_m, AVP sip_m){ + + AVP avp=sip_m.findChildAVP(AVP_SIP_Method_AVP); + if (avp==null) return; + + RecordValue rvSIP_Method = (RecordValue) rv_sip_m.getField("sIP_Method").getType().newInstance(); + + decode_AVPHeader( rvSIP_Method ,avp); + rvSIP_Method.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_sip_m.setField("sIP_Method",rvSIP_Method); + + return; + } + + private void decode_SIP_Method_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_SIP_Method_AVP); + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvSIP_Method = (RecordValue) rv_DiameterM.getField("sIP_Method").getType().newInstance(); + + decode_AVPHeader( rvSIP_Method ,avps[0]); + rvSIP_Method.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_DiameterM.setField("sIP_Method",rvSIP_Method); + } + return; + } + + private void decode_SIP_Number_Auth_Items_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avpsrfc=msg.findAVPs(AVP_SIP_Number_Auth_Items_RFC_AVP); + AVP[] avps3gpp=msg.findAVPs(AVP_SIP_Number_Auth_Items_3GPP_AVP); + AVP[] avps=null; + + if (avpsrfc!=null) avps=avpsrfc; + if (avps3gpp!=null) avps=avps3gpp; + + if (avps==null) return; + + if (avps.length>1){} //Should never be more than one AVP + else{ + RecordValue rvSIP_AuthItem = (RecordValue) rv_DiameterM.getField("sIP_Number_Auth_Items").getType().newInstance(); + + decode_AVPHeader( rvSIP_AuthItem ,avps[0]); + rvSIP_AuthItem.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_DiameterM.setField("sIP_Number_Auth_Items",rvSIP_AuthItem); + } + return; + } + + + private void decode_SIP_Auth_Data_Item_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + boolean rv_present=false; + AVP[] avpsrfc=msg.findAVPs(AVP_SIP_Auth_Data_Item_RFC_AVP); + AVP[] avps3gpp=msg.findAVPs(AVP_SIP_Auth_Data_Item_3GPP_AVP); + + if ((avpsrfc==null) && (avps3gpp==null)) return; + + if ((avpsrfc!=null)&&(avpsrfc.length>0)){ + try{ + UnionValue rvSIP_Auth = (UnionValue) rv_DiameterM.getField("sIP_Auth_Data_Item").getType().newInstance(); + RecordValue rv_Auth = (RecordValue) rvSIP_Auth.getVariant("sIP_Auth_Data_Item_RFC_AVP").getType().newInstance(); + + decode_SIP_Auth_Data_Item_RFC_AVP(rv_Auth, avpsrfc[0]); + + rvSIP_Auth.setVariant("sIP_Auth_Data_Item_RFC_AVP", rv_Auth); + rv_DiameterM.setField("sIP_Auth_Data_Item",rvSIP_Auth); + rv_present=true; + } + catch(Exception ex){} + if(!rv_present){ + RecordOfValue rov_rt = (RecordOfValue) rv_DiameterM.getField("sIP_Auth_Data_Item").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avpsrfc.length; i++) { + UnionValue rvSIP_Auth = (UnionValue) rov_rt.getElementType().newInstance(); + RecordValue rv_Auth = (RecordValue) rvSIP_Auth.getVariant("sIP_Auth_Data_Item_RFC_AVP").getType().newInstance(); + + decode_SIP_Auth_Data_Item_RFC_AVP(rv_Auth, avpsrfc[i]); + + rvSIP_Auth.setVariant("sIP_Auth_Data_Item_RFC_AVP", rv_Auth); + rov_rt.appendField(rvSIP_Auth); + } + rv_DiameterM.setField("sIP_Auth_Data_Item",rov_rt); + } + } + + if ((avps3gpp!=null)&&(avps3gpp.length>0)){ + + try{ + UnionValue rvSIP_Auth = (UnionValue) rv_DiameterM.getField("sIP_Auth_Data_Item").getType().newInstance(); + RecordValue rv_Auth = (RecordValue) rvSIP_Auth.getVariant("sIP_Auth_Data_Item_3GPP_AVP").getType().newInstance(); + + decode_SIP_Auth_Data_Item_3GPP_AVP(rv_Auth, avps3gpp[0]); + + rvSIP_Auth.setVariant("sIP_Auth_Data_Item_3GPP_AVP", rv_Auth); + rv_DiameterM.setField("sIP_Auth_Data_Item",rvSIP_Auth); + rv_present=true; + } + catch(Exception ex){} + if(!rv_present){ + RecordOfValue rov_rt = (RecordOfValue) rv_DiameterM.getField("sIP_Auth_Data_Item").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps3gpp.length; i++) { + UnionValue rvSIP_Auth = (UnionValue) rov_rt.getElementType().newInstance(); + RecordValue rv_Auth = (RecordValue) rvSIP_Auth.getVariant("sIP_Auth_Data_Item_3GPP_AVP").getType().newInstance(); + + decode_SIP_Auth_Data_Item_3GPP_AVP(rv_Auth, avps3gpp[i]); + + rvSIP_Auth.setVariant("sIP_Auth_Data_Item_3GPP_AVP", rv_Auth); + rov_rt.appendField(rvSIP_Auth); + } + rv_DiameterM.setField("sIP_Auth_Data_Item",rov_rt); + } + } + return; + } + + private void decode_SIP_Auth_Data_Item_RFC_AVP(RecordValue rv_, AVP avp_){ + + decode_AVPHeader( rv_ ,avp_); + decode_SIP_Authentication_Scheme_AVP( rv_ ,avp_);// sIP_Authentication_Scheme,//requ. + decode_SIP_Item_Number_AVP( rv_ ,avp_);// sIP_Item_Number optional, + decode_SIP_Authenticate_AVP( rv_ ,avp_);// sIP_Authenticate optional, + decode_SIP_Authorization_AVP( rv_ ,avp_);// sIP_Authorization optional, + //decode_SIP_Authentication_Info_AVP( rv_ ,avp_);// sIP_Authentication_Info optional, + //set of AVP_Type aVP_Type optional + return; + } + + private void decode_SIP_Authentication_Scheme_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avpsrfc=avp_.findChildAVPs(AVP_SIP_Authentication_Scheme_RFC_AVP); + AVP[] avps3gpp=avp_.findChildAVPs(AVP_SIP_Authentication_Scheme_3GPP_AVP); + + if ((avpsrfc==null) && (avps3gpp==null)) return; + + UnionValue rvSIP_AuthScheme = (UnionValue) rv_.getField("sIP_Authentication_Scheme").getType().newInstance(); + + if ((avpsrfc!=null)&&(avpsrfc.length==1)){ + RecordValue rv_Auth = (RecordValue) rvSIP_AuthScheme.getVariant("sIP_Authentication_Scheme_RFC_AVP").getType().newInstance(); + + decode_SIP_Authentication_Scheme_RFC_AVP(rv_Auth, avpsrfc[0]); + + rvSIP_AuthScheme.setVariant("sIP_Authentication_Scheme_RFC_AVP", rv_Auth); + } + if ((avps3gpp!=null)&&(avps3gpp.length==1)){ + RecordValue rv_Auth = (RecordValue) rvSIP_AuthScheme.getVariant("sIP_Authentication_Scheme_3GPP_AVP").getType().newInstance(); + + decode_SIP_Authentication_Scheme_3GPP_AVP(rv_Auth, avps3gpp[0]); + + rvSIP_AuthScheme.setVariant("sIP_Authentication_Scheme_3GPP_AVP", rv_Auth); + } + rv_.setField("sIP_Authentication_Scheme",rvSIP_AuthScheme); + return; + } + + private void decode_SIP_Authentication_Scheme_RFC_AVP(RecordValue rv_, AVP avp_){ + + decode_AVPHeader( rv_ ,avp_); + rv_.setField("aVP_Data", mkInt(avp_.int_data)); + + return; + } + + private void decode_SIP_Item_Number_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_SIP_Item_Number_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("sIP_Item_Number").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data",mkInt(avp_.int_data)); + + rv_.setField("sIP_Item_Number",rvSIP_Item); + return; + } + + private void decode_SIP_Authenticate_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avpsrfc=avp_.findChildAVPs(AVP_SIP_Authenticate_RFC_AVP); + AVP[] avps3gpp=avp_.findChildAVPs(AVP_SIP_Authenticate_3GPP_AVP); + + if ((avpsrfc==null) && (avps3gpp==null)) return; + + UnionValue rvSIP_Authenticate = (UnionValue) rv_.getField("sIP_Authenticate").getType().newInstance(); + + if ((avpsrfc!=null)&&(avpsrfc.length==1)){ + RecordValue rv_Auth = (RecordValue) rvSIP_Authenticate.getVariant("sIP_Authenticate_RFC_AVP").getType().newInstance(); + + decode_SIP_Authenticate_RFC_AVP(rv_Auth, avpsrfc[0]); + + rvSIP_Authenticate.setVariant("sIP_Authenticate_RFC_AVP", rv_Auth); + } + if ((avps3gpp!=null)&&(avps3gpp.length==1)){ + RecordValue rv_Auth = (RecordValue) rvSIP_Authenticate.getVariant("sIP_Authenticate_3GPP_AVP").getType().newInstance(); + + decode_SIP_Authenticate_3GPP_AVP(rv_Auth, avps3gpp[0]); + + rvSIP_Authenticate.setVariant("sIP_Authenticate_3GPP_AVP", rv_Auth); + } + rv_.setField("sIP_Authenticate",rvSIP_Authenticate); + return; + } + + private void decode_SIP_Authenticate_RFC_AVP(RecordValue rv_, AVP avp_){ + + decode_AVPHeader( rv_ ,avp_); +// Digest_Realm_AVP digest_Realm,//requ. +// Digest_Nonce_AVP digest_Nonce,//requ. +// Digest_Domain_AVP digest_Domain optional, +// Digest_Opaque_AVP digest_Opaque optional, +// Digest_Stale_AVP digest_Stale optional, +// Digest_Algorithm_AVP digest_Algorithm optional, +// Digest_QoP_AVP digest_QoP optional, +// Digest_HA1_AVP digest_HA1 optional, +// set of Digest_Auth_Param_AVP digest_Auth_Param optional, +// set of AVP_Type aVP_Type optional + + return; + } + + private void decode_SIP_Authorization_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avpsrfc=avp_.findChildAVPs(AVP_SIP_Authorization_RFC_AVP); + AVP[] avps3gpp=avp_.findChildAVPs(AVP_SIP_Authorization_3GPP_AVP); + + if ((avpsrfc==null) && (avps3gpp==null)) return; + + UnionValue rvSIP_Authenticate = (UnionValue) rv_.getField("sIP_Authorization").getType().newInstance(); + + if ((avpsrfc!=null)&&(avpsrfc.length==1)){ + RecordValue rv_Auth = (RecordValue) rvSIP_Authenticate.getVariant("sIP_Authorization_RFC_AVP").getType().newInstance(); + + decode_SIP_Authorization_RFC_AVP(rv_Auth, avpsrfc[0]); + + rvSIP_Authenticate.setVariant("sIP_Authorization_RFC_AVP", rv_Auth); + } + if ((avps3gpp!=null)&&(avps3gpp.length==1)){ + RecordValue rv_Auth = (RecordValue) rvSIP_Authenticate.getVariant("sIP_Authorization_3GPP_AVP").getType().newInstance(); + + decode_SIP_Authorization_3GPP_AVP(rv_Auth, avps3gpp[0]); + + rvSIP_Authenticate.setVariant("sIP_Authorization_3GPP_AVP", rv_Auth); + } + rv_.setField("sIP_Authorization",rvSIP_Authenticate); + return; + } + + private void decode_SIP_Authorization_RFC_AVP(RecordValue rv_, AVP avp_){ + + decode_AVPHeader( rv_ ,avp_); +// Digest_Username_AVP digest_Username,//requi. +// Digest_Realm_AVP digest_Realm, +// Digest_Nonce_AVP digest_Nonce, +// Digest_URI_AVP digest_URI, +// Digest_Response_AVP digest_Response,//requi. +// Digest_Algorithm_AVP digest_Algorithm optional, +// Digest_CNonce_AVP digest_CNonce optional, +// Digest_Opaque_AVP digest_Opaque optional, +// Digest_QoP_AVP digest_QoP optional, +// Digest_Nonce_Count_AVP digest_Nonce_Count optional, +// Digest_Method_AVP digest_Method optional, +// Digest_Entity_Body_Hash_AVP digest_Entity_Body_Hash optional, +// set of Digest_Auth_Param_AVP digest_Auth_Param optional, +// set of AVP_Type aVP_Type optional + + return; + } + /*End RFC4740 AVPs*/ + + /* ******** Digest AVPs ********* */ + private void decode_Digest_Realm_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Realm_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Realm").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Realm",rvSIP_Item); + return; + } + + private void decode_Digest_Nonce_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Nonce_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Nonce").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Nonce",rvSIP_Item); + return; + } + + private void decode_Digest_Domain_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Domain_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Domain").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Domain",rvSIP_Item); + return; + } + + private void decode_Digest_Opaque_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Opaque_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("Digest_Opaque").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("Digest_Opaque",rvSIP_Item); + return; + } + + private void decode_Digest_Stale_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Stale_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Stale").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Stale",rvSIP_Item); + return; + } + + private void decode_Digest_Algorithm_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Algorithm_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Algorithm").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Algorithm",rvSIP_Item); + return; + } + + private void decode_Digest_QoP_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_QoP_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_QoP").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_QoP",rvSIP_Item); + return; + } + + private void decode_Digest_HA1_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_HA1_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_HA1").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_HA1",rvSIP_Item); + return; + } + + private void decode_Digest_Auth_Param_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Auth_Param_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Auth_Param").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Auth_Param",rvSIP_Item); + return; + } + + private void decode_Digest_Username_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Username_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Username").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Username",rvSIP_Item); + return; + } + + private void decode_Digest_URI_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_URI_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_URI").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_URI",rvSIP_Item); + return; + } + + private void decode_Digest_Response_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Response_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Response").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Response",rvSIP_Item); + return; + } + + private void decode_Digest_CNonce_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_CNonce_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_CNonce").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_CNonce",rvSIP_Item); + return; + } + + private void decode_Digest_Nonce_Count_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Nonce_Count_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Nonce_Count").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Nonce_Count",rvSIP_Item); + return; + } + + private void decode_Digest_Method_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Method_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Method").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Method",rvSIP_Item); + return; + } + + private void decode_Digest_Entity_Body_Hash_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Entity_Body_Hash_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Entity_Body_Hash").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Entity_Body_Hash",rvSIP_Item); + return; + } + + private void decode_Digest_Nextnonce_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Nextnonce_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Nextnonce").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Nextnonce",rvSIP_Item); + return; + } + + private void decode_Digest_Response_Auth_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Digest_Response_Auth_AVP); + if (avp==null) return; + + RecordValue rvSIP_Item = (RecordValue) rv_.getField("digest_Response_Auth").getType().newInstance(); + + decode_AVPHeader( rvSIP_Item ,avp); + rvSIP_Item.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("digest_Response_Auth",rvSIP_Item); + return; + } + /* ************ end of Digest AVPs************ */ + + /*TS129_229*/ + private void decode_IP_CAN_Type_AVP(RecordValue rv_rid, DiameterMessage rt){ + + AVP avp=rt.findAVP(AVP_IP_CAN_Type_AVP); + if (avp==null) return; + + RecordValue rv_rt = (RecordValue) (RecordValue) rv_rid.getField("iP_CAN_Type").getType().newInstance(); + + decode_AVPHeader( rv_rt ,avp); + rv_rt.setField("aVP_Data", mkInt(avp.int_data)); + + rv_rid.setField("iP_CAN_Type",rv_rt); + return; + } + + private void decode_RAT_Type_AVP(RecordValue rv_rid, DiameterMessage rt){ + + AVP avp=rt.findAVP(AVP_RAT_Type_AVP); + if (avp==null) return; + + RecordValue rv_rt = (RecordValue) (RecordValue) rv_rid.getField("rat_Type").getType().newInstance(); + + decode_AVPHeader( rv_rt ,avp); + rv_rt.setField("aVP_Data", mkInt(avp.int_data)); + + rv_rid.setField("rat_Type",rv_rt); + return; + } + + private void decode_EventTrigger(RecordValue r,AVP a){ + + decode_AVPHeader(r,a); + r.setField("aVP_Data", mkInt(a.int_data)); + + return; + } + + private void decode_Event_Trigger_AVP(RecordValue rv_, AVP avp_){ + + AVP[] avps=avp_.findChildAVPs(AVP_Event_Trigger_AVP); + if (avps==null) return; + + if (avps.length>=1){ + RecordOfValue recOfRoute_Record = (RecordOfValue) rv_.getField("event_Trigger").getType().newInstance(); + recOfRoute_Record.setLength(0); + + for(int i=0;i=1){ + RecordOfValue recOfRoute_Record = (RecordOfValue) rv_DiameterM.getField("event_Trigger").getType().newInstance(); + recOfRoute_Record.setLength(0); + + for(int i=0;i=1){ + try{ + RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("charging_Rule_Remove").getType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[0]); + decode_Charging_Rule_Name_AVP( rv ,avps[0]);// charging_Rule_Name optional, +// set of Charging_Rule_Base_Name_AVP charging_Rule_Base_Name optional, +// set of AVP_Type aVP_Type optional + + rv_rid.setField("charging_Rule_Remove",rv); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("charging_Rule_Remove").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[i]); + decode_Charging_Rule_Name_AVP( rv ,avps[i]);// charging_Rule_Name optional, +// set of Charging_Rule_Base_Name_AVP charging_Rule_Base_Name optional, +// set of AVP_Type aVP_Type optional + rov_rt.appendField(rv); + } + rv_rid.setField("charging_Rule_Remove",rov_rt); + } + } + return; + } + + private void decode_Charging_Rule_Install_AVP(RecordValue rv_rid, AVP rt){ + + boolean rv_present=false; + AVP[] avps=rt.findChildAVPs(AVP_Charging_Rule_Install_AVP); + if (avps==null) return; + + + if (avps.length>=1){ + try{ + RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("charging_Rule_Install").getType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[0]); +// set of Charging_Rule_Definition_AVP charging_Rule_Definition optional, + decode_Charging_Rule_Name_AVP( rv ,avps[0]);// charging_Rule_Name optional, +// set of Charging_Rule_Base_Name_AVP charging_Rule_Base_Name optional, +// Bearer_Identifier_AVP bearer_Identifier optional, +// Rule_Activation_Time_AVP rule_Activation_Time optional, +// Rule_DeActivation_Time_AVP rule_DeActivation_Time optional, +// Resource_Allocation_Notification_AVP resource_Allocation_Notification optional, +// Charging_Correlation_Indicator_AVP charging_Correlation_Indicator optional, +// set of AVP_Type aVP_Type optional + + rv_rid.setField("charging_Rule_Install",rv); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("charging_Rule_Install").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[i]); +// set of Charging_Rule_Definition_AVP charging_Rule_Definition optional, + decode_Charging_Rule_Name_AVP( rv ,avps[i]);// charging_Rule_Name optional, +// set of Charging_Rule_Base_Name_AVP charging_Rule_Base_Name optional, +// Bearer_Identifier_AVP bearer_Identifier optional, +// Rule_Activation_Time_AVP rule_Activation_Time optional, +// Rule_DeActivation_Time_AVP rule_DeActivation_Time optional, +// Resource_Allocation_Notification_AVP resource_Allocation_Notification optional, +// Charging_Correlation_Indicator_AVP charging_Correlation_Indicator optional, +// set of AVP_Type aVP_Type optional + rov_rt.appendField(rv); + } + rv_rid.setField("charging_Rule_Install",rov_rt); + } + } + return; + } + + private void decode_Charging_Rule_Report_AVP(RecordValue rv_rid, DiameterMessage rt){ + + boolean rv_present=false; + AVP[] avps=rt.findAVPs(AVP_Charging_Rule_Report_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("charging_Rule_Report").getType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[0]); + decode_Charging_Rule_Name_AVP( rv ,avps[0]); // charging_Rule_Name optional, +// set of Charging_Rule_Base_Name_AVP charging_Rule_Base_Name optional, +// Bearer_Identifier_AVP bearer_Identifier optional, +// PCC_Rule_Status_AVP pCC_Rule_Status optional, +// Rule_Failure_Code_AVP rule_Failure_Code optional, +// Final_Unit_Indication_AVP final_Unit_Indication optional, +// set of AVP_Type aVP_Type optional + + rv_rid.setField("charging_Rule_Report",rv); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("charging_Rule_Report").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[i]); + decode_Charging_Rule_Name_AVP( rv ,avps[i]); // charging_Rule_Name optional, +// set of Charging_Rule_Base_Name_AVP charging_Rule_Base_Name optional, +// Bearer_Identifier_AVP bearer_Identifier optional, +// PCC_Rule_Status_AVP pCC_Rule_Status optional, +// Rule_Failure_Code_AVP rule_Failure_Code optional, +// Final_Unit_Indication_AVP final_Unit_Indication optional, +// set of AVP_Type aVP_Type optional + + rov_rt.appendField(rv); + } + rv_rid.setField("charging_Rule_Report",rov_rt); + } + } + return; + } + + private void decode_QoS_Information_AVP(RecordValue rv_rid, AVP rt){ + + boolean rv_present=false; + AVP[] avps=rt.findChildAVPs(AVP_QoS_Information_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("qoS_Information").getType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[0]); + decode_QoS_Class_Identifier_AVP ( rv ,avps[0]);// qoS_Class_Identifier optional, + decode_Max_Requested_Bandwidth_UL_AVP( rv ,avps[0]);// max_Requested_Bandwidth_UL optional, + decode_Max_Requested_Bandwidth_DL_AVP ( rv ,avps[0]);// max_Requested_Bandwidth_DL optional, + //decode_Guaranteed_Bitrate_UL_AVP ( rv ,avps[i]);// guaranteed_Bitrate_UL optional, + //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);// guaranteed_Bitrate_DL optional, + //decode_Bearer_Identifier_AVP ( rv ,avps[i]);// bearer_Identifier optional, + decode_Allocation_Retention_Priority_AVP( rv ,avps[0]);// allocation_Retention_Priority optional, + //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_UL optional, + //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_DL optional, + //decode_AVP_Type(rv ,avps[i]);// aVP_Data optional //other parameters. + + rv_rid.setField("qoS_Information",rv); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("qoS_Information").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[i]); + decode_QoS_Class_Identifier_AVP ( rv ,avps[i]);// qoS_Class_Identifier optional, + decode_Max_Requested_Bandwidth_UL_AVP( rv ,avps[i]);// max_Requested_Bandwidth_UL optional, + decode_Max_Requested_Bandwidth_DL_AVP ( rv ,avps[i]);// max_Requested_Bandwidth_DL optional, + //decode_Guaranteed_Bitrate_UL_AVP ( rv ,avps[i]);// guaranteed_Bitrate_UL optional, + //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);// guaranteed_Bitrate_DL optional, + //decode_Bearer_Identifier_AVP ( rv ,avps[i]);// bearer_Identifier optional, + decode_Allocation_Retention_Priority_AVP( rv ,avps[i]);// allocation_Retention_Priority optional, + //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_UL optional, + //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_DL optional, + + //decode_AVP_Type(rv ,avps[i]);// aVP_Data optional //other parameters. + + rov_rt.appendField(rv); + } + rv_rid.setField("qoS_Information",rov_rt); + } + } + return; + } + + private void decode_QoS_Information_AVP(RecordValue rv_rid, DiameterMessage rt){ + + boolean rv_present=false; + AVP[] avps=rt.findAVPs(AVP_QoS_Information_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("qoS_Information").getType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[0]); + decode_QoS_Class_Identifier_AVP ( rv ,avps[0]);// qoS_Class_Identifier optional, + decode_Max_Requested_Bandwidth_UL_AVP( rv ,avps[0]);// max_Requested_Bandwidth_UL optional, + decode_Max_Requested_Bandwidth_DL_AVP ( rv ,avps[0]);// max_Requested_Bandwidth_DL optional, + //decode_Guaranteed_Bitrate_UL_AVP ( rv ,avps[i]);// guaranteed_Bitrate_UL optional, + //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);// guaranteed_Bitrate_DL optional, + //decode_Bearer_Identifier_AVP ( rv ,avps[i]);// bearer_Identifier optional, + decode_Allocation_Retention_Priority_AVP( rv ,avps[0]);// allocation_Retention_Priority optional, + //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_UL optional, + //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_DL optional, + + //decode_AVP_Type(rv ,avps[i]);// aVP_Data optional //other parameters. + + rv_rid.setField("qoS_Information",rv); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("qoS_Information").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps.length; i++) { + + RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[i]); + decode_QoS_Class_Identifier_AVP ( rv ,avps[i]);// qoS_Class_Identifier optional, + decode_Max_Requested_Bandwidth_UL_AVP( rv ,avps[i]);// max_Requested_Bandwidth_UL optional, + decode_Max_Requested_Bandwidth_DL_AVP ( rv ,avps[i]);// max_Requested_Bandwidth_DL optional, + //decode_Guaranteed_Bitrate_UL_AVP ( rv ,avps[i]);// guaranteed_Bitrate_UL optional, + //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);// guaranteed_Bitrate_DL optional, + //decode_Bearer_Identifier_AVP ( rv ,avps[i]);// bearer_Identifier optional, + decode_Allocation_Retention_Priority_AVP( rv ,avps[i]);// allocation_Retention_Priority optional, + //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_UL optional, + //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);// aPN_Aggregate_Max_Bitrate_DL optional, + + //decode_AVP_Type(rv ,avps[i]);// aVP_Data optional //other parameters. + + rov_rt.appendField(rv); + } + rv_rid.setField("qoS_Information",rov_rt); + } + } + return; + } + + private void decode_Server_Capabilities_AVP(RecordValue rv_sid, AVP sc){ + + AVP avp=sc.findChildAVP(AVP_Server_Capabilities_AVP); + if (avp==null) return; + + RecordValue rv_sc = (RecordValue) (RecordValue) rv_sid.getField("server_Capabilities").getType().newInstance(); + + decode_AVPHeader( rv_sc ,avp); + //decode_Mandatory_Capability_AVP( rv_sc ,avp); + //decode_Optional_Capability_AVP( rv_sc ,avp); + //decode_Server_Name_AVP( rv_sc ,avp); + //decode_AVP_Type( rv_sc ,avp); + + rv_sid.setField("server_Capabilities",rv_sc); + return; + } + + private void decode_Server_Capabilities_AVP(RecordValue rv_rid, DiameterMessage rt){ + + AVP avp=rt.findAVP(AVP_Server_Capabilities_AVP); + if (avp==null) return; + + RecordValue rv_sc = (RecordValue) (RecordValue) rv_rid.getField("server_Capabilities").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){} + decode_AVPHeader( rv_sc ,avp); + //TODO:decode_Mandatory_Capability_AVP( rv_sc ,avp); + //TODO:decode_Optional_Capability_AVP( rv_sc ,avp); + //decode_Server_Name_AVP( rv_sc ,avp); + //decode_AVP_Type( rv_sc ,avp); + + rv_rid.setField("server_Capabilities",rv_sc); + return; + } + /*End TS129_229 AVPs*/ + + //TS129_329 AVPs + private void decode_Public_Identity_AVP(RecordValue rv_, AVP avp_){ + + boolean rv_present=false; + AVP avps[]=avp_.findChildAVPs(AVP_Public_Identity_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_rt = (RecordValue) rv_.getField("public_Identity_AVP").getType().newInstance(); + + decode_AVPHeader( rv_rt ,avps[0]); + rv_rt.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_.setField("public_Identity_AVP",rv_rt); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfpi = (RecordOfValue) rv_.getField("public_Identity_AVP").getType().newInstance(); + recOfpi.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfpi.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkCvUTF8(avps[i].getStringData())); + + recOfpi.appendField(rv); + } + rv_.setField("public_Identity_AVP",recOfpi); + } + } + return; + } + + private void decode_Public_Identity_AVP(RecordValue rv_rid, DiameterMessage rt){ + + boolean rv_present=false; + AVP avps[]=rt.findAVPs(AVP_Public_Identity_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_rt = (RecordValue) rv_rid.getField("public_Identity").getType().newInstance(); + + decode_AVPHeader( rv_rt ,avps[0]); + rv_rt.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_rid.setField("public_Identity",rv_rt); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfpi = (RecordOfValue) rv_rid.getField("public_Identity").getType().newInstance(); + recOfpi.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfpi.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkCvUTF8(avps[i].getStringData())); + + recOfpi.appendField(rv); + } + rv_rid.setField("public_Identity",recOfpi); + } + } + return; + } + + + private void decode_User_Identity_AVP(RecordValue rv_rid, DiameterMessage rt){ + + AVP avp=rt.findAVP(AVP_User_Identity_AVP); + if (avp==null) return; + + RecordValue rv_ui = (RecordValue) (RecordValue) rv_rid.getField("user_Identity").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){} + + decode_AVPHeader( rv_ui ,avp); + decode_Public_Identity_AVP(rv_ui,avp); + decode_MSISDN_AVP(rv_ui,avp); + //decode_AVP_Type( rv_ui ,avp); + + rv_rid.setField("user_Identity",rv_ui); + return; + } + + + private void decode_MSISDN_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_MSISDN_AVP); + if (avp==null) return; + + RecordValue rv_rt = (RecordValue) (RecordValue) rv_.getField("mSISDN_AVP").getType().newInstance(); + + decode_AVPHeader( rv_rt ,avp); + rv_rt.setField("aVP_Data", mkOctetstring(avp.getData())); + + rv_.setField("mSISDN_AVP",rv_rt); + } + + private void decode_Data_Reference_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + +// AVP[] avps=rt.findAVPs(AVP_Data_Reference_AVP); +// if (avps==null) return; +// +// RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("data_Reference").getType().newInstance(); +// rov_rt.setLength(0); +// +// for (int i = 0; i < avps.length; i++) { +// RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); +// +// decode_AVPHeader( rv ,avps[i]); +// rv.setField("aVP_Data", mkInt(avps[i].int_data)); +// +// rov_rt.appendField(rv); +// } +// rv_rid.setField("data_Reference",rov_rt); +// return; + + + boolean rv_present=false; + AVP[] avps=msg.findAVPs(AVP_Data_Reference_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_dr = (RecordValue) (RecordValue) rv_DiameterM.getField("data_Reference").getType().newInstance(); + + decode_AVPHeader( rv_dr ,avps[0]); + decode_Vendor_Specific_Appl_Id_AVP(rv_dr,avps[0]); + + rv_DiameterM.setField("data_Reference",rv_dr); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + try{ + RecordOfValue recOfrv_dr = (RecordOfValue) rv_DiameterM.getField("data_Reference").getType().newInstance(); + recOfrv_dr.setLength(0); + + for(int i=0;i1){} //Should never be more than one AVP + else{ + RecordValue rv = (RecordValue) rv_.getField("pDN_Connection_ID").getType().newInstance(); + + decode_AVPHeader( rv ,avp[0]); + rv.setField("aVP_Data", mkOctetstring(avp[0].getData())); + + rv_.setField("pDN_Connection_ID",rv); + } + return; + } + + private void decode_QoS_Rule_Report_AVP(RecordValue rv_rid, AVP rt){ + + AVP[] avps=rt.findChildAVPs(AVP_QoS_Rule_Report_AVP); + if (avps==null) return; + + RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("qoS_Rule_Report").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); + + try{avps[i].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[i]); + decode_QoS_Rule_Name_AVP( rv ,avps[i]);// qoS_Rule_Name optional, + //decode_QoS_Rule_Base_Name_AVP( rv ,avps[i]);// qoS_Rule_Base_Name optional, + //decode_PCC_Rule_Status_AVP( rv ,avps[i]);// pCC_Rule_Status optional, + decode_Rule_Failure_Code_AVP( rv ,avps[i]);// rule_Failure_Code optional, + //decode_AVP_Type(rv ,avps[i]);// aVP_Data optional //other parameters. + + rov_rt.appendField(rv); + } + rv_rid.setField("qoS_Rule_Report",rov_rt); + return; + } + + private void decode_QoS_Rule_Report_AVP(RecordValue rv_rid, DiameterMessage rt){ + + AVP[] avps=rt.findAVPs(AVP_QoS_Rule_Report_AVP); + if (avps==null) return; + + if (useList(rv_rid.getFieldNames(),"qoS_Rule_Report")){ + RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("qoS_Rule_Report").getType().newInstance(); + rov_rt.setLength(0); + + for (int i = 0; i < avps.length; i++) { + + RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance(); + + try{avps[i].ungroup();}catch(Exception e){} + + decode_AVPHeader( rv ,avps[i]); + decode_QoS_Rule_Name_AVP( rv ,avps[i]);// qoS_Rule_Name optional, + //decode_QoS_Rule_Base_Name_AVP( rv ,avps[i]);// qoS_Rule_Base_Name optional, + //decode_PCC_Rule_Status_AVP( rv ,avps[i]);// pCC_Rule_Status optional, + decode_Rule_Failure_Code_AVP( rv ,avps[i]);// rule_Failure_Code optional, + //decode_AVP_Type(rv ,avps[i]);// aVP_Data optional //other parameters. + + rov_rt.appendField(rv); + } + rv_rid.setField("qoS_Rule_Report",rov_rt); + }else{ + RecordValue rv_avp = (RecordValue)rov_any_AVP.getElementType().newInstance(); + decode_AVP_Type(rv_avp,avps[0]); + rov_any_AVP.appendField(rv_avp); + } + return; + } + + private void decode_Session_Linking_Indicator_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Session_Linking_Indicator_AVP); + if (avp==null) return; + + RecordValue rv = (RecordValue) rv_.getField("session_Linking_Indicator").getType().newInstance(); + + decode_AVPHeader( rv ,avp); + rv.setField("session_Linking_Indicator", mkInt(avp.int_data)); + + rv_.setField("session_Linking_Indicator",rv); + return; + } + + private void decode_Subses_Decision_Info_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Subses_Decision_Info_AVP); + if (avps==null) return; + + if (avps.length>=1){ + RecordOfValue recOf = (RecordOfValue) rv_DiameterM.getField("subsession_Decision_Info").getType().newInstance(); + recOf.setLength(0); + + for(int i=0;i=1){ + RecordOfValue recOf = (RecordOfValue) rv_DiameterM.getField("subsesion_Enforcement_Info").getType().newInstance(); + recOf.setLength(0); + + for(int i=0;i=1){ + RecordOfValue recOf = (RecordOfValue) rv_.getField("qoS_Rule_Install").getType().newInstance(); + recOf.setLength(0); + + for(int i=0;i=1){ + RecordOfValue recOf = (RecordOfValue) rv_DiameterM.getField("qoS_Rule_Install").getType().newInstance(); + recOf.setLength(0); + + for(int i=0;i=1){ + try{ + RecordValue rv_uf = (RecordValue) (RecordValue) rv_ufd.getField("sCSCF_Restoration_Info").getType().newInstance(); + + try {avps[0].ungroup();}catch(Exception ex){} + + decode_AVPHeader( rv_uf ,avps[0]); + decode_Restoration_Info_AVP( rv_uf ,avps[0]);// restoration_Info, + decode_SIP_Authentication_Scheme_AVP( rv_uf ,avps[0]);// sIP_Authentication_Scheme, + //set of AVP_Type aVP_Type optional + + rv_ufd.setField("sCSCF_Restoration_Info",rv_uf); + + rv_present=true; + }catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + + RecordOfValue recOfpi = (RecordOfValue) rv_ufd.getField("sCSCF_Restoration_Info").getType().newInstance(); + recOfpi.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfpi.getElementType().newInstance(); + + try {avps[i].ungroup();}catch(Exception ex){} + + decode_AVPHeader( rv ,avps[i]); + decode_Restoration_Info_AVP( rv ,avps[i]);// restoration_Info, + decode_SIP_Authentication_Scheme_AVP( rv ,avps[i]);// sIP_Authentication_Scheme, + //set of AVP_Type aVP_Type optional + + recOfpi.appendField(rv); + } + rv_ufd.setField("sCSCF_Restoration_Info",recOfpi); + } + } + return; + } + + private void decode_Originating_Request_AVP(RecordValue rv_ufd, DiameterMessage uf){ + + AVP avp=uf.findAVP(AVP_Originating_Request_AVP); + if (avp==null) return; + + RecordValue rv_uf = (RecordValue) (RecordValue) rv_ufd.getField("originating_Request").getType().newInstance(); + + decode_AVPHeader( rv_uf ,avp); + rv_uf.setField("aVP_Data", mkInt(avp.int_data)); + + rv_ufd.setField("originating_Request",rv_uf); + return; + } + + private void decode_Reason_Code_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Reason_Code_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) (RecordValue) rv_.getField("reason_Code").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("aVP_Data", mkInt(avp.int_data)); + + rv_.setField("reason_Code",rv_c); + return; + } + + private void decode_Reason_Info_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Reason_Info_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) (RecordValue) rv_.getField("reason_Info").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("reason_Info",rv_c); + return; + } + + private void decode_Deregistration_Reason_AVP(RecordValue rv_ufd, DiameterMessage uf){ + + AVP avp=uf.findAVP(AVP_Deregistration_Reason_AVP); + if (avp==null) return; + + RecordValue rv_uf = (RecordValue) (RecordValue) rv_ufd.getField("deregistration_Reason").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){} + + decode_AVPHeader( rv_uf ,avp); + decode_Reason_Code_AVP( rv_uf ,avp);// reason_Code,//requi. + decode_Reason_Info_AVP( rv_uf ,avp);// reason_Info optional, + //set of AVP_Type aVP_Type optional + + rv_ufd.setField("deregistration_Reason",rv_uf); + return; + } + + private void decode_Specific_APN_Info_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Specific_APN_Info_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) (RecordValue) rv_.getField("specific_APN_Info").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + + decode_Service_Selection_AVP(rv_c,avp); + decode_MIP6_Agent_Info_AVP(rv_c,avp); + decode_Visited_Network_Identifier_AVP(rv_c,avp); + // decode_AVP_Type(rv_c,avp);// optional + + rv_.setField("specific_APN_Info",rv_c); + return; + } + + private void decode_Active_APN_AVP(RecordValue rv_ufd, DiameterMessage uf){ + + AVP avp=uf.findAVP(AVP_Active_APN_AVP); + if (avp==null) return; + + RecordValue rv_ActiveAPN_AVP = (RecordValue) rv_ufd.getField("active_APN").getType().newInstance(); + + decode_AVPHeader( rv_ActiveAPN_AVP ,avp); + decode_Context_Identifier_AVP(rv_ActiveAPN_AVP,avp); + decode_Service_Selection_AVP(rv_ActiveAPN_AVP,avp);//optional + decode_MIP6_Agent_Info_AVP(rv_ActiveAPN_AVP,avp);//optional, + decode_Visited_Network_Identifier_AVP(rv_ActiveAPN_AVP,avp); //optional, + decode_Specific_APN_Info_AVP(rv_ActiveAPN_AVP,avp);// optional, + //decode_AVP_Type(rv_ActiveAPN_AVP,avp);// optional + + rv_ufd.setField("active_APN",rv_ActiveAPN_AVP); + return; + } + + private void decode_Error_Diagnostic_AVP(RecordValue rv_ufd, DiameterMessage uf){ + + AVP avp=uf.findAVP(AVP_Error_Diagnostic_AVP); + if (avp==null) return; + + RecordValue rv_ed = (RecordValue) (RecordValue) rv_ufd.getField("error_Diagnostic").getType().newInstance(); + + decode_AVPHeader( rv_ed ,avp); + rv_ed.setField("error_Diagnostic_Code", mkInt(avp.int_data)); + + rv_ufd.setField("error_Diagnostic",rv_ed); + return; + } + + private void decode_Subscriber_Status_AVP(RecordValue rv_ufd, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Subscriber_Status_AVP); + if (avp==null) return; + + RecordValue rv_ed = (RecordValue) rv_ufd.getField("subscriber_Status").getType().newInstance(); + + decode_AVPHeader(rv_ed,avp); + rv_ed.setField("subscriber_Status_Code", mkInt(avp.int_data)); + + rv_ufd.setField("subscriber_Status",rv_ed); + return; + } + + private void decode_Operator_Determined_Barring_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Operator_Determined_Barring_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("operator_Determined_Barring").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("aVP_Data", mkInt(avp.int_data)); + + rv_.setField("operator_Determined_Barring",rv_c); + return; + } + + private void decode_HPLMN_ODB_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_HPLMN_ODB_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("hPLMN_ODB").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("aVP_Data", mkInt(avp.int_data)); + + rv_.setField("hPLMN_ODB",rv_c); + return; + } + + private void decode_Access_Restriction_Data_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Access_Restriction_Data_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("access_Restriction_Data").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("aVP_Data", mkInt(avp.int_data)); + + rv_.setField("access_Restriction_Data",rv_c); + return; + } + + private void decode_APN_OI_Replacement_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_APN_OI_Replacement_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("aPN_OI_Replacement").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_.setField("aPN_OI_Replacement",rv_c); + return; + } + + private void decode_Max_Requested_Bandwidth_UL_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Max_Requested_Bandwidth_UL_AVP); + if (avp==null) return; + + RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("max_Requested_Bandwidth_UL").getType().newInstance(); + + decode_AVPHeader( rv_ed ,avp); + rv_ed.setField("aVP_Data", mkInt(avp.int_data)); + + rv_.setField("max_Requested_Bandwidth_UL",rv_ed); + return; + } + + private void decode_Max_Requested_Bandwidth_DL_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Max_Requested_Bandwidth_DL_AVP); + if (avp==null) return; + + RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("max_Requested_Bandwidth_DL").getType().newInstance(); + + decode_AVPHeader( rv_ed ,avp); + rv_ed.setField("aVP_Data", mkInt(avp.int_data)); + + rv_.setField("max_Requested_Bandwidth_DL",rv_ed); + return; + } + + private void decode_AMBR_AVP(RecordValue rv_, AVP avp_) { //ref: 7.3.33 + + String _str=""; + AVP avp=avp_.findChildAVP(AVP_AMBR_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("aMBR").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){} + + decode_AVPHeader( rv_c ,avp); + decode_Max_Requested_Bandwidth_UL_AVP( rv_c ,avp);//max_Requested_Bandwidth_UL, + decode_Max_Requested_Bandwidth_DL_AVP( rv_c ,avp);//max_Requested_Bandwidth_DL, + //set of AVP_Type aVP_Type optional + + rv_.setField("aMBR",rv_c); + return; + } + + private void decode_All_APN_Conf_Included_Id_AVP(RecordValue rv_, AVP avp_) { //ref: 7.3.33 + + AVP avp=avp_.findChildAVP(AVP_All_APN_Conf_Included_Id_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("all_APN_Conf_Included_Id").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("all_APN_Conf_Included_Indicator", mkInt(avp.int_data)); + + rv_.setField("all_APN_Conf_Included_Id",rv_c); + return; + } + + private void decode_APN_Configuration_Profile_AVP(RecordValue rv_, AVP avp_){ //ref: 7.3.34 + + AVP avp=avp_.findChildAVP(AVP_APN_Configuration_Profile_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("aPN_Configuration_Profile").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){} + + decode_AVPHeader( rv_c ,avp); + decode_Context_Identifier_AVP ( rv_c ,avp);// context_Identifier, + decode_All_APN_Conf_Included_Id_AVP( rv_c ,avp);// all_APN_Conf_Included_Id, + /*set length (1 .. infinity) of*/ decode_APN_Configuration_AVP( rv_c ,avp);// aPN_Configuration, + //set of AVP_Type aVP_Type optional + + rv_.setField("aPN_Configuration_Profile",rv_c); + return; + } + + private void decode_PDN_Type_AVP(RecordValue rv_, AVP avp_) { //ref: 7.3.33 + + AVP avp=avp_.findChildAVP(AVP_PDN_Type_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("pDN_Type").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + rv_c.setField("pDN_Type_Code", mkInt(avp.int_data)); + + rv_.setField("pDN_Type",rv_c); + return; + } + + private void decode_QoS_Class_Identifier_AVP(RecordValue rv_, AVP avp_){ //ref: 7.3.34 + + String _str=""; + + AVP avp=avp_.findChildAVP(AVP_QoS_Class_Identifier_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("qoS_Class_Identifier").getType().newInstance(); + + decode_AVPHeader( rv_c ,avp); + + switch(avp.int_data){ + case 0: _str="Reserved1_E";break;// ( 0), + case 1: _str="QCI_1_E";break;// ( 1), + case 2: _str="QCI_2_E";break;// ( 2), + case 3: _str="QCI_3_E";break;// ( 3), + case 4: _str="QCI_4_E";break;// ( 4), + case 5: _str="QCI_5_E";break;// ( 5), + case 6: _str="QCI_6_E";break;// ( 6), + case 7: _str="QCI_7_E";break;// ( 7), + case 8: _str="QCI_8_E";break;// ( 8), + case 9: _str="QCI_9_E";break;// ( 9), + + default:if (avp.int_data>=10 & avp.int_data<=127) _str="Reserved2_E";// ( 10), // .. 127 + else if (avp.int_data>=128 & avp.int_data<=254) _str="OperatorSpecific_E";// (128), // .. 254 + else if (avp.int_data==255 ) _str="Reserved3_E";// (255)break; + } + + EnumeratedValue e= (EnumeratedValue)rv_c.getField("qoS_Class_Identifier_Code"); + e.setEnum(_str); + rv_c.setField("qoS_Class_Identifier_Code", e); + + rv_.setField("qoS_Class_Identifier",rv_c); + return; + } + + private void decode_Priority_Level_AVP(RecordValue rv_, AVP avp_){ + + AVP avp=avp_.findChildAVP(AVP_Priority_Level_AVP); + if (avp==null) return; + + RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("priority_Level").getType().newInstance(); + + decode_AVPHeader( rv_ed ,avp); + rv_ed.setField("aVP_Data", mkInt(avp.int_data)); + + rv_.setField("priority_Level",rv_ed); + return; + } + + private void decode_Allocation_Retention_Priority_AVP(RecordValue rv_, AVP avp_){ //ref: 7.3.34 + + AVP avp=avp_.findChildAVP(AVP_Allocation_Retention_Priority_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("allocation_Retention_Priority").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){} + + decode_AVPHeader( rv_c ,avp); + decode_Priority_Level_AVP( rv_c ,avp);// priority_Level, + //Pre_emption_Capability_AVP pre_emption_Capability optional, + //Pre_emption_Vulnerability_AVP pre_emption_Vulnerability optional + + rv_.setField("allocation_Retention_Priority",rv_c); + return; + } + + private void decode_EPS_Subscribed_QoS_Profile_AVP(RecordValue rv_, AVP avp_){ //ref: 7.3.34 + + AVP avp=avp_.findChildAVP(AVP_EPS_Subscribed_QoS_Profile_AVP); + if (avp==null) return; + + RecordValue rv_c = (RecordValue) rv_.getField("ePS_Subscribed_QoS_Profile").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){} + + decode_AVPHeader( rv_c ,avp); + decode_QoS_Class_Identifier_AVP( rv_c ,avp); // qoS_Class_Identifier, + decode_Allocation_Retention_Priority_AVP( rv_c ,avp); // allocation_Retention_Priority, + //set of AVP_Type aVP_Type optional + + rv_.setField("ePS_Subscribed_QoS_Profile",rv_c); + return; + } + + private void decode_APN_Configuration_AVP(RecordValue rv_, AVP avp_){ //ref: 7.3.35 + + AVP[] avp=avp_.findChildAVPs(AVP_APN_Configuration_AVP); + if (avp==null) return; + + RecordOfValue rov_c = (RecordOfValue) rv_.getField("aPN_Configuration").getType().newInstance(); + rov_c.setLength(0); + + for(int i=0;i=1){ + + RecordOfValue recOf = (RecordOfValue) rv_DiameterM.getField("identity_with_Emergency_Registration").getType().newInstance(); + recOf.setLength(0); + + for(int i=0;i=1){ + try{ + RecordValue rv_ = (RecordValue) rv_sid.getField("reporting_Reason").getType().newInstance(); + + decode_AVPHeader( rv_ ,avps[0]); + rv_.setField("aVP_Data", mkInt(avps[0].int_data)); + + rv_sid.setField("reporting_Reason",rv_); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfrr = (RecordOfValue) rv_sid.getField("reporting_Reason").getType().newInstance(); + recOfrr.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfrr.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkInt(avps[i].int_data)); + + recOfrr.appendField(rv); + } + rv_sid.setField("reporting_Reason",recOfrr); + } + } + return; + } + + private void decode_Trigger_Type_AVP(RecordValue rv_sid, AVP sid){ + + AVP[] avps=sid.findChildAVPs(AVP_Trigger_Type_AVP); + if (avps==null){ + + RecordOfValue rov_ = (RecordOfValue)rv_sid.getField("trigger_Type").getType().newInstance(); + rov_.setLength(0); + rv_sid.setField("trigger_Type",rov_); + return; + } + + RecordOfValue rov_ = (RecordOfValue)rv_sid.getField("trigger_Type").getType().newInstance(); + rov_.setLength(0); + for(int i=0;i=1){ + try{ + RecordValue rv_cgpa = (RecordValue) (RecordValue) rv_ims_i.getField("calling_Party_Address").getType().newInstance(); + + decode_AVPHeader( rv_cgpa ,avps[0]); + rv_cgpa.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_ims_i.setField("calling_Party_Address",rv_cgpa); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfcgpa = (RecordOfValue) rv_ims_i.getField("calling_Party_Address").getType().newInstance(); + recOfcgpa.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfcgpa.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkCvUTF8(avps[i].getStringData())); + + recOfcgpa.appendField(rv); + } + rv_ims_i.setField("calling_Party_Address",recOfcgpa); + } + } + return; + } + + private void decode_Called_Party_Address_AVP(RecordValue rv_ims_i, AVP cdpa){ + + AVP avp=cdpa.findChildAVP(AVP_Called_Party_Address_AVP); + if (avp==null) return; + + RecordValue rv_cdpa = (RecordValue) (RecordValue) rv_ims_i.getField("called_Party_Address").getType().newInstance(); + + decode_AVPHeader( rv_cdpa ,avp); + rv_cdpa.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("called_Party_Address",rv_cdpa); + return; + } + + private void decode_Called_Asserted_Identity_AVP(RecordValue rv_ims_i, AVP cdai){ + + boolean rv_present=false; + AVP avps[]=cdai.findChildAVPs(AVP_Called_Asserted_Identity_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_cdai = (RecordValue) (RecordValue) rv_ims_i.getField("called_Asserted_Identity").getType().newInstance(); + + decode_AVPHeader( rv_cdai ,avps[0]); + rv_cdai.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_ims_i.setField("called_Asserted_Identity",rv_cdai); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfcdai = (RecordOfValue) rv_ims_i.getField("called_Asserted_Identity").getType().newInstance(); + recOfcdai.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfcdai.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkCvUTF8(avps[i].getStringData())); + + recOfcdai.appendField(rv); + } + rv_ims_i.setField("called_Asserted_Identity",recOfcdai); + } + } + return; + } + + private void decode_Alternate_Charged_Party_Address_AVP(RecordValue rv_ims_i, AVP acpa){ + + AVP avp=acpa.findChildAVP(AVP_Alternate_Charged_Party_Address_AVP); + if (avp==null) return; + + RecordValue rv_acpa = (RecordValue) (RecordValue) rv_ims_i.getField("alternate_Charged_Party_Address").getType().newInstance(); + + decode_AVPHeader( rv_acpa ,avp); + rv_acpa.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("alternate_Charged_Party_Address",rv_acpa); + return; + } + + private void decode_Requested_Party_Address_AVP(RecordValue rv_ims_i, AVP rpa){ + + AVP avp=rpa.findChildAVP(AVP_Requested_Party_Address_AVP); + if (avp==null) return; + + RecordValue rv_rpa = (RecordValue) (RecordValue) rv_ims_i.getField("requested_Party_Address").getType().newInstance(); + + decode_AVPHeader( rv_rpa ,avp); + rv_rpa.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("requested_Party_Address",rv_rpa); + return; + } + + private void decode_Associated_URI_AVP(RecordValue rv_ims_i, AVP auri){ + + boolean rv_present=false; + AVP avps[]=auri.findChildAVPs(AVP_Associated_URI_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_auri = (RecordValue) (RecordValue) rv_ims_i.getField("associated_URI").getType().newInstance(); + + decode_AVPHeader( rv_auri ,avps[0]); + rv_auri.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_ims_i.setField("associated_URI",rv_auri); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfauri = (RecordOfValue) rv_ims_i.getField("associated_URI").getType().newInstance(); + recOfauri.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfauri.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkCvUTF8(avps[i].getStringData())); + + recOfauri.appendField(rv); + } + rv_ims_i.setField("associated_URI",recOfauri); + } + } + return; + } + + private void decode_SIP_Request_Timestamp_AVP(RecordValue rv_ims_i, AVP ts){ + + AVP avp=ts.findChildAVP(AVP_SIP_Request_Timestamp_AVP); + if (avp==null) return; + + RecordValue rv_ts = (RecordValue) (RecordValue) rv_ims_i.getField("sIP_Request_Timestamp").getType().newInstance(); + + decode_AVPHeader( rv_ts ,avp); + rv_ts.setField("aVP_Data", mkInt(avp.int_data)); + + rv_ims_i.setField("sIP_Request_Timestamp",rv_ts); + return; + } + + private void decode_SIP_Response_Timestamp_AVP(RecordValue rv_ims_i, AVP ts){ + + AVP avp=ts.findChildAVP(AVP_SIP_Response_Timestamp_AVP); + if (avp==null) return; + + RecordValue rv_ts = (RecordValue) (RecordValue) rv_ims_i.getField("sIP_Response_Timestamp").getType().newInstance(); + + decode_AVPHeader( rv_ts ,avp); + rv_ts.setField("aVP_Data", mkInt(avp.int_data)); + + rv_ims_i.setField("sIP_Response_Timestamp",rv_ts); + return; + } + + private void decode_Time_Stamps_AVP(RecordValue rv_ims_i, AVP ts){ + + AVP avp=ts.findChildAVP(AVP_Time_Stamps_AVP); + if (avp==null) return; + + RecordValue rv_ts = (RecordValue) (RecordValue) rv_ims_i.getField("time_Stamps").getType().newInstance(); + + decode_AVPHeader( rv_ts ,avp); + decode_SIP_Request_Timestamp_AVP( rv_ts ,avp); + decode_SIP_Response_Timestamp_AVP( rv_ts ,avp); + + rv_ims_i.setField("time_Stamps",rv_ts); + return; + } + + private void decode_Application_Server_AVP(RecordValue rv_ims_i, AVP as){ + + AVP avp=as.findChildAVP(AVP_Application_Server_AVP); + if (avp==null) return; + + RecordValue rv_as = (RecordValue) rv_ims_i.getField("application_Server").getType().newInstance(); + + decode_AVPHeader( rv_as ,avp); + rv_as.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("application_Server",rv_as); + return; + } + + private void decode_Application_Provided_Called_Party_Address_AVP(RecordValue rv_ims_i, AVP cgpa){ + + boolean rv_present=false; + AVP avps[]=cgpa.findChildAVPs(AVP_Application_Provided_Called_Party_Address_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_cgpa = (RecordValue) (RecordValue) rv_ims_i.getField("application_Provided_Called_Party_Address").getType().newInstance(); + + decode_AVPHeader( rv_cgpa ,avps[0]); + rv_cgpa.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_ims_i.setField("application_Provided_Called_Party_Address",rv_cgpa); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfcgpa = (RecordOfValue) rv_ims_i.getField("application_Provided_Called_Party_Address").getType().newInstance(); + recOfcgpa.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfcgpa.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkCvUTF8(avps[i].getStringData())); + + recOfcgpa.appendField(rv); + } + rv_ims_i.setField("application_Provided_Called_Party_Address",recOfcgpa); + } + } + return; + } + + private void decode_Application_Server_Information_AVP(RecordValue rv_ims_i, AVP asi){ + + boolean rv_present=false; + AVP avps[]=asi.findChildAVPs(AVP_Application_Server_Information_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_asi = (RecordValue) (RecordValue) rv_ims_i.getField("application_Server_Information").getType().newInstance(); + + decode_AVPHeader( rv_asi ,avps[0]); + decode_Application_Server_AVP(rv_asi,avps[0]); + decode_Application_Provided_Called_Party_Address_AVP(rv_asi,avps[0]); + + rv_ims_i.setField("application_Server_Information",rv_asi); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfasi = (RecordOfValue) rv_ims_i.getField("application_Server_Information").getType().newInstance(); + recOfasi.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfasi.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + decode_Application_Server_AVP(rv,avps[i]); + decode_Application_Provided_Called_Party_Address_AVP(rv,avps[i]); + + recOfasi.appendField(rv); + } + rv_ims_i.setField("application_Server_Information",recOfasi); + } + } + return; + } + + private void decode_Originating_IOI_AVP(RecordValue rv_ims_i, AVP ioi){ + + AVP avp=ioi.findChildAVP(AVP_Originating_IOI_AVP); + if (avp==null) return; + + RecordValue rv_ioi = (RecordValue) rv_ims_i.getField("originating_IOI").getType().newInstance(); + + decode_AVPHeader( rv_ioi ,avp); + rv_ioi.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("originating_IOI",rv_ioi); + return; + } + + private void decode_Terminating_IOI_AVP(RecordValue rv_ims_i, AVP ioi){ + + AVP avp=ioi.findChildAVP(AVP_Terminating_IOI_AVP); + if (avp==null) return; + + RecordValue rv_ioi = (RecordValue) rv_ims_i.getField("terminating_IOI").getType().newInstance(); + + decode_AVPHeader( rv_ioi ,avp); + rv_ioi.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("terminating_IOI",rv_ioi); + return; + } + + private void decode_Inter_Operator_Identifier_AVP(RecordValue rv_ims_i, AVP ioi){ + + boolean rv_present=false; + AVP avps[]=ioi.findChildAVPs(AVP_Inter_Operator_Identifier_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_ioi = (RecordValue) (RecordValue) rv_ims_i.getField("inter_Operator_Identifier").getType().newInstance(); + + decode_AVPHeader( rv_ioi ,avps[0]); + decode_Originating_IOI_AVP(rv_ioi,avps[0]); + decode_Terminating_IOI_AVP(rv_ioi,avps[0]); + + rv_ims_i.setField("inter_Operator_Identifier",rv_ioi); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfioi = (RecordOfValue) rv_ims_i.getField("inter_Operator_Identifier").getType().newInstance(); + recOfioi.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfioi.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + decode_Originating_IOI_AVP(rv,avps[i]); + decode_Terminating_IOI_AVP(rv,avps[i]); + + recOfioi.appendField(rv); + } + rv_ims_i.setField("inter_Operator_Identifier",recOfioi); + } + } + return; + } + + private void decode_IMS_Charging_Identifier_AVP(RecordValue rv_ims_i, AVP ici){ + + AVP avp=ici.findChildAVP(AVP_IMS_Charging_Identifier_AVP); + if (avp==null) return; + + RecordValue rv_ici = (RecordValue) rv_ims_i.getField("ims_Charging_Identifier").getType().newInstance(); + + decode_AVPHeader( rv_ici ,avp); + rv_ici.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("ims_Charging_Identifier",rv_ici); + return; + } + + private void decode_SDP_Session_Description_AVP(RecordValue rv_ims_i, AVP sdp){ + + boolean rv_present=false; + AVP avps[]=sdp.findChildAVPs(AVP_SDP_Session_Description_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_sdp = (RecordValue) (RecordValue) rv_ims_i.getField("sdp_Session_Description").getType().newInstance(); + + decode_AVPHeader( rv_sdp ,avps[0]); + rv_sdp.setField("aVP_Data", mkCvUTF8(avps[0].getStringData())); + + rv_ims_i.setField("sdp_Session_Description",rv_sdp); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfioi = (RecordOfValue) rv_ims_i.getField("sdp_Session_Description").getType().newInstance(); + recOfioi.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfioi.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + rv.setField("aVP_Data", mkCvUTF8(avps[i].getStringData())); + + recOfioi.appendField(rv); + } + rv_ims_i.setField("sdp_Session_Description",recOfioi); + } + } + return; + } + + private void decode_SDP_Media_Component_AVP(RecordValue rv_ims_i, AVP sdp){ + + boolean rv_present=false; + AVP avps[]=sdp.findChildAVPs(AVP_SDP_Media_Component_AVP); + if (avps==null) return; + + if (avps.length>=1){ + try{ + RecordValue rv_sdp = (RecordValue) (RecordValue) rv_ims_i.getField("sdp_Media_Component").getType().newInstance(); + + decode_AVPHeader( rv_sdp ,avps[0]); + //decode_SDP_Media_Name_AVP(rv_sdp ,avps[0]); + //decode_SDP_Media_Description_AVP(rv_sdp ,avps[0]); + //decode_Media_Initiator_Flag_AVP(rv_sdp ,avps[0]); + //decode_Media_Initiator_Party_AVP(rv_sdp ,avps[0]); + //decode_Authorized_QoS_AVP(rv_sdp ,avps[0]); + //decode_ThreeGPP_Charging_Id_AVP(rv_sdp ,avps[0]); + //decode_Access_Network_Charging_Identifier_Value_AVP(rv_sdp ,avps[0]); + + rv_ims_i.setField("sdp_Media_Component",rv_sdp); + rv_present=true; + return; + } + catch(Exception ex){ + //System.out.print(ex.getMessage()); + } + if(!rv_present){ + RecordOfValue recOfioi = (RecordOfValue) rv_ims_i.getField("sdp_Media_Component").getType().newInstance(); + recOfioi.setLength(0); + + for (int i = 0; i < avps.length; i++) { + RecordValue rv = (RecordValue) recOfioi.getElementType().newInstance(); + + decode_AVPHeader( rv ,avps[i]); + //decode_SDP_Media_Name_AVP(rv_sdp ,avps[i]); + //decode_SDP_Media_Description_AVP(rv ,avps[i]); + //decode_Media_Initiator_Flag_AVP(rv ,avps[i]); + //decode_Media_Initiator_Party_AVP(rv ,avps[i]); + //decode_Authorized_QoS_AVP(rv ,avps[i]); + //decode_ThreeGPP_Charging_Id_AVP(rv ,avps[i]); + //decode_Access_Network_Charging_Identifier_Value_AVP(rv ,avps[i]);; + + recOfioi.appendField(rv); + } + rv_ims_i.setField("sdp_Media_Component",recOfioi); + } + } + return; + } + + private void decode_Served_Party_IP_Address_AVP(RecordValue rv_ims_i, AVP spip){ + + AVP avp=spip.findChildAVP(AVP_Served_Party_IP_Address_AVP); + if (avp==null) return; + + RecordValue rv_spip = (RecordValue) rv_ims_i.getField("served_Party_IP_Address").getType().newInstance(); + + decode_AVPHeader( rv_spip ,avp); + decode_Address(rv_spip,avp); + + rv_ims_i.setField("served_Party_IP_Address",rv_spip); + return; + } + + private void decode_Incoming_Trunk_Group_ID_AVP(RecordValue rv_ims_i, AVP tgid){ + + AVP avp=tgid.findChildAVP(AVP_Incoming_Trunk_Group_ID_AVP); + if (avp==null) return; + + RecordValue rv_tg = (RecordValue) rv_ims_i.getField("incoming_Trunk_Group_ID").getType().newInstance(); + + decode_AVPHeader( rv_tg ,avp); + rv_tg.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("incoming_Trunk_Group_ID",rv_tg); + return; + } + + private void decode_Outgoing_Trunk_Group_ID_AVP(RecordValue rv_ims_i, AVP tgid){ + + AVP avp=tgid.findChildAVP(AVP_Outgoing_Trunk_Group_ID_AVP); + if (avp==null) return; + + RecordValue rv_tg = (RecordValue) rv_ims_i.getField("outgoing_Trunk_Group_ID").getType().newInstance(); + + decode_AVPHeader( rv_tg ,avp); + rv_tg.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_ims_i.setField("outgoing_Trunk_Group_ID",rv_tg); + return; + } + + private void decode_Trunk_Group_ID_AVP(RecordValue rv_ims_i, AVP tgid){ + + AVP avp=tgid.findChildAVP(AVP_Trunk_Group_ID_AVP); + if (avp==null) return; + + RecordValue rv_tg = (RecordValue) (RecordValue) rv_ims_i.getField("trunk_Group_ID").getType().newInstance(); + + decode_AVPHeader( rv_tg ,avp); + decode_Incoming_Trunk_Group_ID_AVP(rv_tg,avp); + decode_Outgoing_Trunk_Group_ID_AVP(rv_tg,avp); + + rv_ims_i.setField("trunk_Group_ID",rv_tg); + return; + } + + private void decode_IMS_Information_AVP(RecordValue rv_sid, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_IMS_Information_AVP); + if (avp==null) return; + + RecordValue rv_IMS_Information = (RecordValue) (RecordValue) rv_sid.getField("ims_Information").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv_IMS_Information ,avp); + decode_Event_Type_AVP(rv_IMS_Information ,avp); + decode_Role_Of_Node_AVP(rv_IMS_Information ,avp); + decode_Node_Functionality_AVP(rv_IMS_Information ,avp); + decode_User_Session_ID_AVP(rv_IMS_Information ,avp); +// Outgoing_Session_Id_AVP outgoing_Session_Id optional, +// Session_Priority_AVP session_Priority optional, + decode_Calling_Party_Address_AVP(rv_IMS_Information ,avp); + decode_Called_Party_Address_AVP(rv_IMS_Information ,avp); + decode_Called_Asserted_Identity_AVP(rv_IMS_Information ,avp); +// Number_Portability_Routing_Information_AVP number_Portability_Routing_Information optional, +// Carrier_Select_Routing_Information_AVP carrier_Select_Routing_Information optional, + decode_Alternate_Charged_Party_Address_AVP(rv_IMS_Information ,avp); + decode_Requested_Party_Address_AVP(rv_IMS_Information ,avp); + decode_Associated_URI_AVP(rv_IMS_Information ,avp); + decode_Time_Stamps_AVP(rv_IMS_Information ,avp); + decode_Application_Server_Information_AVP(rv_IMS_Information ,avp); + decode_Inter_Operator_Identifier_AVP(rv_IMS_Information ,avp); + decode_IMS_Charging_Identifier_AVP(rv_IMS_Information ,avp); + decode_SDP_Session_Description_AVP(rv_IMS_Information ,avp); + decode_SDP_Media_Component_AVP(rv_IMS_Information ,avp); + decode_Served_Party_IP_Address_AVP(rv_IMS_Information ,avp); + decode_Server_Capabilities_AVP(rv_IMS_Information ,avp); + decode_Trunk_Group_ID_AVP(rv_IMS_Information ,avp); +// Bearer_Service_AVP bearer_Service optional, +// Service_Id_AVP service_Id optional, +// set of Service_Specific_Info_AVP service_Specific_Info optional, +// set of Message_Body_AVP message_Body optional, +// Cause_Code_AVP cause_Code optional, +// Access_Network_Information_AVP access_Network_Information optional, +// set of Early_Media_Description_AVP early_Media_Description optional, +// IMS_Communication_Service_Identifier_AVP ims_Communication_Service_Identifier optional, +// Online_Charging_Flag_AVP online_Charging_Flag optional, +// Real_Time_Tariff_Information_AVP real_Time_Tariff_Information optional, +// Account_Expiration_AVP account_Expiration optional, +// Initial_IMS_Charging_Identifier_AVP initial_IMS_Charging_Identifier optional, +// IMS_Emergency_Indicator_AVP ims_Emergency_Indicator optional + + + rv_sid.setField("ims_Information",rv_IMS_Information); + return; + } + + private void decode_Application_Server_ID_AVP(RecordValue rv_sid, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Application_Server_ID_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) (RecordValue) rv_sid.getField("application_Server_ID").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_sid.setField("application_Server_ID",rv_); + return; + } + + private void decode_Application_Service_Type_AVP(RecordValue rv_sid, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Application_Service_Type_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) (RecordValue) rv_sid.getField("application_Service_Type").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkInt(avp.int_data)); + + rv_sid.setField("application_Service_Type",rv_); + return; + } + + private void decode_Application_Session_ID_AVP(RecordValue rv_sid, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Application_Session_ID_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) (RecordValue) rv_sid.getField("application_Session_ID").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + //rv_.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + rv_.setField("aVP_Data", mkInt(avp.int_data)); + + rv_sid.setField("application_Session_ID",rv_); + return; + } + + private void decode_Delivery_Status_AVP(RecordValue rv_sid, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Delivery_Status_AVP); + if (avp==null) return; + + RecordValue rv_ = (RecordValue) (RecordValue) rv_sid.getField("delivery_Status").getType().newInstance(); + + decode_AVPHeader( rv_ ,avp); + rv_.setField("aVP_Data", mkCvUTF8(avp.getStringData())); + + rv_sid.setField("delivery_Status",rv_); + return; + } + + + private void decode_Service_Generic_Information_AVP(RecordValue rv_sid, AVP sid){ + + AVP avp=sid.findChildAVP(AVP_Service_Generic_Information_AVP); + if (avp==null) return; + + RecordValue rv_sgi = (RecordValue) (RecordValue) rv_sid.getField("service_Generic_Information").getType().newInstance(); + + try{avp.ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv_sgi ,avp); + decode_Application_Server_ID_AVP( rv_sgi ,avp);// application_Server_ID optional, + decode_Application_Service_Type_AVP( rv_sgi ,avp);// application_Service_Type optional, + decode_Application_Session_ID_AVP( rv_sgi ,avp);// application_Session_ID optional, + decode_Delivery_Status_AVP( rv_sgi ,avp);// delivery_Status optional + + rv_sid.setField("service_Generic_Information",rv_sgi); + return; + } + + private void decode_Service_Information_AVP(RecordValue rv_DiameterM, DiameterMessage msg){ + + AVP[] avps=msg.findAVPs(AVP_Service_Information_AVP); + if (avps==null) return; + + if (avps.length>1){} + else{ + RecordValue rv_Service_Information = (RecordValue) (RecordValue) rv_DiameterM.getField("service_Information").getType().newInstance(); + + try{avps[0].ungroup();}catch(Exception e){return;} + + decode_AVPHeader( rv_Service_Information ,avps[0]); + decode_Subscription_Id_AVP(rv_Service_Information,avps[0]); +// AoC_Information_AVP aoc_Information optional, + decode_PS_Information_AVP(rv_Service_Information,avps[0]); + decode_WLAN_Information_AVP(rv_Service_Information,avps[0]); + decode_IMS_Information_AVP(rv_Service_Information,avps[0]); +// MMS_Information_AVP mms_Information optional, +// LCS_Information_AVP lcs_Information optional, +// PoC_Information_AVP poc_Information optional, +// MBMS_Information_AVP mbms_Information optional, +// SMS_Information_AVP sms_Information optional, +// MMTel_Information_AVP mmtel_Information optional, + decode_Service_Generic_Information_AVP(rv_Service_Information,avps[0]); +// IM_Information_AVP im_Information optional, +// DCD_Information_AVP dcd_Information optional + + rv_DiameterM.setField("service_Information",rv_Service_Information); + return; + } + } + /*End TS132_299 AVPs*/ + + //TODO:Continue WITH AVPs + + + private RecordOfValue decode_AVP_Type(byte[] pdata){ + //TODO: decode AVPs..... + RecordOfValue rov; + rov=null; + return rov; + } + + private void decode_AVP_Type(RecordValue rv_avp, AVP pavp){ + + decode_AVPHeader( rv_avp ,pavp); + UnionValue avp_d = (UnionValue)rv_avp.getField("aVP_Data"); + avp_d.setVariant("oCTETSTRING", mkOctetstring(pavp.data)); + + rv_avp.setField("aVP_Data", avp_d); + return; + } + + private void decode_AVP_Type(RecordValue rv_DiameterM, DiameterMessage msg){ + + + return; + } + + private void decode_IntegerValue ( RecordValue rvAvp, AVP avp) { + + IntegerValue AvpData = (IntegerValue)rvAvp.getField("aVP_Data").getType().newInstance(); + AvpData=mkInt(avp.int_data); + rvAvp.setField("aVP_Data",AvpData); + return; + } + + private BitString BufferToBitString(byte[] buf, int SizeOfBitstring/*,int UsedBitsInByte*/) { + try { + BitString bitStr = new BitString(RB, SizeOfBitstring, new byte[1]); + + int Count = 0; + for (Count = 0; Count < SizeOfBitstring; Count++) { + if (((buf[(Count + UsedBitsInByte) / 8]) & (1 << (7 - (UsedBitsInByte + Count) % 8))) != 0) { + bitStr.setBit(Count, 1); + } else { + bitStr.setBit(Count, 0); + } + } + UsedBitsInByte = (UsedBitsInByte + SizeOfBitstring) % 8; + return bitStr; + } catch (Exception ex) { + //ex.printStackTrace(); + return null; + } + } + + private CharstringValue mkCv(String theString) { + + CharstringValue cv = (CharstringValue) charstringType.newInstance(); + cv.setString(theString); + return cv; + + } + + private UniversalCharstringValue mkCvUTF8(String theString) { + + UniversalCharstringValue cv = (UniversalCharstringValue) universalcharstringType.newInstance(); + cv.setString(theString); + return cv; + + } + + private OctetstringValue mkOctetstring(byte[] octetBytes){ + + OctetstringValue ov = (OctetstringValue) octetstringType.newInstance(); + //ov.setString(octetBytes.toString()); + ov.setLength(octetBytes.length); + for (int i = 0; i < octetBytes.length; i++) { + ov.setOctet(i, octetBytes[i]); + } + return ov; + } + + private IntegerValue mkInt(int theInt) { + + IntegerValue iv = (IntegerValue) integerType.newInstance(); + iv.setInt(theInt); + return iv; + } + + private IntegerValue mkInt(long theInt) { + + IntegerValue iv = (IntegerValue) integerType.newInstance();//(IntegerValue) IntegerValue.class.newInstance(); + iv.setBigInt(BigInteger.valueOf(theInt& 0xffffffffL)); + return iv; + } + + private IntegerValue mkInt64(int theInt) { + + IntegerValue in = (IntegerValue) integerType.newInstance(); + in.setInt(theInt); + return in; + } + + public static boolean useList(String[] arr, String targetValue) { + return Arrays.asList(arr).contains(targetValue); + } + +} +/* ######################################################################### */ +/* # End of file # */ +/* ######################################################################### */ diff --git a/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java b/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java new file mode 100644 index 0000000..25692b3 --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java @@ -0,0 +1,698 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides dummuy connection - for unsupported ports for VxLTE. + * @see + */ +package com.iskratel.ttcn.tci.codec.IOTCodec; + +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.lang.reflect.Method; + +import org.etsi.ttcn.tci.BooleanValue; +import org.etsi.ttcn.tci.CharstringValue; +import org.etsi.ttcn.tci.EnumeratedValue; +import org.etsi.ttcn.tci.IntegerValue; +import org.etsi.ttcn.tci.OctetstringValue; +import org.etsi.ttcn.tci.RecordValue; +import org.etsi.ttcn.tci.RecordOfValue; +import org.etsi.ttcn.tci.TciCDProvided; + import org.etsi.ttcn.tci.TciCDRequired; + import org.etsi.ttcn.tci.TciTMProvided; +import org.etsi.ttcn.tci.TciTypeClass; +import org.etsi.ttcn.tci.Type; +import org.etsi.ttcn.tci.UnionValue; +import org.etsi.ttcn.tci.UniversalCharstringValue; +import org.etsi.ttcn.tci.Value; +import org.etsi.ttcn.tri.TriComponentId; +import org.etsi.ttcn.tri.TriMessage; + +import com.iskratel.protocol.diameter.parser.Codec; +import com.iskratel.protocol.diameter.parser.DiameterMessageDecodeException; +import com.testingtech.ttcn.extension.CodecProvider; +import com.testingtech.ttcn.logging.RTLoggingConstants; +import com.testingtech.ttcn.tri.AbstractCodecPlugin; + +import com.testingtech.ttcn.logging.TciTLProvidedV321TT; +import com.testingtech.ttcn.tci.codec.base.AbstractBaseCodec; + +import de.tu_berlin.cs.uebb.muttcn.runtime.RB; +import de.tu_berlin.cs.uebb.ttcn.runtime.BitString; +import de.tu_berlin.cs.uebb.ttcn.runtime.ForeignMessage; + +public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { + + private static final int CAPTURED_PACKET_IND = 0x0001; /**< ID of CaptureData */ + private static final int SET_FILTER_REQ = 0x0002; /**< ID of SetFilterRequest */ + private static final int START_CAPTURE_REQ = 0x0003; /**< ID of StartCaptureRequest */ + private static final int START_CAPTURE_REP = 0x0004; /**< ID of StartCaptureReply */ + private static final int STOP_CAPTURE_REQ = 0x0005; /**< ID of StopCaptureRequest */ + private static final int STOP_CAPTURE_REP = 0x0006; /**< ID of StopCaptureReply */ + private static final int OPEN_DEVICE_REQ = 0x0007; /**< ID of OpenDeviceRequest */ + private static final int OPEN_DEVICE_REP = 0x0008; /**< ID of OpenDeviceReply */ + private static final int SET_FILTER_REP = 0x0009; /**< ID of SetFilterReply */ + private static final int MERGE_FILES_REQ = 0x000A; /**< ID of MergePcapFilesRequest */ + private static final int MERGE_FILES_REP = 0x000B; /**< ID of MergePcapFilesReply */ + + protected TciTLProvidedV321TT logging; + + protected TciCDRequired typeServer; + protected TciTMProvided management; + + private Type booleanType; + private Type octetstringType; + private Type charstringType; + private Type universalcharstringType; + private Type integerType; + private Type bigintegerType; + + private boolean padding = false; + + /** + * + Constructor method DefaultCodec creates new object and prepares RB. + *

    + * @param rb needed to resolve specific information (e.g. which logging to + * use) + * + * */ + public IOTCodec(RB rb) { + super(rb); + //super(); + typeServer = /*getRB().getTciCDRequired();*/RB.getTciCDRequired(); + octetstringType = typeServer.getOctetstring(); + charstringType = typeServer.getCharstring(); + universalcharstringType = typeServer.getUniversalCharstring(); + integerType = typeServer.getInteger(); + bigintegerType = typeServer.getFloat(); + booleanType = typeServer.getBoolean(); + management = /*getRB().getTciTMProvided();*/RB.getTciTMProvided(); + } + + @Override + public Value decode(TriMessage message, Type decodingHypothesis) { + //Decoding aligned to old TA LibIot + // Get the received byte array + encodedMsg = message.getEncodedMessage(); + // Set the bitpos to 0 (this is needed to know the actual bit position from the byte array) + bitpos = 0; + // The the encoded message is null, nothing can be done, so return null + if(encodedMsg.length == 0) return null; + + // Check which type class the decoding hypothesis is of + switch (decodingHypothesis.getTypeClass()) { + case TciTypeClass.BOOLEAN: + BooleanValue booleanValue = (BooleanValue) booleanType.newInstance(); + + if (encodedMsg[0] == 0x00) {booleanValue.setBoolean(false);} + else {booleanValue.setBoolean(true);} + + return booleanValue; + case TciTypeClass.RECORD: + + int iotmsgType=encodedMsg[0]&0xFF | encodedMsg[1]&0xFF << 8; + int iotmsgLen=2+4+(((encodedMsg[2] & 0xFF))|((encodedMsg[3] & 0xFF) << 8)|((encodedMsg[4] & 0xFF) << 16) | ((encodedMsg[5] & 0xFF)<<24)); + + switch (iotmsgType){ + case CAPTURED_PACKET_IND: + case SET_FILTER_REQ: + case START_CAPTURE_REQ: + case STOP_CAPTURE_REQ: + case OPEN_DEVICE_REQ: + case MERGE_FILES_REQ: + default: + //*_REP + // Fill the NewHypotesis + /*type record GeneralConfigurationRsp + { + Status status + } + + type record SetFilterRsp + { + Status status + } + + type record StartTrafficCaptureRsp + { + Status status + } + + type record StopTrafficCaptureRsp + { + Status status + } + */ + int iotmsgStatus = encodedMsg[2+4]&0xFF;//0+6=7thposition + RecordValue rv = (RecordValue) decodingHypothesis.newInstance(); + + /*type record Status { + FncRetCode code, + charstring reason optional + }*/ + RecordValue rvstatus = (RecordValue) rv.getField("status").getType().newInstance(); + + /*type enumerated FncRetCode { + e_success(0), + // error codes + e_error(1), + e_timeout(2) + }*/ + EnumeratedValue code = (EnumeratedValue) rvstatus.getField("code").getType().newInstance(); + //code.setEnum("e_success"); + code.setInt(iotmsgStatus); + rvstatus.setField("code",code); + + if (iotmsgLen>2+4+1){ + CharstringValue r = (CharstringValue) rvstatus.getField("reason").getType().newInstance(); + r.setString("OK"); + rvstatus.setField("reason",r); + } + //return createNewHypotesis(NewHypotesis,encodedMsg); + //return Newhypotesis; + rv.setField("status", rvstatus); + return rv; + } + + default: + return super.decode(message,decodingHypothesis); + } + //return null; + } + + @Override + public TriMessage encode(Value value) { + // The template is given to the AbstractBaseCodec which handles the basic encoding + //TriMessage encodedMessage = super.encode(template); + //return encodedMessage; + + Type msgType = value.getType(); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + + switch (msgType.getTypeClass()) { + + case TciTypeClass.INTEGER: + case TciTypeClass.FLOAT: + case TciTypeClass.BITSTRING: + case TciTypeClass.HEXSTRING: + case TciTypeClass.OCTETSTRING: + case TciTypeClass.CHARSTRING: + case TciTypeClass.UNIVERSAL_CHARSTRING: + case TciTypeClass.RECORD_OF: + case TciTypeClass.ENUMERATED: + case TciTypeClass.UNION: + case TciTypeClass.BOOLEAN: + case TciTypeClass.VERDICT: + case TciTypeClass.RECORD: + return encode_IOTMessage(out, (RecordValue) value); + default: + //throw new TciException("Unknown TypeClass"); + logging.tliLog("", System.currentTimeMillis(), "", -1, null, "IOT codec: encode: Unknown TypeClass" + msgType + msgType.getTypeClass()); + + } + return null; + } + + public TriMessage encode_IOTMessage(ByteArrayOutputStream out, RecordValue value_) { + //Encoding aligned to old TA LibIot + if (value_.getType().getName().equals("GeneralConfigurationReq")){ + + /*charstring captureProcessIpAddress, + PortNumber captureProcessPort, + CaptureMode captureMode, + EutInterfaceInfoList eutInfoList optional*/ + +// encode_Charstring(out, (CharstringValue)value_.getField("captureProcessIpAddress")); +// encode_IntegerValue(out,(IntegerValue) value_.getField("captureProcessPort")); +// encode_CaptureMode(out,(UnionValue) value_.getField("captureMode")); +// encode_EutInterfaceInfoList(out,(RecordOfValue) value_.getField("eutInfoList")); + //Implementation due to existing CapturePCO + //Type + encode_UChar(out,0); + //Mode + UnionValue value=(UnionValue)value_.getField("captureMode"); + if (value.getPresentVariantName().equals("liveCpature") && !value.getVariant("liveCpature").notPresent()) { + encode_UChar(out,0); + } + else if (value.getPresentVariantName().equals("offlineCapture") && !value.getVariant("offlineCapture").notPresent()) { + encode_UChar(out,1); + } + + //Timestamp + encode_Time(out,0,0); + //params + encode_StringWithLen(out, (CharstringValue)((RecordValue)((RecordValue)value.getVariant("offlineCapture")).getField("captureSource")).getField("sessionsPath")); + //capturefile + CharstringValue file =(CharstringValue) charstringType.newInstance(); + file.setString(""); + encode_StringWithLen(out, file); + + encode_MsgTypeWithLen(out, OPEN_DEVICE_REQ); + } + //else if(value_.getType().getName().equals("GeneralConfigurationRsp")){} + else if (value_.getType().getName().equals("SetFilterReq")){ + ByteArrayOutputStream filter = new ByteArrayOutputStream(); + /*type record SetFilterReq { + ProtocolFilter protocol, + InterfaceInfoList interfaceInfos + }*/ + encode_ProtocolFilter(filter, (EnumeratedValue)value_.getField("protocol")); + + write(filter," and "); + encode_InterfaceInfoList(filter,(RecordOfValue) value_.getField("interfaceInfos")); + + + //Implementation due to existing CapturePCO + CharstringValue cvfilter =(CharstringValue) charstringType.newInstance(); + cvfilter.setString(filter.toString());// port 5080"); + //filter.setString("tcp port 5501"); + encode_StringWithLen(out, cvfilter); + + encode_MsgTypeWithLen(out, SET_FILTER_REQ); + } + //else if (value_.getType().getName().equals("SetFilterRsp")){} + else if (value_.getType().getName().equals("StartTrafficCaptureReq")){ + + encode_MsgTypeWithLen(out, START_CAPTURE_REQ); + } + //else if (value_.getType().getName().equals("StartTrafficCaptureRsp")){} + else if (value_.getType().getName().equals("StopTrafficCaptureReq")){ + + encode_MsgTypeWithLen(out, STOP_CAPTURE_REQ); + } + //else if (value_.getType().getName().equals("StopTrafficCaptureRsp")){} + else{ + /*error*/ + } + return new ForeignMessage(/*this.getRB(), */out.toByteArray()); + } + + private void encode_MsgTypeWithLen(ByteArrayOutputStream out, int MsgType){ + final ByteArrayOutputStream mt_len = new ByteArrayOutputStream(); + write(mt_len,new byte[]{(byte)(MsgType),(byte)(MsgType>>>8)});//little endian + //encode_IntegerValue(mt_len, (/*2+4+*/out.size())); + write(mt_len,new byte[]{(byte)(out.size()),(byte)(out.size() >>> 8), (byte)(out.size()>>> 16), (byte)(out.size()>>> 24)});//little endian + try { + out.writeTo(mt_len); + out.reset(); + mt_len.writeTo(out); + } + catch(Exception e){e.printStackTrace();} + + } + + ////GeneralConfigurationReq params + private void encode_PhysicalInterfaceList(ByteArrayOutputStream out, RecordOfValue value){ + /*type record of charstring PhysicalInterfaceList;*/ + if ((value == null) || value.notPresent()) {return;} + + int len = value.getLength(); + for (int i = 0; i < len; i++) { + //RecordValue rv=(RecordValue) value.getField(i); + encode_Charstring(out, (CharstringValue)value.getField(i)); + } + return; + } + + private void encode_RecordMode(ByteArrayOutputStream out, EnumeratedValue value){ + /* type enumerated RecordMode { + e_norecord, + e_record + }*/ + encode_IntegerValue(out, value.getInt()); + } + + private void encode_LiveCapture(ByteArrayOutputStream out, RecordValue value){ + /*type record LiveCapture { + PhysicalInterfaceList physicalInterfaces, // TODO document example syntax + RecordMode recordMode + }*/ + encode_PhysicalInterfaceList(out,(RecordOfValue)value.getField("physicalInterfaces")); + encode_RecordMode(out,(EnumeratedValue)value.getField("recordMode") ); + } + + + private void encode_TimeOffset(ByteArrayOutputStream out, RecordValue value){ + /*type record TimeOffset + { + //UInt32 seconds, + //UInt32 microseconds + integer seconds (0..4294967295), + integer microseconds (0..4294967295) + }*/ + encode_IntegerValue(out,(IntegerValue) value.getField("seconds")); + encode_IntegerValue(out,(IntegerValue) value.getField("microseconds")); + } + + + private void encode_FileList(ByteArrayOutputStream out, RecordOfValue value){ + /*type record of charstring FileList;*/ + if ((value == null) || value.notPresent()) {return;} + + int len = value.getLength(); + for (int i = 0; i < len; i++) { + //RecordValue rv=(RecordValue) value.getField(i); + encode_Charstring(out, (CharstringValue)value.getField(i)); + } + return; + } + + private void encode_MergeFileList(ByteArrayOutputStream out, RecordValue value){ + /*type record MergeFileList { + FileList mergeFileList, + charstring mergeFilePath, + charstring mergeToolPath + }*/ + encode_FileList(out, (RecordOfValue)value.getField("mergeFileList")); + encode_Charstring(out, (CharstringValue)value.getField("mergeFilePath")); + encode_Charstring(out, (CharstringValue)value.getField("mergeToolPath")); + } + + + private void encode_CaptureSource(ByteArrayOutputStream out, RecordValue value){ + /*type record CaptureSource { + charstring sessionsPath, // e.g., the path where session's PCAP files are located like /tmp/19 + MergeFileList mergeFileList + }*/ + encode_Charstring(out, (CharstringValue)value.getField("sessionsPath")); + encode_MergeFileList(out, (RecordValue)value.getField("mergeFileList")); + } + + private void encode_OfflineCapture(ByteArrayOutputStream out, RecordValue value){ + /* type record OfflineCapture { + TimeOffset offset, + CaptureSource captureSource + }*/ + encode_TimeOffset(out,(RecordValue)value.getField("offset")); + encode_CaptureSource(out,(RecordValue)value.getField("captureSource")); + } + + private void encode_CaptureMode(ByteArrayOutputStream out, UnionValue value){ + /*type union CaptureMode { + LiveCapture liveCpature, + OfflineCapture offlineCapture + }*/ + if (value.getPresentVariantName().equals("liveCpature") && !value.getVariant("liveCpature").notPresent()) { + encode_LiveCapture(out, (RecordValue) value.getVariant("liveCpature")); + } + if (value.getPresentVariantName().equals("offlineCapture") && !value.getVariant("offlineCapture").notPresent()) { + encode_OfflineCapture(out, (RecordValue) value.getVariant("offlineCapture")); + } + } + + private void encode_EutInterfaceInfo(ByteArrayOutputStream out, RecordValue value){ + /*type record EutInterfaceInfo { + charstring eut, + IpAddress ipAddress, + PortNumber portNumber + }*/ + encode_Charstring(out, (CharstringValue)value.getField("eut")); + encode_Charstring(out, (CharstringValue)value.getField("ipAddress")); + encode_IntegerValue(out,(IntegerValue) value.getField("portNumber")); + } + + private void encode_EutInterfaceInfoList(ByteArrayOutputStream out, RecordOfValue value){ + if ((value == null) || value.notPresent()) {return;} + + int len = value.getLength(); + for (int i = 0; i < len; i++) { + //RecordValue rv=(RecordValue) value.getField(i); + encode_EutInterfaceInfo(out, (RecordValue)value.getField(i)); + } + return; + } + + ////set-filter-REQ params + + private void encode_ProtocolFilter(ByteArrayOutputStream out, EnumeratedValue value){ + /*type enumerated ProtocolFilter { + e_ip, + e_sip, + e_dns, + e_diameter + }*/ + String protocol="ip"; //default + switch (value.getInt()){ + + case 0:/**/ + case 1:protocol= "udp";break; + case 2:/**/ + case 3:protocol= "tcp";break; + default: + + } + //encode_IntegerValue(out, value.getInt()); + write(out, protocol); + } + + private void encode_PortNumberList(ByteArrayOutputStream out, RecordOfValue value){ + if ((value == null) || value.notPresent()) {return;} + + int len = value.getLength(); + for (int i = 0; i < len; i++) { + //RecordValue rv=(RecordValue) value.getField(i); + //encode_IntegerValue(out,(IntegerValue)value.getField(i)); + //encode_Charstring(out,(CharstringValue)value.getField(i)); + write(out,"port "); + write(out,value.getField(i).toString()); + } + return; + } + + private void encode_IPInterfaceInfo(ByteArrayOutputStream out, RecordValue value){ + /*type record IpInterfaceInfo { + charstring domainName optional, + IpAddress IpAddress, + PortNumberList portNumbers + }*/ + //encode_Charstring(out, (CharstringValue)value.getField("domainName")); + write(out,"host "); + encode_Charstring(out, (CharstringValue)value.getField("IpAddress")); + write(out," and "); + encode_PortNumberList(out,(RecordOfValue)value.getField("portNumbers")); + + } + + private void encode_IpInterfaceInfoList(ByteArrayOutputStream out, RecordOfValue value){ + /*type record of IpInterfaceInfo IpInterfaceInfoList;*/ + if ((value == null) || value.notPresent()) {return;} + + int len = value.getLength(); + for (int i = 0; i < len; i++) { + //RecordValue rv=(RecordValue) value.getField(i); + //write(out,"("); + encode_IPInterfaceInfo(out, (RecordValue)value.getField(i)); + if (i < (len-1)) write(out," and "); + //write(out,")"); + } + return; + } + + private void encode_InterfaceInfo(ByteArrayOutputStream out, UnionValue value){ + /*type union InterfaceInfo { + IpInterfaceInfoList IpInterfaceInfo + }*/ + if (value.getPresentVariantName().equals("IpInterfaceInfo") && !value.getVariant("IpInterfaceInfo").notPresent()) { + encode_IpInterfaceInfoList(out, (RecordOfValue) value.getVariant("IpInterfaceInfo")); + } + } + + private void encode_InterfaceInfoList(ByteArrayOutputStream out, RecordOfValue value){ + /*type record of InterfaceInfo InterfaceInfoList;*/ + if ((value == null) || value.notPresent()) {return;} + + int len = value.getLength(); + for (int i = 0; i < len; i++) { + + //RecordValue rv=(RecordValue) value.getField(i); + encode_InterfaceInfo(out, (UnionValue)value.getField(i)); + } + return; + } + + private void encode_UChar(ByteArrayOutputStream out, int value) { + + //if ((value == null) || value.notPresent()) {return;} + + int ivalue=value; + byte[] IntVal= new byte[]{(byte)ivalue}; + write(out,IntVal); + + } + + private void encode_StringWithLen(ByteArrayOutputStream out, CharstringValue value) { + + if ((value == null) || value.notPresent()) {return;} + + StringBuffer sb = new StringBuffer(); + int len = value.getLength(); + for (int i = 0; i < len; i++) { + sb.append(value.getChar(i)); + } + write(out,new byte[]{(byte)(len),(byte)(len >>> 8), (byte)(len>>> 16), (byte)(len>>> 24)});//little endian + + write(out, sb.toString()); + + //if (padding) + // write_avp_padding(out,value.getLength()); + } + + private void encode_Charstring(ByteArrayOutputStream out, CharstringValue value) { + + if ((value == null) || value.notPresent()) {return;} + + StringBuffer sb = new StringBuffer(); + + for (int i = 0; i < value.getLength(); i++) { + sb.append(value.getChar(i)); + } + write(out, sb.toString()); + + if (padding) + write_avp_padding(out,value.getLength()); + } + + private void encode_UniversalCharstring(ByteArrayOutputStream out, UniversalCharstringValue value) { + + if ((value == null) || value.notPresent()) {return;} + + StringBuffer sb = new StringBuffer(); + sb.append(value.getString()); + write(out, sb.toString()); + if (padding) + write_avp_padding(out,sb.length()); + } + + private void encode_Octetstring(ByteArrayOutputStream out, OctetstringValue value) { + + if ((value == null) || value.notPresent()) {return;} + + byte[] OctetVal= new byte[value.getLength()]; + + for (int i = 0; i < value.getLength(); i++) { + OctetVal[i]=(byte)value.getOctet(i); + } + write(out, OctetVal); + if (padding) + write_avp_padding(out,value.getLength()); + } + + private void encode_IntegerValue(ByteArrayOutputStream out, IntegerValue value) { + + if ((value == null) || value.notPresent()) {return;} + + int ivalue=value.getInt(); + byte[] IntVal= new byte[]{(byte)(ivalue >>> 24), + (byte)(ivalue >>> 16), + (byte)(ivalue >>> 8), + (byte)ivalue}; + write(out,IntVal); + } + + private void encode_IntegerValue(ByteArrayOutputStream out, int value) { + + int ivalue=value; + byte[] IntVal= new byte[]{(byte)(ivalue >>> 24), + (byte)(ivalue >>> 16), + (byte)(ivalue >>> 8), + (byte)ivalue}; + write(out,IntVal); + } + + private void encode_Integer64Value(ByteArrayOutputStream out, IntegerValue value) { + + if ((value == null) || value.notPresent()) {return;} + + //byte[] IntVal= new byte[8]; + //IntVal = String.valueOf(value).getBytes(); + + int ivalue=value.getInt(); + byte[] IntVal64= new byte[]{ + (byte)((ivalue& 0xffffffffL) >>> 56), + (byte)((ivalue& 0xffffffffL) >>> 48), + (byte)((ivalue& 0xffffffffL) >>> 40), + (byte)((ivalue& 0xffffffffL) >>> 32), + (byte)((ivalue& 0xffffffffL) >>> 24), + (byte)((ivalue& 0xffffffffL) >>> 16), + (byte)((ivalue& 0xffffffffL) >>> 8), + (byte)(ivalue& 0xffffffffL)}; + + write(out,IntVal64); + + } + + private void encode_Integer64Value(ByteArrayOutputStream out, long ivalue) { + + //byte[] IntVal= new byte[8]; + //IntVal = String.valueOf(ivalue).getBytes(); + + byte[] IntVal64= new byte[]{ + (byte)((ivalue& 0xffffffffL) >>> 56), + (byte)((ivalue& 0xffffffffL) >>> 48), + (byte)((ivalue& 0xffffffffL) >>> 40), + (byte)((ivalue& 0xffffffffL) >>> 32), + (byte)((ivalue& 0xffffffffL) >>> 24), + (byte)((ivalue& 0xffffffffL) >>> 16), + (byte)((ivalue& 0xffffffffL) >>> 8), + (byte)(ivalue& 0xffffffffL)}; + + write(out,IntVal64); + //System.out.println(ivalue+" "+IntVal64); + } + private void encode_Time(ByteArrayOutputStream out, int values,int valuems) { + + int ivalue=values; + byte[] IntVal= new byte[]{(byte)(ivalue >>> 24), + (byte)(ivalue >>> 16), + (byte)(ivalue >>> 8), + (byte)ivalue}; + write(out,IntVal); + ivalue=valuems; + IntVal= new byte[]{(byte)(ivalue >>> 24), + (byte)(ivalue >>> 16), + (byte)(ivalue >>> 8), + (byte)ivalue}; + write(out,IntVal); + ivalue=0;//valueus; + IntVal= new byte[]{(byte)(ivalue >>> 24), + (byte)(ivalue >>> 16), + (byte)(ivalue >>> 8), + (byte)ivalue}; + write(out,IntVal); + } + + private void write_avp_padding(ByteArrayOutputStream out, int avp_data_len) { + + final byte[] NullVal = {0x00}; + + if ((avp_data_len % 4)!=0){ + for (int i = 0; i < 4-((avp_data_len % 4)); i++) { + write(out, NullVal); + } + } + } + + private void write(ByteArrayOutputStream out, String outString) { + + try { + out.write(outString.getBytes()); + } catch (IOException iex) { + return; + } + return; + } + + private void write(ByteArrayOutputStream out, byte [] outString) { + + try { + out.write(outString); + } catch (IOException iex) { + return; + } + return; + } + + +} diff --git a/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java b/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java new file mode 100644 index 0000000..1e28df4 --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java @@ -0,0 +1,214 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides dummuy connection - for unsupported ports for VxLTE. + * @see + */ +package com.iskratel.ttcn.tci.codec.LibUpperTesterCodec; + +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import org.etsi.ttcn.tci.BooleanValue; +import org.etsi.ttcn.tci.CharstringValue; +import org.etsi.ttcn.tci.EnumeratedValue; +import org.etsi.ttcn.tci.IntegerValue; +import org.etsi.ttcn.tci.OctetstringValue; +import org.etsi.ttcn.tci.RecordOfValue; +import org.etsi.ttcn.tci.RecordValue; +import org.etsi.ttcn.tci.TciCDProvided; + import org.etsi.ttcn.tci.TciCDRequired; + import org.etsi.ttcn.tci.TciTMProvided; +import org.etsi.ttcn.tci.TciTypeClass; +import org.etsi.ttcn.tci.Type; +import org.etsi.ttcn.tci.UnionValue; +import org.etsi.ttcn.tci.Value; +import org.etsi.ttcn.tri.TriMessage; + +import com.testingtech.ttcn.extension.CodecProvider; +import com.testingtech.ttcn.logging.RTLoggingConstants; +import com.testingtech.ttcn.tri.AbstractCodecPlugin; + +import com.testingtech.ttcn.logging.TciTLProvidedV321TT; +import com.testingtech.ttcn.tci.codec.base.AbstractBaseCodec; + +import de.tu_berlin.cs.uebb.muttcn.runtime.RB; +import de.tu_berlin.cs.uebb.ttcn.runtime.BitString; +import de.tu_berlin.cs.uebb.ttcn.runtime.ForeignMessage; + +public class LibUpperTesterCodec extends AbstractBaseCodec implements TciCDProvided { + + protected TciTLProvidedV321TT logging; + protected TciCDRequired typeServer; + protected TciTMProvided management; + + private Type booleanType; + private Type octetstringType; + private Type charstringType; + private Type universalcharstringType; + private Type integerType; + private Type bigintegerType; + + @Override + public Value decode(TriMessage message, Type decodingHypothesis) { + // Get the received byte array + encodedMsg = message.getEncodedMessage(); + // Set the bitpos to 0 (this is needed to know the actual bit position from the byte array) + bitpos = 0; + // The the encoded message is null, nothing can be done, so return null + if(encodedMsg.length == 0) return null; + + // Check which type class the decoding hypothesis is of + switch (decodingHypothesis.getTypeClass()) { + case TciTypeClass.BOOLEAN: + BooleanValue booleanValue = (BooleanValue) booleanType.newInstance(); + + if (encodedMsg[0] == 0x00) {booleanValue.setBoolean(false);} + else {booleanValue.setBoolean(true);} + + return booleanValue; + case TciTypeClass.RECORD: + + /*type record EquipmentOperationRsp { + Status status + }*/ + RecordValue rv = (RecordValue) decodingHypothesis.newInstance(); + + RecordValue rvstatus = (RecordValue) rv.getField("status").getType().newInstance(); + + /*type enumerated FncRetCode { + e_success(0), + // error codes + e_error(1), + e_timeout(2) + }*/ + EnumeratedValue code = (EnumeratedValue) rvstatus.getField("code").getType().newInstance(); + code.setEnum("e_success"); + + CharstringValue r = (CharstringValue) rvstatus.getField("reason").getType().newInstance(); + r.setString("OK"); + rvstatus.setField("code",code); + rvstatus.setField("reason",r); + + //return createNewHypotesis(NewHypotesis,encodedMsg); + //return Newhypotesis; + rv.setField("status", rvstatus); + return rv; + + default: + return super.decode(message,decodingHypothesis); + } + //return null; + } + + @Override + public TriMessage encode(Value value) { + // The template is given to the AbstractBaseCodec which handles the basic encoding + //TriMessage encodedMessage = super.encode(template); + //return encodedMessage; + + Type msgType = value.getType(); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + + switch (msgType.getTypeClass()) { + + case TciTypeClass.INTEGER: + case TciTypeClass.FLOAT: + case TciTypeClass.BITSTRING: + case TciTypeClass.HEXSTRING: + case TciTypeClass.OCTETSTRING: + case TciTypeClass.CHARSTRING: + case TciTypeClass.UNIVERSAL_CHARSTRING: + case TciTypeClass.RECORD_OF: + case TciTypeClass.ENUMERATED: + case TciTypeClass.UNION: + case TciTypeClass.BOOLEAN: + case TciTypeClass.VERDICT: + case TciTypeClass.RECORD: + return encode_LibUpperTesterMessage(out, (RecordValue) value); + default: + //throw new TciException("Unknown TypeClass"); + logging.tliRT("", System.currentTimeMillis(), "", -1, null, RTLoggingConstants.RT_LOG_INFO, "LibUpperTester codec: encode: Unknown TypeClass" + msgType + msgType.getTypeClass()); + } + return null; + } + + public TriMessage encode_LibUpperTesterMessage(ByteArrayOutputStream out, RecordValue value_) { + + if (value_.getType().getName().endsWith("Req")) { + encode_EquipmentOperationReq(out, value_); + } + + if (value_.getType().getName().equals("Rsp")) { + encode_EquipmentOperationRsp(out, value_); + } + + return new ForeignMessage(RB, out.toByteArray()); + } + + private void encode_ParameterList(ByteArrayOutputStream out, RecordOfValue rov){ + + if ((rov == null) | rov.notPresent()) {return;} + + int len = rov.getLength(); + for (int i = 0; i < len; i++) { + encode_Charstring(out, (CharstringValue)rov.getField(i)); + write(out," ".getBytes()); + } + return; + } + + private void encode_EquipmentOperationReq(ByteArrayOutputStream out, RecordValue value_) { + + encode_Charstring(out,(CharstringValue)value_.getField("cmd"));//EquipmentCommand cmd, + write(out,"\n".getBytes()); + encode_ParameterList(out,(RecordOfValue)value_.getField("params"));// params optional + return; + } + + private void encode_EquipmentOperationRsp(ByteArrayOutputStream out, RecordValue value_) { + + RecordValue rvstatus = (RecordValue)value_.getField("status"); + + encode_IntegerValue(out,(IntegerValue)rvstatus.getField("code")); + encode_Charstring(out,(CharstringValue)rvstatus.getField("reason")); + return; + } + + private void write(ByteArrayOutputStream out, byte [] outString) { + + try { + out.write(outString); + } catch (IOException iex) { + return; + } + return; + } + + private void encode_Charstring(ByteArrayOutputStream out, CharstringValue value) { + + if ((value == null) || value.notPresent()) {return;} + + StringBuffer sb = new StringBuffer(); + + for (int i = 0; i < value.getLength(); i++) { + sb.append(value.getChar(i)); + } + write(out, sb.toString().getBytes()); + return; + } + + private void encode_IntegerValue(ByteArrayOutputStream out, IntegerValue value) { + + if ((value == null) || value.notPresent()) {return;} + + int ivalue=value.getInt(); + byte[] IntVal= new byte[]{(byte)(ivalue >>> 24), + (byte)(ivalue >>> 16), + (byte)(ivalue >>> 8), + (byte)ivalue}; + write(out,IntVal); + } +} diff --git a/javasrc/com/iskratel/ttcn/tci/codec/SIPCodec/SIPCodec.java b/javasrc/com/iskratel/ttcn/tci/codec/SIPCodec/SIPCodec.java new file mode 100644 index 0000000..f6b0f0e --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tci/codec/SIPCodec/SIPCodec.java @@ -0,0 +1,81 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides TCI for VxLTE. + * @see + */ +package com.iskratel.ttcn.tci.codec.SIPCodec; + +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import org.apache.log4j.Logger; +import org.etsi.ttcn.tci.BooleanValue; +import org.etsi.ttcn.tci.CharstringValue; +import org.etsi.ttcn.tci.EnumeratedValue; +import org.etsi.ttcn.tci.IntegerValue; +import org.etsi.ttcn.tci.OctetstringValue; +import org.etsi.ttcn.tci.RecordOfValue; +import org.etsi.ttcn.tci.RecordValue; +import org.etsi.ttcn.tci.TciCDProvided; + import org.etsi.ttcn.tci.TciCDRequired; + import org.etsi.ttcn.tci.TciTMProvided; +import org.etsi.ttcn.tci.TciTypeClass; +import org.etsi.ttcn.tci.Type; +import org.etsi.ttcn.tci.UnionValue; +import org.etsi.ttcn.tci.Value; +import org.etsi.ttcn.tri.TriMessage; + +import com.testingtech.ttcn.extension.CodecProvider; +import com.testingtech.ttcn.logging.RTLoggingConstants; +import com.testingtech.ttcn.tri.AbstractCodecPlugin; + +import com.testingtech.ttcn.logging.TciTLProvidedV321TT; +import com.testingtech.ttcn.tci.codec.base.AbstractBaseCodec; + +import de.tu_berlin.cs.uebb.muttcn.runtime.RB; +import de.tu_berlin.cs.uebb.ttcn.runtime.BitString; +import de.tu_berlin.cs.uebb.ttcn.runtime.ForeignMessage; + +public class SIPCodec extends AbstractBaseCodec implements TciCDProvided { + + protected TciTLProvidedV321TT logging; + protected TciCDRequired typeServer; + protected TciTMProvided management; + + private Logger log; + + public SIPCodec(RB rb) { + super(rb); + typeServer = RB.getTciCDRequired(); + management = RB.getTciTMProvided(); + } + + public synchronized void setLogger(Logger logger) { + this.log = logger; + } + + @Override + public Value decode(TriMessage message, Type decodingHypothesis) { + // Get the received byte array + encodedMsg = message.getEncodedMessage(); + // Set the bitpos to 0 (this is needed to know the actual bit position from the byte array) + bitpos = 0; + // The the encoded message is null, nothing can be done, so return null + if(encodedMsg.length == 0) return null; + + return super.decode(message,decodingHypothesis); + } + + @Override + public TriMessage encode(Value value) { + // The template is given to the AbstractBaseCodec which handles the basic encoding + TriMessage encodedMessage = super.encode(value); + return encodedMessage; + } + +} + + diff --git a/javasrc/com/iskratel/ttcn/tri/DummyConnection.java b/javasrc/com/iskratel/ttcn/tri/DummyConnection.java new file mode 100644 index 0000000..793099f --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tri/DummyConnection.java @@ -0,0 +1,56 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides dummuy connection - for unsupported ports for VxLTE. + * @see + */ +package com.iskratel.ttcn.tri; + +import org.etsi.ttcn.tri.TriAddress; +import org.etsi.ttcn.tri.TriCommunicationTE; +import org.etsi.ttcn.tri.TriComponentId; +import org.etsi.ttcn.tri.TriMessage; +import org.etsi.ttcn.tri.TriPortId; +import org.etsi.ttcn.tri.TriStatus; + +import com.testingtech.ttcn.tci.TciModuleParameterIdImpl; +import com.testingtech.ttcn.tri.TriAddressImpl; +import com.testingtech.ttcn.tri.TriMessageImpl; +import com.testingtech.ttcn.tri.TriStatusImpl; + +public class DummyConnection /*extends *** */ implements LocalAdapterBase { + + TriCommunicationTE cte = null; + TriPortId comPortId = null; + TriPortId tsiPortId = null; + + public DummyConnection(TriCommunicationTE cte) { + this.cte = cte; + } + + public /*synchronized*/ TriStatus triMap(TriPortId comPortId, TriPortId tsiPortId) { + + boolean result=true; + + this.comPortId = comPortId; + this.tsiPortId = tsiPortId; + + return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR); + } + + public /*synchronized*/TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId,TriAddress triAddress, TriMessage triMessage) { + + byte[] message = triMessage.getEncodedMessage(); + + return (message == null) ? new TriStatusImpl(TriStatus.TRI_ERROR) : new TriStatusImpl(TriStatus.TRI_OK); + } + + public /*synchronized*/ TriStatus triUnmap() { + + return new TriStatusImpl(TriStatus.TRI_OK); + } + + public /*synchronized*/ TriStatus triUnmap(TriPortId comPortId, TriPortId tsiPortId) { + return triUnmap(); + } +} diff --git a/javasrc/com/iskratel/ttcn/tri/EaPortConnection.java b/javasrc/com/iskratel/ttcn/tri/EaPortConnection.java new file mode 100644 index 0000000..af07507 --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tri/EaPortConnection.java @@ -0,0 +1,63 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides connection to control devices for VxLTE. + * @see + */ +package com.iskratel.ttcn.tri; + +import org.etsi.ttcn.tri.TriAddress; +import org.etsi.ttcn.tri.TriCommunicationTE; +import org.etsi.ttcn.tri.TriComponentId; +import org.etsi.ttcn.tri.TriMessage; +import org.etsi.ttcn.tri.TriPortId; +import org.etsi.ttcn.tri.TriStatus; + +import com.testingtech.ttcn.tci.TciModuleParameterIdImpl; +import com.testingtech.ttcn.tri.TriAddressImpl; +import com.testingtech.ttcn.tri.TriMessageImpl; +import com.testingtech.ttcn.tri.TriStatusImpl; + +public class EaPortConnection /*extends *** */ implements LocalAdapterBase { + + TriCommunicationTE cte = null; + TriPortId comPortId = null; + TriPortId tsiPortId = null; + + public EaPortConnection(TriCommunicationTE cte) { + this.cte = cte; + } + + public /*synchronized*/ TriStatus triMap(TriPortId comPortId, TriPortId tsiPortId) { + + boolean result=true; + + this.comPortId = comPortId; + this.tsiPortId = tsiPortId; + + return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR); + } + + public /*synchronized*/TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId,TriAddress triAddress, TriMessage triMessage) { + + byte[] message = triMessage.getEncodedMessage(); + + byte[] messagerecv = {0x00}; //Assume status OK Response + TriMessage triMessagerecv =TriMessageImpl.valueOf(messagerecv);//.setEncodedMessage(message); + TriAddress triAddressrecv = new TriAddressImpl(new byte[] {}); + + synchronized(cte) { + cte.triEnqueueMsg(tsiPortId, triAddress, comPortId.getComponent(), triMessage); + } + + return (message == null) ? new TriStatusImpl(TriStatus.TRI_ERROR) : new TriStatusImpl(TriStatus.TRI_OK); + } + + public /*synchronized*/ TriStatus triUnmap() { + return new TriStatusImpl(TriStatus.TRI_OK); + } + + public /*synchronized*/ TriStatus triUnmap(TriPortId comPortId, TriPortId tsiPortId) { + return triUnmap(); + } +} diff --git a/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java new file mode 100644 index 0000000..449adcc --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java @@ -0,0 +1,398 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides offline mode of test adapter for VxLTE. + * @see + */ +package com.iskratel.ttcn.tri; + +import org.apache.log4j.Logger; +import org.etsi.ttcn.tci.CharstringValue; +import org.etsi.ttcn.tci.IntegerValue; +import org.etsi.ttcn.tci.TciModuleParameterId; +import org.etsi.ttcn.tci.TciTMProvided; +import org.etsi.ttcn.tci.Type; +import org.etsi.ttcn.tri.TriAddress; +import org.etsi.ttcn.tri.TriCommunicationTE; +import org.etsi.ttcn.tri.TriComponentId; +import org.etsi.ttcn.tri.TriMessage; +import org.etsi.ttcn.tri.TriPortId; +import org.etsi.ttcn.tri.TriPortIdList; +import org.etsi.ttcn.tri.TriStatus; + +import com.testingtech.ttcn.tci.TciModuleParameterIdImpl; +import com.testingtech.ttcn.tri.TriAddressImpl; +import com.testingtech.ttcn.tri.TriMessageImpl; +import com.testingtech.ttcn.tri.TriStatusImpl; + +import de.tu_berlin.cs.uebb.muttcn.runtime.RB; + +import java.io.ByteArrayOutputStream; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; + +import net.sourceforge.jpcap.net.*; + +public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapterBase { + + TriCommunicationTE cte = null; + TriPortId comPortId = null; + TriPortId tsiPortId = null; + + protected Logger log = null; + + public static Hashtable ComponentCollection = new Hashtable(); + public static Hashtable ComponentCollectionCompPort = new Hashtable(); + public static Hashtable ComponentCollectionFilter2Port = new Hashtable(); + + private Queue FilterMsgFIFO = new LinkedList<>(); //for selection sequence to which PTC first send resonse + + public String tracefile=""; + + + + public class FilterPackets + { + public List packets; + public String filter; + public TriComponentId componentId; + public TriPortId tsiPortId; + public TriCommunicationTE cte; + final IotConnectionOffline this$0; + + public boolean equals(Object obj) + { + if(obj instanceof FilterPackets) + { + return filter.equals(((FilterPackets)obj).filter); + } else + { + return false; + } + } + + public int hashCode() + { + return filter.hashCode()+componentId.hashCode(); + } + + public FilterPackets(String filter) + { + super(); + this$0 = IotConnectionOffline.this; + this.filter = filter; + } + + public FilterPackets(String filter, TriComponentId componentId, TriPortId tsiPortId, TriCommunicationTE cte) + { + this(filter); + this.componentId = componentId; + this.tsiPortId = tsiPortId; + this.cte = cte; + } + + public void setPackets(List packets){ + this.packets=packets; + } + + public String toString(){ + return (componentId.getComponentName()+" "+tsiPortId.toString()+" "+filter+"\n" + "packets count: "+packets.size()); + } + } + + + public IotConnectionOffline(Logger log, TriCommunicationTE cte) { + this.cte = cte; + this.log = log; + } + + + public synchronized TriStatus triMap(TriPortId comPortId, TriPortId tsiPortId) { + try { + boolean result=false; + log.debug("comPortId.getPortName()= " + comPortId.getPortName() + "; tsiPortId.getPortName()= " + tsiPortId.getPortName()); + // Save parameters for later usage + //this.comPortId = comPortId; + //this.tsiPortId = tsiPortId; + + if(tsiPortId.getPortName().equals("acPort")){ + if (comPortId.getComponent().getComponentName().equals("MTC")){ + this.comPortId = comPortId; + this.tsiPortId = tsiPortId; + ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId); + log.debug(""+ComponentCollection.elements().toString()); + //result = connect(); + result=true; + }else{ + ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId); + //log.debug(""+ComponentCollection.elements().toString()); + result = true; //assume MTC acport was succesfully conected + } + }else + if (tsiPortId.getPortName().equals("sipPort")){ + ComponentCollection.put(comPortId.getComponent().getComponentName()+"-data", tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/*+"-sip"*/, comPortId); + //log.debug(""+ComponentCollection.elements().toString()); + result = true; //asuume MTC acport was succesfully conected + }else + if (tsiPortId.getPortName().equals("diameterPort")){ + ComponentCollection.put(comPortId.getComponent().getComponentName()+"-data", tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/*+"-diameter"*/, comPortId); + //log.debug(""+ComponentCollection.elements().toString()); + result = true; //asuume MTC acport was succesfully conected + }else + if (tsiPortId.getPortName().equals("dPort")){ + ComponentCollection.put(comPortId.getComponent().getComponentName()+"-d", tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()+"-d", comPortId); + //log.debug(""+ComponentCollection.elements().toString()); + result = true; //asuume MTC acport was succesfully conected + }else + if(tsiPortId.getPortName().equals("")){ + result = false; + } + + return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) + : new TriStatusImpl(TriStatus.TRI_ERROR); + //return new TriStatusImpl(TriStatus.TRI_OK); + } catch (Throwable ex) { + ex.printStackTrace(); + } + return new TriStatusImpl(TriStatus.TRI_ERROR); + } + + //public synchronized TriStatus triSend(TriAddress triAddress, + public TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId,TriAddress triAddress, TriMessage triMessage) { + + try { + byte[] buffer = triMessage.getEncodedMessage(); + + if (buffer == null) { + return new TriStatusImpl(TriStatus.TRI_ERROR); + } + log.debug("Send message: "+triMessage.getClass() +"// " + triMessage.toString()); + + int recv_reply = 0; + int iotmsgType = buffer[0]&0xFF | buffer[1]&0xFF << 8; + int iotmsgLen = 2+4+(((buffer[2] & 0xFF))|((buffer[3] & 0xFF) << 8)|((buffer[4] & 0xFF) << 16) | ((buffer[5] & 0xFF)<<24)); + + switch (iotmsgType){ + case 7: /*OPEN_DEVICE_REQ = 0x0007; /**< ID of OpenDeviceRequest */ + log.info("ConfigureREQ"); + byte[] confresp= {0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*OPEN_DEVICE_REP = 0x0008; /**< ID of OpenDeviceReply*/ + + log.debug(this.getTraceFile()); + + recv_reply=receiveBuffer(confresp, confresp.length); + break; + + case 2: /*SET_FILTER_REQ = 0x0002; /**< ID of SetFilterRequest */ + log.info("FilterREQ"); + byte[] filterresp= {0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*SET_FILTER_REP = 0x0009; /**< ID of SetFilterReply */ + + String filter = new String(buffer,10,buffer.length-10); + log.debug(filter); + try { + FilterPackets fp = new FilterPackets(filter, componentId,ComponentCollection.get(componentId.getComponentName()+"-data"), this.cte/*tsiPortId*/); + ComponentCollectionFilter2Port.put(componentId.getComponentName(), fp); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + recv_reply=receiveBuffer(filterresp, filterresp.length); + break; + + case 3:/*START_CAPTURE_REQ = 0x0003; /**< ID of StartCaptureRequest */ + log.info("StartCaptureREQ"); + byte[] startcapresp= {0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*START_CAPTURE_REP = 0x0004; /**< ID of StartCaptureReply */ + + if (!ComponentCollectionFilter2Port.isEmpty()) { + + Enumeration keys = ComponentCollectionFilter2Port.keys(); + + do { + try{ + String key = (String) keys.nextElement(); + FilterPackets fp = ComponentCollectionFilter2Port.get(key); + + ReadCaptureThread t = new ReadCaptureThread (fp.componentId.getComponentName(),log, tracefile,fp); + t.join(1000); + Thread.sleep(100); + + }catch(Exception e){ + log.debug(e.getMessage()); + } + } while (keys.hasMoreElements()); + //adapterCollection.clear(); + } + + recv_reply=receiveBuffer(startcapresp, startcapresp.length); + break; + + case 5:/*STOP_CAPTURE_REQ = 0x0005; /**< ID of StopCaptureRequest */ + log.info("StopCaptureREQ"); + byte[] stopcapresp= {0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*STOP_CAPTURE_REP = 0x0006; /**< ID of StopCaptureReply */ + + if (!ComponentCollectionFilter2Port.isEmpty()) { + + Enumeration keys = ComponentCollectionFilter2Port.keys(); + + do { + try{ + String key = (String) keys.nextElement(); + FilterPackets fp = ComponentCollectionFilter2Port.get(key); + + //Check active capture threads + Thread.sleep(100); + + }catch(Exception e){ + log.debug(e.getMessage()); + } + } while (keys.hasMoreElements()); + //adapterCollection.clear(); + } + + recv_reply=receiveBuffer(stopcapresp, stopcapresp.length); + break; + + default: + + } + +// int packetSize = message.length; +// byte[] packet = new byte[packetSize]; +// System.arraycopy(message, 0, packet, 0, message.length); +// + boolean result=false; + if(tsiPortId.getPortName().equals("acPort")){ + if (componentId.getComponentName().equals("MTC")){ + //result = send(packet); + result = true; + } + else{ + //for selection sequence to which PTC first send resonse //FILTER_REQ - FILTER_REP + FilterMsgFIFO.add(componentId); + //result = send(packet); + result = true; + } + }else{ + //result = send(packet); + result = true; + } + + return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR); + + } catch (Throwable ex) { + log.error("Exception: ", ex); + } + return new TriStatusImpl(TriStatus.TRI_ERROR); + } + + public TriStatus triUnmap(){ + return new TriStatusImpl(TriStatus.TRI_OK); + } + + //public synchronized TriStatus triUnmap() { + public TriStatus triUnmap(TriPortId comPortId, TriPortId tsiPortId) { + //log.info("triUnmap"); + try { + boolean result = true; + + if(tsiPortId.getPortName().equals("acPort")){ + if (comPortId.getComponent().getComponentName().equals("MTC")){ + //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + result = true;//disconnect(); + }else{ + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName(), comPortId); + //log.debug(ComponentCollection.elements().toString()); + result = true; //assume MTC acport was successfully connected + } + }else + if (tsiPortId.getPortName().equals("sipPort")){ + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-data", comPortId); + //log.debug(ComponentCollection.elements().toString()); + result = true; //assume MTC acport was successfully connected + }else + if (tsiPortId.getPortName().equals("diameterPort")){ + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-data", comPortId); + //log.debug(ComponentCollection.elements().toString()); + result = true; //assume MTC acport was successfully connected + }else + if (tsiPortId.getPortName().equals("dPort")){ + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-d", comPortId); + //log.debug(ComponentCollection.elements().toString()); + result = true; //assume MTC acport was successfully connected + }else{ + result = false;//disconnect(); + } + + return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR); + + } catch (Throwable ex) { + log.error("Exception: ", ex); + } + return new TriStatusImpl(TriStatus.TRI_ERROR); + } + + protected int receiveBuffer(byte[] buffer, int bufferSize) { + // Try to decode message + Packet ippacket =new Packet(); + + int packetLength=2+4+(((buffer[2] & 0xFF))|((buffer[3] & 0xFF) << 8)|((buffer[4] & 0xFF) << 16) | ((buffer[5] & 0xFF)<<24)); + if (bufferSize < packetLength) { + return 0; + } + + int iotmsg = ((buffer[0] & 0xFF))|((buffer[1] & 0xFF) << 8);//iot message type + byte[] message = new byte[packetLength]; + + if (iotmsg==1){ //CAPTURE_DATA_IND + byte[] packetb = new byte[packetLength-0x1b]; + System.arraycopy(buffer,0x1b, packetb, 0, packetLength-0x1b); + ippacket = PacketFactory.dataToPacket(1, packetb); + message = new byte[packetLength-0x45];//SIP or DIAMETER message content + System.arraycopy(buffer,0x45, message, 0, packetLength-0x45); + }else{ + System.arraycopy(buffer,0, message, 0, packetLength); + } + //base (MTC) component + TriComponentId compid = comPortId.getComponent(); + //for selection sequence to which PTC first send response - //FILTER_MSG_RSP + if (!FilterMsgFIFO.isEmpty()){ + compid = FilterMsgFIFO.remove(); + } + + TriMessage triMessage =TriMessageImpl.valueOf(message); + TriAddress triAddress = new TriAddressImpl(new byte[] {}); + + synchronized(cte) { + if (iotmsg==1){ //CAPTURE_DATA_IND + //DONE in separate class + } + else + cte.triEnqueueMsg(tsiPortId, triAddress, compid/*comPortId.getComponent()*/, triMessage); + + } + //Return number of bytes to remove from incoming buffer + return packetLength; + } + + public void setTraceFile(String tracefile) { + this.tracefile=tracefile; + } + + public String getTraceFile() { + return this.tracefile; + } +} diff --git a/javasrc/com/iskratel/ttcn/tri/LocalAdapterBase.java b/javasrc/com/iskratel/ttcn/tri/LocalAdapterBase.java new file mode 100644 index 0000000..6106936 --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tri/LocalAdapterBase.java @@ -0,0 +1,28 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides interface of test adapter for VxLTE. + * @see + */ +package com.iskratel.ttcn.tri; + +import java.util.Hashtable; + +import org.etsi.ttcn.tri.TriAddress; +import org.etsi.ttcn.tri.TriComponentId; +import org.etsi.ttcn.tri.TriMessage; +import org.etsi.ttcn.tri.TriPortId; +import org.etsi.ttcn.tri.TriStatus; + +public interface LocalAdapterBase { + + public static Hashtable ComponentCollection = new Hashtable(); + public abstract TriStatus triMap(TriPortId comPortId, TriPortId tsiPortId); + + public abstract TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId,TriAddress triAddress, + TriMessage triMessage); + + public abstract TriStatus triUnmap(); + public abstract TriStatus triUnmap(TriPortId comPortId, TriPortId tsiPortId); + +} \ No newline at end of file diff --git a/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java new file mode 100644 index 0000000..7ec2a16 --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java @@ -0,0 +1,186 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides offline capturing test adapter for VxLTE. + * @see + */ +package com.iskratel.ttcn.tri; + +import org.apache.log4j.Logger; +import org.etsi.ttcn.tri.TriAddress; +import org.etsi.ttcn.tri.TriMessage; + +import com.iskratel.ttcn.tri.IotConnectionOffline.FilterPackets; +import com.testingtech.ttcn.tri.TriAddressImpl; +import com.testingtech.ttcn.tri.TriMessageImpl; + +import net.sourceforge.jpcap.capture.CaptureFileOpenException; +import net.sourceforge.jpcap.capture.CapturePacketException; +import net.sourceforge.jpcap.capture.PacketCapture; +import net.sourceforge.jpcap.capture.PacketListener; +import net.sourceforge.jpcap.capture.RawPacketListener; +import net.sourceforge.jpcap.net.*; + +public class ReadCaptureThread extends Thread implements Runnable{ + + String name; + Thread t; + Logger log; + String tf;//tracefilename + FilterPackets fp; //filterpackets structure with component and ports + + ReadCaptureThread (String threadname){ + name = threadname; + t=new Thread(this,name); + t.start(); + } + + ReadCaptureThread (String threadname,Logger loger, String tracefile,FilterPackets filterpackets){ + name = threadname; + log = loger; + tf = tracefile; + fp = filterpackets; + + t=new Thread(this,name); + t.start(); + } + + public String tracefile=""; + private PacketCapture pcap; + PacketHandler ph; + RawPacketHandler rph; + + + public void run(){ + + try{ + + pcap = new PacketCapture(); + // open devices for capturing (requires root) + try { + pcap.openOffline(this.tf); + } catch (CaptureFileOpenException e) { + log.debug(e.getMessage()); + } + + try{ + // add a BPF filter (see tcpdump documentation) + if (fp.filter.startsWith("udp")){ + pcap.setFilter("(vlan and " + fp.filter+") or ("+fp.filter+")", true); + }else{ + pcap.setFilter(fp.filter, true); + } + // create a handler + // packet + ph = new PacketHandler(fp); + pcap.addPacketListener(ph); + + // raw + //rph = new RawPacketHandler("offline"); + //pcap.addRawPacketListener(rph); + + // capture packets-INFINITE=-1 //***** copied to start capture command + pcap.capture(200); + + } catch (CapturePacketException e) { + + log.debug(this.name+" "+e.getMessage() + "\n");// +e.getStackTrace().toString()); + } + + }catch(/*Interrupted*/Exception e){log.debug(this.name+" "+e.getMessage()+ "\n");} + + //log.debug("Thread ended! "+name);//+" packets " +fp.packets.size()); + } + + class PacketHandler implements PacketListener + { + String name; + private int counter = 0; + //private List packets; + private FilterPackets filterpackets; + + public PacketHandler(String name) { + this.name = name; + } + + public PacketHandler(FilterPackets filterpackets) { + this.name = filterpackets.componentId.getComponentName(); + this.filterpackets = filterpackets; + } + + public void packetArrived(Packet packet) { + this.counter++; + //String type = packet.getClass().getName(); + //System.out.println(name + ": Packet(" + counter + ") is of type " + type + "."); + //log.debug(name + ": Packet(" + counter + ") is of type " + type +"."); + +// if (packet instanceof EthernetPacket){ +// final byte[] data = ((EthernetPacket)(packet)).getData(); +// //System.err.println(new String( data,0,data.length)); +// //System.err.println(((EthernetPacket)(packet)).getProtocol()); +// } + + if(packet instanceof TCPPacket) { + TCPPacket tcpPacket = (TCPPacket)packet; + byte[] message = tcpPacket.getData();//.getTCPData();//TODO: assume data is in one packet + + String srcHost = tcpPacket.getSourceAddress(); + String dstHost = tcpPacket.getDestinationAddress(); + //String isoData = new String(data);//, "ISO-8859-1"); + log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + + TriMessage triMessage =TriMessageImpl.valueOf(message); + TriAddress triAddress = new TriAddressImpl(new byte[] {}); + + synchronized(this.filterpackets.cte) { + log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); + this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); + } + } + + if (packet instanceof UDPPacket){ + UDPPacket udpPacket = (UDPPacket)packet; + byte[] message = udpPacket.getData();//.getUDPData();//TODO: assume data is in one packet + + String srcHost = udpPacket.getSourceAddress(); + String dstHost = udpPacket.getDestinationAddress(); + //String isoData = new String(data);//, "ISO-8859-1"); + log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + + TriMessage triMessage =TriMessageImpl.valueOf(message); + TriAddress triAddress = new TriAddressImpl(new byte[] {}); + + synchronized(this.filterpackets.cte) { + log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); + this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); + } + } + } + +// public List getPackets(){ +// return this.packets; +// } + } + + class RawPacketHandler implements RawPacketListener + { + String name; + private int counter = 0; + //private List rawpackets; + + public RawPacketHandler(String name) { + this.name = name; + } + + public void rawPacketArrived(RawPacket rawPacket) { + this.counter++; + //rawpackets.add(rawPacket); + //System.err.println(rawPacket.getClass().toString()/*rawPacket*/); + } + +// public List getPackets(){ +// return this.rawpackets; +// } + } + +} diff --git a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java new file mode 100644 index 0000000..4faffaa --- /dev/null +++ b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java @@ -0,0 +1,347 @@ +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides test adapter for VxLTE. + * @see + */ +package com.iskratel.ttcn.tri; + + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + +import org.etsi.ttcn.tci.CharstringValue; +import org.etsi.ttcn.tci.EnumeratedValue; +import org.etsi.ttcn.tci.TciCDProvided; +import org.etsi.ttcn.tci.TciCDRequired; +import org.etsi.ttcn.tci.TciModuleId; +import org.etsi.ttcn.tci.TciModuleParameterId; +import org.etsi.ttcn.tci.TciParameterList; +import org.etsi.ttcn.tci.TciTMProvided; +import org.etsi.ttcn.tri.TriAddress; +import org.etsi.ttcn.tri.TriCommunicationSA; +import org.etsi.ttcn.tri.TriComponentId; +import org.etsi.ttcn.tri.TriFunctionId; +import org.etsi.ttcn.tri.TriMessage; +import org.etsi.ttcn.tri.TriParameter; +import org.etsi.ttcn.tri.TriParameterList; +import org.etsi.ttcn.tri.TriPlatformPA; +import org.etsi.ttcn.tri.TriPortId; +import org.etsi.ttcn.tri.TriPortIdList; +import org.etsi.ttcn.tri.TriStatus; +import org.etsi.ttcn.tri.TriTestCaseId; + +import com.iskratel.ttcn.tci.codec.DIAMETERCodec.DIAMETERCodec; +import com.iskratel.ttcn.tci.codec.IOTCodec.IOTCodec; +import com.iskratel.ttcn.tci.codec.LibUpperTesterCodec.LibUpperTesterCodec; +import com.iskratel.ttcn.tci.codec.SIPCodec.SIPCodec; +import com.testingtech.ttcn.logging.RTLoggingConstants; +import com.testingtech.ttcn.logging.TciTLProvidedV321TT; +import com.testingtech.ttcn.tci.TciEncoding; +import com.testingtech.ttcn.tci.TestCaseParameterServer; +import com.testingtech.ttcn.tri.TestAdapter; +import com.testingtech.ttcn.tci.TciModuleParameterIdImpl; +//import com.testingtech.ttcn.tci.TciParameterImpl; +import com.testingtech.ttcn.tci.TciParameterListImpl; +//import com.testingtech.ttcn.tci.TciModuleParameterIdImpl; +import com.testingtech.ttcn.tri.TriStatusImpl; + + +import de.tu_berlin.cs.uebb.muttcn.runtime.RB; + + +public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, TriPlatformPA, TciEncoding, TestCaseParameterServer { + + private static final long serialVersionUID = 1L; + + static Logger log = Logger.getLogger(VxlteAdapter.class); + protected TciTLProvidedV321TT logging; + + private Hashtable adapterCollection = new Hashtable(); + + private TciCDRequired typeServer; + +// private org.etsi.ttcn.tci.Type charstringType; +// private org.etsi.ttcn.tci.Type integerType; +// private org.etsi.ttcn.tci.Type floatType; +// private org.etsi.ttcn.tci.Type booleanType; + + private static TciTMProvided management; + + private String portNameForCoding = ""; + + private static String ROOTFOLDERTRACEFILE ="./tracefiles/"; + private String testcaseName; + + private String sMTCName=""; + private String sMTCportName=""; + + public VxlteAdapter() { + super(); + PropertyConfigurator.configure("log4j.properties"); + //this.logging = RB.getTciTLProvidedV321TT(); + + loginfo("VxLTE Adapter instance created."); + } + + private void loginfo(String message){ + //logging.tliRT("", System.currentTimeMillis(), "", -1, null, RTLoggingConstants.RT_LOG_INFO, message); + log.info(message); + } + + public TestAdapter setRB(RB rb) { + super.setRB(rb); + typeServer = RB.getTciCDRequired(); +// charstringType = typeServer.getCharstring(); +// integerType = typeServer.getInteger(); +// floatType = typeServer.getFloat(); +// booleanType = typeServer.getBoolean(); + management = RB.getTciTMProvided(); + + TciCDProvided codec; + codec=new IOTCodec(RB); + codecs.put("IOTCodec", codec); + + codec=new DIAMETERCodec(RB); + codecs.put("DIAMETERCodec", codec); + + codec=new LibUpperTesterCodec(); + codecs.put("LibUpperTesterCodec", codec); + + codec=new SIPCodec(RB); + ((SIPCodec)codec).setLogger(log); + codecs.put("SIPCodec", codec); + codecs.put("LibSip V3", codec); + + return this; + } + + public TriStatus triMap(TriPortId comPortId, TriPortId tsiPortId) { + + loginfo("triMap: comPortId=" + comPortId.getComponent()+"-"+ comPortId.getPortName() + "; tsiPortId=" + tsiPortId.getComponent() +"-" +tsiPortId.getPortName()); + + //CsaDef.triMap(comPortId, tsiPortId); + + if (comPortId.getComponent().getComponentName().contains("MTC")){ + sMTCName=comPortId.getComponent().getComponentName(); + sMTCportName = tsiPortId.getPortName(); + } + + String portName = comPortId.getComponent().getComponentName()+tsiPortId.getPortName(); + LocalAdapterBase baseAdapter;// = adapterCollection.get(portName); + + if (portName.contains("acPort")){ + baseAdapter = adapterCollection.get(sMTCName/*componentId.getComponentName()+portName*/+tsiPortId.getPortName()); + + if (baseAdapter != null) { + // baseAdapter.ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + baseAdapter.triMap(comPortId, tsiPortId); + }else{//new iot connection ... after check of other criteria - new test started + } + }else + if (portName.contains("sipPort")){ + baseAdapter = adapterCollection.get(sMTCName+sMTCportName); + if (baseAdapter != null) { + // baseAdapter.ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + baseAdapter.triMap(comPortId, tsiPortId); + }else{ + } + }else + if (portName.contains("diameterPort")){ + baseAdapter = adapterCollection.get(sMTCName+sMTCportName); + if (baseAdapter != null) { + // baseAdapter.ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + baseAdapter.triMap(comPortId, tsiPortId); + }else{ + } + }else + if (portName.contains("dPort")){ + baseAdapter = adapterCollection.get(sMTCName+sMTCportName); + if (baseAdapter != null) { + // baseAdapter.ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + baseAdapter.triMap(comPortId, tsiPortId); + }else{ + } + }else{ + baseAdapter = adapterCollection.get(comPortId.getComponent().getComponentName()+portName); + } + + + if (baseAdapter != null) { + return new TriStatusImpl(TriStatus.TRI_OK); + } + + if (portName.contains("acPort")) { + //New test started ... + IotConnectionOffline adapter = new IotConnectionOffline(log, Cte); + adapter.setTraceFile(ROOTFOLDERTRACEFILE+this.testcaseName+".pcapng"); + baseAdapter = adapter; + }else + if (portName.contains("eaPort")){ + EaPortConnection adapter = new EaPortConnection(Cte); + baseAdapter = adapter; + }else { + loginfo("Port not supported (" + portName +")!\n"); + //Init port connection to avoid mapping errors + DummyConnection adapter = new DummyConnection(Cte); + baseAdapter = adapter; + } + + adapterCollection.put(portName, baseAdapter); + return baseAdapter.triMap(comPortId, tsiPortId); + } + + public TriStatus triUnmap(TriPortId comPortId, TriPortId tsiPortId) { + + loginfo("triUnmap: comPortId=" + comPortId.getPortName() + "; tsiPortId="+ tsiPortId.getPortName()); + + //CsaDef.triUnmap(comPortId, tsiPortId); + + String portName = comPortId.getComponent()+tsiPortId.getPortName(); + LocalAdapterBase baseAdapter = adapterCollection.get(portName); + + if (portName.contains("acPort")){ + baseAdapter = adapterCollection.get(sMTCName/*componentId.getComponentName()+portName*/+tsiPortId.getPortName()); + if (baseAdapter != null) { + baseAdapter.triUnmap(comPortId, tsiPortId); + //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + } + }else + if (portName.contains("sipPort")){ + baseAdapter = adapterCollection.get(sMTCName+sMTCportName); + if (baseAdapter != null) { + baseAdapter.triUnmap(comPortId, tsiPortId); + //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + } + }else + if (portName.contains("diameterPort")){ + baseAdapter = adapterCollection.get(sMTCName+sMTCportName); + if (baseAdapter != null) { + baseAdapter.triUnmap(comPortId, tsiPortId); + //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + } + }else + if (portName.contains("dPort")){ + baseAdapter = adapterCollection.get(sMTCName+sMTCportName); + if (baseAdapter != null) { + baseAdapter.triUnmap(comPortId, tsiPortId); + //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + } + }else{ + baseAdapter = adapterCollection.get(comPortId.getComponent().getComponentName()+portName); + } + + if (baseAdapter == null) { + return new TriStatusImpl(TriStatus.TRI_ERROR); + } + + adapterCollection.remove(portName); + return baseAdapter.triUnmap(); + } + + public TriStatus triSAReset() { + + loginfo("triSAReset: started"); + + if (!adapterCollection.isEmpty()) { + + Enumeration keys = adapterCollection.keys(); + + do { + try{ + String key = (String) keys.nextElement(); + LocalAdapterBase baseAdapter = adapterCollection.get(key); + + baseAdapter.triUnmap(); + adapterCollection.remove(key); + }catch(Exception e){} + + } while (keys.hasMoreElements()); + adapterCollection.clear(); + } + + return super.triSAReset(); + } + + public TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId, TriAddress triAddress, TriMessage triMessage) { + + loginfo("triSend: componentId=" + componentId.getComponentName() + "; tsiPortId="+ tsiPortId.getPortName()); + + LocalAdapterBase baseAdapter; + + String portName = tsiPortId.getPortName(); + portNameForCoding = portName; + + if (componentId.getComponentName().contains("MTC")) sMTCName=componentId.getComponentName(); + + + if (portName.contains("acPort")){ + baseAdapter = adapterCollection.get(sMTCName/*componentId.getComponentName()*/+portName); + }else{ + baseAdapter = adapterCollection.get(componentId.getComponentName()+portName); + } + + if (baseAdapter == null) { + return new TriStatusImpl(TriStatus.TRI_ERROR); + } + + return baseAdapter.triSend( componentId, tsiPortId,triAddress, triMessage); + } + + public TriStatus triExternalFunction(TriFunctionId functionId, TriParameterList parameterList, TriParameter returnValue) { + + return new TriStatusImpl(TriStatus.TRI_OK); + } + + public TciCDProvided getCodec(String s) { + + if (s == null || s.equals("")) { + + loginfo("No codec name for usage!!! Last used port = " + portNameForCoding); + if (portNameForCoding.equals("") || portNameForCoding == null) { + s = "IOTCodec"; + } + + else if (portNameForCoding.startsWith("acPort")){ + s= "IOTCodec"; + }else if (portNameForCoding.startsWith("eaPort")){ + s= "LibUpperTesterCodec"; + }else if (portNameForCoding.startsWith("sipPort")){ + s= "SIPCodec"; + }else if (portNameForCoding.startsWith("diameterPort")){ + s= "DIAMETERCodec"; + } + } + + TciCDProvided codec = super.getCodec(s); + + if (codec != null) { + return codec; + } + + return codec; + } + + public TriStatus triExecuteTestcase(TriTestCaseId testcase, TriPortIdList tsiList){ + + //loginfo("Executing TestCase"+ testcase.getTestCaseName()); + + this.testcaseName=testcase.getTestCaseName(); + + return super.triExecuteTestcase(testcase, tsiList); + } + + public TciParameterList getTestCaseParameters(TciModuleId moduleId, String testCaseId) { + + //loginfo("getTestCaseParameters: moduleId=" + moduleId + "; testCaseId=" + testCaseId); + + TciParameterListImpl tciparameterlistimpl = new TciParameterListImpl(); + return tciparameterlistimpl; + } +} diff --git a/javasrc/net/CVS/Entries b/javasrc/net/CVS/Entries new file mode 100644 index 0000000..4a9c4eb --- /dev/null +++ b/javasrc/net/CVS/Entries @@ -0,0 +1,37 @@ +/IPPort.java/1.3/Thu Jun 7 21:50:56 2001// +/IPVersions.java/1.1/Wed May 23 02:42:22 2001// +/RawPacket.java/1.2/Fri Jun 1 06:30:01 2001// +/package.html/1.1/Thu Jun 14 01:21:53 2001// +/ICMPMessage.java/1.4/Tue Jun 26 18:46:02 2001// +/MACAddress.java/1.3/Tue Jun 26 18:46:03 2001// +/TypesOfService.java/1.2/Tue Jun 26 18:46:04 2001// +/ICMPMessages.java/1.4/Tue Jun 26 23:07:03 2001// +/IPAddress.java/1.4/Tue Jun 26 23:07:03 2001// +/ARPFields.java/1.3/Wed Jun 27 02:28:22 2001// +/EthernetFields.java/1.3/Wed Jun 27 02:28:22 2001// +/EthernetProtocol.java/1.3/Wed Jun 27 02:28:22 2001// +/IPFields.java/1.4/Wed Jun 27 02:28:22 2001// +/IPPorts.java/1.3/Wed Jun 27 02:28:22 2001// +/IPProtocol.java/1.4/Wed Jun 27 02:28:22 2001// +/IPProtocols.java/1.4/Wed Jun 27 02:28:22 2001// +/TCPFields.java/1.3/Wed Jun 27 02:28:22 2001// +/UDPFields.java/1.3/Wed Jun 27 02:28:22 2001// +/ARPPacket.java/1.10/Mon Jul 2 00:23:09 2001// +/Packet.java/1.6/Mon Jul 2 00:23:14 2001// +/LinkLayers.java/1.3/Mon Jul 2 03:25:53 2001// +/LinkLayer.java/1.5/Mon Jul 2 04:03:08 2001// +/EthernetProtocols.java/1.6/Sat Aug 25 16:39:53 2001// +/ICMPFields.java/1.5/Sat Aug 25 16:39:53 2001// +/ICMPPacket.java/1.13/Sat Aug 25 16:39:53 2001// +/IGMPFields.java/1.1/Mon Jul 30 00:00:02 2001// +/IGMPMessage.java/1.1/Mon Jul 30 00:00:02 2001// +/IGMPMessages.java/1.1/Mon Jul 30 00:00:02 2001// +/IGMPPacket.java/1.1/Mon Jul 30 00:00:02 2001// +/PacketFactory.java/1.11/Sat Aug 25 16:39:54 2001// +/UDPPacket.java/1.11/Sat Aug 25 16:39:54 2001// +/makefile/1.13/Sat Aug 25 16:39:54 2001// +/EthernetPacket.java/1.14/Thu Jan 10 00:16:58 2002// +/IPPacket.java/1.16/Thu Jan 10 00:16:58 2002// +/PacketEncoding.java/1.3/Thu Jan 10 00:16:59 2002// +/TCPPacket.java/1.17/Thu Jan 10 00:16:59 2002// +D diff --git a/javasrc/net/CVS/Repository b/javasrc/net/CVS/Repository new file mode 100644 index 0000000..891c6ed --- /dev/null +++ b/javasrc/net/CVS/Repository @@ -0,0 +1 @@ +src/java/net/sourceforge/jpcap/net diff --git a/javasrc/net/CVS/Root b/javasrc/net/CVS/Root new file mode 100644 index 0000000..f84ccad --- /dev/null +++ b/javasrc/net/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.jpcap.sourceforge.net:/cvsroot/jpcap diff --git a/javasrc/net/sourceforge/jpcap/capture/.gitignore b/javasrc/net/sourceforge/jpcap/capture/.gitignore new file mode 100644 index 0000000..b3b15a0 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/.gitignore @@ -0,0 +1,11 @@ +# $Id: .cvsignore,v 1.5 2004/03/17 02:04:15 pcharles Exp $ + +# ignore generated native header prototype file +net_sourceforge_jpcap_capture_PacketCapture.h + +# ignore files generated on windows +jpcap.exp +jpcap.dll + +# ignore files generated on os x +libjpcap.jnilib diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java new file mode 100644 index 0000000..477153b --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java @@ -0,0 +1,33 @@ +// $Id: CaptureConfigurationException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This exception occurs when the capture client tries to + * specify a capture device that does not exist or if the capture + * device specified is illegal. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ + */ +public class CaptureConfigurationException extends Exception +{ + /** + * Create a new invalid capture device exception. + */ + public CaptureConfigurationException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: CaptureConfigurationException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java new file mode 100644 index 0000000..ef03df6 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java @@ -0,0 +1,33 @@ +// $Id: CaptureDeviceInvalidException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This exception occurs when the capture client tries to + * specify a capture device that does not exist or if the capture + * device specified is illegal. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ + */ +public class CaptureDeviceInvalidException extends Exception +{ + /** + * Create a new invalid capture device exception. + */ + public CaptureDeviceInvalidException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: CaptureDeviceInvalidException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java new file mode 100644 index 0000000..7f2da6d --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java @@ -0,0 +1,31 @@ +// $Id: CaptureDeviceLookupException.java,v 1.1 2002/02/18 21:51:54 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Rex Tsai * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This exception occurs when no capture devices are detected. + * + * @author Rex Tsai >chihchun@kalug.linux.org.tw< + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2002/02/18 21:51:54 $ + */ +public class CaptureDeviceLookupException extends Exception +{ + /** + * Create a new capture device not found exception. + */ + public CaptureDeviceLookupException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: CaptureDeviceLookupException.java,v 1.1 2002/02/18 21:51:54 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java new file mode 100644 index 0000000..4cff935 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java @@ -0,0 +1,31 @@ +// $Id: CaptureDeviceNotFoundException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This exception occurs when no capture devices are detected. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ + */ +public class CaptureDeviceNotFoundException extends Exception +{ + /** + * Create a new capture device not found exception. + */ + public CaptureDeviceNotFoundException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: CaptureDeviceNotFoundException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java new file mode 100644 index 0000000..fa50804 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java @@ -0,0 +1,31 @@ +// $Id: CaptureDeviceOpenException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This exception occurs when the capture device cannot be opened. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ + */ +public class CaptureDeviceOpenException extends Exception +{ + /** + * Create a new invalid capture device exception. + */ + public CaptureDeviceOpenException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: CaptureDeviceOpenException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java new file mode 100644 index 0000000..68a238a --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java @@ -0,0 +1,31 @@ +// $Id: CaptureFileOpenException.java,v 1.1 2001/12/30 23:07:00 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Christopher Balcerek * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.capture; + +/** + * This exception occurs when the savefile cannot be opened. + * + * @author Christopher Balcerek + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/12/30 23:07:00 $ + */ +public class CaptureFileOpenException extends Exception +{ + /** + * Create a new invalid capture file exception. + */ + public CaptureFileOpenException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: CaptureFileOpenException.java,v 1.1 2001/12/30 23:07:00 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java b/javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java new file mode 100644 index 0000000..a0aa006 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java @@ -0,0 +1,31 @@ +// $Id: CapturePacketException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This exception occurs when an error occurs while capturing data. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ + */ +public class CapturePacketException extends Exception +{ + /** + * Create a new invalid capture device exception. + */ + public CapturePacketException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: CapturePacketException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java b/javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java new file mode 100644 index 0000000..83ee119 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java @@ -0,0 +1,59 @@ +// $Id: CaptureStatistics.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * Packet capture statistics. + *

    + * Encapsulation for statistics collected by PacketCapture. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ + */ +public class CaptureStatistics +{ + /** + * Create a new and empty statistics container. + */ + public CaptureStatistics(int receivedCount, int droppedCount) { + this.receivedCount = receivedCount; + this.droppedCount = droppedCount; + } + + public int getReceivedCount() { + return receivedCount; + } + + public int getDroppedCount() { + return droppedCount; + } + + + /** + * Convert this packet to a readable string. + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + buffer.append("[PacketStatistics: "); + buffer.append("received = " + receivedCount); + buffer.append(", dropped = " + droppedCount); + buffer.append(']'); + + return buffer.toString(); + } + + + private int receivedCount; + private int droppedCount; + + private String _rcsid = + "$Id: CaptureStatistics.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureTest.java b/javasrc/net/sourceforge/jpcap/capture/CaptureTest.java new file mode 100644 index 0000000..8a956a6 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/CaptureTest.java @@ -0,0 +1,125 @@ +// $Id: CaptureTest.java,v 1.2 2001/05/23 02:55:02 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + +import net.sourceforge.jpcap.net.RawPacket; + + +/** + * Class to exercise PacketCapture. + *

    + * Testing of PacketCapture could easily be implemented in the same class's + * main method, but since the tester is a client and must implement the + * listener interface, seems clearer to decouple the two. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.2 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/23 02:55:02 $ + */ +public class CaptureTest implements RawPacketListener +{ + protected static String NAME = "CaptureTest"; + protected static int TEST_COUNT = 2; + + /** + * Create a new tester. + */ + public CaptureTest() { + } + + + // implementation of RawPacketListener interface + + public void rawPacketArrived(RawPacket rawPacket) { + System.err.println(NAME + ": " + rawPacket + " arrived"); + } + + + // implementation of test logic + + /** + * Execute the test. + */ + public void runTest() { + //-- create PacketCapture system + System.err.println(NAME + ": instantiating PacketCapture object.. "); + PacketCapture pc = new PacketCapture(); + System.err.println(NAME + ": PacketCapture instantiated ok"); + + //-- set the capture device + String device = null; + try { + System.err.print(NAME + ": detecting capture device.. "); + device = pc.findDevice(); + System.err.println(device); + } + catch(CaptureDeviceNotFoundException e) { + // usually occurs if no network devices are available on the system + System.err.println(e); + System.exit(1); + } + + //-- open the capture device + try { + System.err.print(NAME + ": opening capture device.. "); + pc.open(device, true); + System.err.println(device); + } + catch(CaptureDeviceOpenException e) { + // usually occurs if the user doesn't have sufficient privileges + System.err.println(e); + System.exit(1); + } + + //-- set filters + try { + String filter = ""; // nothing filtered by default + System.err.println(NAME + ": setting filter to '" + filter + "'.. "); + pc.setFilter(filter, true); + System.err.println(NAME + ": filter compiled and activated ok"); + } + catch(InvalidFilterException e) { + System.err.println(e); + System.exit(1); + } + + //-- register the tester as a packet listener + System.err.print(NAME + ": registering as a packet listener.. "); + pc.addRawPacketListener(this); + System.err.println("ok"); + + //-- capture packets + try { + int count = TEST_COUNT; + System.err.println(NAME + ": waiting for " + count + " packet(s).. "); + pc.capture(count); + System.err.println(NAME + ": done capturing."); + } + catch(CapturePacketException e) { + System.err.println(e); + System.exit(1); + } + + //-- dump statistics + System.err.println(pc.getStatistics()); + } + + + /** + * Simple test to exercise PacketCapture. + */ + public static void main(String [] args) { + CaptureTest ct = new CaptureTest(); + ct.runTest(); + } + + + private String _rcsid = + "$Id: CaptureTest.java,v 1.2 2001/05/23 02:55:02 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java b/javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java new file mode 100644 index 0000000..c950ee7 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java @@ -0,0 +1,31 @@ +// $Id: InvalidFilterException.java,v 1.2 2001/08/21 23:30:12 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This exception occurs when an error occurs while capturing data. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.2 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/08/21 23:30:12 $ + */ +public class InvalidFilterException extends Exception +{ + /** + * Create a new invalid filter exception. + */ + public InvalidFilterException(String message) { + super(message); + } + + + private static String _rcsId = + "$Id: InvalidFilterException.java,v 1.2 2001/08/21 23:30:12 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketCapture.java b/javasrc/net/sourceforge/jpcap/capture/PacketCapture.java new file mode 100644 index 0000000..d6116f0 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/PacketCapture.java @@ -0,0 +1,214 @@ +// $Id: PacketCapture.java,v 1.18 2004/10/22 21:28:04 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + +import java.net.NetworkInterface; +import java.util.Enumeration; +import java.util.ArrayList; + + +/** + * This class is the core of packet capture in jpcap. It provides a + * high-level interface for capturing network packets by encapsulating + * libpcap. + *

    + * If you want to capture network packets, implement PacketListener + * and register with an instance of this class. When packets arrive, + * the object will call you back via packetArrived(). + *

    + * Examples can be found in net.sourceforge.jpcap.tutorial. + *

    + * For more documentation on this class's methods, see PacketCaptureCapable; + * Javadoc is 'inherited' from this interface. + *

    + * PacketCapture utilizes libpcap's pcap_loop(). + * For pcap_dispatch()-type behavior, see the endCapture() method. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.18 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/10/22 21:28:04 $ + */ +public class PacketCapture extends PacketCaptureBase + implements PacketCaptureCapable +{ + /** + * Name of the java-enabled wrapper around libpcap. + */ + protected static String LIB_PCAP_WRAPPER = "jpcap"; + + + /** + * Create a new packet capture instance. + */ + public PacketCapture() { + if(nextInstance >= INSTANCE_MAX) { + throw new Error("Too many instances, exceeds " + INSTANCE_MAX); + } + + instanceNum = nextInstance ++; + } + + // methods for controlling a packet capture session + + public void open(String device, boolean promiscuous) + throws CaptureDeviceOpenException { + open(instanceNum, device, DEFAULT_SNAPLEN, promiscuous, DEFAULT_TIMEOUT); + } + + public void open(String device, int snaplen, + boolean promiscuous, int timeout) + throws CaptureDeviceOpenException { + open(instanceNum, device, snaplen, promiscuous, timeout); + } + + public native void open(int instance, String device, int snaplen, + boolean promiscuous, int timeout) + throws CaptureDeviceOpenException; + + + public void openOffline(String fileName) throws CaptureFileOpenException { + openOffline(instanceNum, fileName); + } + + public native void openOffline(int instance, String fileName) + throws CaptureFileOpenException; + + public void setFilter(String filterExpression, boolean optimize) + throws InvalidFilterException { + setFilter(instanceNum, filterExpression, optimize); + } + + public native void setFilter(int instance, String filterExpression, + boolean optimize) + throws InvalidFilterException; + + public void capture(int count) throws CapturePacketException { + + capture(instanceNum, count); + } + + public native void capture(int instance, int count) + throws CapturePacketException; + + public CaptureStatistics getStatistics() { + setupStatistics(); + + // transfer the values setup by the native method into + // the container and return to the caller + return new CaptureStatistics(receivedCount, droppedCount); + } + + /** + * Close cleans up after a packet capture session. + * It does _not_ terminate a packet capture. + * capture() does not return control until 'count' packets are captured. + *

    + * If you are looking for a way to signal an end to a capture session + * before a set number of packets are received, check out the class + * SyncPacketCapture. + */ + public native void close(int instance); + + public void close() { + close(instanceNum); + } + + public native void endCapture(int instance); + + public void endCapture() { + endCapture(instanceNum); + } + + + /** + * Get Interface List + * @return Network device interface names. + */ + /* + public static native String[] lookupDevices() + throws CaptureDeviceLookupException; + */ + + /** + * note: the following code is a viable non-native alternative to + * lookupDevices(). However, it requires jdk1.4. Currently, all + * of the jpcap code builds on jdk1.2, making it 'portable' to a + * large number of platforms and vm's. + * + */ + public static String[] lookupDevices() throws CaptureDeviceLookupException { + String [] deviceList; + ArrayList jDevsList = new ArrayList(); + try { + Enumeration e = NetworkInterface.getNetworkInterfaces(); + while( e.hasMoreElements()) { + NetworkInterface ni = (NetworkInterface)e.nextElement(); + jDevsList.add(ni.getName()); + System.err.println(ni.getName()); + } + } + catch (Exception e) { + } + deviceList = jDevsList.toArray(new String[jDevsList.size()]); + return deviceList; + } + + + // the following methods could be static, but aren't so that they + // can be included in the PacketCaptureCapable interface. + + public native String findDevice() + throws CaptureDeviceNotFoundException; + + public native int getNetwork(String device) + throws CaptureConfigurationException; + + public native int getNetmask(String device) + throws CaptureConfigurationException; + + public int getLinkLayerType() throws CaptureConfigurationException { + return getLinkLayerType(instanceNum); + } + + public native int getLinkLayerType(int instance) + throws CaptureConfigurationException; + + public int getSnapshotLength() { + return getSnapshotLength(instanceNum); + } + + public native int getSnapshotLength(int instance); + + + /** + * The packet capture library sets up the statistic counter members + * when this method is invoked internally. + */ + private native void setupStatistics(int instance); + + private void setupStatistics() { + setupStatistics(instanceNum); + } + + + // static initialization + + static { + System.err.print("PacketCapture: loading native library jpcap.. "); + System.loadLibrary(LIB_PCAP_WRAPPER); + System.err.println("ok"); + } + + + private int instanceNum = 0; // the index of this instance + private static int nextInstance = 0; // static instance counter + private static int INSTANCE_MAX = 20; //original limit 10 + private String _rcsid = + "$Id: PacketCapture.java,v 1.18 2004/10/22 21:28:04 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java b/javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java new file mode 100644 index 0000000..abda8cf --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java @@ -0,0 +1,91 @@ +// $Id: PacketCaptureBase.java,v 1.5 2004/05/05 23:14:44 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + +import net.sourceforge.jpcap.util.Timeval; +import net.sourceforge.jpcap.net.Packet; +import net.sourceforge.jpcap.net.RawPacket; +import net.sourceforge.jpcap.net.PacketFactory; + + +/** + * This class contains base functionality shared by + * both the simulator and the actual packet capture system. + *

    + * Regardless of whether 'real' packets are being captured off a network + * or 'fake' packets are being generated by the simulator, + * the packet dispatch logic is the same. + *

    + * This class is abstract because it is useless standalone. The + * packet capture system which inherits from this class must provide a + * way of feeding data to handlePacket() where it is then dispatched to + * listeners. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:44 $ + */ +public abstract class PacketCaptureBase + extends PacketDispatcher implements PacketHandler +{ + // internal packet handling implementation + + /** + * Handle arriving packets. + *

    + * Arriving packets are dispatched to registered packet listeners. + * If caplen is smaller than length, then the packet was truncated + * because the amount of data on the wire exceeded the snapshot length + * specified when open() was called. + *

    + * In the simulator case, fake packets are generated and this method + * called with the fabricated data. In the case of the capture system, + * the native library libjpcap calls the method back. + * + * @param length the length of the packet off of the wire. + * @param caplen the number of bytes actually captured. + * @param seconds the seconds component of the timestamp. + * @param useconds the microseconds component of the timestamp. + * @param data the contents of the captured packet. + */ + public void handlePacket(int length, int caplen, + int seconds, int useconds, byte [] data) { + // create a raw packet and abstract packet from the raw data + Timeval tv = new Timeval(seconds, useconds); + + RawPacket rp = new RawPacket(tv, data, + length > caplen ? length - caplen : 0); + //Packet p = PacketFactory.dataToPacket(linkType, data, tv); + Packet p = PacketFactory.dataToPacket(linkType, data); + // dispatch the raw packet to registered listeners.. + dispatchRawPacket(rp); + + // dispatch the packet to listeners interested in packet objects.. + dispatchPacket(p); + } + + + /** + * The link-type code for the currently open network device. + * The type is queried and set in open() and then utilized when + * packets are received by handlePacket(). + */ + public int linkType; + + // the following are redundant with what's stored in CaptureStatistics. + // this is temporary storage enabling the native code's statistics function + // to manipulate the results directly in this class rather than trying + // to modify fields inside an object held by this object. + // figure out how to do this more elegantly. + public int receivedCount = 0; + public int droppedCount = 0; + + private String _rcsid = + "$Id: PacketCaptureBase.java,v 1.5 2004/05/05 23:14:44 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java b/javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java new file mode 100644 index 0000000..a88eacf --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java @@ -0,0 +1,186 @@ +// $Id: PacketCaptureCapable.java,v 1.4 2003/06/24 20:30:18 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This is the packet capture interface. It is implemented by both the + * packet capture system (PacketCapture) and the simulator + * (PacketCaptureSimulator). + *

    + * The interface has two major components: methods that a client uses + * to register for packet events and methods that a client + * calls in order to setup and initiate packet capture. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.4 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/06/24 20:30:18 $ + */ +public interface PacketCaptureCapable +{ + /** + * Snapshot length. Maximum number of bytes per packet to capture. + * For IPv4, 96 bytes guarantees that at least the headers of most + * packet types and protocols will get captured. + * For IPv6, 68 is a better value? + */ + int DEFAULT_SNAPLEN = 96; + + /** + * Default capture timeout in milliseconds. + */ + int DEFAULT_TIMEOUT = 1000; + + + // capture component of interface + + /** + * Open a network device for data capture. Throws an exception if + * the device name specified is invalid. Uses default values for + * the capture timeout and snaplen. + * + * @param device the name of the network device. + * Examples of valid network devices on linux are 'eth0' and 'ppp0'. + * @param promiscuous whether or not the device should be opened in + * promiscuous mode. + */ + void open(String device, boolean promiscuous) + throws CaptureDeviceOpenException; + + /** + * Open a network device for data capture. + * + * @param device the name of the network device. + * Examples of valid network devices on linux are 'eth0' and 'ppp0'. + * @param snaplen the 'snapshot' length. Defines the maximum number of + * bytes to save from each captured packet. + * @param promiscuous whether or not the device should be opened in + * promiscuous mode. + * @param timeout the packet capture timeout in milliseconds. + */ + void open(String device, int snaplen, boolean promiscuous, int timeout) + throws CaptureDeviceOpenException; + + /** + * Open a tcpdump-formatted savefile. + * + * @param fileName the name of the savefile. + */ + void openOffline(String fileName) + throws CaptureFileOpenException; + + /** + * Create, compile and activate a filter from a filter expression. + * + * @param filterExpression the filter expression. For example, + * the expression "host techno" would filter only packets sent or + * arriving at the host named techno. + * @param optimize whether or not the resulting bpf code is optimized + * internally by libpcap. + */ + void setFilter(String filterExpression, boolean optimize) + throws InvalidFilterException; + + /** + * Capture packets. + * + * @param count the number of packets to capture. + * If count is negative, capture will block forever, unless an exception + * is thrown. + */ + void capture(int count) + throws CapturePacketException; + + /** + * Fetch statistics on captured packets. + * This method should not be called unless capture() was previously called. + * + * @return packet capture statistics. + */ + CaptureStatistics getStatistics(); + + /** + * Close the capture device. + */ + void close(); + + + // static native methods to fetch capture device and network information + + /** + * Detect a network device suitable for packet capture. + * + * @return a string describing the network device. if no device can be + * found, null is returned. + */ + String findDevice() + throws CaptureDeviceNotFoundException; + + /** + * Fetch the network number for the specified device. + * + * @param device the name of the network device. + * @return the network address + */ + int getNetwork(String device) + throws CaptureConfigurationException; + + /** + * Fetch the network mask for the specified device. + * + * @param device the name of the network device. + * @return the netmask address + */ + int getNetmask(String device) + throws CaptureConfigurationException; + + /** + * Fetch the link layer type for the specified device. + * + * @return the link layer type code. + */ + int getLinkLayerType() + throws CaptureConfigurationException; + + /** + * Get the snapshot length given that network device is open. + * + * @return the packet snapshot length. + */ + int getSnapshotLength(); + + // listener registration component of interface + + /** + * Register a raw packet listener with this capture system. + * @param rawListener the raw packet listener to add to the notification + * list. + */ + void addRawPacketListener(RawPacketListener rawListener); + + /** + * Deregister a raw packet listener from this capture system. + * @param rawListener the raw packet listener to remove from the + * notification list. + */ + void removeRawPacketListener(RawPacketListener rawListener); + + /** + * Register a packet object listener with this capture system. + * @param objListener the packet listener to add to the notification list. + */ + void addPacketListener(PacketListener objListener); + + /** + * Deregister a packet object listener from this capture system. + * @param objListener the packet listener to remove from the + * notification list. + */ + void removePacketListener(PacketListener objListener); +} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java b/javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java new file mode 100644 index 0000000..244a8f6 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java @@ -0,0 +1,48 @@ +// $Id: PacketDispatchCapable.java,v 1.1 2001/06/18 05:01:53 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * An interface for classes capable of dispatching captured network + * packets. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/18 05:01:53 $ + */ +public interface PacketDispatchCapable +{ + /** + * Register a raw packet listener with this capture system. + * @param rawListener the raw packet listener to add to the notification + * list. + */ + void addRawPacketListener(RawPacketListener rawListener); + + /** + * Deregister a raw packet listener from this capture system. + * @param rawListener the raw packet listener to remove from the + * notification list. + */ + void removeRawPacketListener(RawPacketListener rawListener); + + /** + * Register a packet object listener with this capture system. + * @param objListener the packet listener to add to the notification list. + */ + void addPacketListener(PacketListener objListener); + + /** + * Deregister a packet object listener from this capture system. + * @param objListener the packet listener to remove from the + * notification list. + */ + void removePacketListener(PacketListener objListener); +} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java b/javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java new file mode 100644 index 0000000..bf2ffda --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java @@ -0,0 +1,108 @@ +// $Id: PacketDispatcher.java,v 1.3 2004/10/02 01:23:19 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + +import java.util.Iterator; +import java.util.HashSet; +import net.sourceforge.jpcap.net.Packet; +import net.sourceforge.jpcap.net.RawPacket; + + +/** + * This class encapsulates a mechanism for dispatching network data and + * packets to a listener who has subscribed to such events. + *

    + * Since this class doesn't contain an implementation for handling + * real network data, it is abstract. + *

    + * This class is extended by packet capture systems which, although + * they may utilize different sources of packet data, share a common + * mechanism for dispatching the packets. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ + */ +public abstract class PacketDispatcher implements PacketDispatchCapable +{ + /** + * Register a raw packet listener with this capture system. + * @param rawListener the raw packet listener to add to the notification + * list. + */ + public void addRawPacketListener(RawPacketListener rawListener) { + rawListeners.add(rawListener); + } + + /** + * Deregister a raw packet listener from this capture system. + * @param rawListener the raw packet listener to remove from the + * notification list. + */ + public void removeRawPacketListener(RawPacketListener rawListener) { + rawListeners.remove(rawListener); + } + + /** + * Register a packet object listener with this capture system. + * @param objListener the packet listener to add to the notification list. + */ + public void addPacketListener(PacketListener objListener) { + objListeners.add(objListener); + } + + /** + * Deregister a packet object listener from this capture system. + * @param objListener the packet listener to remove from the + * notification list. + */ + public void removePacketListener(PacketListener objListener) { + objListeners.remove(objListener); + } + + /** + * Dispatch a raw packet to all registered listeners. + */ + public void dispatchRawPacket(RawPacket rawPacket) { + Iterator i = rawListeners.iterator(); + while(i.hasNext()) { + RawPacketListener pl = (RawPacketListener)i.next(); + // System.err.println(NAME + ": calling registered listener " + pl); + pl.rawPacketArrived(rawPacket); + } + } + + /** + * Dispatch a packet to all registered listeners. + */ + public void dispatchPacket(Packet packet) { + Iterator i = objListeners.iterator(); + while(i.hasNext()) { + PacketListener pl = (PacketListener)i.next(); + // System.err.println(NAME + ": calling registered listener " + pl); + pl.packetArrived(packet); + } + } + + + /** + * Registered clients listening for raw packets captured by this object. + */ + //jdk1.5: HashSet rawListeners = new HashSet(); + HashSet rawListeners = new HashSet(); + + /** + * Registered clients listening for packet objects captured by this object. + */ + //jdk1.5: HashSet objListeners = new HashSet(); + HashSet objListeners = new HashSet(); + + private String _rcsid = + "$Id: PacketDispatcher.java,v 1.3 2004/10/02 01:23:19 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketHandler.java b/javasrc/net/sourceforge/jpcap/capture/PacketHandler.java new file mode 100644 index 0000000..01224a0 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/PacketHandler.java @@ -0,0 +1,40 @@ +// $Id: PacketHandler.java,v 1.2 2001/06/18 05:03:35 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + + +/** + * This is the jpcap internal capture interface. libjpcap + * calls back the jpcap packet handler via this interface when packets + * arrive. + *

    + * If you are writing an application which captures packets from jpcap, + * you probably want to look at PacketCapture and PacketListener. + *

    + * The scope of this class is protected because it is only used internally + * as a contract between libjpcap and PacketCaptureBase. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.2 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/18 05:03:35 $ + */ +interface PacketHandler +{ + /** + * Handle an arriving packet. + * + * @param length the length of the packet off of the wire. + * @param caplen the number of bytes actually captured. + * @param seconds the seconds component of the timestamp. + * @param useconds the microseconds component of the timestamp. + * @param data the contents of the captured packet. + */ + void handlePacket(int length, int caplen, int seconds, int useconds, + byte [] data); +} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketListener.java b/javasrc/net/sourceforge/jpcap/capture/PacketListener.java new file mode 100644 index 0000000..3f50f08 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/PacketListener.java @@ -0,0 +1,27 @@ +// $Id: PacketListener.java,v 1.3 2001/05/25 13:46:00 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + +import net.sourceforge.jpcap.net.Packet; + + +/** + * Packet data listener. + *

    + * Applications interested in listening for packets must register + * with PacketCapture and implement PacketDataListener. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/25 13:46:00 $ + */ +public interface PacketListener +{ + void packetArrived(Packet packet); +} diff --git a/javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java b/javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java new file mode 100644 index 0000000..0f080dc --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java @@ -0,0 +1,27 @@ +// $Id: RawPacketListener.java,v 1.1 2001/05/23 02:55:02 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.capture; + +import net.sourceforge.jpcap.net.RawPacket; + + +/** + * Raw packet data listener. + *

    + * Applications interested in listening for raw packet data must register + * with PacketCapture and implement RawPacketDataListener. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/23 02:55:02 $ + */ +public interface RawPacketListener +{ + void rawPacketArrived(RawPacket rawPacket); +} diff --git a/javasrc/net/sourceforge/jpcap/capture/jpcap.c b/javasrc/net/sourceforge/jpcap/capture/jpcap.c new file mode 100644 index 0000000..4302859 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/jpcap.c @@ -0,0 +1,825 @@ +// $Id: jpcap.c,v 1.24 2004/10/07 18:04:41 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +// A libpcap wrapper with java native hooks. +// +// @author Jonas Lehmann and Patrick Charles +// @version $Revision: 1.24 $ +// @lastModifiedBy $Author: pcharles $ +// @lastModifiedAt $Date: 2004/10/07 18:04:41 $ +// +#include +#include +extern "C" { +#include +} +#include +#include "process.hpp" + + +#ifndef WIN32 +#include +#include +#include +#include +#include +#include +#include +#include +#else /*WIN32*/ + +/* KRIS: (28/04/2002) It seems to me that __int64 is a CygWin GCC problem + MSVC has __int64 as a build type */ +#ifdef __GNUC__ +// typedef long __int64; +// /* FIXME: This is dirty. */ +// /* __int64 required for jlong in jni_md.h */ +// /* __int64 should be 8 byte integer */ + +#endif + +#endif /*WIN32*/ + +// native function headers generated by javah +#include "net_sourceforge_jpcap_capture_PacketCapture.h" + +#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && \ + !defined(__bsdi__) && !defined(__APPLE__) && !defined(WIN32) && \ + !defined(__CYGWIN__) +# define DO_SELECT +#endif + + +/***************************************************************************** + * global variables + */ + +#define FALSE 0 +#define TRUE 1 + +static pcap_t *PD[10] = // packet capture device. + {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; +jobject javaObject; // reference to java object hooked into this wrapper lib. +JNIEnv *javaEnvironment; // java vm containing running java object. +const int VERBOSE = 0; // for debugging + +typedef struct pcap_attr { + int pcapGo; + // add any further attributes here. +}; + +/* +static int pcapGo[10] = // state variable for each packet capture device + {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE}; +*/ + +static pcap_attr attr[10] = // state variable for each packet capture device + {{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}; + +const char *DEVICE_NOT_FOUND_EXCEPTION = + "net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException"; +const char *DEVICE_OPEN_EXCEPTION = + "net/sourceforge/jpcap/capture/CaptureDeviceOpenException"; +const char *DEVICE_LOOKUP_EXCEPTION = + "net/sourceforge/jpcap/capture/CaptureDeviceLookupException"; +const char *CAPTURE_EXCEPTION = + "net/sourceforge/jpcap/capture/CapturePacketException"; +const char *CONFIGURATION_EXCEPTION = + "net/sourceforge/jpcap/capture/CaptureConfigurationException"; +const char *INVALID_FILTER_EXCEPTION = + "net/sourceforge/jpcap/capture/InvalidFilterException"; +const char *CLASS_EXCEPTION = + "java/lang/ClassNotFoundException"; +const char *FILE_OPEN_EXCEPTION = + "net/sourceforge/jpcap/capture/CaptureFileOpenException"; + + +/***************************************************************************** + * utility functions + */ + +/* + * Write captured packet data to stderr. + */ +void printPacket(u_char *user, u_char *cp, u_int caplen, u_int length, + u_int seconds, u_int useconds) +{ + register u_int i, s; + register int nshorts; + + nshorts = (u_int) caplen / sizeof(u_short); + + fprintf(stderr, "Packet: u = %s, l = %d of %d, t = %u.%06u, d = ", + user, caplen, length, seconds, useconds); + + i = 0; + while (--nshorts >= 0) { + if ((i++ % 8) == 0) + fprintf(stderr, "\n\t\t\t"); + s = *cp++; + fprintf(stderr, " %02x%02x", s, *cp++); + } + + if (caplen & 1) { + if ((i % 8) == 0) + (void)fprintf(stderr, "\n\t\t\t"); + (void)fprintf(stderr, " %02x", *cp); + } + + fprintf(stderr, "\t\n"); +} + + +/* + * Create and throw an exception into the Java VM using this wrapper. + * If the specified exception class can't be found, the VM will throw + * a class not found exception. + */ +void throwException(JNIEnv *env, const char *excClassName, char *message) { + // create an instance of the specified exception + jclass exception = env->FindClass(excClassName); + + if(exception != NULL) + // throw the new exception back to the java wrapper + env->ThrowNew(exception, message); + + // free the local reference. if exception is still null, delete is a noop. + env->DeleteLocalRef(exception); + +} + + +/***************************************************************************** + * implementation of pcap wrapper functions with java hooks + */ + +/* + * Callback called by pcap_loop() for processing packet data. + * This method is called whenever a packet is captured by the pcap_loop() + * in _capture(). It decomposes the captured data and transfers it + * to the PacketCapture object in the attached java VM. + */ +void processData(u_char *user, struct pcap_pkthdr *h, jbyte *sp) { + processing *proc; + proc = (processing *) user; + proc->processData(user, h, sp); +} + +/* + * Look up a network device. + * Throws a CaptureDeviceNotFoundException if no suitable device is found. + * + * JNI PacketCapture.findDevice() + */ +JNIEXPORT jstring JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_findDevice +(JNIEnv *env, jobject obj) { + char ebuf[PCAP_ERRBUF_SIZE]; + +#ifndef WIN32 + char *device = pcap_lookupdev(ebuf); + + if(device == NULL) { + // if no device can be found, throw an exception back to the java wrapper + throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); + return NULL; + } + else + return env->NewStringUTF(device); + +#else /*WIN32*/ + //char buf[256]; + wchar_t *dev; + char buf_all[516]; + char* desc = 0; + int i=0, t=0; + dev = (wchar_t *)pcap_lookupdev(ebuf); + if (dev) { + if (dev[0]<256) { /* NT / 2000 */ + if (dev[0]==0 && dev[1]==0) { + throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); + return NULL; /* no device */ + } + // Do the same thing as lookupDevices, so that we can + // find a human-readable device name + //wcstombs(buf,(wchar_t *)dev,255); + //return env->NewStringUTF(buf); + + while(!(dev[i]==0 && dev[i-1]==0)) { + i++; + } + + // human-readable descriptions are placed after the device names + desc = (char*)(dev + i + 1); + + t = wcstombs(buf_all,(wchar_t *)dev,255); + + buf_all[t++] = '\n'; + buf_all[t++] = ' '; + buf_all[t++] = ' '; // set "\n " as windows signature + + while (*desc != 0) { + if (t < 514) + buf_all[t++] = *desc; + desc++; + } + return env->NewStringUTF(buf_all); + + } else { /* 9x */ + char *dev9x = (char *)dev; + + if (dev9x[0]==0 && dev9x[1]==0) { + throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); + return NULL; /* no device */ + } + + return env->NewStringUTF((char *)(dev9x)); + } + } else { + throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); + return NULL; /* no device */ + } + +#endif +} + +/* + * Open a network device for data capture. + * Throws an OpenException if the device cannot be opened. + * If the open is successful, sets the global device pointer. + * + * JNI PacketCapture.open() + */ +JNIEXPORT void JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_open + (JNIEnv *env, jobject object, jint instance, jstring jdevice, jint snaplen, + jboolean promiscuous, jint timeout) +{ + char ebuf[PCAP_ERRBUF_SIZE]; + int linkType; + jfieldID fid; + jclass cls; + const char *device; + + if(jdevice == NULL) { + // device can't be null; throw an exception back to java wrapper + throwException(env, DEVICE_OPEN_EXCEPTION, "null device specified"); + return; + } + + device = env->GetStringUTFChars(jdevice, 0); + + PD[instance] = + pcap_open_live((char*)device, snaplen, promiscuous, timeout, ebuf); + + if(PD[instance] == NULL) { + // if the open fails, throw an exception back to the java wrapper + throwException(env, DEVICE_OPEN_EXCEPTION, ebuf); + return; + } + + attr[instance].pcapGo = FALSE; + + // set the link type in the java wrapper encapsulating the capture system + linkType = pcap_datalink(PD[instance]); + cls = env->GetObjectClass(object); + fid = env->GetFieldID(cls, "linkType", "I"); + + if (fid == 0) { + // catch native/java field inconsistencies + throwException(env, CLASS_EXCEPTION, + "couldn't find member PacketCapture.linkType!"); + return; + } + env->SetIntField(object, fid, linkType); +} + +/* + * Open a tcpdump-formatted "savefile" for reading captured packets + * as an alternative to capturing packets off the wire. + * + * JNI PacketCapture.openOffline() + */ +JNIEXPORT void JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_openOffline + (JNIEnv *env, jobject object, jint instance, jstring jfileName) +{ + const char* fileName; + char ebuf[PCAP_ERRBUF_SIZE]; + jfieldID fid; + jclass cls; + int linkType; + + if(jfileName == NULL) { + throwException(env, FILE_OPEN_EXCEPTION, "null file name specified" ); + return; + } + + fileName = env->GetStringUTFChars(jfileName, 0); + PD[instance] = pcap_open_offline(fileName, ebuf); + + if(PD[instance] == NULL) { + throwException(env, FILE_OPEN_EXCEPTION, ebuf); + return; + } + + // set the link type in the java wrapper encapsulating the capture system + linkType = pcap_datalink(PD[instance]); + cls = env->GetObjectClass(object); + fid = env->GetFieldID(cls, "linkType", "I"); + if (fid == 0) { + // catch native/java field inconsistencies + throwException(env, CLASS_EXCEPTION, + "couldn't find member PacketCapture.linkType!"); + return; + } + env->SetIntField(object, fid, linkType); + + attr[instance].pcapGo = FALSE; + +} + +/* + * Capture packets. + * Throws a CapturePacketException if a problem occurs during the capture. + * + * JNI PacketCapture.capture() + */ +JNIEXPORT void JNICALL Java_net_sourceforge_jpcap_capture_PacketCapture_capture +(JNIEnv *env, jobject obj, jint instance, jint count) { + + processing *p = new(processing); + p->javaEnvironment = env; + p->javaObject = obj; + + // make sure a device is open before allowing the capture session to start + if(PD[instance] == NULL) { + throwException(env, CAPTURE_EXCEPTION, + "a device must be open before capturing packets"); + return; + } + +#ifdef PCAP_LOOP // the old way of capturing + if (pcap_loop(PD[instance], count, + (pcap_handler)processData, (u_char *)p) < 0) + // if the capture failed, throw an exception back to the java wrapper + throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); + +#else + attr[instance].pcapGo = TRUE; + int cnt = 0; + if (pcap_file(PD[instance]) == NULL) { // live capture + +#ifdef DO_SELECT + fd_set fd_wait; + int sel; + struct timeval st; + + while (attr[instance].pcapGo && ((count <= 0) ? true : (cnt < count))) + { + FD_ZERO(&fd_wait); + FD_SET(pcap_fileno(PD[instance]), &fd_wait); + st.tv_sec = 1; + st.tv_usec = 0; + + sel = select(FD_SETSIZE, &fd_wait, NULL, NULL, &st); + + if (sel > 0) { // OK, select says we have a packet in the queue + cnt++; + if (pcap_dispatch(PD[instance], 1, + (pcap_handler)processData, (u_char *)p) < 0) { + // if the capture failed, throw an exception back to the java wrapper + throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); + return; + } + } else if (sel < 0) { + throwException(env, CAPTURE_EXCEPTION, "select() returns -1"); + return; + } + } + +#else // !DO_SELECT + while (attr[instance].pcapGo && ((count <= 0) ? true : (cnt < count))) { + cnt++; + if (pcap_dispatch(PD[instance], 1, + (pcap_handler)processData, (u_char *)p) < 0) { + // if the capture failed, throw an exception back to the java wrapper + throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); + return; + } + } + +#endif // DO_SELECT + } + else { + while (attr[instance].pcapGo && ((count <= 0) ? true : (cnt < count))) { + cnt++; + int ret = (pcap_dispatch(PD[instance], 1, + (pcap_handler)processData, (u_char *)p)); + if (ret < 0) { + // if the capture failed, throw an exception back to the java wrapper + throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); + return; + } else if (ret == 0) { + attr[instance].pcapGo = FALSE; // end of savefile + } + } + } + +#endif // PCAP_LOOP +} + +/* + * Stop capturing packets + * + * JNI PacketCapture.endCapture() + */ +JNIEXPORT void JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_endCapture +(JNIEnv *env, jobject obj, jint instance) { + attr[instance].pcapGo = FALSE; +} + +/* + * Fetch the network associated with the device. + * Throws a CaptureConfigurationException if the device is messed up. + * + * JNI PacketCapture.getNetwork() + */ +JNIEXPORT jint JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_getNetwork +(JNIEnv *env, jobject obj, jstring jdevice) { + char ebuf[PCAP_ERRBUF_SIZE]; + int localnet = 0; + int netmask = 0; + + const char *device = env->GetStringUTFChars(jdevice, 0); + + if(pcap_lookupnet((char*)device, + (bpf_u_int32 *)&localnet, + (bpf_u_int32 *)&netmask, ebuf) < 0) { + // if the lookup failed, throw an exception back to the java wrapper + throwException(env, CONFIGURATION_EXCEPTION, ebuf); + return 0; + } + else + return localnet; +} + +/* + * Fetch the netmask associated with the device. + * Throws a CaptureConfigurationException if the device is messed up. + * + * JNI PacketCapture.getNetmask() + */ +JNIEXPORT jint JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_getNetmask +(JNIEnv *env, jobject obj, jstring jdevice) { + char ebuf[PCAP_ERRBUF_SIZE]; + const char *device = env->GetStringUTFChars(jdevice, 0); + int localnet = 0; + int netmask = 0; + + if(pcap_lookupnet((char*)device, + (bpf_u_int32*)&localnet, + (bpf_u_int32*)&netmask, ebuf) < 0) { + // if the lookup failed, throw an exception back to the java wrapper + throwException(env, CONFIGURATION_EXCEPTION, ebuf); + return 0; + } + else + return netmask; +} + +/* + * Fetch the link layer type associated with this device. + * + * JNI PacketCapture.getLinkLayerType() + */ +JNIEXPORT jint JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_getLinkLayerType +(JNIEnv *env, jobject obj, jint instance) { + return pcap_datalink(PD[instance]); +} + +/* + * Create, compile and activate a filter from a filter expression. + * + * JNI PacketCapture.setFilter() + */ +JNIEXPORT void JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_setFilter +(JNIEnv *env, jobject object, jint instance, jstring jfilter, + jboolean optimize) { + struct bpf_program bpp; + const char *filter = env->GetStringUTFChars(jfilter, 0); + + // the device must be open in order to set the filter. + if(PD[instance] == NULL) { + throwException(env, INVALID_FILTER_EXCEPTION, + "A device must be open before setting the filter."); + return; + } + + // compile bpf program + if(pcap_compile(PD[instance], &bpp, (char*)filter, optimize, 0) == -1) { + // if the filter wouldn't compile, throw an exception back to java + throwException(env, INVALID_FILTER_EXCEPTION, pcap_geterr(PD[instance])); + return; + } + + // activate program + if(pcap_setfilter(PD[instance], &bpp) == -1) + // if the filter couldn't be activated, throw an exception back to java + throwException(env, INVALID_FILTER_EXCEPTION, pcap_geterr(PD[instance])); +} + +/* + * Return the snapshot length being used (given network device has been + * opened) by using a pcap library API call. + * + * JNI PacketCapture.getSnapshotLength() + */ +JNIEXPORT jint JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_getSnapshotLength + (JNIEnv *env, jobject obj, jint instance) +{ + int snapshotLength = -1; + + if(PD[instance] != NULL) { + snapshotLength = pcap_snapshot(PD[instance]); + } + + return snapshotLength; +} + +/* + * Close the capture device. + * + * JNI PacketCapture.close() + */ +JNIEXPORT void JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_close +(JNIEnv *env, jobject object, jint instance) { + if(PD[instance] != NULL) + pcap_close(PD[instance]); +} + +/* + * Fetch and set statistics in the java vm. + * + * JNI PacketCapture.setupStatistics() + */ +JNIEXPORT void JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_setupStatistics +(JNIEnv *env, jobject object, jint instance) { + struct pcap_stat stat; + + if (PD[instance] != NULL && pcap_file(PD[instance]) == NULL) { + if (pcap_stats(PD[instance], &stat) < 0) { + /* + * todo: throw the following as an exception.. + fprintf(stderr, "jpcap: pcap_stats(%s) %s\n", + g_device, pcap_geterr(PD[instance])); + */ + } + else { + jfieldID fid; + jclass cls = env->GetObjectClass(object); + // received count + fid = env->GetFieldID(cls, "receivedCount", "I"); + if (fid == 0) + return; + env->SetIntField(object, fid, stat.ps_recv); + // dropped count + fid = env->GetFieldID(cls, "droppedCount", "I"); + if (fid == 0) + return; + env->SetIntField(object, fid, stat.ps_drop); + } + } +} + +/* + * This function is currently unused. might be used later by capture + * to potentially adjust the snapshot length in the event that the + * capture client got it wrong. + */ +int gx_snaplen; +int adjustSnaplen(int verbose, int instance) { + int i = -1; + i = pcap_snapshot(PD[instance]); + if(i == -1) + return(0); + if(i != gx_snaplen) { + if(verbose) { + printf("jpcap: snaplen was adjusted from %d to %d.\n", gx_snaplen, i); + gx_snaplen = i; + } + } else { + if(verbose) + printf("jpcap: snaplen confirmed at %d.\n", gx_snaplen); + } + return(1); +} + +/* + * Class: net_sourceforge_jpcap_capture_PacketCapture + * Method: lookupDevices + * Signature: ()[Ljava/lang/String; + */ +JNIEXPORT jobjectArray JNICALL +Java_net_sourceforge_jpcap_capture_PacketCapture_lookupDevices +(JNIEnv *env, jclass cls) +{ + char ebuf[PCAP_ERRBUF_SIZE]; + jobjectArray devices = NULL; + + +#ifndef WIN32 + int sock=socket(AF_INET,SOCK_DGRAM,0); + struct ifconf ifc; + struct ifreq *ifr,*last; + struct ifreq ifrflags; + pcap_t *pch; + + char names[100][100]; + int total = 0, i = 0, ifrSize = 0; + + if(sock < 0 ){ + /* error opening socket */ + throwException(env, DEVICE_LOOKUP_EXCEPTION, strerror(sock)); + return NULL; + } + + ifc.ifc_len = 1024 * sizeof(struct ifreq); + ifc.ifc_buf = (char *)malloc(ifc.ifc_len); + + if(ioctl(sock,SIOCGIFCONF,&ifc) < 0 || + ifc.ifc_len < (int)sizeof(struct ifreq)){ + /* SIOCGIFCONF error */ + goto FAIL; + } + + ifr = (struct ifreq *)ifc.ifc_req; + last = (struct ifreq *)((char *)ifr+ifc.ifc_len); + +#ifdef HAVE_SA_LEN + ifrSize = ifr->ifr_addr.sa_len+IFNAMSIZ; +#else /* HAVE_SA_LEN */ + ifrSize = sizeof(struct ifreq); +#endif /* HAVE_SA_LEN */ + + char *s; + for(;ifr < last; (char*)ifr += ifrSize, ifr=(struct ifreq *)s) { + /* Skip "dummy" and "alaias" interface */ + /* + if(strncmp(ifr->ifr_name,"dummy",5)==0 || + strchr(ifr->ifr_name,':') != NULL) + continue; + */ + + for(i=0;iifr_name)==0) + continue; + + /* Check flags */ + memset(&ifrflags,0,sizeof ifrflags); + strncpy(ifrflags.ifr_name,ifr->ifr_name,sizeof ifrflags.ifr_name); + if(ioctl(sock,SIOCGIFFLAGS,(char *)&ifrflags)<0){ + if(errno == ENXIO) + continue; + else + goto FAIL; + } + + if(!(ifrflags.ifr_flags & IFF_UP)) + continue; + + pch = pcap_open_live(ifr->ifr_name,68,0,0, ebuf); + if(pch == NULL) + continue; + pcap_close(pch); + strcpy(names[total++],ifr->ifr_name); + } + + if( total > 0 ) { + devices = env->NewObjectArray + ((jsize)total, env->FindClass("java/lang/String"), NULL); + for(i = 0 ; i < total ; i++ ) { + env->SetObjectArrayElement(devices, i, env->NewStringUTF(names[i])); + } + } + +FAIL: + free(ifc.ifc_buf); + close(sock); + +#else /* WIN32 */ + wchar_t *dev; + int i=0,c=0,j=0, t=0; // t = array index + //char buf[256]; + //char buf2[256]; + char buf_all[516]; + char* desc = 0; + dev = (wchar_t *)pcap_lookupdev(ebuf); + if(dev){ + if(dev[0]<256) { /* NT / 2000 */ + if(dev[0]==0 && dev[1]==0) + return NULL; /* no device */ + while(!(dev[i]==0 && dev[i-1]==0)){ + if(dev[i]==0) c++; + i++; + } + + // human-readable descriptions are placed after the device names + desc = (char*)(dev + i + 1); + + devices=env->NewObjectArray + ((jsize)c, env->FindClass("java/lang/String"), NULL); + //descriptions=env->NewObjectArray + // ((jsize)c, env->FindClass("java/lang/String"), NULL); + + i = 0; + + for(j=0; jSetObjectArrayElement(devices, j, env->NewStringUTF(buf)); + wcstombs(buf2,(wchar_t *)(desc + t), 255); + env->SetObjectArrayElement(descriptions, j, env->NewStringUTF(buf2)); + + while(dev[i]!=0) { + i++; + } + i++; + + while(desc[t] != 0) { + t++; + } + t++; + */ + + // This code will get the device description as well as dev name + // and put them both in the devices array + t = 0; + while (dev[i] != 0) { + if (t < 255) + buf_all[t++] = dev[i++]; + } + i++; + + buf_all[t++] = '\n'; + buf_all[t++] = ' '; + buf_all[t++] = ' '; // set "\n " as windows signature + + while (*desc != 0) { + if (t < 514) + buf_all[t++] = *desc; + desc++; + } + buf_all[t++] = '\0'; + env->SetObjectArrayElement(devices, j, env->NewStringUTF(buf_all)); + desc++; + } + }else{ /* 9x */ + char *dev9x=(char *)dev; + + if(dev9x[0]==0 && dev9x[1]==0) + return NULL; /* no device */ + while(!(dev9x[i]==0 && dev9x[i-1]==0)){ + if(dev9x[i]==0) c++; + i++; + } + + devices=env->NewObjectArray + ((jsize)c, env->FindClass("java/lang/String"), NULL); + i=0; + for(j=0;jSetObjectArrayElement + (devices, j, env->NewStringUTF((char *)(dev9x + i))); + while(dev9x[i]!=0) i++; + i++; + } + } + } +#endif /* WIN32 */ + + if(devices == NULL) { + devices=env->NewObjectArray + ((jsize)0, env->FindClass("java/lang/String"), NULL); + } + return devices; +} + + +const char *rcsid = + "$Id: jpcap.c,v 1.24 2004/10/07 18:04:41 pcharles Exp $"; diff --git a/javasrc/net/sourceforge/jpcap/capture/jpcap.def b/javasrc/net/sourceforge/jpcap/capture/jpcap.def new file mode 100644 index 0000000..ee6f38e --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/jpcap.def @@ -0,0 +1,17 @@ +LIBRARY jpcap.dll + +DESCRIPTION 'Java Packet Capture Library' + +EXPORTS + Java_net_sourceforge_jpcap_capture_PacketCapture_findDevice + Java_net_sourceforge_jpcap_capture_PacketCapture_lookupDevices + Java_net_sourceforge_jpcap_capture_PacketCapture_open + Java_net_sourceforge_jpcap_capture_PacketCapture_capture + Java_net_sourceforge_jpcap_capture_PacketCapture_getNetwork + Java_net_sourceforge_jpcap_capture_PacketCapture_getNetmask + Java_net_sourceforge_jpcap_capture_PacketCapture_getLinkLayerType + Java_net_sourceforge_jpcap_capture_PacketCapture_getSnapshotLength + Java_net_sourceforge_jpcap_capture_PacketCapture_setFilter + Java_net_sourceforge_jpcap_capture_PacketCapture_close + Java_net_sourceforge_jpcap_capture_PacketCapture_setupStatistics + Java_net_sourceforge_jpcap_capture_PacketCapture_openOffline diff --git a/javasrc/net/sourceforge/jpcap/capture/makefile b/javasrc/net/sourceforge/jpcap/capture/makefile new file mode 100644 index 0000000..035ea49 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/makefile @@ -0,0 +1,149 @@ +# $Id: makefile,v 1.32 2004/09/28 17:27:12 pcharles Exp $ +# +# package net.sourceforge.jpcap.capture +# +PKG = net.sourceforge.jpcap.capture +PKG_DIR = $(subst .,/,$(PKG)) +PKG_UND = $(subst .,_,$(PKG)) +REL = ../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +WRAPPER = PacketCapture + +JAVA = \ + PacketCaptureCapable \ + PacketCaptureBase \ + PacketDispatchCapable \ + PacketDispatcher \ + PacketHandler \ + $(WRAPPER) \ + CaptureTest \ + \ + PacketListener \ + RawPacketListener \ + CaptureStatistics \ + \ + CaptureConfigurationException \ + CaptureDeviceInvalidException \ + CaptureDeviceLookupException \ + CaptureDeviceNotFoundException \ + CaptureDeviceOpenException \ + CaptureFileOpenException \ + CapturePacketException \ + InvalidFilterException + + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + + +# on linux, OSTYPE is Linux and the include subdir is called 'linux' +# on solaris, they match. need to lower case for other os variants? +OTL = $(subst L,l,${OSTYPE}) + +# on debian linux, make 'linux-gnu' recognizable as linux (.. apologies to RMS) +ifeq ($(OTL), linux-gnu) + OTL=linux +endif + + +## set library name, paths and options for each supported platform group + +# All Unix variants, including: Solaris, Linux, AIX, etc.. +ifeq ($(OSFLAVOR), UNIX) + SO_TARGET = libjpcap.so + INCLUDES = \ + -I/usr/include/pcap \ + -I${JAVA_HOME}/include \ + -I${JAVA_HOME}/include/$(OTL) + LIBS = -lnsl /usr/lib/libpcap.a +else +# Mac OS X +ifeq ($(OSFLAVOR), DARWIN) + SO_TARGET = libjpcap.jnilib + INCLUDES = -I/usr/include/pcap \ + -I/Library/Java/Home/include \ + -I$(SDKROOT)/System/Library/Frameworks/JavaVM.framework/Headers + LIBS = /usr/lib/libpcap.A.dylib +else +# Windows, using MinGW +ifeq ($(OSFLAVOR), MINGW) + SO_TARGET = jpcap.dll + INCLUDES = \ + -I${WINPCAP_HOME}/Include/ \ + -I${JAVA_HOME}/include \ + -I${JAVA_HOME}/include/win32 \ + -I. + LIBS = -L ${WINPCAP_HOME}/Lib -lwpcap +else +# +# Cygwin and native DOS-mode builds aren't supported due to lack of interest +# from the community. If you'd like to change that, submit patches at +# http://www.sf.net/projects/jpcap. +# +# ifeq ($(OSFLAVOR), CYGWIN) +# ifeq ($(OSFLAVOR), DOS) +# +endif +endif +endif + + +all: $(JAVA_CLASSES) $(SO_TARGET) + + +CCOPTS = -Wall -O2 + +# build the native component +# NOTE: the -fPIC option below is only required on Solaris? +ifeq ($(OSFLAVOR), UNIX) +$(SO_TARGET): $(PKG_UND)_$(WRAPPER).h jpcap.c process.cpp + g++ $(CCOPTS) $(INCLUDES) jpcap.c process.cpp -fPIC -shared -o $@ $(LIBS) +else +ifeq ($(OSFLAVOR), DARWIN) +$(SO_TARGET): $(PKG_UND)_$(WRAPPER).h jpcap.c process.cpp + g++ $(CCOPTS) $(INCLUDES) jpcap.c process.cpp -bundle -o $@ $(LIBS) +else +$(SO_TARGET): $(PKG_UND)_$(WRAPPER).h jpcap.c + g++ $(CCOPTS) -D_JNI_IMPLEMENTATION $(INCLUDES) -Wl,--kill-at \ + jpcap.c process.cpp -shared -o $@ $(LIBS) + +endif +endif + +$(PKG_UND)_$(WRAPPER).h: $(WRAPPER).java +ifeq ($(OSFLAVOR), DARWIN) + javah -jni $(PKG).$(WRAPPER) +else + javah -jni $(PKG).$(WRAPPER) +endif +# javap $(PKG).$(WRAPPER) + + +# NOTE: to run the class PacketCapture, the path to the shared object +# must be in the library path. +# On Linux, this means LD_LIBRARY_PATH.must point to the path of libjpcap.so. +# On Windows, this means that the path containing jpcap.dll must be in PATH. +# On Mac OS X, DYLD_LIBRARY_PATH must point the path of libjpcap.jnilib. +LIB_PATH = ${PROJECT_HOME}/src/java/$(PKG_DIR) +test: all + export LD_LIBRARY_PATH=$(LIB_PATH) ; java $(PKG).CaptureTest + + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile + + +# override default clean target to remove stuff generated by the jni compiler +clean: + rm -fv *.o + rm -fv *.so + rm -fv jpcap + rm -fv $(PKG_UND)_$(WRAPPER).h + rm -fv *~ + rm -fv *.class + rm -fv *.dll + rm -fv *.exp + rm -fv *.a + rm -fv *.jnilib diff --git a/javasrc/net/sourceforge/jpcap/capture/package.html b/javasrc/net/sourceforge/jpcap/capture/package.html new file mode 100644 index 0000000..1e1a527 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/package.html @@ -0,0 +1,35 @@ + + + +net.sourceforge.jpcap.capture + + + + +Provides an interface for capturing packets and a layer of abstraction +around libpcap, a portable native system library for capturing network +packets. +

    +PacketCapture is the core of the packet capture system provided by jpcap. +

    +Applications wishing to capture network packets create an instance of +PacketCapture and call its methods in order to open a network device, +set packet filters and ultimately receive packet data from the network. +

    +PacketCapture utilizes a publish/subscribe pattern to broadcast packets +to all objects which have registered as listeners for events of +interest. Applications capturing network data must implement PacketListener +and register with an instance of the capture system in order to receive +packets. +

    + + + diff --git a/javasrc/net/sourceforge/jpcap/capture/process.cpp b/javasrc/net/sourceforge/jpcap/capture/process.cpp new file mode 100644 index 0000000..95cfb95 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/process.cpp @@ -0,0 +1,65 @@ +// $Id: process.cpp,v 1.2 2004/02/24 21:25:08 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2003, 2004 Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +#include "process.hpp" + +/* + * Utilized by processData() callback, for handling packet data. + */ +void processing::processData(u_char *user, struct pcap_pkthdr *h, jbyte *sp) { + jmethodID mid; + jclass cls; + jbyteArray jba; + int seconds; + int useconds; + register const struct timeval *tvp; + + /* decompose the timestamp contained in the packet header */ + tvp = &h->ts; + seconds = tvp->tv_sec; + useconds = tvp->tv_usec; + + // if(VERBOSE) { + // (void)printPacket(user, sp, h->caplen, h->len, seconds, useconds); + // } + + /* Check to see if any unhandled exceptions are pending in the VM before + calling back the packet handler. If an exception is pending, return + control immediately so that the VM can handle it. + */ + if(javaEnvironment->ExceptionOccurred()) + return; + + cls = javaEnvironment->GetObjectClass(javaObject); + + + mid = javaEnvironment-> GetMethodID(cls, "handlePacket", "(IIII[B)V"); + + if(mid == 0) { + fprintf(stderr, "jpcap: method lookup failure\n"); + fflush(stdout); fflush(stderr); + return; + } + + + jba = javaEnvironment->NewByteArray(h->caplen); + + javaEnvironment->SetByteArrayRegion + (jba, 0, h->caplen, sp); + + // dispatch captured data to the handle method in the java capture object.. + javaEnvironment->CallVoidMethod(javaObject, mid, + h->len, h->caplen, seconds, useconds, + jba); + + // free local storage for the byte array.. + javaEnvironment->DeleteLocalRef(jba); + +} + + diff --git a/javasrc/net/sourceforge/jpcap/capture/process.hpp b/javasrc/net/sourceforge/jpcap/capture/process.hpp new file mode 100644 index 0000000..5d679f8 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/capture/process.hpp @@ -0,0 +1,28 @@ +// $Id: process.hpp,v 1.2 2004/02/24 21:25:08 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2003, 2004 Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +extern "C" { +#include +} +#include + + +/** + * Encapsulation of packet processing, with managed of separate instances, + * + * Submitted by Anatol Novchenko, along with numerous changes to jpcap.c. + */ +class processing { + + public: + void processData(u_char *user, struct pcap_pkthdr *h, jbyte *sp); + jobject javaObject;// reference to java object hooked into this wrapper lib. + JNIEnv *javaEnvironment; // java vm containing running java object. + +}; + diff --git a/javasrc/net/sourceforge/jpcap/net/ARPFields.java b/javasrc/net/sourceforge/jpcap/net/ARPFields.java new file mode 100644 index 0000000..992c248 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/ARPFields.java @@ -0,0 +1,116 @@ +// $Id: ARPFields.java,v 1.3 2001/06/27 01:46:59 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * IP protocol field encoding information. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/27 01:46:59 $ + */ +public interface ARPFields +{ + // ARP codes + + /** + * Type code for ethernet addresses. + */ + int ARP_ETH_ADDR_CODE = 0x0001; + + /** + * Type code for MAC addresses. + */ + int ARP_IP_ADDR_CODE = 0x0800; + + /** + * Code for ARP request. + */ + int ARP_OP_REQ_CODE = 0x1; + + /** + * Code for ARP reply. + */ + int ARP_OP_REP_CODE = 0x2; + + + // field lengths + + /** + * Operation type length in bytes. + */ + int ARP_OP_LEN = 2; + + /** + * Address type length in bytes. + */ + int ARP_ADDR_TYPE_LEN = 2; + + /** + * Address type length in bytes. + */ + int ARP_ADDR_SIZE_LEN = 1; + + + // field positions + + /** + * Position of the hardware address type. + */ + int ARP_HW_TYPE_POS = 0; + + /** + * Position of the protocol address type. + */ + int ARP_PR_TYPE_POS = ARP_HW_TYPE_POS + ARP_ADDR_TYPE_LEN; + + /** + * Position of the hardware address length. + */ + int ARP_HW_LEN_POS = ARP_PR_TYPE_POS + ARP_ADDR_TYPE_LEN; + + /** + * Position of the protocol address length. + */ + int ARP_PR_LEN_POS = ARP_HW_LEN_POS + ARP_ADDR_SIZE_LEN; + + /** + * Position of the operation type. + */ + int ARP_OP_POS = ARP_PR_LEN_POS + ARP_ADDR_SIZE_LEN; + + /** + * Position of the sender hardware address. + */ + int ARP_S_HW_ADDR_POS = ARP_OP_POS + ARP_OP_LEN; + + /** + * Position of the sender protocol address. + */ + int ARP_S_PR_ADDR_POS = ARP_S_HW_ADDR_POS + MACAddress.WIDTH; + + /** + * Position of the target hardware address. + */ + int ARP_T_HW_ADDR_POS = ARP_S_PR_ADDR_POS + IPAddress.WIDTH; + + /** + * Position of the target protocol address. + */ + int ARP_T_PR_ADDR_POS = ARP_T_HW_ADDR_POS + MACAddress.WIDTH; + + + // complete header length + + /** + * Total length in bytes of an ARP header. + */ + int ARP_HEADER_LEN = ARP_T_PR_ADDR_POS + IPAddress.WIDTH; // == 28 +} diff --git a/javasrc/net/sourceforge/jpcap/net/ARPPacket.java b/javasrc/net/sourceforge/jpcap/net/ARPPacket.java new file mode 100644 index 0000000..961a45a --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/ARPPacket.java @@ -0,0 +1,164 @@ +// $Id: ARPPacket.java,v 1.14 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.AnsiEscapeSequences; +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + + +/** + * An ARP protocol packet. + *

    + * Extends an ethernet packet, adding ARP header information and an ARP + * data payload. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.14 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class ARPPacket extends EthernetPacket + implements ARPFields, Serializable +{ + /** + * Create a new ARP packet. + */ + public ARPPacket(int lLen, byte [] bytes) { + super(lLen, bytes); + + this.header = PacketEncoding.extractHeader(lLen, ARP_HEADER_LEN, bytes); + this.data = PacketEncoding.extractData(lLen, ARP_HEADER_LEN, bytes); + } + + /** + * Create a new ARP packet. + */ + public ARPPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + /** + * Fetch the hardware source address. + */ + public String getSourceHwAddress() { + return MACAddress.extract(ARP_S_HW_ADDR_POS, header); + } + + /** + * Fetch the hardware destination address. + */ + public String getDestinationHwAddress() { + return MACAddress.extract(ARP_T_HW_ADDR_POS, header); + } + + /** + * Fetch the proto sender address. + */ + public String getSourceProtoAddress() { + return IPAddress.extract(ARP_S_PR_ADDR_POS, header); + } + + /** + * Fetch the proto sender address. + */ + public String getDestinationProtoAddress() { + return IPAddress.extract(ARP_T_PR_ADDR_POS, header); + } + + /** + * Fetch the operation code. + * Usually one of ARPFields.{ARP_OP_REQ_CODE, ARP_OP_REP_CODE}. + */ + public int getOperation() { + return ArrayHelper.extractInteger(header, ARP_OP_POS, ARP_OP_LEN); + } + + /** + * Fetch the arp header, excluding arp data payload. + */ + public byte [] getARPHeader() { + return header; + } + + /** + * Fetch data portion of the arp header. + */ + public byte [] getARPData() { + return data; + } + + /** + * Fetch the arp header, excluding arp data payload. + */ + public byte [] getHeader() { + return getARPHeader(); + } + + /** + * Fetch data portion of the arp header. + */ + public byte [] getData() { + return getARPData(); + } + + /** + * Convert this ARP packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this ARP packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("ARPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(getOperation() == ARP_OP_REQ_CODE ? "request" : "reply"); + buffer.append(' '); + buffer.append(getSourceHwAddress() + " -> " + + getDestinationHwAddress()); + buffer.append(", "); + buffer.append(getSourceProtoAddress() + " -> " + + getDestinationProtoAddress()); + buffer.append(" l=" + header.length + "," + data.length); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.PURPLE; + } + + /** + * ARP header. + */ + byte [] header; + + /** + * ARP data. + */ + byte [] data; + + + private String _rcsid = + "$Id: ARPPacket.java,v 1.14 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetFields.java b/javasrc/net/sourceforge/jpcap/net/EthernetFields.java new file mode 100644 index 0000000..d2df7e4 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/EthernetFields.java @@ -0,0 +1,53 @@ +// $Id: EthernetFields.java,v 1.3 2001/06/27 02:14:54 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Ethernet protocol field encoding information. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/27 02:14:54 $ + */ +public interface EthernetFields +{ + // field lengths + + /** + * Width of the ethernet type code in bytes. + */ + int ETH_CODE_LEN = 2; + + + // field positions + + /** + * Position of the destination MAC address within the ethernet header. + */ + int ETH_DST_POS = 0; + + /** + * Position of the source MAC address within the ethernet header. + */ + int ETH_SRC_POS = MACAddress.WIDTH; + + /** + * Position of the ethernet type field within the ethernet header. + */ + int ETH_CODE_POS = MACAddress.WIDTH * 2; + + + // complete header length + + /** + * Total length of an ethernet header in bytes. + */ + int ETH_HEADER_LEN = ETH_CODE_POS + ETH_CODE_LEN; // == 14 +} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetPacket.java b/javasrc/net/sourceforge/jpcap/net/EthernetPacket.java new file mode 100644 index 0000000..7d14cee --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/EthernetPacket.java @@ -0,0 +1,212 @@ +// $Id: EthernetPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.AnsiEscapeSequences; +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + + +/** + * An ethernet packet. + *

    + * Contains link-level header and data payload encapsulated by an ethernet + * packet. + *

    + * There are currently two subclasses. IP and ARP protocols are supported. + * IPPacket extends with ip header and data information. + * ARPPacket extends with hardware and protocol addresses. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.19 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class EthernetPacket extends Packet + implements EthernetFields, Serializable +{ + // store the data here, all subclasses can offset into this + protected byte[] _bytes; + + // offset from beginning of byte array where the data payload + // (i.e. IP packet) starts. The size of the ethernet frame header. + protected int _ethOffset; + + // time that the packet was captured off the wire + protected Timeval _timeval; + + + /** + * Construct a new ethernet packet. + *

    + * For the purpose of jpcap, when the type of ethernet packet is + * recognized as a protocol for which a class exists network library, + * then a more specific class like IPPacket or ARPPacket is instantiated. + * The subclass can always be cast into a more generic form. + */ + public EthernetPacket(int lLen, byte [] bytes) { + _bytes = bytes; + _ethernetHeaderLength = lLen; + _ethOffset = lLen; + } + + /** + * Construct a new ethernet packet, including the capture time. + */ + public EthernetPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + // set in constructor + private int _ethernetHeaderLength; + /** + * Fetch the ethernet header length in bytes. + */ + public int getEthernetHeaderLength() { + return _ethernetHeaderLength; + } + + /** + * Fetch the packet ethernet header length. + */ + public int getHeaderLength() { + return getEthernetHeaderLength(); + } + + private byte[] _ethernetHeaderBytes = null; + /** + * Fetch the ethernet header as a byte array. + */ + public byte[] getEthernetHeader() { + if(_ethernetHeaderBytes == null) { + _ethernetHeaderBytes = + PacketEncoding.extractHeader(0, getEthernetHeaderLength(), + _bytes); + } + return _ethernetHeaderBytes; + } + + /** + * Fetch the ethernet header as a byte array. + */ + public byte[] getHeader() { + return getEthernetHeader(); + } + + private byte[] _ethernetDataBytes = null; + /** + * Fetch the ethernet data as a byte array. + */ + public byte[] getEthernetData() { + if(_ethernetDataBytes == null) { + _ethernetDataBytes = + PacketEncoding.extractData(0, getEthernetHeaderLength(), + _bytes); + } + return _ethernetDataBytes; + } + + /** + * Fetch the ethernet data as a byte array. + */ + public byte[] getData() { + return getEthernetData(); + } + + private String _sourceHwAddress = null; + /** + * Fetch the IP address of the host where the packet originated from. + */ + public String getSourceHwAddress() { + if(_sourceHwAddress == null) { + _sourceHwAddress = MACAddress.extract(ETH_SRC_POS, _bytes); + } + return _sourceHwAddress; + } + + private String _destinationHwAddress = null; + /** + * Fetch the IP address of the host where the packet originated from. + */ + public String getDestinationHwAddress() { + if(_destinationHwAddress == null) { + _destinationHwAddress = MACAddress.extract(ETH_DST_POS, _bytes); + } + return _destinationHwAddress; + } + + private int _etherProtocol; + private boolean _etherProtocolSet = false; + /** + * Fetch the ethernet protocol. + */ + public int getEthernetProtocol() { + if(! _etherProtocolSet) { + _etherProtocol = + ArrayHelper.extractInteger(_bytes, ETH_CODE_POS, ETH_CODE_LEN); + _etherProtocolSet = true; + } + return _etherProtocol; + } + + /** + * Fetch the ethernet protocol. + */ + public int getProtocol() { + return getEthernetProtocol(); + } + + /** + * Fetch the timeval containing the time the packet arrived on the + * device where it was captured. + */ + public Timeval getTimeval() { + return _timeval; + } + + /** + * Convert this ethernet packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this ethernet packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("EthernetPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(getSourceHwAddress() + " -> " + + getDestinationHwAddress()); + buffer.append(" proto=0x" + Integer.toHexString(getProtocol())); + buffer.append(" l=" + getEthernetHeaderLength()); // + "," + data.length); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.DARK_GRAY; + } + + + private String _rcsid = + "$Id: EthernetPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java b/javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java new file mode 100644 index 0000000..1103f4a --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java @@ -0,0 +1,38 @@ +// $Id: EthernetProtocol.java,v 1.3 2001/06/27 01:50:42 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import java.util.HashMap; + + +/** + * Ethernet protocol utility class. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/27 01:50:42 $ + */ +public class EthernetProtocol implements EthernetProtocols, EthernetFields +{ + /** + * Extract the protocol type field from packet data. + *

    + * The type field indicates what type of data is contained in the + * packet's data block. + * @param packetBytes packet bytes. + * @return the ethernet type code. i.e. 0x800 signifies IP datagram. + */ + public static int extractProtocol(byte [] packetBytes) { + // convert the bytes that contain the type code into a value.. + return packetBytes[ETH_CODE_POS] << 8 | packetBytes[ETH_CODE_POS + 1]; + } + + private String _rcsid = + "$Id: EthernetProtocol.java,v 1.3 2001/06/27 01:50:42 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java b/javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java new file mode 100644 index 0000000..aadc384 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java @@ -0,0 +1,240 @@ +// $Id: EthernetProtocols.java,v 1.7 2003/07/09 03:04:24 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Code constants for well-defined ethernet protocols. + *

    + * Taken from linux/if_ether.h and tcpdump/ethertype.h + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.7 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/07/09 03:04:24 $ + */ +public interface EthernetProtocols +{ + /** + * IP protocol. + */ + int IP = 0x0800; + + /** + * Address resolution protocol. + */ + int ARP = 0x0806; + + /** + * Reverse address resolution protocol. + */ + int RARP = 0x8035; + + + /** + * Ethernet Loopback packet + */ + int LOOP = 0x0060; + + /** + * Ethernet Echo packet + */ + int ECHO = 0x0200; + + /** + * Xerox PUP packet + */ + int PUP = 0x0400; + + /** + * CCITT X.25 + */ + int X25 = 0x0805; + + /** + * G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] + */ + int BPQ = 0x08FF; + + /** + * DEC Assigned proto + */ + int DEC = 0x6000; + + /** + * DEC DNA Dump/Load + */ + int DNA_DL = 0x6001; + + /** + * DEC DNA Remote Console + */ + int DNA_RC = 0x6002; + + /** + * DEC DNA Routing + */ + int DNA_RT = 0x6003; + + /** + * DEC LAT + */ + int LAT = 0x6004; + + /** + * DEC Diagnostics + */ + int DIAG = 0x6005; + + /** + * DEC Customer use + */ + int CUST = 0x6006; + + /** + * DEC Systems Comms Arch + */ + int SCA = 0x6007; + + /** + * Appletalk DDP + */ + int ATALK = 0x809B; + + /** + * Appletalk AARP + */ + int AARP = 0x80F3; + + /** + * IPX over DIX + */ + int IPX = 0x8137; + + /** + * IPv6 over bluebook + */ + int IPV6 = 0x86DD; + + + // Non DIX types. Won't clash for 1500 types. + + /** + * Dummy type for 802.3 frames + */ + int N802_3 = 0x0001; + + /** + * Dummy protocol id for AX.25 + */ + int AX25 = 0x0002; + + /** + * Every packet. + */ + int ALL = 0x0003; + + /** + * 802.2 frames + */ + int N802_2 = 0x0004; + + /** + * Internal only + */ + int SNAP = 0x0005; + + /** + * DEC DDCMP: Internal only + */ + int DDCMP = 0x0006; + + /** + * Dummy type for WAN PPP frames + */ + int WAN_PPP = 0x0007; + + /** + * Dummy type for PPP MP frames + */ + int PPP_MP = 0x0008; + + /** + * Localtalk pseudo type + */ + int LOCALTALK = 0x0009; + + /** + * Dummy type for Atalk over PPP + */ + int PPPTALK = 0x0010; + + /** + * 802.2 frames + */ + int TR_802_2 = 0x0011; + + /** + * Mobitex (kaz@cafe.net) + */ + int MOBITEX = 0x0015; + + /** + * Card specific control frames + */ + int CONTROL = 0x0016; + + /** + * Linux/IR + */ + int IRDA = 0x0017; + + + // others not yet documented.. + + int NS = 0x0600; + + int SPRITE = 0x0500; + + int TRAIL = 0x1000; + + int LANBRIDGE = 0x8038; + + int DECDNS = 0x803c; + + int DECDTS = 0x803e; + + int VEXP = 0x805b; + + int VPROD = 0x805c; + + int N8021Q = 0x8100; + + int PPP = 0x880b; + + int PPPOED = 0x8863; + + int PPPOES = 0x8864; + + int LOOPBACK = 0x9000; + + + // these aren't valid ETHERNET codes, but show up in the type field. + + // spanning tree bridge protocol + int STBPDU = 0x0026; + + // intel adapter fault tolerance heartbeats + int INFTH = 0x886d; + + + /** + * Ethernet protocol mask. + */ + int MASK = 0xffff; +} diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPFields.java b/javasrc/net/sourceforge/jpcap/net/ICMPFields.java new file mode 100644 index 0000000..7ae1604 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/ICMPFields.java @@ -0,0 +1,63 @@ +// $Id: ICMPFields.java,v 1.5 2001/07/30 00:01:22 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * ICMP protocol field encoding information. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/07/30 00:01:22 $ + */ +public interface ICMPFields +{ + // field lengths + + /** + * Length of the ICMP message type code in bytes. + */ + int ICMP_CODE_LEN = 1; + + /** + * Length of the ICMP subcode in bytes. + */ + int ICMP_SUBC_LEN = 1; + + /** + * Length of the ICMP header checksum in bytes. + */ + int ICMP_CSUM_LEN = 2; + + + // field positions + + /** + * Position of the ICMP message type. + */ + int ICMP_CODE_POS = 0; + + /** + * Position of the ICMP message subcode. + */ + int ICMP_SUBC_POS = ICMP_CODE_POS + ICMP_CODE_LEN; + + /** + * Position of the ICMP header checksum. + */ + int ICMP_CSUM_POS = ICMP_SUBC_POS + ICMP_CODE_LEN; + + + // complete header length + + /** + * Length in bytes of an ICMP header. + */ + int ICMP_HEADER_LEN = ICMP_CSUM_POS + ICMP_CSUM_LEN; // == 4 +} diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPMessage.java b/javasrc/net/sourceforge/jpcap/net/ICMPMessage.java new file mode 100644 index 0000000..410139e --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/ICMPMessage.java @@ -0,0 +1,79 @@ +// $Id: ICMPMessage.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import java.util.HashMap; + + +/** + * ICMP message utility class. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ + */ +public class ICMPMessage implements ICMPMessages +{ + /** + * Fetch an ICMP message. + * @param code the code associated with the message. + * @return a message describing the significance of the ICMP code. + */ + public static String getDescription(int code) { + Integer c = new Integer(code); + if(messages.containsKey(c)) + return (String)messages.get(c); + else + return "unknown"; + } + + /** + * 'Human-readable' ICMP messages. + */ + //jdk1.5: private static HashMap messages = new HashMap(); + private static HashMap messages = new HashMap(); + static { + messages.put(new Integer(ECHO_REPLY), "echo reply"); + messages.put(new Integer(ECHO), "echo request"); + messages.put(new Integer(UNREACH_NET), "net unreachable"); + messages.put(new Integer(UNREACH_HOST), "host unreachable"); + messages.put(new Integer(UNREACH_PROTOCOL), "bad protocol"); + messages.put(new Integer(UNREACH_PORT), "port unreachable"); + messages.put(new Integer(UNREACH_NEEDFRAG), "ip_df drop"); + messages.put(new Integer(UNREACH_SRCFAIL), "source route failed"); + messages.put(new Integer(UNREACH_NET_UNKNOWN), "unknown network"); + messages.put(new Integer(UNREACH_HOST_UNKNOWN), "unknown host"); + messages.put(new Integer(UNREACH_ISOLATED), "source host isolated"); + messages.put(new Integer(UNREACH_NET_PROHIB), "net access prohibited"); + messages.put(new Integer(UNREACH_HOST_PROHIB), "host access prohibited"); + messages.put(new Integer(UNREACH_TOSNET), "tos for net invalid"); + messages.put(new Integer(UNREACH_TOSHOST), "tos for host invalid"); + messages.put(new Integer(SOURCE_QUENCH), "packet lost"); + messages.put(new Integer(REDIRECT_NET), "redirect to network"); + messages.put(new Integer(REDIRECT_HOST), "redirect to host"); + messages.put(new Integer(REDIRECT_TOSNET), "tos redirect to network"); + messages.put(new Integer(REDIRECT_TOSHOST), "tos redirect to host"); + messages.put(new Integer(ROUTER_ADVERT), "router advert"); + messages.put(new Integer(ROUTER_SOLICIT), "router solicit"); + messages.put(new Integer(TIME_EXCEED_INTRANS), "transit time exceeded"); + messages.put(new Integer(TIME_EXCEED_REASS), "reass time exceeded"); + messages.put(new Integer(PARAM_PROB), "bad ip header"); + messages.put(new Integer(TSTAMP), "timestamp request"); + messages.put(new Integer(TSTAMP_REPLY), "timestamp reply"); + messages.put(new Integer(IREQ), "information request"); + messages.put(new Integer(IREQ_REPLY), "information reply"); + messages.put(new Integer(MASK_REQ), "address mask request"); + messages.put(new Integer(MASK_REPLY), "address mask reply"); + } + + + private String _rcsid = + "$Id: ICMPMessage.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $"; +} + diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPMessages.java b/javasrc/net/sourceforge/jpcap/net/ICMPMessages.java new file mode 100644 index 0000000..827ad62 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/ICMPMessages.java @@ -0,0 +1,181 @@ +// $Id: ICMPMessages.java,v 1.5 2004/02/24 19:21:30 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Code constants for ICMP message types. + * + * Taken originally from tcpdump/print-icmp.c + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/02/24 19:21:30 $ + */ +public interface ICMPMessages +{ + /** + * Echo reply. + */ + int ECHO_REPLY = 0x0000; + + /** + * Destination network unreachable. + */ + int UNREACH_NET = 0x0300; + + /** + * Destination host unreachable. + */ + int UNREACH_HOST = 0x0301; + + /** + * Bad protocol. + */ + int UNREACH_PROTOCOL = 0x0302; + + /** + * Bad port. + */ + int UNREACH_PORT = 0x0303; + + /** + * IP_DF caused drop. + */ + int UNREACH_NEEDFRAG = 0x0304; + + /** + * Src route failed. + */ + int UNREACH_SRCFAIL = 0x0305; + + /** + * Unknown network. + */ + int UNREACH_NET_UNKNOWN = 0x0306; + + /** + * Unknown host. + */ + int UNREACH_HOST_UNKNOWN = 0x0307; + + /** + * Src host isolated. + */ + int UNREACH_ISOLATED = 0x0308; + + /** + * Network access prohibited. + */ + int UNREACH_NET_PROHIB = 0x0309; + + /** + * Host access prohibited. + */ + int UNREACH_HOST_PROHIB = 0x030a; + + /** + * Bad TOS for net. + */ + int UNREACH_TOSNET = 0x030b; + + /** + * Bad TOS for host. + */ + int UNREACH_TOSHOST = 0x030c; + + /** + * Packet lost, slow down. + */ + int SOURCE_QUENCH = 0x0400; + + /** + * Shorter route to network. + */ + int REDIRECT_NET = 0x0500; + + /** + * Shorter route to host. + */ + int REDIRECT_HOST = 0x0501; + + /** + * Shorter route for TOS and network. + */ + int REDIRECT_TOSNET = 0x0502; + + /** + * Shorter route for TOS and host. + */ + int REDIRECT_TOSHOST = 0x0503; + + /** + * Echo request. + */ + int ECHO = 0x0800; + + /** + * router advertisement + */ + int ROUTER_ADVERT = 0x0900; + + /** + * router solicitation + */ + int ROUTER_SOLICIT = 0x0a00; + + /** + * time exceeded in transit. + */ + int TIME_EXCEED_INTRANS = 0x0b00; + + /** + * time exceeded in reass. + */ + int TIME_EXCEED_REASS = 0x0b01; + + /** + * ip header bad; option absent. + */ + int PARAM_PROB = 0x0c01; + + /** + * timestamp request + */ + int TSTAMP = 0x0d00; + + /** + * timestamp reply + */ + int TSTAMP_REPLY = 0x0e00; + + /** + * information request + */ + int IREQ = 0x0f00; + + /** + * information reply + */ + int IREQ_REPLY = 0x1000; + + /** + * address mask request + */ + int MASK_REQ = 0x1100; + + /** + * address mask reply + */ + int MASK_REPLY = 0x1200; + + + // marker indicating index of largest ICMP message type code + int LAST_MAJOR_CODE = 0x12; +} diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPPacket.java b/javasrc/net/sourceforge/jpcap/net/ICMPPacket.java new file mode 100644 index 0000000..ac90023 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/ICMPPacket.java @@ -0,0 +1,168 @@ +// $Id: ICMPPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.AnsiEscapeSequences; +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + + +/** + * An ICMP packet. + *

    + * Extends an IP packet, adding an ICMP header and ICMP data payload. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.19 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class ICMPPacket extends IPPacket implements ICMPFields, Serializable +{ + public ICMPPacket(int lLen, byte [] bytes) { + super(lLen, bytes); + } + + public ICMPPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + private byte[] _icmpHeaderBytes = null; + /** + * Fetch the ICMP header a byte array. + */ + public byte[] getICMPHeader() { + if(_icmpHeaderBytes == null) { + _icmpHeaderBytes = + PacketEncoding.extractHeader(_ipOffset, ICMP_HEADER_LEN, _bytes); + } + return _icmpHeaderBytes; + } + + /** + * Fetch the ICMP header as a byte array. + */ + public byte[] getHeader() { + return getICMPHeader(); + } + + private byte[] _icmpDataBytes = null; + /** + * Fetch the ICMP data as a byte array. + */ + public byte[] getICMPData() { + if(_icmpDataBytes == null) { + // set data length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + int dataLen = _bytes.length - _ipOffset - ICMP_HEADER_LEN; + + _icmpDataBytes = + PacketEncoding.extractData(_ipOffset, ICMP_HEADER_LEN, + _bytes, dataLen); + } + return _icmpDataBytes; + } + + /** + * Fetch the ICMP data as a byte array. + */ + public byte[] getData() { + return getICMPData(); + } + + /** + * Fetch the ICMP message type, including subcode. Return value can be + * used with ICMPMessage.getDescription(). + * @return a 2-byte value containing the message type in the high byte + * and the message type subcode in the low byte. + */ + public int getMessageCode() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CODE_POS, + ICMP_CODE_LEN * 2); + } + + /** + * Fetch the ICMP message type code. Formerly .getMessageType(). + */ + public int getMessageMajorCode() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CODE_POS, + ICMP_CODE_LEN); + } + + /** + * For backward compatibility. @deprecated use getMessageMajorCode(). + */ + public int getMessageType() { + return getMessageMajorCode(); + } + + /** + * Fetch the ICMP message subcode. + */ + public int getMessageMinorCode() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CODE_POS + 1, + ICMP_CODE_LEN); + } + + /** + * Fetch the ICMP header checksum. + */ + public int getChecksum() { + return getICMPChecksum(); + } + + /** + * Fetch the ICMP header checksum. + */ + public int getICMPChecksum() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CSUM_POS, + ICMP_CSUM_LEN); + } + + /** + * Convert this ICMP packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this ICMP packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("ICMPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(ICMPMessage.getDescription(getMessageCode())); + buffer.append(", "); + buffer.append(getSourceAddress() + " -> " + + getDestinationAddress()); + buffer.append(" l=" + ICMP_HEADER_LEN + "," + + (_bytes.length - _ipOffset - ICMP_HEADER_LEN)); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.LIGHT_BLUE; + } + + private String _rcsid = + "$Id: ICMPPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPFields.java b/javasrc/net/sourceforge/jpcap/net/IGMPFields.java new file mode 100644 index 0000000..3ce01b7 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IGMPFields.java @@ -0,0 +1,73 @@ +// $Id: IGMPFields.java,v 1.1 2001/07/30 00:00:02 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * IGMP protocol field encoding information. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/07/30 00:00:02 $ + */ +public interface IGMPFields +{ + // field lengths + + /** + * Length of the IGMP message type code in bytes. + */ + int IGMP_CODE_LEN = 1; + + /** + * Length of the IGMP max response code in bytes. + */ + int IGMP_MRSP_LEN = 1; + + /** + * Length of the IGMP header checksum in bytes. + */ + int IGMP_CSUM_LEN = 2; + + /** + * Length of group address in bytes. + */ + int IGMP_GADDR_LEN = IPAddress.WIDTH; + + + // field positions + + /** + * Position of the IGMP message type. + */ + int IGMP_CODE_POS = 0; + + /** + * Position of the IGMP max response code. + */ + int IGMP_MRSP_POS = IGMP_CODE_POS + IGMP_CODE_LEN; + + /** + * Position of the IGMP header checksum. + */ + int IGMP_CSUM_POS = IGMP_MRSP_POS + IGMP_MRSP_LEN; + + /** + * Position of the IGMP group address. + */ + int IGMP_GADDR_POS = IGMP_CSUM_POS + IGMP_CSUM_LEN; + + + // complete header length + + /** + * Length in bytes of an IGMP header. + */ + int IGMP_HEADER_LEN = IGMP_GADDR_POS + IGMP_GADDR_LEN; // 8 +} diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPMessage.java b/javasrc/net/sourceforge/jpcap/net/IGMPMessage.java new file mode 100644 index 0000000..9517199 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IGMPMessage.java @@ -0,0 +1,52 @@ +// $Id: IGMPMessage.java,v 1.2 2004/10/02 01:23:19 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import java.util.HashMap; + + +/** + * IGMP message utility class. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.2 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ + */ +public class IGMPMessage implements IGMPMessages +{ + /** + * Fetch an IGMP message. + * @param code the code associated with the message. + * @return a message describing the significance of the IGMP code. + */ + public static String getDescription(int code) { + Integer c = new Integer(code); + if(messages.containsKey(c)) + return (String)messages.get(c); + else + return "unknown"; + } + + /** + * 'Human-readable' IGMP messages. + */ + //jdk1.5: private static HashMap messages = new HashMap(); + private static HashMap messages = new HashMap(); + static { + messages.put(new Integer(LEAVE), "leave group"); + messages.put(new Integer(V1_REPORT), "v1 membership report"); + messages.put(new Integer(V2_REPORT), "v2 membership report"); + messages.put(new Integer(QUERY), "membership query"); + } + + + private String _rcsid = + "$Id: IGMPMessage.java,v 1.2 2004/10/02 01:23:19 pcharles Exp $"; +} + diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPMessages.java b/javasrc/net/sourceforge/jpcap/net/IGMPMessages.java new file mode 100644 index 0000000..b5ab4a0 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IGMPMessages.java @@ -0,0 +1,42 @@ +// $Id: IGMPMessages.java,v 1.1 2001/07/30 00:00:02 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Code constants for IGMP message types. + * + * From RFC #2236. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/07/30 00:00:02 $ + */ +public interface IGMPMessages +{ + /** + * membership query. + */ + int QUERY = 0x11; + + /** + * v1 membership report. + */ + int V1_REPORT = 0x12; + + /** + * v2 membership report. + */ + int V2_REPORT = 0x16; + + /** + * Leave group. + */ + int LEAVE = 0x17; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPPacket.java b/javasrc/net/sourceforge/jpcap/net/IGMPPacket.java new file mode 100644 index 0000000..113524f --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IGMPPacket.java @@ -0,0 +1,163 @@ +// $Id: IGMPPacket.java,v 1.7 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.AnsiEscapeSequences; +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + + +/** + * An IGMP packet. + *

    + * Extends an IP packet, adding an IGMP header and IGMP data payload. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.7 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class IGMPPacket extends IPPacket implements IGMPFields, Serializable +{ + public IGMPPacket(int lLen, byte [] bytes) { + super(lLen, bytes); + } + + public IGMPPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + private byte[] _igmpHeaderBytes = null; + /** + * Fetch the IGMP header a byte array. + */ + public byte[] getIGMPHeader() { + if(_igmpHeaderBytes == null) { + _igmpHeaderBytes = + PacketEncoding.extractHeader(_ethOffset,IGMP_HEADER_LEN, _bytes); + } + return _igmpHeaderBytes; + } + + /** + * Fetch the IGMP header as a byte array. + */ + public byte[] getHeader() { + return getIGMPHeader(); + } + + private byte[] _igmpDataBytes = null; + /** + * Fetch the IGMP data as a byte array. + */ + public byte[] getIGMPData() { + if(_igmpDataBytes == null) { + // set data length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + int dataLen = _bytes.length - _ethOffset - IGMP_HEADER_LEN; + + _igmpDataBytes = + PacketEncoding.extractData(_ethOffset, IGMP_HEADER_LEN, + _bytes, dataLen); + } + return _igmpDataBytes; + } + + /** + * Fetch the IGMP data as a byte array. + */ + public byte[] getData() { + return getIGMPData(); + } + + /** + * Fetch the IGMP message type, including subcode. Return value can be + * used with IGMPMessage.getDescription(). + * @return a 2-byte value containing the message type in the high byte + * and the message type subcode in the low byte. + */ + public int getMessageType() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + IGMP_CODE_POS, + IGMP_CODE_LEN); + } + + /** + * Fetch the IGMP max response time. + */ + public int getMaxResponseTime() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + IGMP_MRSP_POS, + IGMP_MRSP_LEN); + } + + /** + * Fetch the IGMP header checksum. + */ + public int getIGMPChecksum() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + IGMP_CSUM_POS, + IGMP_CSUM_LEN); + } + + /** + * Fetch the IGMP header checksum. + */ + public int getChecksum() { + return getIGMPChecksum(); + } + + /** + * Fetch the IGMP group address. + */ + public String getGroupAddress() { + return IPAddress.extract(_ipOffset + IGMP_GADDR_POS, _bytes); + } + + + /** + * Convert this IGMP packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this IGMP packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("IGMPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(IGMPMessage.getDescription(getMessageType())); + buffer.append(", "); + buffer.append(getGroupAddress() + ": "); + buffer.append(getSourceAddress() + " -> " + + getDestinationAddress()); + buffer.append(" l=" + IGMP_HEADER_LEN + "," + + (_bytes.length-_ipOffset-IGMP_HEADER_LEN)); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.BROWN; + } + + + private String _rcsid = + "$Id: IGMPPacket.java,v 1.7 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IPAddress.java b/javasrc/net/sourceforge/jpcap/net/IPAddress.java new file mode 100644 index 0000000..1ff3ba5 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IPAddress.java @@ -0,0 +1,107 @@ +// $Id: IPAddress.java,v 1.5 2002/11/07 23:23:38 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.ArrayHelper; + + +/** + * IP address. + *

    + * This class doesn't store IP addresses. There's a java class for that, + * and it is too big and cumbersome for our purposes. + *

    + * This class contains a utility method for extracting an IP address + * from a big-endian byte array. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2002/11/07 23:23:38 $ + */ +public class IPAddress +{ + /** + * Convert an IP address stored in an int to its string representation. + */ + private static String toString(int address) { + StringBuffer sa = new StringBuffer(); + for(int i=0; i> 24); + address <<= 8; + if(i != WIDTH - 1) + sa.append('.'); + } + return sa.toString(); + } + + /** + * Extract a string describing an IP address from an array of bytes. + * + * @param offset the offset of the address data. + * @param bytes an array of bytes containing the IP address. + * @return a string of the form "255.255.255.255" + */ + public static String extract(int offset, byte [] bytes) { + return toString(ArrayHelper.extractInteger(bytes, offset, WIDTH)); + /* + StringBuffer sa = new StringBuffer(); + for(int i=offset; i + * Extends an ethernet packet, adding IP header information and an IP + * data payload. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.24 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class IPPacket extends EthernetPacket implements IPFields, Serializable +{ + // offset from beginning of byte array where IP header ends (i.e., + // size of ethernet frame header and IP header + protected int _ipOffset; + + /** + * Create a new IP packet. + */ + public IPPacket(int lLen, byte [] bytes) { + super(lLen, bytes); + // fetch the actual header length from the incoming bytes + _ipHeaderLength = + (ArrayHelper.extractInteger(_bytes,_ethOffset+IP_VER_POS, + IP_VER_LEN) & 0xf) * 4; + // set offset into _bytes of previous layers + _ipOffset = _ethOffset + _ipHeaderLength; + } + + /** + * Create a new IP packet. + */ + public IPPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + private int _version; + private boolean _versionSet = false; // have to use a boolean, int!=Object + /** + * Get the IP version code. + */ + public int getVersion() { + if(! _versionSet) { + _version = + (ArrayHelper.extractInteger(_bytes, _ethOffset + IP_VER_POS, + IP_VER_LEN) >> 4) & 0xf; + _versionSet = true; + } + return _version; + } + + // set in constructor + private int _ipHeaderLength; + /** + * Fetch the IP header length in bytes. + */ + public int getIPHeaderLength() { + return _ipHeaderLength; + } + + /** + * Fetch the IP header length in bytes. + */ + public int getIpHeaderLength() { + // this is the old method call, but everything else uses all caps for + // TCP, so in the interest of consistency... + return getIPHeaderLength(); + } + + /** + * Fetch the packet IP header length. + */ + public int getHeaderLength() { + return getIPHeaderLength(); + } + + private int _typeOfService; + private boolean _typeOfServiceSet = false; + /** + * Fetch the type of service. + * For more information refer to the TypesOfService interface. + */ + public int getTypeOfService() { + if(! _typeOfServiceSet) { + _typeOfService = + ArrayHelper.extractInteger(_bytes, _ethOffset + IP_TOS_POS, + IP_TOS_LEN); + _typeOfServiceSet = true; + } + return _typeOfService; + } + + private int _length; + private boolean _lengthSet = false; + /** + * Fetch the IP length in bytes. + */ + public int getLength() { + if(! _lengthSet) { + _length = + ArrayHelper.extractInteger(_bytes, _ethOffset + IP_LEN_POS, + IP_LEN_LEN); + _lengthSet = true; + } + return _length; + } + + private int _id; + private boolean _idSet = false; + /** + * Fetch the unique ID of this IP datagram. The ID normally + * increments by one each time a datagram is sent by a host. + */ + public int getId() { + if(! _idSet) { + _id = + ArrayHelper.extractInteger(_bytes, _ethOffset + IP_ID_POS, IP_ID_LEN); + _idSet = true; + } + return _id; + } + + private int _fragmentFlags; + private boolean _fragmentFlagsSet = false; + /** + * Fetch fragmentation flags. + */ + public int getFragmentFlags() { + if(! _fragmentFlagsSet) { + // fragment flags are the high 3 bits + int huh = ArrayHelper.extractInteger(_bytes, + _ethOffset + IP_FRAG_POS, + IP_FRAG_LEN); + _fragmentFlags = + (ArrayHelper.extractInteger(_bytes, _ethOffset + IP_FRAG_POS, + IP_FRAG_LEN) >> 13) & 0x7; + _fragmentFlagsSet = true; + } + return _fragmentFlags; + } + + private int _fragmentOffset; + private boolean _fragmentOffsetSet = false; + /** + * Fetch fragmentation offset. + */ + public int getFragmentOffset() { + if(! _fragmentOffsetSet) { + // offset is the low 13 bits + _fragmentOffset = + ArrayHelper.extractInteger(_bytes, _ethOffset + IP_FRAG_POS, + IP_FRAG_LEN) & 0x1fff; + _fragmentOffsetSet = true; + } + return _fragmentOffset; + } + + private int _timeToLive; + private boolean _timeToLiveSet = false; + /** + * Fetch the time to live. TTL sets the upper limit on the number of + * routers through which this IP datagram is allowed to pass. + */ + public int getTimeToLive() { + if(! _timeToLiveSet) { + _timeToLive = + ArrayHelper.extractInteger(_bytes, _ethOffset + IP_TTL_POS, + IP_TTL_LEN); + _timeToLiveSet = true; + } + return _timeToLive; + } + + private int _ipProtocol; + private boolean _ipProtocolSet = false; + /** + * Fetch the code indicating the type of protocol embedded in the IP + * datagram. @see IPProtocols. + */ + public int getIPProtocol() { + if(! _ipProtocolSet) { + _ipProtocol = + ArrayHelper.extractInteger(_bytes, _ethOffset + IP_CODE_POS, + IP_CODE_LEN); + _ipProtocolSet = true; + } + return _ipProtocol; + } + /** + * Fetch the code indicating the type of protocol embedded in the IP + * datagram. @see IPProtocols. + */ + public int getProtocol() { + return getIPProtocol(); + } + + private int _ipChecksum; + private boolean _ipChecksumSet = false; + /** + * Fetch the header checksum. + */ + public int getIPChecksum() { + if(! _ipChecksumSet) { + _ipChecksum = + ArrayHelper.extractInteger(_bytes, _ethOffset + IP_CSUM_POS, + IP_CSUM_LEN); + _ipChecksumSet = true; + } + return _ipChecksum; + } + + /** + * Fetch the header checksum. + */ + public int getChecksum() { + return getIPChecksum(); + } + + private String _sourceAddress = null; + /** + * Fetch the IP address of the host where the packet originated from. + */ + public String getSourceAddress() { + if(_sourceAddress == null) { + _sourceAddress = IPAddress.extract(_ethOffset + IP_SRC_POS, _bytes); + } + return _sourceAddress; + } + + private byte[] _sourceAddressBytes = null; + /** + * Fetch the source address as a byte array. + */ + public byte[] getSourceAddressBytes() { + if(_sourceAddressBytes == null) { + _sourceAddressBytes = new byte[4]; + System.arraycopy(_bytes, _ethOffset + IP_SRC_POS, + _sourceAddressBytes, 0, 4); + } + return _sourceAddressBytes; + } + + private long _sourceAddressAsLong; + private boolean _sourceAddressAsLongSet = false; + /** + * Fetch the source address as a long. + */ + public long getSourceAddressAsLong() { + if(! _sourceAddressAsLongSet) { + _sourceAddressAsLong = + ArrayHelper.extractLong(_bytes, _ethOffset + IP_SRC_POS, 4); + _sourceAddressAsLongSet = true; + } + return _sourceAddressAsLong; + } + + private String _destinationAddress = null; + /** + * Fetch the IP address of the host where the packet is destined. + */ + public String getDestinationAddress() { + if(_destinationAddress == null) { + _destinationAddress = + IPAddress.extract(_ethOffset + IP_DST_POS, _bytes); + } + return _destinationAddress; + } + + private byte[] _destinationAddressBytes = null; + /** + * Fetch the destination address as a byte array. + */ + public byte[] getDestinationAddressBytes() { + if(_destinationAddressBytes == null) { + _destinationAddressBytes = new byte[4]; + System.arraycopy(_bytes,_ethOffset+IP_DST_POS, + _destinationAddressBytes,0,4); + } + return _destinationAddressBytes; + } + + private long _destinationAddressAsLong; + private boolean _destinationAddressAsLongSet = false; + /** + * Fetch the destination address as a long. + */ + public long getDestinationAddressAsLong() { + if(! _destinationAddressAsLongSet) { + _destinationAddressAsLong = + ArrayHelper.extractLong(_bytes, _ethOffset + IP_DST_POS, 4); + _destinationAddressAsLongSet = true; + } + return _destinationAddressAsLong; + } + + private byte[] _ipHeaderBytes = null; + /** + * Fetch the IP header a byte array. + */ + public byte[] getIPHeader() { + if(_ipHeaderBytes == null) { + _ipHeaderBytes = + PacketEncoding.extractHeader(_ethOffset, getIPHeaderLength(), + _bytes); + } + return _ipHeaderBytes; + } + + /** + * Fetch the IP header as a byte array. + */ + public byte[] getHeader() { + return getIPHeader(); + } + + private byte[] _ipDataBytes = null; + /** + * Fetch the IP data as a byte array. + */ + public byte[] getIPData() { + if(_ipDataBytes == null) { + // set data length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + int tmpLen = getLength() - getIPHeaderLength(); + _ipDataBytes = + PacketEncoding.extractData(_ethOffset, getIPHeaderLength(), + _bytes, tmpLen); + } + return _ipDataBytes; + } + + /** + * Fetch the IP data as a byte array. + */ + public byte[] getData() { + return getIPData(); + } + + private boolean _isValidChecksum; + private boolean _isValidChecksumSet = false; + /** + * Check if the IP packet is valid, checksum-wise. + */ + public boolean isValidChecksum() { + if(! _isValidChecksumSet) { + // first validate other information about the packet. if this stuff + // is not true, the packet (and therefore the checksum) is invalid + // - ip_hl >= 5 (ip_hl is the length in 4-byte words) + if( getIPHeaderLength() < IP_HEADER_LEN ) { + _isValidChecksum = false; + } else { + _isValidChecksum = (computeReceiverIPChecksum() == 0xffff); + } + _isValidChecksumSet = true; + } + return _isValidChecksum; + } + + /** + * Check if the IP packet is valid, checksum-wise. + */ + public boolean isValidIPChecksum() { + return isValidChecksum(); + } + protected int computeReceiverIPChecksum() { + return computeReceiverChecksum(_ethOffset, getIPHeaderLength()); + } + protected int computeReceiverChecksum(int start, int len) { + // checksum should come out to -1 if checksum is correct + return onesCompSum(_bytes,start,len); + } + protected int computeSenderIPChecksum() { + return computeSenderChecksum(_ethOffset, getIPHeaderLength(), 10); + } + protected int computeSenderChecksum(int start, int len, int csumPos) { + // quick bad-data check + if( csumPos >= len) return 0; // bad data, header too short + // copy bytes, zero out checksum + byte[] sbytes = new byte[len]; + System.arraycopy(_bytes, start, sbytes, 0, len); + // zero out any current checksum + sbytes[csumPos] = sbytes[csumPos+1] = 0; + // checksum should come out to -1 if checksum is correct + return onesCompSum(sbytes,0,len); + } + protected int onesCompSum(byte[] bytes, int start, int len) { + int sum = 0; + // basically, IP checksums are done by taking the 16 bit ones- + // complement sum of the IP header. This means summing two bytes + // at a time. no error checking is done (e.g. bounds checking) + int i; + for(i = 0; i < len; i+=2) { + // put bytes in ints so we can forget about sign-extension + int i1 = bytes[start + i] & 0xff; + // zero-pad, maybe + int i2 = (start + i + 1 < len ? bytes[start + i + 1] & 0xff : 0); + sum += ((i1 << 8) + i2); + while( (sum & 0xffff) != sum ) { + sum &= 0xffff; + sum += 1; + } + } + return sum; + } + + /** + * Convert this IP packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this IP packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("IPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(getSourceAddress() + " -> " + + getDestinationAddress()); + buffer.append(" proto=" + getProtocol()); + buffer.append(" l=" + getIPHeaderLength() + "," + getLength()); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Convert this IP packet to a more verbose string. + */ + public String toColoredVerboseString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("IPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append("version=" + getVersion() + ", "); + buffer.append("hlen=" + getHeaderLength() + ", "); + buffer.append("tos=" + getTypeOfService() + ", "); + buffer.append("length=" + getLength() + ", "); + buffer.append("id=" + getId() + ", "); + buffer.append("flags=0x" + Integer.toHexString(getFragmentFlags()) + ", "); + buffer.append("offset=" + getFragmentOffset() + ", "); + buffer.append("ttl=" + getTimeToLive() + ", "); + buffer.append("proto=" + getProtocol() + ", "); + buffer.append("sum=0x" + Integer.toHexString(getChecksum()) + ", "); + buffer.append("src=" + getSourceAddress() + ", "); + buffer.append("dest=" + getDestinationAddress()); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.WHITE; + } + + /** + * This inner class provides access to private methods for unit testing. + */ + public class TestProbe { + public int getComputedReceiverIPChecksum() { + return IPPacket.this.computeReceiverIPChecksum(); + } + public int getComputedSenderIPChecksum() { + return IPPacket.this.computeSenderIPChecksum(); + } + } + + + private String _rcsid = + "$Id: IPPacket.java,v 1.24 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IPPort.java b/javasrc/net/sourceforge/jpcap/net/IPPort.java new file mode 100644 index 0000000..a2db14c --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IPPort.java @@ -0,0 +1,1447 @@ +// $Id: IPPort.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import java.util.HashMap; + + +/** + * IP port utility class. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ + */ +public class IPPort implements IPPorts +{ + /** + * Fetch a well-known IP port description. + * @param port the port associated with the description. + * @return a description of the ip port. + */ + public static String getDescription(int port) { + Integer c = new Integer(port); + if(descriptions.containsKey(c)) + return (String)descriptions.get(c); + else + if(port >= X11_BEGIN && port <= X11_END) + return (String)descriptions.get(new Integer(X11)); + else + return UNKNOWN; + } + + /** + * Fetch a well-known IP port name. + * @param port the port associated with the name. + * @return the name of the ip port. + */ + public static String getName(int port) { + Integer c = new Integer(port); + if(names.containsKey(c)) + return (String)names.get(c); + else + if(port >= X11_BEGIN && port <= X11_END) + return (String)names.get(new Integer(X11)); + else + return c.toString(); + } + + /** + * 'Human-readable' IP port descriptions. + */ + //jdk1.5: private static HashMap descriptions = new HashMap(); + private static HashMap descriptions = new HashMap(); + static { + // todo: descriptions aren't descriptions + descriptions.put(new Integer(IPPort.NONE), "no port specified"); + descriptions.put(new Integer(IPPort.RESERVED_0), "port 0 is reserved!"); + descriptions.put(new Integer(IPPort.TCPMUX), "tcpmux"); + descriptions.put(new Integer(IPPort.COMPRESSNET2), "compressnet2"); + descriptions.put(new Integer(IPPort.COMPRESSNET), "compressnet"); + descriptions.put(new Integer(IPPort.RJE), "rje"); + descriptions.put(new Integer(IPPort.ECHO), "echo"); + descriptions.put(new Integer(IPPort.DISCARD), "discard"); + descriptions.put(new Integer(IPPort.SYSTAT), "systat"); + descriptions.put(new Integer(IPPort.DAYTIME), "daytime"); + descriptions.put(new Integer(IPPort.QOTD), "qotd"); + descriptions.put(new Integer(IPPort.MSP), "msp"); + descriptions.put(new Integer(IPPort.CHARGEN), "chargen"); + descriptions.put(new Integer(IPPort.FTP_DATA), "ftp_data"); + descriptions.put(new Integer(IPPort.FTP), "file transfer protocol"); + descriptions.put(new Integer(IPPort.SSH), "secure shell protocol"); + descriptions.put(new Integer(IPPort.TELNET), "remote terminal protocol"); + descriptions.put(new Integer(IPPort.PRIV_MAIL), "priv_mail"); + descriptions.put(new Integer(IPPort.SMTP), "simple mail xfer protocol"); + descriptions.put(new Integer(IPPort.NSW_FE), "nsw_fe"); + descriptions.put(new Integer(IPPort.MSG_ICP), "msg_icp"); + descriptions.put(new Integer(IPPort.MSG_AUTH), "msg_auth"); + descriptions.put(new Integer(IPPort.DSP), "dsp"); + descriptions.put(new Integer(IPPort.PRIV_PRINT), "priv_print"); + descriptions.put(new Integer(IPPort.TIME), "time"); + descriptions.put(new Integer(IPPort.RAP), "rap"); + descriptions.put(new Integer(IPPort.RLP), "rlp"); + descriptions.put(new Integer(IPPort.GRAPHICS), "graphics"); + descriptions.put(new Integer(IPPort.NAME), "name"); + descriptions.put(new Integer(IPPort.NAMESERVER), "nameserver"); + descriptions.put(new Integer(IPPort.NICNAME), "nicname"); + descriptions.put(new Integer(IPPort.MPM_FLAGS), "mpm_flags"); + descriptions.put(new Integer(IPPort.MPM), "mpm"); + descriptions.put(new Integer(IPPort.MPM_SND), "mpm_snd"); + descriptions.put(new Integer(IPPort.NI_FTP), "ni_ftp"); + descriptions.put(new Integer(IPPort.AUDITD), "auditd"); + descriptions.put(new Integer(IPPort.TACACS), "tacacs"); + descriptions.put(new Integer(IPPort.RE_MAIL_CK), "re_mail_ck"); + descriptions.put(new Integer(IPPort.LA_MAINT), "la_maint"); + descriptions.put(new Integer(IPPort.XNS_TIME), "xns_time"); + descriptions.put(new Integer(IPPort.DOMAIN), "domain"); + descriptions.put(new Integer(IPPort.XNS_CH), "xns_ch"); + descriptions.put(new Integer(IPPort.ISI_GL), "isi_gl"); + descriptions.put(new Integer(IPPort.XNS_AUTH), "xns_auth"); + descriptions.put(new Integer(IPPort.PRIV_TERMINAL), "priv_terminal"); + descriptions.put(new Integer(IPPort.XNS_MAIL), "xns_mail"); + descriptions.put(new Integer(IPPort.PRIV_FILE), "priv_file"); + descriptions.put(new Integer(IPPort.NI_MAIL), "ni_mail"); + descriptions.put(new Integer(IPPort.ACAS), "acas"); + descriptions.put(new Integer(IPPort.WHOIS), "whois++"); + descriptions.put(new Integer(IPPort.COVIA), "covia"); + descriptions.put(new Integer(IPPort.TACACS_DS), "tacacs_ds"); + descriptions.put(new Integer(IPPort.SQLSNET), "sql*net"); + descriptions.put(new Integer(IPPort.BOOTPS), "bootps"); + descriptions.put(new Integer(IPPort.BOOTPC), "bootpc"); + descriptions.put(new Integer(IPPort.TFTP), "tftp"); + descriptions.put(new Integer(IPPort.GOPHER), "gopher"); + descriptions.put(new Integer(IPPort.NETRJS_1), "netrjs_1"); + descriptions.put(new Integer(IPPort.NETRJS_2), "netrjs_2"); + descriptions.put(new Integer(IPPort.NETRJS_3), "netrjs_3"); + descriptions.put(new Integer(IPPort.NETRJS_4), "netrjs_4"); + descriptions.put(new Integer(IPPort.PRIV_DIALOUT), "priv_dialout"); + descriptions.put(new Integer(IPPort.DEOS), "deos"); + descriptions.put(new Integer(IPPort.PRIV_RJE), "priv_rje"); + descriptions.put(new Integer(IPPort.VETTCP), "vettcp"); + descriptions.put(new Integer(IPPort.FINGER), "finger"); + descriptions.put(new Integer(IPPort.HTTP), "http"); + descriptions.put(new Integer(IPPort.WWW), "www"); + descriptions.put(new Integer(IPPort.HOSTS2_NS), "hosts2_ns"); + descriptions.put(new Integer(IPPort.XFER), "xfer"); + descriptions.put(new Integer(IPPort.MIT_ML_DEV), "mit_ml_dev"); + descriptions.put(new Integer(IPPort.CTF), "ctf"); + descriptions.put(new Integer(IPPort.MIT_ML_DEV2), "mit_ml_dev"); + descriptions.put(new Integer(IPPort.MFCOBOL), "mfcobol"); + descriptions.put(new Integer(IPPort.PRIV_TERMLINK), "priv_termlink"); + descriptions.put(new Integer(IPPort.KERBEROS), "kerberos"); + descriptions.put(new Integer(IPPort.SU_MIT_TG), "su_mit_tg"); + descriptions.put(new Integer(IPPort.DNSIX), "dnsix"); + descriptions.put(new Integer(IPPort.MIT_DOV), "mit_dov"); + descriptions.put(new Integer(IPPort.NPP), "npp"); + descriptions.put(new Integer(IPPort.DCP), "dcp"); + descriptions.put(new Integer(IPPort.OBJCALL), "objcall"); + descriptions.put(new Integer(IPPort.SUPDUP), "supdup"); + descriptions.put(new Integer(IPPort.DIXIE), "dixie"); + descriptions.put(new Integer(IPPort.SWIFT_RVF), "swift_rvf"); + descriptions.put(new Integer(IPPort.TACNEWS), "tacnews"); + descriptions.put(new Integer(IPPort.METAGRAM), "metagram"); + descriptions.put(new Integer(IPPort.NEWACCT), "newacct"); + descriptions.put(new Integer(IPPort.HOSTNAME), "hostname"); + descriptions.put(new Integer(IPPort.ISO_TSAP), "iso_tsap"); + descriptions.put(new Integer(IPPort.GPPITNP), "gppitnp"); + descriptions.put(new Integer(IPPort.ACR_NEMA), "acr_nema"); + descriptions.put(new Integer(IPPort.CSO), "cso"); + descriptions.put(new Integer(IPPort.CSNET_NS), "csnet_ns"); + descriptions.put(new Integer(IPPort.TSMUX_3COM), "3com_tsmux"); + descriptions.put(new Integer(IPPort.RTELNET), "rtelnet"); + descriptions.put(new Integer(IPPort.SNAGAS), "snagas"); + descriptions.put(new Integer(IPPort.POP2), "pop2"); + descriptions.put(new Integer(IPPort.POP3), "pop3"); + descriptions.put(new Integer(IPPort.SUNRPC), "sunrpc"); + descriptions.put(new Integer(IPPort.MCIDAS), "mcidas"); + descriptions.put(new Integer(IPPort.IDENT), "ident"); + descriptions.put(new Integer(IPPort.AUTH), "auth"); + descriptions.put(new Integer(IPPort.AUDIONEWS), "audionews"); + descriptions.put(new Integer(IPPort.SFTP), "sftp"); + descriptions.put(new Integer(IPPort.ANSANOTIFY), "ansanotify"); + descriptions.put(new Integer(IPPort.UUCP_PATH), "uucp_path"); + descriptions.put(new Integer(IPPort.SQLSERV), "sqlserv"); + descriptions.put(new Integer(IPPort.NNTP), "nntp"); + descriptions.put(new Integer(IPPort.CFDPTKT), "cfdptkt"); + descriptions.put(new Integer(IPPort.ERPC), "erpc"); + descriptions.put(new Integer(IPPort.SMAKYNET), "smakynet"); + descriptions.put(new Integer(IPPort.NTP), "ntp"); + descriptions.put(new Integer(IPPort.ANSATRADER), "ansatrader"); + descriptions.put(new Integer(IPPort.LOCUS_MAP), "locus_map"); + descriptions.put(new Integer(IPPort.NXEDIT), "nxedit"); + descriptions.put(new Integer(IPPort.LOCUS_CON), "locus_con"); + descriptions.put(new Integer(IPPort.GSS_XLICEN), "gss_xlicen"); + descriptions.put(new Integer(IPPort.PWDGEN), "pwdgen"); + descriptions.put(new Integer(IPPort.CISCO_FNA), "cisco_fna"); + descriptions.put(new Integer(IPPort.CISCO_TNA), "cisco_tna"); + descriptions.put(new Integer(IPPort.CISCO_SYS), "cisco_sys"); + descriptions.put(new Integer(IPPort.STATSRV), "statsrv"); + descriptions.put(new Integer(IPPort.INGRES_NET), "ingres_net"); + descriptions.put(new Integer(IPPort.EPMAP), "epmap"); + descriptions.put(new Integer(IPPort.PROFILE), "profile"); + descriptions.put(new Integer(IPPort.NETBIOS_NS), "netbios_ns"); + descriptions.put(new Integer(IPPort.NETBIOS_DGM), "netbios_dgm"); + descriptions.put(new Integer(IPPort.NETBIOS_SSN), "netbios_ssn"); + descriptions.put(new Integer(IPPort.EMFIS_DATA), "emfis_data"); + descriptions.put(new Integer(IPPort.EMFIS_CNTL), "emfis_cntl"); + descriptions.put(new Integer(IPPort.BL_IDM), "bl_idm"); + descriptions.put(new Integer(IPPort.IMAP), "imap"); + descriptions.put(new Integer(IPPort.UMA), "uma"); + descriptions.put(new Integer(IPPort.UAAC), "uaac"); + descriptions.put(new Integer(IPPort.ISO_TP0), "iso_tp0"); + descriptions.put(new Integer(IPPort.ISO_IP), "iso_ip"); + descriptions.put(new Integer(IPPort.JARGON), "jargon"); + descriptions.put(new Integer(IPPort.AED_512), "aed_512"); + descriptions.put(new Integer(IPPort.SQL_NET), "sql_net"); + descriptions.put(new Integer(IPPort.HEMS), "hems"); + descriptions.put(new Integer(IPPort.BFTP), "bftp"); + descriptions.put(new Integer(IPPort.SGMP), "sgmp"); + descriptions.put(new Integer(IPPort.NETSC_PROD), "netsc_prod"); + descriptions.put(new Integer(IPPort.NETSC_DEV), "netsc_dev"); + descriptions.put(new Integer(IPPort.SQLSRV), "sqlsrv"); + descriptions.put(new Integer(IPPort.KNET_CMP), "knet_cmp"); + descriptions.put(new Integer(IPPort.PCMAIL_SRV), "pcmail_srv"); + descriptions.put(new Integer(IPPort.NSS_ROUTING), "nss_routing"); + descriptions.put(new Integer(IPPort.SGMP_TRAPS), "sgmp_traps"); + descriptions.put(new Integer(IPPort.SNMP), "snmp"); + descriptions.put(new Integer(IPPort.SNMPTRAP), "snmptrap"); + descriptions.put(new Integer(IPPort.CMIP_MAN), "cmip_man"); + descriptions.put(new Integer(IPPort.CMIP_AGENT), "cmip_agent"); + descriptions.put(new Integer(IPPort.XNS_COURIER), "xns_courier"); + descriptions.put(new Integer(IPPort.S_NET), "s_net"); + descriptions.put(new Integer(IPPort.NAMP), "namp"); + descriptions.put(new Integer(IPPort.RSVD), "rsvd"); + descriptions.put(new Integer(IPPort.SEND), "send"); + descriptions.put(new Integer(IPPort.PRINT_SRV), "print_srv"); + descriptions.put(new Integer(IPPort.MULTIPLEX), "multiplex"); + descriptions.put(new Integer(IPPort.CL1), "cl1"); + descriptions.put(new Integer(IPPort.XYPLEX_MUX), "xyplex_mux"); + descriptions.put(new Integer(IPPort.MAILQ), "mailq"); + descriptions.put(new Integer(IPPort.VMNET), "vmnet"); + descriptions.put(new Integer(IPPort.GENRAD_MUX), "genrad_mux"); + descriptions.put(new Integer(IPPort.XDMCP), "xdmcp"); + descriptions.put(new Integer(IPPort.NEXTSTEP), "nextstep"); + descriptions.put(new Integer(IPPort.BGP), "bgp"); + descriptions.put(new Integer(IPPort.RIS), "ris"); + descriptions.put(new Integer(IPPort.UNIFY), "unify"); + descriptions.put(new Integer(IPPort.AUDIT), "audit"); + descriptions.put(new Integer(IPPort.OCBINDER), "ocbinder"); + descriptions.put(new Integer(IPPort.OCSERVER), "ocserver"); + descriptions.put(new Integer(IPPort.REMOTE_KIS), "remote_kis"); + descriptions.put(new Integer(IPPort.KIS), "kis"); + descriptions.put(new Integer(IPPort.ACI), "aci"); + descriptions.put(new Integer(IPPort.MUMPS), "mumps"); + descriptions.put(new Integer(IPPort.QFT), "qft"); + descriptions.put(new Integer(IPPort.GACP), "gacp"); + descriptions.put(new Integer(IPPort.PROSPERO), "prospero"); + descriptions.put(new Integer(IPPort.OSU_NMS), "osu_nms"); + descriptions.put(new Integer(IPPort.SRMP), "srmp"); + descriptions.put(new Integer(IPPort.IRC), "irc"); + descriptions.put(new Integer(IPPort.DN6_NLM_AUD), "dn6_nlm_aud"); + descriptions.put(new Integer(IPPort.DN6_SMM_RED), "dn6_smm_red"); + descriptions.put(new Integer(IPPort.DLS), "dls"); + descriptions.put(new Integer(IPPort.DLS_MON), "dls_mon"); + descriptions.put(new Integer(IPPort.SMUX), "smux"); + descriptions.put(new Integer(IPPort.SRC), "src"); + descriptions.put(new Integer(IPPort.AT_RTMP), "at_rtmp"); + descriptions.put(new Integer(IPPort.AT_NBP), "at_nbp"); + descriptions.put(new Integer(IPPort.AT_3), "at_3"); + descriptions.put(new Integer(IPPort.AT_ECHO), "at_echo"); + descriptions.put(new Integer(IPPort.AT_5), "at_5"); + descriptions.put(new Integer(IPPort.AT_ZIS), "at_zis"); + descriptions.put(new Integer(IPPort.AT_7), "at_7"); + descriptions.put(new Integer(IPPort.AT_8), "at_8"); + descriptions.put(new Integer(IPPort.QMTP), "qmtp"); + descriptions.put(new Integer(IPPort.Z39_50), "z39.50"); + descriptions.put(new Integer(IPPort.N914C), "914c_g"); + descriptions.put(new Integer(IPPort.ANET), "anet"); + descriptions.put(new Integer(IPPort.IPX), "ipx"); + descriptions.put(new Integer(IPPort.VMPWSCS), "vmpwscs"); + descriptions.put(new Integer(IPPort.SOFTPC), "softpc"); + descriptions.put(new Integer(IPPort.CAILIC), "CAIlic"); + descriptions.put(new Integer(IPPort.DBASE), "dbase"); + descriptions.put(new Integer(IPPort.MPP), "mpp"); + descriptions.put(new Integer(IPPort.UARPS), "uarps"); + descriptions.put(new Integer(IPPort.IMAP3), "imap3"); + descriptions.put(new Integer(IPPort.FLN_SPX), "fln_spx"); + descriptions.put(new Integer(IPPort.RSH_SPX), "rsh_spx"); + descriptions.put(new Integer(IPPort.CDC), "cdc"); + descriptions.put(new Integer(IPPort.MASQDIALER), "masqdialer"); + descriptions.put(new Integer(IPPort.DIRECT), "direct"); + descriptions.put(new Integer(IPPort.SUR_MEAS), "sur_meas"); + descriptions.put(new Integer(IPPort.INBUSINESS), "inbusiness"); + descriptions.put(new Integer(IPPort.LINK), "link"); + descriptions.put(new Integer(IPPort.DSP3270), "dsp3270"); + descriptions.put(new Integer(IPPort.SUBNTBCST_TFTP), "subntbcst_tftp"); + descriptions.put(new Integer(IPPort.BHFHS), "bhfhs"); + descriptions.put(new Integer(IPPort.RAP2), "rap2"); + descriptions.put(new Integer(IPPort.SET), "set"); + descriptions.put(new Integer(IPPort.YAK_CHAT), "yak_chat"); + descriptions.put(new Integer(IPPort.ESRO_GEN), "esro_gen"); + descriptions.put(new Integer(IPPort.OPENPORT), "openport"); + descriptions.put(new Integer(IPPort.NSIIOPS), "nsiiops"); + descriptions.put(new Integer(IPPort.ARCISDMS), "arcisdms"); + descriptions.put(new Integer(IPPort.HDAP), "hdap"); + descriptions.put(new Integer(IPPort.BGMP), "bgmp"); + descriptions.put(new Integer(IPPort.X_BONE_CTL), "x_bone_ctl"); + descriptions.put(new Integer(IPPort.SST), "sst"); + descriptions.put(new Integer(IPPort.TD_SERVICE), "td_service"); + descriptions.put(new Integer(IPPort.TD_REPLICA), "td_replica"); + descriptions.put(new Integer(IPPort.HTTP_MGMT), "http_mgmt"); + descriptions.put(new Integer(IPPort.PERSONAL_LINK), "personal_link"); + descriptions.put(new Integer(IPPort.CABLEPORT_AX), "cableport_ax"); + descriptions.put(new Integer(IPPort.RESCAP), "rescap"); + descriptions.put(new Integer(IPPort.CORERJD), "corerjd"); + descriptions.put(new Integer(IPPort.FXP_1), "fxp_1"); + descriptions.put(new Integer(IPPort.K_BLOCK), "k_block"); + descriptions.put(new Integer(IPPort.NOVASTORBAKCUP), "novastorbakcup"); + descriptions.put(new Integer(IPPort.ENTRUSTTIME), "entrusttime"); + descriptions.put(new Integer(IPPort.BHMDS), "bhmds"); + descriptions.put(new Integer(IPPort.ASIP_WEBADMIN), "asip_webadmin"); + descriptions.put(new Integer(IPPort.VSLMP), "vslmp"); + descriptions.put(new Integer(IPPort.MAGENTA_LOGIC), "magenta_logic"); + descriptions.put(new Integer(IPPort.OPALIS_ROBOT), "opalis_robot"); + descriptions.put(new Integer(IPPort.DPSI), "dpsi"); + descriptions.put(new Integer(IPPort.DECAUTH), "decauth"); + descriptions.put(new Integer(IPPort.ZANNET), "zannet"); + descriptions.put(new Integer(IPPort.PKIX_TIMESTAMP), "pkix_timestamp"); + descriptions.put(new Integer(IPPort.PTP_EVENT), "ptp_event"); + descriptions.put(new Integer(IPPort.PTP_GENERAL), "ptp_general"); + descriptions.put(new Integer(IPPort.PIP), "pip"); + descriptions.put(new Integer(IPPort.RTSPS), "rtsps"); + descriptions.put(new Integer(IPPort.TEXAR), "texar"); + descriptions.put(new Integer(IPPort.PDAP), "pdap"); + descriptions.put(new Integer(IPPort.PAWSERV), "pawserv"); + descriptions.put(new Integer(IPPort.ZSERV), "zserv"); + descriptions.put(new Integer(IPPort.FATSERV), "fatserv"); + descriptions.put(new Integer(IPPort.CSI_SGWP), "csi_sgwp"); + descriptions.put(new Integer(IPPort.MFTP), "mftp"); + descriptions.put(new Integer(IPPort.MATIP_TYPE_A), "matip_type_a"); + descriptions.put(new Integer(IPPort.MATIP_TYPE_B), "matip_type_b"); + descriptions.put(new Integer(IPPort.BHOETTY), "bhoetty"); + descriptions.put(new Integer(IPPort.DTAG_STE_SB), "dtag_ste_sb"); + descriptions.put(new Integer(IPPort.BHOEDAP4), "bhoedap4"); + descriptions.put(new Integer(IPPort.NDSAUTH), "ndsauth"); + descriptions.put(new Integer(IPPort.BH611), "bh611"); + descriptions.put(new Integer(IPPort.DATEX_ASN), "datex_asn"); + descriptions.put(new Integer(IPPort.CLOANTO_NET), "cloanto_net"); + descriptions.put(new Integer(IPPort.BHEVENT), "bhevent"); + descriptions.put(new Integer(IPPort.SHRINKWRAP), "shrinkwrap"); + descriptions.put(new Integer(IPPort.NSRMP), "nsrmp"); + descriptions.put(new Integer(IPPort.SCOI2ODIALOG), "scoi2odialog"); + descriptions.put(new Integer(IPPort.SEMANTIX), "semantix"); + descriptions.put(new Integer(IPPort.SRSSEND), "srssend"); + descriptions.put(new Integer(IPPort.RSVP_TUNNEL), "rsvp_tunnel"); + descriptions.put(new Integer(IPPort.AURORA_CMGR), "aurora_cmgr"); + descriptions.put(new Integer(IPPort.DTK), "dtk"); + descriptions.put(new Integer(IPPort.ODMR), "odmr"); + descriptions.put(new Integer(IPPort.MORTGAGEWARE), "mortgageware"); + descriptions.put(new Integer(IPPort.QBIKGDP), "qbikgdp"); + descriptions.put(new Integer(IPPort.RPC2PORTMAP), "rpc2portmap"); + descriptions.put(new Integer(IPPort.CODAAUTH), "codaauth"); + descriptions.put(new Integer(IPPort.CLEARCASE), "clearcase"); + descriptions.put(new Integer(IPPort.ULISTPROC), "ulistproc"); + descriptions.put(new Integer(IPPort.LEGENT_1), "legent_1"); + descriptions.put(new Integer(IPPort.LEGENT_2), "legent_2"); + descriptions.put(new Integer(IPPort.HASSLE), "hassle"); + descriptions.put(new Integer(IPPort.NIP), "nip"); + descriptions.put(new Integer(IPPort.TNETOS), "tnETOS"); + descriptions.put(new Integer(IPPort.DSETOS), "dsETOS"); + descriptions.put(new Integer(IPPort.IS99C), "is99c"); + descriptions.put(new Integer(IPPort.IS99S), "is99s"); + descriptions.put(new Integer(IPPort.HP_COLLECTOR), "hp_collector"); + descriptions.put(new Integer(IPPort.HP_MANAGED_NODE), "hp_managed_node"); + descriptions.put(new Integer(IPPort.HP_ALARM_MGR), "hp_alarm_mgr"); + descriptions.put(new Integer(IPPort.ARNS), "arns"); + descriptions.put(new Integer(IPPort.IBM_APP), "ibm_app"); + descriptions.put(new Integer(IPPort.ASA), "asa"); + descriptions.put(new Integer(IPPort.AURP), "aurp"); + descriptions.put(new Integer(IPPort.UNIDATA_LDM), "unidata_ldm"); + descriptions.put(new Integer(IPPort.UIS), "uis"); + descriptions.put(new Integer(IPPort.SYNOTICS_RELAY), "synotics_relay"); + descriptions.put(new Integer(IPPort.SYNOTICS_BROKER), "synotics_broker"); + descriptions.put(new Integer(IPPort.META5), "meta5"); + descriptions.put(new Integer(IPPort.EMBL_NDT), "embl_ndt"); + descriptions.put(new Integer(IPPort.NETCP), "netcp"); + descriptions.put(new Integer(IPPort.NETWARE_IP), "netware_ip"); + descriptions.put(new Integer(IPPort.MPTN), "mptn"); + descriptions.put(new Integer(IPPort.KRYPTOLAN), "kryptolan"); + descriptions.put(new Integer(IPPort.ISO_TSAP_C2), "iso_tsap_c2"); + descriptions.put(new Integer(IPPort.WORK_SOL), "work_sol"); + descriptions.put(new Integer(IPPort.UPS), "ups"); + descriptions.put(new Integer(IPPort.GENIE), "genie"); + descriptions.put(new Integer(IPPort.DECAP), "decap"); + descriptions.put(new Integer(IPPort.NCED), "nced"); + descriptions.put(new Integer(IPPort.NCLD), "ncld"); + descriptions.put(new Integer(IPPort.IMSP), "imsp"); + descriptions.put(new Integer(IPPort.TIMBUKTU), "timbuktu"); + descriptions.put(new Integer(IPPort.PRM_SM), "prm_sm"); + descriptions.put(new Integer(IPPort.PRM_NM), "prm_nm"); + descriptions.put(new Integer(IPPort.DECLADEBUG), "decladebug"); + descriptions.put(new Integer(IPPort.RMT), "rmt"); + descriptions.put(new Integer(IPPort.SYNOPTICS_TRAP), "synoptics_trap"); + descriptions.put(new Integer(IPPort.SMSP), "smsp"); + descriptions.put(new Integer(IPPort.INFOSEEK), "infoseek"); + descriptions.put(new Integer(IPPort.BNET), "bnet"); + descriptions.put(new Integer(IPPort.SILVERPLATTER), "silverplatter"); + descriptions.put(new Integer(IPPort.ONMUX), "onmux"); + descriptions.put(new Integer(IPPort.HYPER_G), "hyper_g"); + descriptions.put(new Integer(IPPort.ARIEL1), "ariel1"); + descriptions.put(new Integer(IPPort.SMPTE), "smpte"); + descriptions.put(new Integer(IPPort.ARIEL2), "ariel2"); + descriptions.put(new Integer(IPPort.ARIEL3), "ariel3"); + descriptions.put(new Integer(IPPort.OPC_JOB_START), "opc_job_start"); + descriptions.put(new Integer(IPPort.OPC_JOB_TRACK), "opc_job_track"); + descriptions.put(new Integer(IPPort.ICAD_EL), "icad_el"); + descriptions.put(new Integer(IPPort.SMARTSDP), "smartsdp"); + descriptions.put(new Integer(IPPort.SVRLOC), "svrloc"); + descriptions.put(new Integer(IPPort.OCS_CMU), "ocs_cmu"); + descriptions.put(new Integer(IPPort.OCS_AMU), "ocs_amu"); + descriptions.put(new Integer(IPPort.UTMPSD), "utmpsd"); + descriptions.put(new Integer(IPPort.UTMPCD), "utmpcd"); + descriptions.put(new Integer(IPPort.IASD), "iasd"); + descriptions.put(new Integer(IPPort.NNSP), "nnsp"); + descriptions.put(new Integer(IPPort.MOBILEIP_AGENT), "mobileip_agent"); + descriptions.put(new Integer(IPPort.MOBILIP_MN), "mobilip_mn"); + descriptions.put(new Integer(IPPort.DNA_CML), "dna_cml"); + descriptions.put(new Integer(IPPort.COMSCM), "comscm"); + descriptions.put(new Integer(IPPort.DSFGW), "dsfgw"); + descriptions.put(new Integer(IPPort.DASP), "dasp"); + descriptions.put(new Integer(IPPort.SGCP), "sgcp"); + descriptions.put(new Integer(IPPort.DECVMS_SYSMGT), "decvms_sysmgt"); + descriptions.put(new Integer(IPPort.CVC_HOSTD), "cvc_hostd"); + descriptions.put(new Integer(IPPort.HTTPS), "https"); + descriptions.put(new Integer(IPPort.SNPP), "snpp"); + descriptions.put(new Integer(IPPort.MICROSOFT_DS), "microsoft_ds"); + descriptions.put(new Integer(IPPort.DDM_RDB), "ddm_rdb"); + descriptions.put(new Integer(IPPort.DDM_DFM), "ddm_dfm"); + descriptions.put(new Integer(IPPort.DDM_SSL), "ddm_ssl"); + descriptions.put(new Integer(IPPort.AS_SERVERMAP), "as_servermap"); + descriptions.put(new Integer(IPPort.TSERVER), "tserver"); + descriptions.put(new Integer(IPPort.SFS_SMP_NET), "sfs_smp_net"); + descriptions.put(new Integer(IPPort.SFS_CONFIG), "sfs_config"); + descriptions.put(new Integer(IPPort.CREATIVESERVER), "creativeserver"); + descriptions.put(new Integer(IPPort.CONTENTSERVER), "contentserver"); + descriptions.put(new Integer(IPPort.CREATIVEPARTNR), "creativepartnr"); + descriptions.put(new Integer(IPPort.MACON_TCP), "macon_tcp"); + descriptions.put(new Integer(IPPort.SCOHELP), "scohelp"); + descriptions.put(new Integer(IPPort.APPLEQTC), "appleqtc"); + descriptions.put(new Integer(IPPort.AMPR_RCMD), "ampr_rcmd"); + descriptions.put(new Integer(IPPort.SKRONK), "skronk"); + descriptions.put(new Integer(IPPort.DATASURFSRV), "datasurfsrv"); + descriptions.put(new Integer(IPPort.DATASURFSRVSEC), "datasurfsrvsec"); + descriptions.put(new Integer(IPPort.ALPES), "alpes"); + descriptions.put(new Integer(IPPort.KPASSWD), "kpasswd"); + descriptions.put(new Integer(IPPort.DIGITAL_VRC), "digital_vrc"); + descriptions.put(new Integer(IPPort.MYLEX_MAPD), "mylex_mapd"); + descriptions.put(new Integer(IPPort.PHOTURIS), "photuris"); + descriptions.put(new Integer(IPPort.RCP), "rcp"); + descriptions.put(new Integer(IPPort.SCX_PROXY), "scx_proxy"); + descriptions.put(new Integer(IPPort.MONDEX), "mondex"); + descriptions.put(new Integer(IPPort.LJK_LOGIN), "ljk_login"); + descriptions.put(new Integer(IPPort.HYBRID_POP), "hybrid_pop"); + descriptions.put(new Integer(IPPort.TN_TL_W1), "tn_tl_w1"); + descriptions.put(new Integer(IPPort.TCPNETHASPSRV), "tcpnethaspsrv"); + descriptions.put(new Integer(IPPort.TN_TL_FD1), "tn_tl_fd1"); + descriptions.put(new Integer(IPPort.SS7NS), "ss7ns"); + descriptions.put(new Integer(IPPort.SPSC), "spsc"); + descriptions.put(new Integer(IPPort.IAFSERVER), "iafserver"); + descriptions.put(new Integer(IPPort.IAFDBASE), "iafdbase"); + descriptions.put(new Integer(IPPort.PH), "ph"); + descriptions.put(new Integer(IPPort.BGS_NSI), "bgs_nsi"); + descriptions.put(new Integer(IPPort.ULPNET), "ulpnet"); + descriptions.put(new Integer(IPPort.INTEGRA_SME), "integra_sme"); + descriptions.put(new Integer(IPPort.POWERBURST), "powerburst"); + descriptions.put(new Integer(IPPort.AVIAN), "avian"); + descriptions.put(new Integer(IPPort.SAFT), "saft"); + descriptions.put(new Integer(IPPort.GSS_HTTP), "gss_http"); + descriptions.put(new Integer(IPPort.NEST_PROTOCOL), "nest_protocol"); + descriptions.put(new Integer(IPPort.MICOM_PFS), "micom_pfs"); + descriptions.put(new Integer(IPPort.GO_LOGIN), "go_login"); + descriptions.put(new Integer(IPPort.TICF_1), "ticf_1"); + descriptions.put(new Integer(IPPort.TICF_2), "ticf_2"); + descriptions.put(new Integer(IPPort.POV_RAY), "pov_ray"); + descriptions.put(new Integer(IPPort.INTECOURIER), "intecourier"); + descriptions.put(new Integer(IPPort.PIM_RP_DISC), "pim_rp_disc"); + descriptions.put(new Integer(IPPort.DANTZ), "dantz"); + descriptions.put(new Integer(IPPort.SIAM), "siam"); + descriptions.put(new Integer(IPPort.ISO_ILL), "iso_ill"); + descriptions.put(new Integer(IPPort.ISAKMP), "isakmp"); + descriptions.put(new Integer(IPPort.STMF), "stmf"); + descriptions.put(new Integer(IPPort.ASA_APPL_PROTO), "asa_appl_proto"); + descriptions.put(new Integer(IPPort.INTRINSA), "intrinsa"); + descriptions.put(new Integer(IPPort.CITADEL), "citadel"); + descriptions.put(new Integer(IPPort.MAILBOX_LM), "mailbox_lm"); + descriptions.put(new Integer(IPPort.OHIMSRV), "ohimsrv"); + descriptions.put(new Integer(IPPort.CRS), "crs"); + descriptions.put(new Integer(IPPort.XVTTP), "xvttp"); + descriptions.put(new Integer(IPPort.SNARE), "snare"); + descriptions.put(new Integer(IPPort.FCP), "fcp"); + descriptions.put(new Integer(IPPort.PASSGO), "passgo"); + descriptions.put(new Integer(IPPort.EXEC), "exec"); + descriptions.put(new Integer(IPPort.LOGIN), "login"); + descriptions.put(new Integer(IPPort.SHELL), "shell"); + descriptions.put(new Integer(IPPort.PRINTER), "printer"); + descriptions.put(new Integer(IPPort.VIDEOTEX), "videotex"); + descriptions.put(new Integer(IPPort.TALK), "talk"); + descriptions.put(new Integer(IPPort.NTALK), "ntalk"); + descriptions.put(new Integer(IPPort.UTIME), "utime"); + descriptions.put(new Integer(IPPort.EFS), "efs"); + descriptions.put(new Integer(IPPort.RIPNG), "ripng"); + descriptions.put(new Integer(IPPort.ULP), "ulp"); + descriptions.put(new Integer(IPPort.IBM_DB2), "ibm_db2"); + descriptions.put(new Integer(IPPort.NCP), "ncp"); + descriptions.put(new Integer(IPPort.TIMED), "timed"); + descriptions.put(new Integer(IPPort.TEMPO ), "tempo"); + descriptions.put(new Integer(IPPort.STX), "stx"); + descriptions.put(new Integer(IPPort.CUSTIX), "custix"); + descriptions.put(new Integer(IPPort.IRC_SERV), "irc_serv"); + descriptions.put(new Integer(IPPort.COURIER), "courier"); + descriptions.put(new Integer(IPPort.CONFERENCE), "conference"); + descriptions.put(new Integer(IPPort.NETNEWS), "netnews"); + descriptions.put(new Integer(IPPort.NETWALL ), "netwall"); + descriptions.put(new Integer(IPPort.MM_ADMIN), "mm_admin"); + descriptions.put(new Integer(IPPort.IIOP), "iiop"); + descriptions.put(new Integer(IPPort.OPALIS_RDV), "opalis_rdv"); + descriptions.put(new Integer(IPPort.NMSP), "nmsp"); + descriptions.put(new Integer(IPPort.GDOMAP), "gdomap"); + descriptions.put(new Integer(IPPort.APERTUS_LDP), "apertus_ldp"); + descriptions.put(new Integer(IPPort.UUCP ), "uucp"); + descriptions.put(new Integer(IPPort.UUCP_RLOGIN), "uucp_rlogin"); + descriptions.put(new Integer(IPPort.COMMERCE), "commerce"); + descriptions.put(new Integer(IPPort.KLOGIN), "klogin"); + descriptions.put(new Integer(IPPort.KSHELL), "kshell"); + descriptions.put(new Integer(IPPort.APPLEQTCSRVR), "appleqtcsrvr"); + descriptions.put(new Integer(IPPort.DHCPV6_CLIENT), "dhcpv6_client"); + descriptions.put(new Integer(IPPort.DHCPV6_SERVER), "dhcpv6_server"); + descriptions.put(new Integer(IPPort.AFPOVERTCP), "afpovertcp"); + descriptions.put(new Integer(IPPort.IDFP), "idfp"); + descriptions.put(new Integer(IPPort.NEW_RWHO), "new_rwho"); + descriptions.put(new Integer(IPPort.CYBERCASH), "cybercash"); + descriptions.put(new Integer(IPPort.DEVICESHARE), "deviceshare"); + descriptions.put(new Integer(IPPort.PIRP), "pirp"); + descriptions.put(new Integer(IPPort.RTSP), "rtsp"); + descriptions.put(new Integer(IPPort.DSF), "dsf"); + descriptions.put(new Integer(IPPort.REMOTEFS), "remotefs"); + descriptions.put(new Integer(IPPort.OPENVMS_SYSIPC), "openvms_sysipc"); + descriptions.put(new Integer(IPPort.SDNSKMP), "sdnskmp"); + descriptions.put(new Integer(IPPort.TEEDTAP), "teedtap"); + descriptions.put(new Integer(IPPort.RMONITOR), "rmonitor"); + descriptions.put(new Integer(IPPort.MONITOR), "monitor"); + descriptions.put(new Integer(IPPort.CHSHELL), "chshell"); + descriptions.put(new Integer(IPPort.NNTPS), "nntps"); + descriptions.put(new Integer(IPPort.N9PFS), "9pfs"); + descriptions.put(new Integer(IPPort.WHOAMI), "whoami"); + descriptions.put(new Integer(IPPort.STREETTALK), "streettalk"); + descriptions.put(new Integer(IPPort.BANYAN_RPC), "banyan_rpc"); + descriptions.put(new Integer(IPPort.MS_SHUTTLE), "ms_shuttle"); + descriptions.put(new Integer(IPPort.MS_ROME), "ms_rome"); + descriptions.put(new Integer(IPPort.METER), "meter"); + descriptions.put(new Integer(IPPort.METER2), "meter2"); + descriptions.put(new Integer(IPPort.SONAR), "sonar"); + descriptions.put(new Integer(IPPort.BANYAN_VIP), "banyan_vip"); + descriptions.put(new Integer(IPPort.FTP_AGENT), "ftp_agent"); + descriptions.put(new Integer(IPPort.VEMMI), "vemmi"); + descriptions.put(new Integer(IPPort.IPCD), "ipcd"); + descriptions.put(new Integer(IPPort.VNAS), "vnas"); + descriptions.put(new Integer(IPPort.IPDD), "ipdd"); + descriptions.put(new Integer(IPPort.DECBSRV), "decbsrv"); + descriptions.put(new Integer(IPPort.SNTP_HEARTBEAT), "sntp_heartbeat"); + descriptions.put(new Integer(IPPort.BDP), "bdp"); + descriptions.put(new Integer(IPPort.SCC_SECURITY), "scc_security"); + descriptions.put(new Integer(IPPort.PHILIPS_VC), "philips_vc"); + descriptions.put(new Integer(IPPort.KEYSERVER), "keyserver"); + descriptions.put(new Integer(IPPort.IMAP4_SSL), "imap4_ssl"); + descriptions.put(new Integer(IPPort.PASSWORD_CHG), "password_chg"); + descriptions.put(new Integer(IPPort.SUBMISSION), "submission"); + descriptions.put(new Integer(IPPort.CAL), "cal"); + descriptions.put(new Integer(IPPort.EYELINK), "eyelink"); + descriptions.put(new Integer(IPPort.TNS_CML), "tns_cml"); + descriptions.put(new Integer(IPPort.HTTP_ALT), "http_alt"); + descriptions.put(new Integer(IPPort.EUDORA_SET), "eudora_set"); + descriptions.put(new Integer(IPPort.HTTP_RPC_EPMAP), "http_rpc_epmap"); + descriptions.put(new Integer(IPPort.TPIP), "tpip"); + descriptions.put(new Integer(IPPort.CAB_PROTOCOL), "cab_protocol"); + descriptions.put(new Integer(IPPort.SMSD), "smsd"); + descriptions.put(new Integer(IPPort.PTCNAMESERVICE), "ptcnameservice"); + descriptions.put(new Integer(IPPort.SCO_WEBSRVRMG3), "sco_websrvrmg3"); + descriptions.put(new Integer(IPPort.ACP), "acp"); + descriptions.put(new Integer(IPPort.IPCSERVER), "ipcserver"); + descriptions.put(new Integer(IPPort.URM), "urm"); + descriptions.put(new Integer(IPPort.NQS), "nqs"); + descriptions.put(new Integer(IPPort.SIFT_UFT), "sift_uft"); + descriptions.put(new Integer(IPPort.NPMP_TRAP), "npmp_trap"); + descriptions.put(new Integer(IPPort.NPMP_LOCAL), "npmp_local"); + descriptions.put(new Integer(IPPort.NPMP_GUI), "npmp_gui"); + descriptions.put(new Integer(IPPort.HMMP_IND), "hmmp_ind"); + descriptions.put(new Integer(IPPort.HMMP_OP), "hmmp_op"); + descriptions.put(new Integer(IPPort.SSHELL), "sshell"); + descriptions.put(new Integer(IPPort.SCO_INETMGR), "sco_inetmgr"); + descriptions.put(new Integer(IPPort.SCO_SYSMGR), "sco_sysmgr"); + descriptions.put(new Integer(IPPort.SCO_DTMGR), "sco_dtmgr"); + descriptions.put(new Integer(IPPort.DEI_ICDA), "dei_icda"); + descriptions.put(new Integer(IPPort.DIGITAL_EVM), "digital_evm"); + descriptions.put(new Integer(IPPort.SCO_WEBSRVRMGR), "sco_websrvrmgr"); + descriptions.put(new Integer(IPPort.ESCP_IP), "escp_ip"); + descriptions.put(new Integer(IPPort.COLLABORATOR), "collaborator"); + descriptions.put(new Integer(IPPort.AUX_BUS_SHUNT), "aux_bus_shunt"); + descriptions.put(new Integer(IPPort.CRYPTOADMIN), "cryptoadmin"); + descriptions.put(new Integer(IPPort.DEC_DLM), "dec_dlm"); + descriptions.put(new Integer(IPPort.ASIA), "asia"); + descriptions.put(new Integer(IPPort.PASSGO_TIVOLI), "passgo_tivoli"); + descriptions.put(new Integer(IPPort.QMQP), "qmqp"); + descriptions.put(new Integer(IPPort.AMP3_3COM), "3com_amp3"); + descriptions.put(new Integer(IPPort.RDA), "rda"); + descriptions.put(new Integer(IPPort.IPP), "ipp"); + descriptions.put(new Integer(IPPort.BMPP), "bmpp"); + descriptions.put(new Integer(IPPort.SERVSTAT), "servstat"); + descriptions.put(new Integer(IPPort.GINAD), "ginad"); + descriptions.put(new Integer(IPPort.RLZDBASE), "rlzdbase"); + descriptions.put(new Integer(IPPort.LDAPS), "ldaps"); + descriptions.put(new Integer(IPPort.LANSERVER), "lanserver"); + descriptions.put(new Integer(IPPort.MCNS_SEC), "mcns_sec"); + descriptions.put(new Integer(IPPort.MSDP), "msdp"); + descriptions.put(new Integer(IPPort.ENTRUST_SPS), "entrust_sps"); + descriptions.put(new Integer(IPPort.REPCMD), "repcmd"); + descriptions.put(new Integer(IPPort.ESRO_EMSDP), "esro_emsdp"); + descriptions.put(new Integer(IPPort.SANITY), "sanity"); + descriptions.put(new Integer(IPPort.DWR), "dwr"); + descriptions.put(new Integer(IPPort.PSSC), "pssc"); + descriptions.put(new Integer(IPPort.LDP), "ldp"); + descriptions.put(new Integer(IPPort.DHCP_FAILOVER), "dhcp_failover"); + descriptions.put(new Integer(IPPort.RRP), "rrp"); + descriptions.put(new Integer(IPPort.AMINET), "aminet"); + descriptions.put(new Integer(IPPort.OBEX), "obex"); + descriptions.put(new Integer(IPPort.IEEE_MMS), "ieee_mms"); + descriptions.put(new Integer(IPPort.HELLO_PORT), "hello_port"); + descriptions.put(new Integer(IPPort.REPSCMD ), "repscmd"); + descriptions.put(new Integer(IPPort.AODV), "aodv"); + descriptions.put(new Integer(IPPort.TINC), "tinc"); + descriptions.put(new Integer(IPPort.SPMP), "spmp"); + descriptions.put(new Integer(IPPort.RMC), "rmc"); + descriptions.put(new Integer(IPPort.TENFOLD), "tenfold"); + descriptions.put(new Integer(IPPort.URL_RENDEZVOUS), "url_rendezvous"); + descriptions.put(new Integer(IPPort.MAC_SRVR_ADMIN), "mac_srvr_admin"); + descriptions.put(new Integer(IPPort.HAP), "hap"); + descriptions.put(new Integer(IPPort.PFTP), "pftp"); + descriptions.put(new Integer(IPPort.PURENOISE), "purenoise"); + descriptions.put(new Integer(IPPort.SECURE_AUX_BUS), "secure_aux_bus"); + descriptions.put(new Integer(IPPort.SUN_DR), "sun_dr"); + descriptions.put(new Integer(IPPort.MDQS), "mdqs"); + descriptions.put(new Integer(IPPort.DOOM), "doom"); + descriptions.put(new Integer(IPPort.DISCLOSE), "disclose"); + descriptions.put(new Integer(IPPort.MECOMM), "mecomm"); + descriptions.put(new Integer(IPPort.MEREGISTER), "meregister"); + descriptions.put(new Integer(IPPort.VACDSM_SWS), "vacdsm_sws"); + descriptions.put(new Integer(IPPort.VACDSM_APP), "vacdsm_app"); + descriptions.put(new Integer(IPPort.VPPS_QUA), "vpps_qua"); + descriptions.put(new Integer(IPPort.CIMPLEX), "cimplex"); + descriptions.put(new Integer(IPPort.ACAP), "acap"); + descriptions.put(new Integer(IPPort.DCTP), "dctp"); + descriptions.put(new Integer(IPPort.VPPS_VIA), "vpps_via"); + descriptions.put(new Integer(IPPort.VPP), "vpp"); + descriptions.put(new Integer(IPPort.GGF_NCP), "ggf_ncp"); + descriptions.put(new Integer(IPPort.MRM), "mrm"); + descriptions.put(new Integer(IPPort.ENTRUST_AAAS), "entrust_aaas"); + descriptions.put(new Integer(IPPort.ENTRUST_AAMS), "entrust_aams"); + descriptions.put(new Integer(IPPort.XFR), "xfr"); + descriptions.put(new Integer(IPPort.CORBA_IIOP), "corba_iiop"); + descriptions.put(new Integer(IPPort.CORBA_IIOP_SSL), "corba_iiop_ssl"); + descriptions.put(new Integer(IPPort.MDC_PORTMAPPER), "mdc_portmapper"); + descriptions.put(new Integer(IPPort.HCP_WISMAR), "hcp_wismar"); + descriptions.put(new Integer(IPPort.ASIPREGISTRY), "asipregistry"); + descriptions.put(new Integer(IPPort.REALM_RUSD), "realm_rusd"); + descriptions.put(new Integer(IPPort.NMAP), "nmap"); + descriptions.put(new Integer(IPPort.VATP), "vatp"); + descriptions.put(new Integer(IPPort.MSEXCH_ROUTING), "msexch_routing"); + descriptions.put(new Integer(IPPort.HYPERWAVE_ISP), "hyperwave_isp"); + descriptions.put(new Integer(IPPort.CONNENDP), "connendp"); + descriptions.put(new Integer(IPPort.HA_CLUSTER), "ha_cluster"); + descriptions.put(new Integer(IPPort.IEEE_MMS_SSL), "ieee_mms_ssl"); + descriptions.put(new Integer(IPPort.RUSHD), "rushd"); + descriptions.put(new Integer(IPPort.UUIDGEN), "uuidgen"); + descriptions.put(new Integer(IPPort.OLSR), "olsr"); + descriptions.put(new Integer(IPPort.ACCESSNETWORK), "accessnetwork"); + descriptions.put(new Integer(IPPort.ELCSD), "elcsd"); + descriptions.put(new Integer(IPPort.AGENTX), "agentx"); + descriptions.put(new Integer(IPPort.SILC), "silc"); + descriptions.put(new Integer(IPPort.BORLAND_DSJ), "borland_dsj"); + descriptions.put(new Integer(IPPort.ENTRUST_KMSH), "entrust_kmsh"); + descriptions.put(new Integer(IPPort.ENTRUST_ASH), "entrust_ash"); + descriptions.put(new Integer(IPPort.CISCO_TDP), "cisco_tdp"); + descriptions.put(new Integer(IPPort.NETVIEWDM1), "netviewdm1"); + descriptions.put(new Integer(IPPort.NETVIEWDM2), "netviewdm2"); + descriptions.put(new Integer(IPPort.NETVIEWDM3), "netviewdm3"); + descriptions.put(new Integer(IPPort.NETGW), "netgw"); + descriptions.put(new Integer(IPPort.NETRCS), "netrcs"); + descriptions.put(new Integer(IPPort.FLEXLM), "flexlm"); + descriptions.put(new Integer(IPPort.FUJITSU_DEV), "fujitsu_dev"); + descriptions.put(new Integer(IPPort.RIS_CM), "ris_cm"); + descriptions.put(new Integer(IPPort.KERBEROS_ADM), "kerberos_adm"); + descriptions.put(new Integer(IPPort.RFILE), "rfile"); + descriptions.put(new Integer(IPPort.PUMP), "pump"); + descriptions.put(new Integer(IPPort.QRH), "qrh"); + descriptions.put(new Integer(IPPort.RRH), "rrh"); + descriptions.put(new Integer(IPPort.TELL), "tell"); + descriptions.put(new Integer(IPPort.NLOGIN), "nlogin"); + descriptions.put(new Integer(IPPort.CON), "con"); + descriptions.put(new Integer(IPPort.NS), "ns"); + descriptions.put(new Integer(IPPort.RXE), "rxe"); + descriptions.put(new Integer(IPPort.QUOTAD), "quotad"); + descriptions.put(new Integer(IPPort.CYCLESERV), "cycleserv"); + descriptions.put(new Integer(IPPort.OMSERV), "omserv"); + descriptions.put(new Integer(IPPort.WEBSTER), "webster"); + descriptions.put(new Integer(IPPort.PHONEBOOK), "phonebook"); + descriptions.put(new Integer(IPPort.VID), "vid"); + descriptions.put(new Integer(IPPort.CADLOCK), "cadlock"); + descriptions.put(new Integer(IPPort.RTIP), "rtip"); + descriptions.put(new Integer(IPPort.CYCLESERV2), "cycleserv2"); + descriptions.put(new Integer(IPPort.SUBMIT), "submit"); + descriptions.put(new Integer(IPPort.RPASSWD), "rpasswd"); + descriptions.put(new Integer(IPPort.ENTOMB), "entomb"); + descriptions.put(new Integer(IPPort.WPAGES), "wpages"); + descriptions.put(new Integer(IPPort.WPGS), "wpgs"); + descriptions.put(new Integer(IPPort.QSC), "qsc"); + descriptions.put(new Integer(IPPort.MDBS_DAEMON), "mdbs_daemon"); + descriptions.put(new Integer(IPPort.ITM_MCELL_S), "itm_mcell_s"); + descriptions.put(new Integer(IPPort.PKIX_3_CA_RA), "pkix_3_ca_ra"); + descriptions.put(new Integer(IPPort.DHCP_FAILOVER2), "dhcp_failover2"); + descriptions.put(new Integer(IPPort.RSYNC), "rsync"); + descriptions.put(new Integer(IPPort.ICLCNET_LOCATE), "iclcnet_locate"); + descriptions.put(new Integer(IPPort.ICLCNET_SVINFO), "iclcnet_svinfo"); + descriptions.put(new Integer(IPPort.ACCESSBUILDER), "accessbuilder"); + descriptions.put(new Integer(IPPort.CDDBP), "cddbp"); + descriptions.put(new Integer(IPPort.OMGINITIALREFS), "omginitialrefs"); + descriptions.put(new Integer(IPPort.SMPNAMERES), "smpnameres"); + descriptions.put(new Integer(IPPort.IDEAFARM_CHAT), "ideafarm_chat"); + descriptions.put(new Integer(IPPort.IDEAFARM_CATCH), "ideafarm_catch"); + descriptions.put(new Integer(IPPort.XACT_BACKUP), "xact_backup"); + descriptions.put(new Integer(IPPort.FTPS_DATA), "ftps_data"); + descriptions.put(new Integer(IPPort.FTPS), "ftps"); + descriptions.put(new Integer(IPPort.NAS), "nas"); + descriptions.put(new Integer(IPPort.TELNETS), "telnets"); + descriptions.put(new Integer(IPPort.IMAPS), "imaps"); + descriptions.put(new Integer(IPPort.IRCS), "ircs"); + descriptions.put(new Integer(IPPort.POP3S), "pop3s"); + descriptions.put(new Integer(IPPort.VSINET), "vsinet"); + descriptions.put(new Integer(IPPort.MAITRD), "maitrd"); + descriptions.put(new Integer(IPPort.BUSBOY), "busboy"); + descriptions.put(new Integer(IPPort.GARCON), "garcon"); + descriptions.put(new Integer(IPPort.PUPROUTER), "puprouter"); + descriptions.put(new Integer(IPPort.CADLOCK2), "cadlock2"); + descriptions.put(new Integer(IPPort.SURF), "surf"); + descriptions.put(new Integer(IPPort.RESERVED_1023), "1023_RESERVED"); + descriptions.put(new Integer(IPPort.RESERVED_1024), "1024_RESERVED"); + descriptions.put(new Integer(IPPort.SOCKS), "socks"); + descriptions.put(new Integer(IPPort.HSRP), "hot standby router"); + descriptions.put(new Integer(IPPort.AISES), "aises"); + descriptions.put(new Integer(IPPort.CVS), "concurrent version system"); + descriptions.put(new Integer(IPPort.X11), "X-Windows"); + + // todo: table is incomplete + } + + /** + * 'Human-readable' TCP port names. + */ + //jdk1.5: private static HashMap names = new HashMap(); + private static HashMap names = new HashMap(); + static { + names.put(new Integer(IPPort.NONE), "."); + names.put(new Integer(IPPort.RESERVED_0), "0r"); + names.put(new Integer(IPPort.TCPMUX), "tcpmux"); + names.put(new Integer(IPPort.COMPRESSNET2), "compressnet2"); + names.put(new Integer(IPPort.COMPRESSNET), "compressnet"); + names.put(new Integer(IPPort.RJE), "rje"); + names.put(new Integer(IPPort.ECHO), "echo"); + names.put(new Integer(IPPort.DISCARD), "discard"); + names.put(new Integer(IPPort.SYSTAT), "systat"); + names.put(new Integer(IPPort.DAYTIME), "daytime"); + names.put(new Integer(IPPort.QOTD), "qotd"); + names.put(new Integer(IPPort.MSP), "msp"); + names.put(new Integer(IPPort.CHARGEN), "chargen"); + names.put(new Integer(IPPort.FTP_DATA), "ftp_data"); + names.put(new Integer(IPPort.FTP), "ftp"); + names.put(new Integer(IPPort.SSH), "ssh"); + names.put(new Integer(IPPort.TELNET), "telnet"); + names.put(new Integer(IPPort.PRIV_MAIL), "priv_mail"); + names.put(new Integer(IPPort.SMTP), "smtp"); + names.put(new Integer(IPPort.NSW_FE), "nsw_fe"); + names.put(new Integer(IPPort.MSG_ICP), "msg_icp"); + names.put(new Integer(IPPort.MSG_AUTH), "msg_auth"); + names.put(new Integer(IPPort.DSP), "dsp"); + names.put(new Integer(IPPort.PRIV_PRINT), "priv_print"); + names.put(new Integer(IPPort.TIME), "time"); + names.put(new Integer(IPPort.RAP), "rap"); + names.put(new Integer(IPPort.RLP), "rlp"); + names.put(new Integer(IPPort.GRAPHICS), "graphics"); + names.put(new Integer(IPPort.NAME), "name"); + names.put(new Integer(IPPort.NAMESERVER), "nameserver"); + names.put(new Integer(IPPort.NICNAME), "nicname"); + names.put(new Integer(IPPort.MPM_FLAGS), "mpm_flags"); + names.put(new Integer(IPPort.MPM), "mpm"); + names.put(new Integer(IPPort.MPM_SND), "mpm_snd"); + names.put(new Integer(IPPort.NI_FTP), "ni_ftp"); + names.put(new Integer(IPPort.AUDITD), "auditd"); + names.put(new Integer(IPPort.TACACS), "tacacs"); + names.put(new Integer(IPPort.RE_MAIL_CK), "re_mail_ck"); + names.put(new Integer(IPPort.LA_MAINT), "la_maint"); + names.put(new Integer(IPPort.XNS_TIME), "xns_time"); + names.put(new Integer(IPPort.DOMAIN), "domain"); + names.put(new Integer(IPPort.XNS_CH), "xns_ch"); + names.put(new Integer(IPPort.ISI_GL), "isi_gl"); + names.put(new Integer(IPPort.XNS_AUTH), "xns_auth"); + names.put(new Integer(IPPort.PRIV_TERMINAL), "priv_terminal"); + names.put(new Integer(IPPort.XNS_MAIL), "xns_mail"); + names.put(new Integer(IPPort.PRIV_FILE), "priv_file"); + names.put(new Integer(IPPort.NI_MAIL), "ni_mail"); + names.put(new Integer(IPPort.ACAS), "acas"); + names.put(new Integer(IPPort.WHOIS), "whois++"); + names.put(new Integer(IPPort.COVIA), "covia"); + names.put(new Integer(IPPort.TACACS_DS), "tacacs_ds"); + names.put(new Integer(IPPort.SQLSNET), "sql*net"); + names.put(new Integer(IPPort.BOOTPS), "bootps"); + names.put(new Integer(IPPort.BOOTPC), "bootpc"); + names.put(new Integer(IPPort.TFTP), "tftp"); + names.put(new Integer(IPPort.GOPHER), "gopher"); + names.put(new Integer(IPPort.NETRJS_1), "netrjs_1"); + names.put(new Integer(IPPort.NETRJS_2), "netrjs_2"); + names.put(new Integer(IPPort.NETRJS_3), "netrjs_3"); + names.put(new Integer(IPPort.NETRJS_4), "netrjs_4"); + names.put(new Integer(IPPort.PRIV_DIALOUT), "priv_dialout"); + names.put(new Integer(IPPort.DEOS), "deos"); + names.put(new Integer(IPPort.PRIV_RJE), "priv_rje"); + names.put(new Integer(IPPort.VETTCP), "vettcp"); + names.put(new Integer(IPPort.FINGER), "finger"); + names.put(new Integer(IPPort.HTTP), "http"); + names.put(new Integer(IPPort.WWW), "www"); + names.put(new Integer(IPPort.HOSTS2_NS), "hosts2_ns"); + names.put(new Integer(IPPort.XFER), "xfer"); + names.put(new Integer(IPPort.MIT_ML_DEV), "mit_ml_dev"); + names.put(new Integer(IPPort.CTF), "ctf"); + names.put(new Integer(IPPort.MIT_ML_DEV2), "mit_ml_dev"); + names.put(new Integer(IPPort.MFCOBOL), "mfcobol"); + names.put(new Integer(IPPort.PRIV_TERMLINK), "priv_termlink"); + names.put(new Integer(IPPort.KERBEROS), "kerberos"); + names.put(new Integer(IPPort.SU_MIT_TG), "su_mit_tg"); + names.put(new Integer(IPPort.DNSIX), "dnsix"); + names.put(new Integer(IPPort.MIT_DOV), "mit_dov"); + names.put(new Integer(IPPort.NPP), "npp"); + names.put(new Integer(IPPort.DCP), "dcp"); + names.put(new Integer(IPPort.OBJCALL), "objcall"); + names.put(new Integer(IPPort.SUPDUP), "supdup"); + names.put(new Integer(IPPort.DIXIE), "dixie"); + names.put(new Integer(IPPort.SWIFT_RVF), "swift_rvf"); + names.put(new Integer(IPPort.TACNEWS), "tacnews"); + names.put(new Integer(IPPort.METAGRAM), "metagram"); + names.put(new Integer(IPPort.NEWACCT), "newacct"); + names.put(new Integer(IPPort.HOSTNAME), "hostname"); + names.put(new Integer(IPPort.ISO_TSAP), "iso_tsap"); + names.put(new Integer(IPPort.GPPITNP), "gppitnp"); + names.put(new Integer(IPPort.ACR_NEMA), "acr_nema"); + names.put(new Integer(IPPort.CSO), "cso"); + names.put(new Integer(IPPort.CSNET_NS), "csnet_ns"); + names.put(new Integer(IPPort.TSMUX_3COM), "3com_tsmux"); + names.put(new Integer(IPPort.RTELNET), "rtelnet"); + names.put(new Integer(IPPort.SNAGAS), "snagas"); + names.put(new Integer(IPPort.POP2), "pop2"); + names.put(new Integer(IPPort.POP3), "pop3"); + names.put(new Integer(IPPort.SUNRPC), "sunrpc"); + names.put(new Integer(IPPort.MCIDAS), "mcidas"); + names.put(new Integer(IPPort.IDENT), "ident"); + names.put(new Integer(IPPort.AUTH), "auth"); + names.put(new Integer(IPPort.AUDIONEWS), "audionews"); + names.put(new Integer(IPPort.SFTP), "sftp"); + names.put(new Integer(IPPort.ANSANOTIFY), "ansanotify"); + names.put(new Integer(IPPort.UUCP_PATH), "uucp_path"); + names.put(new Integer(IPPort.SQLSERV), "sqlserv"); + names.put(new Integer(IPPort.NNTP), "nntp"); + names.put(new Integer(IPPort.CFDPTKT), "cfdptkt"); + names.put(new Integer(IPPort.ERPC), "erpc"); + names.put(new Integer(IPPort.SMAKYNET), "smakynet"); + names.put(new Integer(IPPort.NTP), "ntp"); + names.put(new Integer(IPPort.ANSATRADER), "ansatrader"); + names.put(new Integer(IPPort.LOCUS_MAP), "locus_map"); + names.put(new Integer(IPPort.NXEDIT), "nxedit"); + names.put(new Integer(IPPort.LOCUS_CON), "locus_con"); + names.put(new Integer(IPPort.GSS_XLICEN), "gss_xlicen"); + names.put(new Integer(IPPort.PWDGEN), "pwdgen"); + names.put(new Integer(IPPort.CISCO_FNA), "cisco_fna"); + names.put(new Integer(IPPort.CISCO_TNA), "cisco_tna"); + names.put(new Integer(IPPort.CISCO_SYS), "cisco_sys"); + names.put(new Integer(IPPort.STATSRV), "statsrv"); + names.put(new Integer(IPPort.INGRES_NET), "ingres_net"); + names.put(new Integer(IPPort.EPMAP), "epmap"); + names.put(new Integer(IPPort.PROFILE), "profile"); + names.put(new Integer(IPPort.NETBIOS_NS), "netbios_ns"); + names.put(new Integer(IPPort.NETBIOS_DGM), "netbios_dgm"); + names.put(new Integer(IPPort.NETBIOS_SSN), "netbios_ssn"); + names.put(new Integer(IPPort.EMFIS_DATA), "emfis_data"); + names.put(new Integer(IPPort.EMFIS_CNTL), "emfis_cntl"); + names.put(new Integer(IPPort.BL_IDM), "bl_idm"); + names.put(new Integer(IPPort.IMAP), "imap"); + names.put(new Integer(IPPort.UMA), "uma"); + names.put(new Integer(IPPort.UAAC), "uaac"); + names.put(new Integer(IPPort.ISO_TP0), "iso_tp0"); + names.put(new Integer(IPPort.ISO_IP), "iso_ip"); + names.put(new Integer(IPPort.JARGON), "jargon"); + names.put(new Integer(IPPort.AED_512), "aed_512"); + names.put(new Integer(IPPort.SQL_NET), "sql_net"); + names.put(new Integer(IPPort.HEMS), "hems"); + names.put(new Integer(IPPort.BFTP), "bftp"); + names.put(new Integer(IPPort.SGMP), "sgmp"); + names.put(new Integer(IPPort.NETSC_PROD), "netsc_prod"); + names.put(new Integer(IPPort.NETSC_DEV), "netsc_dev"); + names.put(new Integer(IPPort.SQLSRV), "sqlsrv"); + names.put(new Integer(IPPort.KNET_CMP), "knet_cmp"); + names.put(new Integer(IPPort.PCMAIL_SRV), "pcmail_srv"); + names.put(new Integer(IPPort.NSS_ROUTING), "nss_routing"); + names.put(new Integer(IPPort.SGMP_TRAPS), "sgmp_traps"); + names.put(new Integer(IPPort.SNMP), "snmp"); + names.put(new Integer(IPPort.SNMPTRAP), "snmptrap"); + names.put(new Integer(IPPort.CMIP_MAN), "cmip_man"); + names.put(new Integer(IPPort.CMIP_AGENT), "cmip_agent"); + names.put(new Integer(IPPort.XNS_COURIER), "xns_courier"); + names.put(new Integer(IPPort.S_NET), "s_net"); + names.put(new Integer(IPPort.NAMP), "namp"); + names.put(new Integer(IPPort.RSVD), "rsvd"); + names.put(new Integer(IPPort.SEND), "send"); + names.put(new Integer(IPPort.PRINT_SRV), "print_srv"); + names.put(new Integer(IPPort.MULTIPLEX), "multiplex"); + names.put(new Integer(IPPort.CL1), "cl1"); + names.put(new Integer(IPPort.XYPLEX_MUX), "xyplex_mux"); + names.put(new Integer(IPPort.MAILQ), "mailq"); + names.put(new Integer(IPPort.VMNET), "vmnet"); + names.put(new Integer(IPPort.GENRAD_MUX), "genrad_mux"); + names.put(new Integer(IPPort.XDMCP), "xdmcp"); + names.put(new Integer(IPPort.NEXTSTEP), "nextstep"); + names.put(new Integer(IPPort.BGP), "bgp"); + names.put(new Integer(IPPort.RIS), "ris"); + names.put(new Integer(IPPort.UNIFY), "unify"); + names.put(new Integer(IPPort.AUDIT), "audit"); + names.put(new Integer(IPPort.OCBINDER), "ocbinder"); + names.put(new Integer(IPPort.OCSERVER), "ocserver"); + names.put(new Integer(IPPort.REMOTE_KIS), "remote_kis"); + names.put(new Integer(IPPort.KIS), "kis"); + names.put(new Integer(IPPort.ACI), "aci"); + names.put(new Integer(IPPort.MUMPS), "mumps"); + names.put(new Integer(IPPort.QFT), "qft"); + names.put(new Integer(IPPort.GACP), "gacp"); + names.put(new Integer(IPPort.PROSPERO), "prospero"); + names.put(new Integer(IPPort.OSU_NMS), "osu_nms"); + names.put(new Integer(IPPort.SRMP), "srmp"); + names.put(new Integer(IPPort.IRC), "irc"); + names.put(new Integer(IPPort.DN6_NLM_AUD), "dn6_nlm_aud"); + names.put(new Integer(IPPort.DN6_SMM_RED), "dn6_smm_red"); + names.put(new Integer(IPPort.DLS), "dls"); + names.put(new Integer(IPPort.DLS_MON), "dls_mon"); + names.put(new Integer(IPPort.SMUX), "smux"); + names.put(new Integer(IPPort.SRC), "src"); + names.put(new Integer(IPPort.AT_RTMP), "at_rtmp"); + names.put(new Integer(IPPort.AT_NBP), "at_nbp"); + names.put(new Integer(IPPort.AT_3), "at_3"); + names.put(new Integer(IPPort.AT_ECHO), "at_echo"); + names.put(new Integer(IPPort.AT_5), "at_5"); + names.put(new Integer(IPPort.AT_ZIS), "at_zis"); + names.put(new Integer(IPPort.AT_7), "at_7"); + names.put(new Integer(IPPort.AT_8), "at_8"); + names.put(new Integer(IPPort.QMTP), "qmtp"); + names.put(new Integer(IPPort.Z39_50), "z39.50"); + names.put(new Integer(IPPort.N914C), "914c_g"); + names.put(new Integer(IPPort.ANET), "anet"); + names.put(new Integer(IPPort.IPX), "ipx"); + names.put(new Integer(IPPort.VMPWSCS), "vmpwscs"); + names.put(new Integer(IPPort.SOFTPC), "softpc"); + names.put(new Integer(IPPort.CAILIC), "CAIlic"); + names.put(new Integer(IPPort.DBASE), "dbase"); + names.put(new Integer(IPPort.MPP), "mpp"); + names.put(new Integer(IPPort.UARPS), "uarps"); + names.put(new Integer(IPPort.IMAP3), "imap3"); + names.put(new Integer(IPPort.FLN_SPX), "fln_spx"); + names.put(new Integer(IPPort.RSH_SPX), "rsh_spx"); + names.put(new Integer(IPPort.CDC), "cdc"); + names.put(new Integer(IPPort.MASQDIALER), "masqdialer"); + names.put(new Integer(IPPort.DIRECT), "direct"); + names.put(new Integer(IPPort.SUR_MEAS), "sur_meas"); + names.put(new Integer(IPPort.INBUSINESS), "inbusiness"); + names.put(new Integer(IPPort.LINK), "link"); + names.put(new Integer(IPPort.DSP3270), "dsp3270"); + names.put(new Integer(IPPort.SUBNTBCST_TFTP), "subntbcst_tftp"); + names.put(new Integer(IPPort.BHFHS), "bhfhs"); + names.put(new Integer(IPPort.RAP2), "rap2"); + names.put(new Integer(IPPort.SET), "set"); + names.put(new Integer(IPPort.YAK_CHAT), "yak_chat"); + names.put(new Integer(IPPort.ESRO_GEN), "esro_gen"); + names.put(new Integer(IPPort.OPENPORT), "openport"); + names.put(new Integer(IPPort.NSIIOPS), "nsiiops"); + names.put(new Integer(IPPort.ARCISDMS), "arcisdms"); + names.put(new Integer(IPPort.HDAP), "hdap"); + names.put(new Integer(IPPort.BGMP), "bgmp"); + names.put(new Integer(IPPort.X_BONE_CTL), "x_bone_ctl"); + names.put(new Integer(IPPort.SST), "sst"); + names.put(new Integer(IPPort.TD_SERVICE), "td_service"); + names.put(new Integer(IPPort.TD_REPLICA), "td_replica"); + names.put(new Integer(IPPort.HTTP_MGMT), "http_mgmt"); + names.put(new Integer(IPPort.PERSONAL_LINK), "personal_link"); + names.put(new Integer(IPPort.CABLEPORT_AX), "cableport_ax"); + names.put(new Integer(IPPort.RESCAP), "rescap"); + names.put(new Integer(IPPort.CORERJD), "corerjd"); + names.put(new Integer(IPPort.FXP_1), "fxp_1"); + names.put(new Integer(IPPort.K_BLOCK), "k_block"); + names.put(new Integer(IPPort.NOVASTORBAKCUP), "novastorbakcup"); + names.put(new Integer(IPPort.ENTRUSTTIME), "entrusttime"); + names.put(new Integer(IPPort.BHMDS), "bhmds"); + names.put(new Integer(IPPort.ASIP_WEBADMIN), "asip_webadmin"); + names.put(new Integer(IPPort.VSLMP), "vslmp"); + names.put(new Integer(IPPort.MAGENTA_LOGIC), "magenta_logic"); + names.put(new Integer(IPPort.OPALIS_ROBOT), "opalis_robot"); + names.put(new Integer(IPPort.DPSI), "dpsi"); + names.put(new Integer(IPPort.DECAUTH), "decauth"); + names.put(new Integer(IPPort.ZANNET), "zannet"); + names.put(new Integer(IPPort.PKIX_TIMESTAMP), "pkix_timestamp"); + names.put(new Integer(IPPort.PTP_EVENT), "ptp_event"); + names.put(new Integer(IPPort.PTP_GENERAL), "ptp_general"); + names.put(new Integer(IPPort.PIP), "pip"); + names.put(new Integer(IPPort.RTSPS), "rtsps"); + names.put(new Integer(IPPort.TEXAR), "texar"); + names.put(new Integer(IPPort.PDAP), "pdap"); + names.put(new Integer(IPPort.PAWSERV), "pawserv"); + names.put(new Integer(IPPort.ZSERV), "zserv"); + names.put(new Integer(IPPort.FATSERV), "fatserv"); + names.put(new Integer(IPPort.CSI_SGWP), "csi_sgwp"); + names.put(new Integer(IPPort.MFTP), "mftp"); + names.put(new Integer(IPPort.MATIP_TYPE_A), "matip_type_a"); + names.put(new Integer(IPPort.MATIP_TYPE_B), "matip_type_b"); + names.put(new Integer(IPPort.BHOETTY), "bhoetty"); + names.put(new Integer(IPPort.DTAG_STE_SB), "dtag_ste_sb"); + names.put(new Integer(IPPort.BHOEDAP4), "bhoedap4"); + names.put(new Integer(IPPort.NDSAUTH), "ndsauth"); + names.put(new Integer(IPPort.BH611), "bh611"); + names.put(new Integer(IPPort.DATEX_ASN), "datex_asn"); + names.put(new Integer(IPPort.CLOANTO_NET), "cloanto_net"); + names.put(new Integer(IPPort.BHEVENT), "bhevent"); + names.put(new Integer(IPPort.SHRINKWRAP), "shrinkwrap"); + names.put(new Integer(IPPort.NSRMP), "nsrmp"); + names.put(new Integer(IPPort.SCOI2ODIALOG), "scoi2odialog"); + names.put(new Integer(IPPort.SEMANTIX), "semantix"); + names.put(new Integer(IPPort.SRSSEND), "srssend"); + names.put(new Integer(IPPort.RSVP_TUNNEL), "rsvp_tunnel"); + names.put(new Integer(IPPort.AURORA_CMGR), "aurora_cmgr"); + names.put(new Integer(IPPort.DTK), "dtk"); + names.put(new Integer(IPPort.ODMR), "odmr"); + names.put(new Integer(IPPort.MORTGAGEWARE), "mortgageware"); + names.put(new Integer(IPPort.QBIKGDP), "qbikgdp"); + names.put(new Integer(IPPort.RPC2PORTMAP), "rpc2portmap"); + names.put(new Integer(IPPort.CODAAUTH), "codaauth"); + names.put(new Integer(IPPort.CLEARCASE), "clearcase"); + names.put(new Integer(IPPort.ULISTPROC), "ulistproc"); + names.put(new Integer(IPPort.LEGENT_1), "legent_1"); + names.put(new Integer(IPPort.LEGENT_2), "legent_2"); + names.put(new Integer(IPPort.HASSLE), "hassle"); + names.put(new Integer(IPPort.NIP), "nip"); + names.put(new Integer(IPPort.TNETOS), "tnETOS"); + names.put(new Integer(IPPort.DSETOS), "dsETOS"); + names.put(new Integer(IPPort.IS99C), "is99c"); + names.put(new Integer(IPPort.IS99S), "is99s"); + names.put(new Integer(IPPort.HP_COLLECTOR), "hp_collector"); + names.put(new Integer(IPPort.HP_MANAGED_NODE), "hp_managed_node"); + names.put(new Integer(IPPort.HP_ALARM_MGR), "hp_alarm_mgr"); + names.put(new Integer(IPPort.ARNS), "arns"); + names.put(new Integer(IPPort.IBM_APP), "ibm_app"); + names.put(new Integer(IPPort.ASA), "asa"); + names.put(new Integer(IPPort.AURP), "aurp"); + names.put(new Integer(IPPort.UNIDATA_LDM), "unidata_ldm"); + names.put(new Integer(IPPort.UIS), "uis"); + names.put(new Integer(IPPort.SYNOTICS_RELAY), "synotics_relay"); + names.put(new Integer(IPPort.SYNOTICS_BROKER), "synotics_broker"); + names.put(new Integer(IPPort.META5), "meta5"); + names.put(new Integer(IPPort.EMBL_NDT), "embl_ndt"); + names.put(new Integer(IPPort.NETCP), "netcp"); + names.put(new Integer(IPPort.NETWARE_IP), "netware_ip"); + names.put(new Integer(IPPort.MPTN), "mptn"); + names.put(new Integer(IPPort.KRYPTOLAN), "kryptolan"); + names.put(new Integer(IPPort.ISO_TSAP_C2), "iso_tsap_c2"); + names.put(new Integer(IPPort.WORK_SOL), "work_sol"); + names.put(new Integer(IPPort.UPS), "ups"); + names.put(new Integer(IPPort.GENIE), "genie"); + names.put(new Integer(IPPort.DECAP), "decap"); + names.put(new Integer(IPPort.NCED), "nced"); + names.put(new Integer(IPPort.NCLD), "ncld"); + names.put(new Integer(IPPort.IMSP), "imsp"); + names.put(new Integer(IPPort.TIMBUKTU), "timbuktu"); + names.put(new Integer(IPPort.PRM_SM), "prm_sm"); + names.put(new Integer(IPPort.PRM_NM), "prm_nm"); + names.put(new Integer(IPPort.DECLADEBUG), "decladebug"); + names.put(new Integer(IPPort.RMT), "rmt"); + names.put(new Integer(IPPort.SYNOPTICS_TRAP), "synoptics_trap"); + names.put(new Integer(IPPort.SMSP), "smsp"); + names.put(new Integer(IPPort.INFOSEEK), "infoseek"); + names.put(new Integer(IPPort.BNET), "bnet"); + names.put(new Integer(IPPort.SILVERPLATTER), "silverplatter"); + names.put(new Integer(IPPort.ONMUX), "onmux"); + names.put(new Integer(IPPort.HYPER_G), "hyper_g"); + names.put(new Integer(IPPort.ARIEL1), "ariel1"); + names.put(new Integer(IPPort.SMPTE), "smpte"); + names.put(new Integer(IPPort.ARIEL2), "ariel2"); + names.put(new Integer(IPPort.ARIEL3), "ariel3"); + names.put(new Integer(IPPort.OPC_JOB_START), "opc_job_start"); + names.put(new Integer(IPPort.OPC_JOB_TRACK), "opc_job_track"); + names.put(new Integer(IPPort.ICAD_EL), "icad_el"); + names.put(new Integer(IPPort.SMARTSDP), "smartsdp"); + names.put(new Integer(IPPort.SVRLOC), "svrloc"); + names.put(new Integer(IPPort.OCS_CMU), "ocs_cmu"); + names.put(new Integer(IPPort.OCS_AMU), "ocs_amu"); + names.put(new Integer(IPPort.UTMPSD), "utmpsd"); + names.put(new Integer(IPPort.UTMPCD), "utmpcd"); + names.put(new Integer(IPPort.IASD), "iasd"); + names.put(new Integer(IPPort.NNSP), "nnsp"); + names.put(new Integer(IPPort.MOBILEIP_AGENT), "mobileip_agent"); + names.put(new Integer(IPPort.MOBILIP_MN), "mobilip_mn"); + names.put(new Integer(IPPort.DNA_CML), "dna_cml"); + names.put(new Integer(IPPort.COMSCM), "comscm"); + names.put(new Integer(IPPort.DSFGW), "dsfgw"); + names.put(new Integer(IPPort.DASP), "dasp"); + names.put(new Integer(IPPort.SGCP), "sgcp"); + names.put(new Integer(IPPort.DECVMS_SYSMGT), "decvms_sysmgt"); + names.put(new Integer(IPPort.CVC_HOSTD), "cvc_hostd"); + names.put(new Integer(IPPort.HTTPS), "https"); + names.put(new Integer(IPPort.SNPP), "snpp"); + names.put(new Integer(IPPort.MICROSOFT_DS), "microsoft_ds"); + names.put(new Integer(IPPort.DDM_RDB), "ddm_rdb"); + names.put(new Integer(IPPort.DDM_DFM), "ddm_dfm"); + names.put(new Integer(IPPort.DDM_SSL), "ddm_ssl"); + names.put(new Integer(IPPort.AS_SERVERMAP), "as_servermap"); + names.put(new Integer(IPPort.TSERVER), "tserver"); + names.put(new Integer(IPPort.SFS_SMP_NET), "sfs_smp_net"); + names.put(new Integer(IPPort.SFS_CONFIG), "sfs_config"); + names.put(new Integer(IPPort.CREATIVESERVER), "creativeserver"); + names.put(new Integer(IPPort.CONTENTSERVER), "contentserver"); + names.put(new Integer(IPPort.CREATIVEPARTNR), "creativepartnr"); + names.put(new Integer(IPPort.MACON_TCP), "macon_tcp"); + names.put(new Integer(IPPort.SCOHELP), "scohelp"); + names.put(new Integer(IPPort.APPLEQTC), "appleqtc"); + names.put(new Integer(IPPort.AMPR_RCMD), "ampr_rcmd"); + names.put(new Integer(IPPort.SKRONK), "skronk"); + names.put(new Integer(IPPort.DATASURFSRV), "datasurfsrv"); + names.put(new Integer(IPPort.DATASURFSRVSEC), "datasurfsrvsec"); + names.put(new Integer(IPPort.ALPES), "alpes"); + names.put(new Integer(IPPort.KPASSWD), "kpasswd"); + names.put(new Integer(IPPort.DIGITAL_VRC), "digital_vrc"); + names.put(new Integer(IPPort.MYLEX_MAPD), "mylex_mapd"); + names.put(new Integer(IPPort.PHOTURIS), "photuris"); + names.put(new Integer(IPPort.RCP), "rcp"); + names.put(new Integer(IPPort.SCX_PROXY), "scx_proxy"); + names.put(new Integer(IPPort.MONDEX), "mondex"); + names.put(new Integer(IPPort.LJK_LOGIN), "ljk_login"); + names.put(new Integer(IPPort.HYBRID_POP), "hybrid_pop"); + names.put(new Integer(IPPort.TN_TL_W1), "tn_tl_w1"); + names.put(new Integer(IPPort.TCPNETHASPSRV), "tcpnethaspsrv"); + names.put(new Integer(IPPort.TN_TL_FD1), "tn_tl_fd1"); + names.put(new Integer(IPPort.SS7NS), "ss7ns"); + names.put(new Integer(IPPort.SPSC), "spsc"); + names.put(new Integer(IPPort.IAFSERVER), "iafserver"); + names.put(new Integer(IPPort.IAFDBASE), "iafdbase"); + names.put(new Integer(IPPort.PH), "ph"); + names.put(new Integer(IPPort.BGS_NSI), "bgs_nsi"); + names.put(new Integer(IPPort.ULPNET), "ulpnet"); + names.put(new Integer(IPPort.INTEGRA_SME), "integra_sme"); + names.put(new Integer(IPPort.POWERBURST), "powerburst"); + names.put(new Integer(IPPort.AVIAN), "avian"); + names.put(new Integer(IPPort.SAFT), "saft"); + names.put(new Integer(IPPort.GSS_HTTP), "gss_http"); + names.put(new Integer(IPPort.NEST_PROTOCOL), "nest_protocol"); + names.put(new Integer(IPPort.MICOM_PFS), "micom_pfs"); + names.put(new Integer(IPPort.GO_LOGIN), "go_login"); + names.put(new Integer(IPPort.TICF_1), "ticf_1"); + names.put(new Integer(IPPort.TICF_2), "ticf_2"); + names.put(new Integer(IPPort.POV_RAY), "pov_ray"); + names.put(new Integer(IPPort.INTECOURIER), "intecourier"); + names.put(new Integer(IPPort.PIM_RP_DISC), "pim_rp_disc"); + names.put(new Integer(IPPort.DANTZ), "dantz"); + names.put(new Integer(IPPort.SIAM), "siam"); + names.put(new Integer(IPPort.ISO_ILL), "iso_ill"); + names.put(new Integer(IPPort.ISAKMP), "isakmp"); + names.put(new Integer(IPPort.STMF), "stmf"); + names.put(new Integer(IPPort.ASA_APPL_PROTO), "asa_appl_proto"); + names.put(new Integer(IPPort.INTRINSA), "intrinsa"); + names.put(new Integer(IPPort.CITADEL), "citadel"); + names.put(new Integer(IPPort.MAILBOX_LM), "mailbox_lm"); + names.put(new Integer(IPPort.OHIMSRV), "ohimsrv"); + names.put(new Integer(IPPort.CRS), "crs"); + names.put(new Integer(IPPort.XVTTP), "xvttp"); + names.put(new Integer(IPPort.SNARE), "snare"); + names.put(new Integer(IPPort.FCP), "fcp"); + names.put(new Integer(IPPort.PASSGO), "passgo"); + names.put(new Integer(IPPort.EXEC), "exec"); + names.put(new Integer(IPPort.LOGIN), "login"); + names.put(new Integer(IPPort.SHELL), "shell"); + names.put(new Integer(IPPort.PRINTER), "printer"); + names.put(new Integer(IPPort.VIDEOTEX), "videotex"); + names.put(new Integer(IPPort.TALK), "talk"); + names.put(new Integer(IPPort.NTALK), "ntalk"); + names.put(new Integer(IPPort.UTIME), "utime"); + names.put(new Integer(IPPort.EFS), "efs"); + names.put(new Integer(IPPort.RIPNG), "ripng"); + names.put(new Integer(IPPort.ULP), "ulp"); + names.put(new Integer(IPPort.IBM_DB2), "ibm_db2"); + names.put(new Integer(IPPort.NCP), "ncp"); + names.put(new Integer(IPPort.TIMED), "timed"); + names.put(new Integer(IPPort.TEMPO ), "tempo"); + names.put(new Integer(IPPort.STX), "stx"); + names.put(new Integer(IPPort.CUSTIX), "custix"); + names.put(new Integer(IPPort.IRC_SERV), "irc_serv"); + names.put(new Integer(IPPort.COURIER), "courier"); + names.put(new Integer(IPPort.CONFERENCE), "conference"); + names.put(new Integer(IPPort.NETNEWS), "netnews"); + names.put(new Integer(IPPort.NETWALL ), "netwall"); + names.put(new Integer(IPPort.MM_ADMIN), "mm_admin"); + names.put(new Integer(IPPort.IIOP), "iiop"); + names.put(new Integer(IPPort.OPALIS_RDV), "opalis_rdv"); + names.put(new Integer(IPPort.NMSP), "nmsp"); + names.put(new Integer(IPPort.GDOMAP), "gdomap"); + names.put(new Integer(IPPort.APERTUS_LDP), "apertus_ldp"); + names.put(new Integer(IPPort.UUCP ), "uucp"); + names.put(new Integer(IPPort.UUCP_RLOGIN), "uucp_rlogin"); + names.put(new Integer(IPPort.COMMERCE), "commerce"); + names.put(new Integer(IPPort.KLOGIN), "klogin"); + names.put(new Integer(IPPort.KSHELL), "kshell"); + names.put(new Integer(IPPort.APPLEQTCSRVR), "appleqtcsrvr"); + names.put(new Integer(IPPort.DHCPV6_CLIENT), "dhcpv6_client"); + names.put(new Integer(IPPort.DHCPV6_SERVER), "dhcpv6_server"); + names.put(new Integer(IPPort.AFPOVERTCP), "afpovertcp"); + names.put(new Integer(IPPort.IDFP), "idfp"); + names.put(new Integer(IPPort.NEW_RWHO), "new_rwho"); + names.put(new Integer(IPPort.CYBERCASH), "cybercash"); + names.put(new Integer(IPPort.DEVICESHARE), "deviceshare"); + names.put(new Integer(IPPort.PIRP), "pirp"); + names.put(new Integer(IPPort.RTSP), "rtsp"); + names.put(new Integer(IPPort.DSF), "dsf"); + names.put(new Integer(IPPort.REMOTEFS), "remotefs"); + names.put(new Integer(IPPort.OPENVMS_SYSIPC), "openvms_sysipc"); + names.put(new Integer(IPPort.SDNSKMP), "sdnskmp"); + names.put(new Integer(IPPort.TEEDTAP), "teedtap"); + names.put(new Integer(IPPort.RMONITOR), "rmonitor"); + names.put(new Integer(IPPort.MONITOR), "monitor"); + names.put(new Integer(IPPort.CHSHELL), "chshell"); + names.put(new Integer(IPPort.NNTPS), "nntps"); + names.put(new Integer(IPPort.N9PFS), "9pfs"); + names.put(new Integer(IPPort.WHOAMI), "whoami"); + names.put(new Integer(IPPort.STREETTALK), "streettalk"); + names.put(new Integer(IPPort.BANYAN_RPC), "banyan_rpc"); + names.put(new Integer(IPPort.MS_SHUTTLE), "ms_shuttle"); + names.put(new Integer(IPPort.MS_ROME), "ms_rome"); + names.put(new Integer(IPPort.METER), "meter"); + names.put(new Integer(IPPort.METER2), "meter2"); + names.put(new Integer(IPPort.SONAR), "sonar"); + names.put(new Integer(IPPort.BANYAN_VIP), "banyan_vip"); + names.put(new Integer(IPPort.FTP_AGENT), "ftp_agent"); + names.put(new Integer(IPPort.VEMMI), "vemmi"); + names.put(new Integer(IPPort.IPCD), "ipcd"); + names.put(new Integer(IPPort.VNAS), "vnas"); + names.put(new Integer(IPPort.IPDD), "ipdd"); + names.put(new Integer(IPPort.DECBSRV), "decbsrv"); + names.put(new Integer(IPPort.SNTP_HEARTBEAT), "sntp_heartbeat"); + names.put(new Integer(IPPort.BDP), "bdp"); + names.put(new Integer(IPPort.SCC_SECURITY), "scc_security"); + names.put(new Integer(IPPort.PHILIPS_VC), "philips_vc"); + names.put(new Integer(IPPort.KEYSERVER), "keyserver"); + names.put(new Integer(IPPort.IMAP4_SSL), "imap4_ssl"); + names.put(new Integer(IPPort.PASSWORD_CHG), "password_chg"); + names.put(new Integer(IPPort.SUBMISSION), "submission"); + names.put(new Integer(IPPort.CAL), "cal"); + names.put(new Integer(IPPort.EYELINK), "eyelink"); + names.put(new Integer(IPPort.TNS_CML), "tns_cml"); + names.put(new Integer(IPPort.HTTP_ALT), "http_alt"); + names.put(new Integer(IPPort.EUDORA_SET), "eudora_set"); + names.put(new Integer(IPPort.HTTP_RPC_EPMAP), "http_rpc_epmap"); + names.put(new Integer(IPPort.TPIP), "tpip"); + names.put(new Integer(IPPort.CAB_PROTOCOL), "cab_protocol"); + names.put(new Integer(IPPort.SMSD), "smsd"); + names.put(new Integer(IPPort.PTCNAMESERVICE), "ptcnameservice"); + names.put(new Integer(IPPort.SCO_WEBSRVRMG3), "sco_websrvrmg3"); + names.put(new Integer(IPPort.ACP), "acp"); + names.put(new Integer(IPPort.IPCSERVER), "ipcserver"); + names.put(new Integer(IPPort.URM), "urm"); + names.put(new Integer(IPPort.NQS), "nqs"); + names.put(new Integer(IPPort.SIFT_UFT), "sift_uft"); + names.put(new Integer(IPPort.NPMP_TRAP), "npmp_trap"); + names.put(new Integer(IPPort.NPMP_LOCAL), "npmp_local"); + names.put(new Integer(IPPort.NPMP_GUI), "npmp_gui"); + names.put(new Integer(IPPort.HMMP_IND), "hmmp_ind"); + names.put(new Integer(IPPort.HMMP_OP), "hmmp_op"); + names.put(new Integer(IPPort.SSHELL), "sshell"); + names.put(new Integer(IPPort.SCO_INETMGR), "sco_inetmgr"); + names.put(new Integer(IPPort.SCO_SYSMGR), "sco_sysmgr"); + names.put(new Integer(IPPort.SCO_DTMGR), "sco_dtmgr"); + names.put(new Integer(IPPort.DEI_ICDA), "dei_icda"); + names.put(new Integer(IPPort.DIGITAL_EVM), "digital_evm"); + names.put(new Integer(IPPort.SCO_WEBSRVRMGR), "sco_websrvrmgr"); + names.put(new Integer(IPPort.ESCP_IP), "escp_ip"); + names.put(new Integer(IPPort.COLLABORATOR), "collaborator"); + names.put(new Integer(IPPort.AUX_BUS_SHUNT), "aux_bus_shunt"); + names.put(new Integer(IPPort.CRYPTOADMIN), "cryptoadmin"); + names.put(new Integer(IPPort.DEC_DLM), "dec_dlm"); + names.put(new Integer(IPPort.ASIA), "asia"); + names.put(new Integer(IPPort.PASSGO_TIVOLI), "passgo_tivoli"); + names.put(new Integer(IPPort.QMQP), "qmqp"); + names.put(new Integer(IPPort.AMP3_3COM), "3com_amp3"); + names.put(new Integer(IPPort.RDA), "rda"); + names.put(new Integer(IPPort.IPP), "ipp"); + names.put(new Integer(IPPort.BMPP), "bmpp"); + names.put(new Integer(IPPort.SERVSTAT), "servstat"); + names.put(new Integer(IPPort.GINAD), "ginad"); + names.put(new Integer(IPPort.RLZDBASE), "rlzdbase"); + names.put(new Integer(IPPort.LDAPS), "ldaps"); + names.put(new Integer(IPPort.LANSERVER), "lanserver"); + names.put(new Integer(IPPort.MCNS_SEC), "mcns_sec"); + names.put(new Integer(IPPort.MSDP), "msdp"); + names.put(new Integer(IPPort.ENTRUST_SPS), "entrust_sps"); + names.put(new Integer(IPPort.REPCMD), "repcmd"); + names.put(new Integer(IPPort.ESRO_EMSDP), "esro_emsdp"); + names.put(new Integer(IPPort.SANITY), "sanity"); + names.put(new Integer(IPPort.DWR), "dwr"); + names.put(new Integer(IPPort.PSSC), "pssc"); + names.put(new Integer(IPPort.LDP), "ldp"); + names.put(new Integer(IPPort.DHCP_FAILOVER), "dhcp_failover"); + names.put(new Integer(IPPort.RRP), "rrp"); + names.put(new Integer(IPPort.AMINET), "aminet"); + names.put(new Integer(IPPort.OBEX), "obex"); + names.put(new Integer(IPPort.IEEE_MMS), "ieee_mms"); + names.put(new Integer(IPPort.HELLO_PORT), "hello_port"); + names.put(new Integer(IPPort.REPSCMD ), "repscmd"); + names.put(new Integer(IPPort.AODV), "aodv"); + names.put(new Integer(IPPort.TINC), "tinc"); + names.put(new Integer(IPPort.SPMP), "spmp"); + names.put(new Integer(IPPort.RMC), "rmc"); + names.put(new Integer(IPPort.TENFOLD), "tenfold"); + names.put(new Integer(IPPort.URL_RENDEZVOUS), "url_rendezvous"); + names.put(new Integer(IPPort.MAC_SRVR_ADMIN), "mac_srvr_admin"); + names.put(new Integer(IPPort.HAP), "hap"); + names.put(new Integer(IPPort.PFTP), "pftp"); + names.put(new Integer(IPPort.PURENOISE), "purenoise"); + names.put(new Integer(IPPort.SECURE_AUX_BUS), "secure_aux_bus"); + names.put(new Integer(IPPort.SUN_DR), "sun_dr"); + names.put(new Integer(IPPort.MDQS), "mdqs"); + names.put(new Integer(IPPort.DOOM), "doom"); + names.put(new Integer(IPPort.DISCLOSE), "disclose"); + names.put(new Integer(IPPort.MECOMM), "mecomm"); + names.put(new Integer(IPPort.MEREGISTER), "meregister"); + names.put(new Integer(IPPort.VACDSM_SWS), "vacdsm_sws"); + names.put(new Integer(IPPort.VACDSM_APP), "vacdsm_app"); + names.put(new Integer(IPPort.VPPS_QUA), "vpps_qua"); + names.put(new Integer(IPPort.CIMPLEX), "cimplex"); + names.put(new Integer(IPPort.ACAP), "acap"); + names.put(new Integer(IPPort.DCTP), "dctp"); + names.put(new Integer(IPPort.VPPS_VIA), "vpps_via"); + names.put(new Integer(IPPort.VPP), "vpp"); + names.put(new Integer(IPPort.GGF_NCP), "ggf_ncp"); + names.put(new Integer(IPPort.MRM), "mrm"); + names.put(new Integer(IPPort.ENTRUST_AAAS), "entrust_aaas"); + names.put(new Integer(IPPort.ENTRUST_AAMS), "entrust_aams"); + names.put(new Integer(IPPort.XFR), "xfr"); + names.put(new Integer(IPPort.CORBA_IIOP), "corba_iiop"); + names.put(new Integer(IPPort.CORBA_IIOP_SSL), "corba_iiop_ssl"); + names.put(new Integer(IPPort.MDC_PORTMAPPER), "mdc_portmapper"); + names.put(new Integer(IPPort.HCP_WISMAR), "hcp_wismar"); + names.put(new Integer(IPPort.ASIPREGISTRY), "asipregistry"); + names.put(new Integer(IPPort.REALM_RUSD), "realm_rusd"); + names.put(new Integer(IPPort.NMAP), "nmap"); + names.put(new Integer(IPPort.VATP), "vatp"); + names.put(new Integer(IPPort.MSEXCH_ROUTING), "msexch_routing"); + names.put(new Integer(IPPort.HYPERWAVE_ISP), "hyperwave_isp"); + names.put(new Integer(IPPort.CONNENDP), "connendp"); + names.put(new Integer(IPPort.HA_CLUSTER), "ha_cluster"); + names.put(new Integer(IPPort.IEEE_MMS_SSL), "ieee_mms_ssl"); + names.put(new Integer(IPPort.RUSHD), "rushd"); + names.put(new Integer(IPPort.UUIDGEN), "uuidgen"); + names.put(new Integer(IPPort.OLSR), "olsr"); + names.put(new Integer(IPPort.ACCESSNETWORK), "accessnetwork"); + names.put(new Integer(IPPort.ELCSD), "elcsd"); + names.put(new Integer(IPPort.AGENTX), "agentx"); + names.put(new Integer(IPPort.SILC), "silc"); + names.put(new Integer(IPPort.BORLAND_DSJ), "borland_dsj"); + names.put(new Integer(IPPort.ENTRUST_KMSH), "entrust_kmsh"); + names.put(new Integer(IPPort.ENTRUST_ASH), "entrust_ash"); + names.put(new Integer(IPPort.CISCO_TDP), "cisco_tdp"); + names.put(new Integer(IPPort.NETVIEWDM1), "netviewdm1"); + names.put(new Integer(IPPort.NETVIEWDM2), "netviewdm2"); + names.put(new Integer(IPPort.NETVIEWDM3), "netviewdm3"); + names.put(new Integer(IPPort.NETGW), "netgw"); + names.put(new Integer(IPPort.NETRCS), "netrcs"); + names.put(new Integer(IPPort.FLEXLM), "flexlm"); + names.put(new Integer(IPPort.FUJITSU_DEV), "fujitsu_dev"); + names.put(new Integer(IPPort.RIS_CM), "ris_cm"); + names.put(new Integer(IPPort.KERBEROS_ADM), "kerberos_adm"); + names.put(new Integer(IPPort.RFILE), "rfile"); + names.put(new Integer(IPPort.PUMP), "pump"); + names.put(new Integer(IPPort.QRH), "qrh"); + names.put(new Integer(IPPort.RRH), "rrh"); + names.put(new Integer(IPPort.TELL), "tell"); + names.put(new Integer(IPPort.NLOGIN), "nlogin"); + names.put(new Integer(IPPort.CON), "con"); + names.put(new Integer(IPPort.NS), "ns"); + names.put(new Integer(IPPort.RXE), "rxe"); + names.put(new Integer(IPPort.QUOTAD), "quotad"); + names.put(new Integer(IPPort.CYCLESERV), "cycleserv"); + names.put(new Integer(IPPort.OMSERV), "omserv"); + names.put(new Integer(IPPort.WEBSTER), "webster"); + names.put(new Integer(IPPort.PHONEBOOK), "phonebook"); + names.put(new Integer(IPPort.VID), "vid"); + names.put(new Integer(IPPort.CADLOCK), "cadlock"); + names.put(new Integer(IPPort.RTIP), "rtip"); + names.put(new Integer(IPPort.CYCLESERV2), "cycleserv2"); + names.put(new Integer(IPPort.SUBMIT), "submit"); + names.put(new Integer(IPPort.RPASSWD), "rpasswd"); + names.put(new Integer(IPPort.ENTOMB), "entomb"); + names.put(new Integer(IPPort.WPAGES), "wpages"); + names.put(new Integer(IPPort.WPGS), "wpgs"); + names.put(new Integer(IPPort.QSC), "qsc"); + names.put(new Integer(IPPort.MDBS_DAEMON), "mdbs_daemon"); + names.put(new Integer(IPPort.ITM_MCELL_S), "itm_mcell_s"); + names.put(new Integer(IPPort.PKIX_3_CA_RA), "pkix_3_ca_ra"); + names.put(new Integer(IPPort.DHCP_FAILOVER2), "dhcp_failover2"); + names.put(new Integer(IPPort.RSYNC), "rsync"); + names.put(new Integer(IPPort.ICLCNET_LOCATE), "iclcnet_locate"); + names.put(new Integer(IPPort.ICLCNET_SVINFO), "iclcnet_svinfo"); + names.put(new Integer(IPPort.ACCESSBUILDER), "accessbuilder"); + names.put(new Integer(IPPort.CDDBP), "cddbp"); + names.put(new Integer(IPPort.OMGINITIALREFS), "omginitialrefs"); + names.put(new Integer(IPPort.SMPNAMERES), "smpnameres"); + names.put(new Integer(IPPort.IDEAFARM_CHAT), "ideafarm_chat"); + names.put(new Integer(IPPort.IDEAFARM_CATCH), "ideafarm_catch"); + names.put(new Integer(IPPort.XACT_BACKUP), "xact_backup"); + names.put(new Integer(IPPort.FTPS_DATA), "ftps_data"); + names.put(new Integer(IPPort.FTPS), "ftps"); + names.put(new Integer(IPPort.NAS), "nas"); + names.put(new Integer(IPPort.TELNETS), "telnets"); + names.put(new Integer(IPPort.IMAPS), "imaps"); + names.put(new Integer(IPPort.IRCS), "ircs"); + names.put(new Integer(IPPort.POP3S), "pop3s"); + names.put(new Integer(IPPort.VSINET), "vsinet"); + names.put(new Integer(IPPort.MAITRD), "maitrd"); + names.put(new Integer(IPPort.BUSBOY), "busboy"); + names.put(new Integer(IPPort.GARCON), "garcon"); + names.put(new Integer(IPPort.PUPROUTER), "puprouter"); + names.put(new Integer(IPPort.CADLOCK2), "cadlock2"); + names.put(new Integer(IPPort.SURF), "surf"); + names.put(new Integer(IPPort.RESERVED_1023), "1023r"); + names.put(new Integer(IPPort.RESERVED_1024), "1024r"); + names.put(new Integer(IPPort.SOCKS), "socks"); + names.put(new Integer(IPPort.HSRP), "hsrp"); + names.put(new Integer(IPPort.CVS), "cvs"); + names.put(new Integer(IPPort.AISES), "aises"); + names.put(new Integer(IPPort.X11), "X11"); + } + + + public static String UNKNOWN = "unknown"; + + private String _rcsid = + "$Id: IPPort.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IPPorts.java b/javasrc/net/sourceforge/jpcap/net/IPPorts.java new file mode 100644 index 0000000..e2b24ec --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IPPorts.java @@ -0,0 +1,721 @@ +// $Id: IPPorts.java,v 1.4 2004/02/24 19:21:31 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Code constants for ip ports. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.4 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/02/24 19:21:31 $ + */ +public interface IPPorts +{ + int NONE = -1; // dummy value for protocols that don't use ports + int RESERVED_0 = 0; + int TCPMUX = 1; + int COMPRESSNET2 = 2; + int COMPRESSNET = 3; + int RJE = 5; + int ECHO = 7; + int DISCARD = 9; + int SYSTAT = 11; + int DAYTIME = 13; + int QOTD = 17; + int MSP = 18; + int CHARGEN = 19; + int FTP_DATA = 20; + int FTP = 21; + int SSH = 22; + int TELNET = 23; + int PRIV_MAIL = 24; + int SMTP = 25; + int NSW_FE = 27; + int MSG_ICP = 29; + int MSG_AUTH = 31; + int DSP = 33; + int PRIV_PRINT = 35; + int TIME = 37; + int RAP = 38; + int RLP = 39; + int GRAPHICS = 41; + int NAME = 42; + int NAMESERVER = 42; + int NICNAME = 43; + int MPM_FLAGS = 44; + int MPM = 45; + int MPM_SND = 46; + int NI_FTP = 47; + int AUDITD = 48; + int TACACS = 49; + int RE_MAIL_CK = 50; + int LA_MAINT = 51; + int XNS_TIME = 52; + int DOMAIN = 53; + int XNS_CH = 54; + int ISI_GL = 55; + int XNS_AUTH = 56; + int PRIV_TERMINAL = 57; + int XNS_MAIL = 58; + int PRIV_FILE = 59; + int NI_MAIL = 61; + int ACAS = 62; + int WHOIS = 63; + int COVIA = 64; + int TACACS_DS = 65; + int SQLSNET = 66; + int BOOTPS = 67; + int BOOTPC = 68; + int TFTP = 69; + int GOPHER = 70; + int NETRJS_1 = 71; + int NETRJS_2 = 72; + int NETRJS_3 = 73; + int NETRJS_4 = 74; + int PRIV_DIALOUT = 75; + int DEOS = 76; + int PRIV_RJE = 77; + int VETTCP = 78; + int FINGER = 79; + int HTTP = 80; + int WWW = 80; + int HOSTS2_NS = 81; + int XFER = 82; + int MIT_ML_DEV = 83; + int CTF = 84; + int MIT_ML_DEV2 = 85; + int MFCOBOL = 86; + int PRIV_TERMLINK = 87; + int KERBEROS = 88; + int SU_MIT_TG = 89; + int DNSIX = 90; + int MIT_DOV = 91; + int NPP = 92; + int DCP = 93; + int OBJCALL = 94; + int SUPDUP = 95; + int DIXIE = 96; + int SWIFT_RVF = 97; + int TACNEWS = 98; + int METAGRAM = 99; + int NEWACCT = 100; + int HOSTNAME = 101; + int ISO_TSAP = 102; + int GPPITNP = 103; + int ACR_NEMA = 104; + int CSO = 105; + int CSNET_NS = 105; + int TSMUX_3COM = 106; + int RTELNET = 107; + int SNAGAS = 108; + int POP2 = 109; + int POP3 = 110; + int SUNRPC = 111; + int MCIDAS = 112; + int IDENT = 113; + int AUTH = 113; + int AUDIONEWS = 114; + int SFTP = 115; + int ANSANOTIFY = 116; + int UUCP_PATH = 117; + int SQLSERV = 118; + int NNTP = 119; + int CFDPTKT = 120; + int ERPC = 121; + int SMAKYNET = 122; + int NTP = 123; + int ANSATRADER = 124; + int LOCUS_MAP = 125; + int NXEDIT = 126; + int LOCUS_CON = 127; + int GSS_XLICEN = 128; + int PWDGEN = 129; + int CISCO_FNA = 130; + int CISCO_TNA = 131; + int CISCO_SYS = 132; + int STATSRV = 133; + int INGRES_NET = 134; + int EPMAP = 135; + int PROFILE = 136; + int NETBIOS_NS = 137; + int NETBIOS_DGM = 138; + int NETBIOS_SSN = 139; + int EMFIS_DATA = 140; + int EMFIS_CNTL = 141; + int BL_IDM = 142; + int IMAP = 143; + int UMA = 144; + int UAAC = 145; + int ISO_TP0 = 146; + int ISO_IP = 147; + int JARGON = 148; + int AED_512 = 149; + int SQL_NET = 150; + int HEMS = 151; + int BFTP = 152; + int SGMP = 153; + int NETSC_PROD = 154; + int NETSC_DEV = 155; + int SQLSRV = 156; + int KNET_CMP = 157; + int PCMAIL_SRV = 158; + int NSS_ROUTING = 159; + int SGMP_TRAPS = 160; + int SNMP = 161; + int SNMPTRAP = 162; + int CMIP_MAN = 163; + int CMIP_AGENT = 164; + int XNS_COURIER = 165; + int S_NET = 166; + int NAMP = 167; + int RSVD = 168; + int SEND = 169; + int PRINT_SRV = 170; + int MULTIPLEX = 171; + int CL1 = 172; + int XYPLEX_MUX = 173; + int MAILQ = 174; + int VMNET = 175; + int GENRAD_MUX = 176; + int XDMCP = 177; + int NEXTSTEP = 178; + int BGP = 179; + int RIS = 180; + int UNIFY = 181; + int AUDIT = 182; + int OCBINDER = 183; + int OCSERVER = 184; + int REMOTE_KIS = 185; + int KIS = 186; + int ACI = 187; + int MUMPS = 188; + int QFT = 189; + int GACP = 190; + int PROSPERO = 191; + int OSU_NMS = 192; + int SRMP = 193; + int IRC = 194; + int DN6_NLM_AUD = 195; + int DN6_SMM_RED = 196; + int DLS = 197; + int DLS_MON = 198; + int SMUX = 199; + int SRC = 200; + int AT_RTMP = 201; + int AT_NBP = 202; + int AT_3 = 203; + int AT_ECHO = 204; + int AT_5 = 205; + int AT_ZIS = 206; + int AT_7 = 207; + int AT_8 = 208; + int QMTP = 209; + int Z39_50 = 210; + int N914C = 211; + int ANET = 212; + int IPX = 213; + int VMPWSCS = 214; + int SOFTPC = 215; + int CAILIC = 216; + int DBASE = 217; + int MPP = 218; + int UARPS = 219; + int IMAP3 = 220; + int FLN_SPX = 221; + int RSH_SPX = 222; + int CDC = 223; + int MASQDIALER = 224; + int DIRECT = 242; + int SUR_MEAS = 243; + int INBUSINESS = 244; + int LINK = 245; + int DSP3270 = 246; + int SUBNTBCST_TFTP = 247; + int BHFHS = 248; + int RAP2 = 256; + int SET = 257; + int YAK_CHAT = 258; + int ESRO_GEN = 259; + int OPENPORT = 260; + int NSIIOPS = 261; + int ARCISDMS = 262; + int HDAP = 263; + int BGMP = 264; + int X_BONE_CTL = 265; + int SST = 266; + int TD_SERVICE = 267; + int TD_REPLICA = 268; + int HTTP_MGMT = 280; + int PERSONAL_LINK = 281; + int CABLEPORT_AX = 282; + int RESCAP = 283; + int CORERJD = 284; + int FXP_1 = 286; + int K_BLOCK = 287; + int NOVASTORBAKCUP = 308; + int ENTRUSTTIME = 309; + int BHMDS = 310; + int ASIP_WEBADMIN = 311; + int VSLMP = 312; + int MAGENTA_LOGIC = 313; + int OPALIS_ROBOT = 314; + int DPSI = 315; + int DECAUTH = 316; + int ZANNET = 317; + int PKIX_TIMESTAMP = 318; + int PTP_EVENT = 319; + int PTP_GENERAL = 320; + int PIP = 321; + int RTSPS = 322; + int TEXAR = 333; + int PDAP = 344; + int PAWSERV = 345; + int ZSERV = 346; + int FATSERV = 347; + int CSI_SGWP = 348; + int MFTP = 349; + int MATIP_TYPE_A = 350; + int MATIP_TYPE_B = 351; + int BHOETTY = 351; + int DTAG_STE_SB = 352; + int BHOEDAP4 = 352; + int NDSAUTH = 353; + int BH611 = 354; + int DATEX_ASN = 355; + int CLOANTO_NET = 356; + int BHEVENT = 357; + int SHRINKWRAP = 358; + int NSRMP = 359; + int SCOI2ODIALOG = 360; + int SEMANTIX = 361; + int SRSSEND = 362; + int RSVP_TUNNEL = 363; + int AURORA_CMGR = 364; + int DTK = 365; + int ODMR = 366; + int MORTGAGEWARE = 367; + int QBIKGDP = 368; + int RPC2PORTMAP = 369; + int CODAAUTH = 370; + int CLEARCASE = 371; + int ULISTPROC = 372; + int LEGENT_1 = 373; + int LEGENT_2 = 374; + int HASSLE = 375; + int NIP = 376; + int TNETOS = 377; + int DSETOS = 378; + int IS99C = 379; + int IS99S = 380; + int HP_COLLECTOR = 381; + int HP_MANAGED_NODE = 382; + int HP_ALARM_MGR = 383; + int ARNS = 384; + int IBM_APP = 385; + int ASA = 386; + int AURP = 387; + int UNIDATA_LDM = 388; + int UIS = 390; + int SYNOTICS_RELAY = 391; + int SYNOTICS_BROKER = 392; + int META5 = 393; + int EMBL_NDT = 394; + int NETCP = 395; + int NETWARE_IP = 396; + int MPTN = 397; + int KRYPTOLAN = 398; + int ISO_TSAP_C2 = 399; + int WORK_SOL = 400; + int UPS = 401; + int GENIE = 402; + int DECAP = 403; + int NCED = 404; + int NCLD = 405; + int IMSP = 406; + int TIMBUKTU = 407; + int PRM_SM = 408; + int PRM_NM = 409; + int DECLADEBUG = 410; + int RMT = 411; + int SYNOPTICS_TRAP = 412; + int SMSP = 413; + int INFOSEEK = 414; + int BNET = 415; + int SILVERPLATTER = 416; + int ONMUX = 417; + int HYPER_G = 418; + int ARIEL1 = 419; + int SMPTE = 420; + int ARIEL2 = 421; + int ARIEL3 = 422; + int OPC_JOB_START = 423; + int OPC_JOB_TRACK = 424; + int ICAD_EL = 425; + int SMARTSDP = 426; + int SVRLOC = 427; + int OCS_CMU = 428; + int OCS_AMU = 429; + int UTMPSD = 430; + int UTMPCD = 431; + int IASD = 432; + int NNSP = 433; + int MOBILEIP_AGENT = 434; + int MOBILIP_MN = 435; + int DNA_CML = 436; + int COMSCM = 437; + int DSFGW = 438; + int DASP = 439; + int SGCP = 440; + int DECVMS_SYSMGT = 441; + int CVC_HOSTD = 442; + int HTTPS = 443; + int SNPP = 444; + int MICROSOFT_DS = 445; + int DDM_RDB = 446; + int DDM_DFM = 447; + int DDM_SSL = 448; + int AS_SERVERMAP = 449; + int TSERVER = 450; + int SFS_SMP_NET = 451; + int SFS_CONFIG = 452; + int CREATIVESERVER = 453; + int CONTENTSERVER = 454; + int CREATIVEPARTNR = 455; + int MACON_TCP = 456; + int SCOHELP = 457; + int APPLEQTC = 458; + int AMPR_RCMD = 459; + int SKRONK = 460; + int DATASURFSRV = 461; + int DATASURFSRVSEC = 462; + int ALPES = 463; + int KPASSWD = 464; + int DIGITAL_VRC = 466; + int MYLEX_MAPD = 467; + int PHOTURIS = 468; + int RCP = 469; + int SCX_PROXY = 470; + int MONDEX = 471; + int LJK_LOGIN = 472; + int HYBRID_POP = 473; + int TN_TL_W1 = 474; + int TCPNETHASPSRV = 475; + int TN_TL_FD1 = 476; + int SS7NS = 477; + int SPSC = 478; + int IAFSERVER = 479; + int IAFDBASE = 480; + int PH = 481; + int BGS_NSI = 482; + int ULPNET = 483; + int INTEGRA_SME = 484; + int POWERBURST = 485; + int AVIAN = 486; + int SAFT = 487; + int GSS_HTTP = 488; + int NEST_PROTOCOL = 489; + int MICOM_PFS = 490; + int GO_LOGIN = 491; + int TICF_1 = 492; + int TICF_2 = 493; + int POV_RAY = 494; + int INTECOURIER = 495; + int PIM_RP_DISC = 496; + int DANTZ = 497; + int SIAM = 498; + int ISO_ILL = 499; + int ISAKMP = 500; + int STMF = 501; + int ASA_APPL_PROTO = 502; + int INTRINSA = 503; + int CITADEL = 504; + int MAILBOX_LM = 505; + int OHIMSRV = 506; + int CRS = 507; + int XVTTP = 508; + int SNARE = 509; + int FCP = 510; + int PASSGO = 511; + int EXEC = 512; + int LOGIN = 513; + int SHELL = 514; + int PRINTER = 515; + int VIDEOTEX = 516; + int TALK = 517; + int NTALK = 518; + int UTIME = 519; + int EFS = 520; + int RIPNG = 521; + int ULP = 522; + int IBM_DB2 = 523; + int NCP = 524; + int TIMED = 525; + int TEMPO = 526; + int STX = 527; + int CUSTIX = 528; + int IRC_SERV = 529; + int COURIER = 530; + int CONFERENCE = 531; + int NETNEWS = 532; + int NETWALL = 533; + int MM_ADMIN = 534; + int IIOP = 535; + int OPALIS_RDV = 536; + int NMSP = 537; + int GDOMAP = 538; + int APERTUS_LDP = 539; + int UUCP = 540; + int UUCP_RLOGIN = 541; + int COMMERCE = 542; + int KLOGIN = 543; + int KSHELL = 544; + int APPLEQTCSRVR = 545; + int DHCPV6_CLIENT = 546; + int DHCPV6_SERVER = 547; + int AFPOVERTCP = 548; + int IDFP = 549; + int NEW_RWHO = 550; + int CYBERCASH = 551; + int DEVICESHARE = 552; + int PIRP = 553; + int RTSP = 554; + int DSF = 555; + int REMOTEFS = 556; + int OPENVMS_SYSIPC = 557; + int SDNSKMP = 558; + int TEEDTAP = 559; + int RMONITOR = 560; + int MONITOR = 561; + int CHSHELL = 562; + int NNTPS = 563; + int N9PFS = 564; + int WHOAMI = 565; + int STREETTALK = 566; + int BANYAN_RPC = 567; + int MS_SHUTTLE = 568; + int MS_ROME = 569; + int METER = 570; + int METER2 = 571; + int SONAR = 572; + int BANYAN_VIP = 573; + int FTP_AGENT = 574; + int VEMMI = 575; + int IPCD = 576; + int VNAS = 577; + int IPDD = 578; + int DECBSRV = 579; + int SNTP_HEARTBEAT = 580; + int BDP = 581; + int SCC_SECURITY = 582; + int PHILIPS_VC = 583; + int KEYSERVER = 584; + int IMAP4_SSL = 585; + int PASSWORD_CHG = 586; + int SUBMISSION = 587; + int CAL = 588; + int EYELINK = 589; + int TNS_CML = 590; + int HTTP_ALT = 591; + int EUDORA_SET = 592; + int HTTP_RPC_EPMAP = 593; + int TPIP = 594; + int CAB_PROTOCOL = 595; + int SMSD = 596; + int PTCNAMESERVICE = 597; + int SCO_WEBSRVRMG3 = 598; + int ACP = 599; + int IPCSERVER = 600; + int URM = 606; + int NQS = 607; + int SIFT_UFT = 608; + int NPMP_TRAP = 609; + int NPMP_LOCAL = 610; + int NPMP_GUI = 611; + int HMMP_IND = 612; + int HMMP_OP = 613; + int SSHELL = 614; + int SCO_INETMGR = 615; + int SCO_SYSMGR = 616; + int SCO_DTMGR = 617; + int DEI_ICDA = 618; + int DIGITAL_EVM = 619; + int SCO_WEBSRVRMGR = 620; + int ESCP_IP = 621; + int COLLABORATOR = 622; + int AUX_BUS_SHUNT = 623; + int CRYPTOADMIN = 624; + int DEC_DLM = 625; + int ASIA = 626; + int PASSGO_TIVOLI = 627; + int QMQP = 628; + int AMP3_3COM = 629; + int RDA = 630; + int IPP = 631; + int BMPP = 632; + int SERVSTAT = 633; + int GINAD = 634; + int RLZDBASE = 635; + int LDAPS = 636; + int LANSERVER = 637; + int MCNS_SEC = 638; + int MSDP = 639; + int ENTRUST_SPS = 640; + int REPCMD = 641; + int ESRO_EMSDP = 642; + int SANITY = 643; + int DWR = 644; + int PSSC = 645; + int LDP = 646; + int DHCP_FAILOVER = 647; + int RRP = 648; + int AMINET = 649; + int OBEX = 650; + int IEEE_MMS = 651; + int HELLO_PORT = 652; + int REPSCMD = 653; + int AODV = 654; + int TINC = 655; + int SPMP = 656; + int RMC = 657; + int TENFOLD = 658; + int URL_RENDEZVOUS = 659; + int MAC_SRVR_ADMIN = 660; + int HAP = 661; + int PFTP = 662; + int PURENOISE = 663; + int SECURE_AUX_BUS = 664; + int SUN_DR = 665; + int MDQS = 666; + int DOOM = 666; + int DISCLOSE = 667; + int MECOMM = 668; + int MEREGISTER = 669; + int VACDSM_SWS = 670; + int VACDSM_APP = 671; + int VPPS_QUA = 672; + int CIMPLEX = 673; + int ACAP = 674; + int DCTP = 675; + int VPPS_VIA = 676; + int VPP = 677; + int GGF_NCP = 678; + int MRM = 679; + int ENTRUST_AAAS = 680; + int ENTRUST_AAMS = 681; + int XFR = 682; + int CORBA_IIOP = 683; + int CORBA_IIOP_SSL = 684; + int MDC_PORTMAPPER = 685; + int HCP_WISMAR = 686; + int ASIPREGISTRY = 687; + int REALM_RUSD = 688; + int NMAP = 689; + int VATP = 690; + int MSEXCH_ROUTING = 691; + int HYPERWAVE_ISP = 692; + int CONNENDP = 693; + int HA_CLUSTER = 694; + int IEEE_MMS_SSL = 695; + int RUSHD = 696; + int UUIDGEN = 697; + int OLSR = 698; + int ACCESSNETWORK = 699; + int ELCSD = 704; + int AGENTX = 705; + int SILC = 706; + int BORLAND_DSJ = 707; + int ENTRUST_KMSH = 709; + int ENTRUST_ASH = 710; + int CISCO_TDP = 711; + int NETVIEWDM1 = 729; + int NETVIEWDM2 = 730; + int NETVIEWDM3 = 731; + int NETGW = 741; + int NETRCS = 742; + int FLEXLM = 744; + int FUJITSU_DEV = 747; + int RIS_CM = 748; + int KERBEROS_ADM = 749; + int RFILE = 750; + int PUMP = 751; + int QRH = 752; + int RRH = 753; + int TELL = 754; + int NLOGIN = 758; + int CON = 759; + int NS = 760; + int RXE = 761; + int QUOTAD = 762; + int CYCLESERV = 763; + int OMSERV = 764; + int WEBSTER = 765; + int PHONEBOOK = 767; + int VID = 769; + int CADLOCK = 770; + int RTIP = 771; + int CYCLESERV2 = 772; + int SUBMIT = 773; + int RPASSWD = 774; + int ENTOMB = 775; + int WPAGES = 776; + int MULTILING_HTTP = 777; + int WPGS = 780; + int CONCERT = 786; + int QSC = 787; + int MDBS_DAEMON = 800; + int DEVICE = 801; + int FCP_UDP = 810; + int ITM_MCELL_S = 828; + int PKIX_3_CA_RA = 829; + int DHCP_FAILOVER2 = 847; + int RSYNC = 873; + int ICLCNET_LOCATE = 886; + int ICLCNET_SVINFO = 887; + int ACCESSBUILDER = 888; + int CDDBP = 888; + int OMGINITIALREFS = 900; + int SMPNAMERES = 901; + int IDEAFARM_CHAT = 902; + int IDEAFARM_CATCH = 903; + int XACT_BACKUP = 911; + int FTPS_DATA = 989; + int FTPS = 990; + int NAS = 991; + int TELNETS = 992; + int IMAPS = 993; + int IRCS = 994; + int POP3S = 995; + int VSINET = 996; + int MAITRD = 997; + int BUSBOY = 998; + int GARCON = 999; + int PUPROUTER = 999; + int CADLOCK2 = 1000; + int SURF = 1010; + int RESERVED_1023 = 1023; + int RESERVED_1024 = 1024; + int SOCKS = 1080; + int HSRP = 1985; + int CVS = 2401; + int AISES = 2783; + int X11 = 6000; int X11_BEGIN = 6000; + int X11_END = 6063; + + + /** + * Number of well-known (aka privileged) ports. + */ + int LIMIT_PRIVILEGED = 1024; + + /** + * IP port mask. + */ + int MASK = 0xffff; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IPProtocol.java b/javasrc/net/sourceforge/jpcap/net/IPProtocol.java new file mode 100644 index 0000000..d16bcf8 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IPProtocol.java @@ -0,0 +1,88 @@ +// $Id: IPProtocol.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import java.util.HashMap; + + +/** + * IPProtocol utility class. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.6 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ + */ +public class IPProtocol implements IPProtocols +{ + /** + * Fetch a protocol description. + * @param code the code associated with the message. + * @return a message describing the significance of the IP protocol. + */ + public static String getDescription(int code) { + Integer c = new Integer(code); + if(messages.containsKey(c)) + return (String)messages.get(c); + else + return "unknown"; + } + + /** + * 'Human-readable' IP protocol descriptions. + */ + //jdk1.5: private static HashMap messages = new HashMap(); + private static HashMap messages = new HashMap(); + static { + messages.put(new Integer(IP), "Dummy protocol for TCP"); + messages.put(new Integer(HOPOPTS), "IPv6 Hop-by-Hop options"); + messages.put(new Integer(ICMP), "Internet Control Message Protocol"); + messages.put(new Integer(IGMP), "Internet Group Management Protocol"); + messages.put(new Integer(IPIP), "IPIP tunnels"); + messages.put(new Integer(TCP), "Transmission Control Protocol"); + messages.put(new Integer(EGP), "Exterior Gateway Protocol"); + messages.put(new Integer(PUP), "PUP protocol"); + messages.put(new Integer(UDP), "User Datagram Protocol"); + messages.put(new Integer(IDP), "XNS IDP protocol"); + messages.put(new Integer(TP), "SO Transport Protocol Class 4"); + messages.put(new Integer(IPV6), "IPv6 header"); + messages.put(new Integer(ROUTING), "IPv6 routing header"); + messages.put(new Integer(FRAGMENT), "IPv6 fragmentation header"); + messages.put(new Integer(RSVP), "Reservation Protocol"); + messages.put(new Integer(GRE), "General Routing Encapsulation"); + messages.put(new Integer(ESP), "encapsulating security payload"); + messages.put(new Integer(AH), "authentication header"); + messages.put(new Integer(ICMPV6), "ICMPv6"); + messages.put(new Integer(NONE), "IPv6 no next header"); + messages.put(new Integer(DSTOPTS), "IPv6 destination options"); + messages.put(new Integer(MTP), "Multicast Transport Protocol"); + messages.put(new Integer(ENCAP), "Encapsulation Header"); + messages.put(new Integer(PIM), "Protocol Independent Multicast"); + messages.put(new Integer(COMP), "Compression Header Protocol"); + messages.put(new Integer(RAW), "Raw IP Packet"); + messages.put(new Integer(INVALID), "INVALID IP"); + } + + /** + * Extract the protocol code from packet data. The packet data + * must contain an IP datagram. + * The protocol code specifies what kind of information is contained in the + * data block of the ip datagram. + * + * @param lLen the length of the link-level header. + * @param packetBytes packet bytes, including the link-layer header. + * @return the IP protocol code. i.e. 0x06 signifies TCP protocol. + */ + public static int extractProtocol(int lLen, byte [] packetBytes) { + return packetBytes[lLen + IPFields.IP_CODE_POS]; + } + + + private String _rcsid = + "$Id: IPProtocol.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IPProtocols.java b/javasrc/net/sourceforge/jpcap/net/IPProtocols.java new file mode 100644 index 0000000..6946f44 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IPProtocols.java @@ -0,0 +1,165 @@ +// $Id: IPProtocols.java,v 1.4 2001/06/27 02:15:49 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Code constants for well-defined IP protocols. + *

    + * Taken from netinet/in.h + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.4 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/27 02:15:49 $ + */ +public interface IPProtocols +{ + /** + * Dummy protocol for TCP. + */ + int IP = 0; + + /** + * IPv6 Hop-by-Hop options. + */ + int HOPOPTS = 0; + + /** + * Internet Control Message Protocol. + */ + int ICMP = 1; + + /** + * Internet Group Management Protocol. + */ + int IGMP = 2; + + /** + * IPIP tunnels (older KA9Q tunnels use 94). + */ + int IPIP = 4; + + /** + * Transmission Control Protocol. + */ + int TCP = 6; + + /** + * Exterior Gateway Protocol. + */ + int EGP = 8; + + /** + * PUP protocol. + */ + int PUP = 12; + + /** + * User Datagram Protocol. + */ + int UDP = 17; + + /** + * XNS IDP protocol. + */ + int IDP = 22; + + /** + * SO Transport Protocol Class 4. + */ + int TP = 29; + + /** + * IPv6 header. + */ + int IPV6 = 41; + + /** + * IPv6 routing header. + */ + int ROUTING = 43; + + /** + * IPv6 fragmentation header. + */ + int FRAGMENT = 44; + + /** + * Reservation Protocol. + */ + int RSVP = 46; + + /** + * General Routing Encapsulation. + */ + int GRE = 47; + + /** + * encapsulating security payload. + */ + int ESP = 50; + + /** + * authentication header. + */ + int AH = 51; + + /** + * ICMPv6. + */ + int ICMPV6 = 58; + + /** + * IPv6 no next header. + */ + int NONE = 59; + + /** + * IPv6 destination options. + */ + int DSTOPTS = 60; + + /** + * Multicast Transport Protocol. + */ + int MTP = 92; + + /** + * Encapsulation Header. + */ + int ENCAP = 98; + + /** + * Protocol Independent Multicast. + */ + int PIM = 103; + + /** + * Compression Header Protocol. + */ + int COMP = 108; + + /** + * Raw IP packets. + */ + int RAW = 255; + + + /** + * Unrecognized IP protocol. + * WARNING: this only works because the int storage for the protocol + * code has more bits than the field in the IP header where it is stored. + */ + int INVALID = -1; + + /** + * IP protocol mask. + */ + int MASK = 0xff; +} diff --git a/javasrc/net/sourceforge/jpcap/net/IPVersions.java b/javasrc/net/sourceforge/jpcap/net/IPVersions.java new file mode 100644 index 0000000..b38fdbf --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/IPVersions.java @@ -0,0 +1,30 @@ +// $Id: IPVersions.java,v 1.1 2001/05/23 02:42:22 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Code constants for internet protocol versions. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/05/23 02:42:22 $ + */ +public interface IPVersions +{ + /** + * Internet protocol version 4. + */ + int IPV4 = 4; + + /** + * Internet protocol version 6. + */ + int IPV6 = 6; +} diff --git a/javasrc/net/sourceforge/jpcap/net/LinkLayer.java b/javasrc/net/sourceforge/jpcap/net/LinkLayer.java new file mode 100644 index 0000000..045c003 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/LinkLayer.java @@ -0,0 +1,150 @@ +// $Id: LinkLayer.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import java.util.HashMap; + + +/** + * Information about network link layers. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.6 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ + */ +public class LinkLayer implements LinkLayers +{ + /** + * Fetch the header length associated with various link-layer types. + * @param layerType the link-layer code + * @return the length of the header for the specified link-layer + */ + public static int getLinkLayerLength(int layerType) { + switch(layerType) { + case ARCNET: + return 6; + case SLIP: + return 16; + case SLIP_BSDOS: + return 24; + case NULL: + case LOOP: + return 4; + case PPP: + case CHDLC: + case PPP_SERIAL: + return 4; + case PPP_BSDOS: + return 24; + case FDDI: + return 21; + case IEEE802_11: + return 22; + case ATM_RFC1483: + return 8; + case RAW: + return 0; + case ATM_CLIP: + return 8; + case LINUX_SLL: + return 16; + case EN10MB: + default: + return 14; + } + } + + /** + * Fetch the offset into the link-layer header where the protocol code + * can be found. Returns -1 if there is no embedded protocol code. + * @param layerType the link-layer code + * @return the offset in bytes + */ + public static int getProtoOffset(int layerType) { + switch(layerType) { + case ARCNET: + return 2; + case SLIP: + return -1; + case SLIP_BSDOS: + return -1; + case NULL: + case LOOP: + return 0; + case PPP: + case CHDLC: + case PPP_SERIAL: + return 2; + case PPP_BSDOS: + return 5; + case FDDI: + return 13; + case IEEE802_11: + return 14; + case ATM_RFC1483: + return 6; + case RAW: + return -1; + case ATM_CLIP: + return 6; + case LINUX_SLL: + return 14; + case EN10MB: + default: + return 12; + } + } + + /** + * Fetch a link-layer type description. + * @param code the code associated with the description. + * @return a description of the link-layer type. + */ + public static String getDescription(int code) { + Integer c = new Integer(code); + if(descriptions.containsKey(c)) + return (String)descriptions.get(c); + else + return "unknown"; + } + + /** + * 'Human-readable' link-layer type descriptions. + */ + //jdk1.5: private static HashMap descriptions = new HashMap(); + private static HashMap descriptions = new HashMap(); + static { + descriptions.put(new Integer(NULL), "no link-layer encapsulation"); + descriptions.put(new Integer(EN10MB), "10/100Mb ethernet"); + descriptions.put(new Integer(EN3MB), "3Mb experimental ethernet"); + descriptions.put(new Integer(AX25), "AX.25 amateur radio"); + descriptions.put(new Integer(PRONET), "proteon pronet token ring"); + descriptions.put(new Integer(CHAOS), "chaos"); + descriptions.put(new Integer(IEEE802), "IEEE802 network"); + descriptions.put(new Integer(ARCNET), "ARCNET"); + descriptions.put(new Integer(SLIP), "serial line IP"); + descriptions.put(new Integer(PPP), "point-to-point protocol"); + descriptions.put(new Integer(FDDI), "FDDI"); + descriptions.put(new Integer(ATM_RFC1483), "LLC/SNAP encapsulated ATM"); + descriptions.put(new Integer(RAW), "raw IP"); + descriptions.put(new Integer(SLIP_BSDOS), "BSD SLIP"); + descriptions.put(new Integer(PPP_BSDOS), "BSD PPP"); + descriptions.put(new Integer(ATM_CLIP), "IP over ATM"); + descriptions.put(new Integer(PPP_SERIAL), "PPP over HDLC"); + descriptions.put(new Integer(CHDLC), "Cisco HDLC"); + descriptions.put(new Integer(IEEE802_11), "802.11 wireless"); + descriptions.put(new Integer(LOOP), "OpenBSD loopback"); + descriptions.put(new Integer(LINUX_SLL), "Linux cooked sockets"); + descriptions.put(new Integer(UNKNOWN), "unknown link-layer type"); + } + + + private String _rcsid = + "$Id: LinkLayer.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/LinkLayers.java b/javasrc/net/sourceforge/jpcap/net/LinkLayers.java new file mode 100644 index 0000000..6deecf2 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/LinkLayers.java @@ -0,0 +1,143 @@ +// $Id: LinkLayers.java,v 1.3 2001/07/02 02:45:46 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Link-layer type codes. + *

    + * Taken from libpcap/bpf/net/bpf.h and pcap/net/bpf.h. + *

    + * The link-layer type is used to determine what data-structure the + * IP protocol bits will be encapsulated inside of. + *

    + * On a 10/100mbps network, packets are encapsulated inside of ethernet. + * 14-byte ethernet headers which contain MAC addresses and an ethernet type + * field. + *

    + * On ethernet over ppp, the link-layer type is raw, and packets + * are not encapsulated in any ethernet header. + *

    + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/07/02 02:45:46 $ + */ +public interface LinkLayers +{ + /** + * no link-layer encapsulation + */ + int NULL = 0; + + /** + * Ethernet (10Mb) + */ + int EN10MB = 1; + + /** + * Experimental Ethernet (3Mb) + */ + int EN3MB = 2; + + /** + * Amateur Radio AX.25 + */ + int AX25 = 3; + + /** + * Proteon ProNET Token Ring + */ + int PRONET = 4; + + /** + * Chaos + */ + int CHAOS = 5; + + /** + * IEEE 802 Networks + */ + int IEEE802 = 6; + + /** + * ARCNET + */ + int ARCNET = 7; + + /** + * Serial Line IP + */ + int SLIP = 8; + + /** + * Point-to-point Protocol + */ + int PPP = 9; + + /** + * FDDI + */ + int FDDI = 10; + + /** + * LLC/SNAP encapsulated atm + */ + int ATM_RFC1483 = 11; + + /** + * raw IP + */ + int RAW = 12; + + /** + * BSD Slip. + */ + int SLIP_BSDOS = 15; + + /** + * BSD PPP. + */ + int PPP_BSDOS = 16; + + /** + * IP over ATM. + */ + int ATM_CLIP = 19; + + /** + * PPP over HDLC. + */ + int PPP_SERIAL = 50; + + /** + * Cisco HDLC. + */ + int CHDLC = 104; + + /** + * IEEE 802.11 wireless. + */ + int IEEE802_11 = 105; + + /** + * OpenBSD loopback. + */ + int LOOP = 108; + + /** + * Linux cooked sockets. + */ + int LINUX_SLL = 113; + + /** + * unknown link-layer type + */ + int UNKNOWN = -1; +} diff --git a/javasrc/net/sourceforge/jpcap/net/MACAddress.java b/javasrc/net/sourceforge/jpcap/net/MACAddress.java new file mode 100644 index 0000000..e1da67c --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/MACAddress.java @@ -0,0 +1,56 @@ +// $Id: MACAddress.java,v 1.4 2002/11/07 23:23:46 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.HexHelper; + + +/** + * MAC address. + *

    + * This class doesn't yet store MAC addresses. Only a utility method + * to extract a MAC address from a big-endian byte array is implemented. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.4 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2002/11/07 23:23:46 $ + */ +public class MACAddress +{ + /** + * Extract a MAC address from an array of bytes. + * @param offset the offset of the address data from the start of the + * packet. + * @param bytes an array of bytes containing at least one MAC address. + */ + public static String extract(int offset, byte [] bytes) { + StringBuffer sa = new StringBuffer(); + for(int i=offset; i + * This class currently contains no implementation because only ethernet + * is supported. In other words, all instances of packets returned by + * packet factory will always be at least as specific as EthernetPacket. + *

    + * On large ethernet networks, I sometimes see packets which don't have + * link-level ethernet headers. If and when I figure out what these are, + * maybe this class will be the root node of a packet hierarchy derived + * from something other than ethernet. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.8 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class Packet implements Serializable +{ + public String toColoredString(boolean colored) { + return toString(); + } + + /** + * Fetch data portion of the packet. + */ + public byte [] getHeader() { + return null; + } + + /** + * Fetch data portion of the packet. + */ + public byte [] getData() { + return null; + } + + public String getColor() { + return ""; + } + + public Timeval getTimeval() { + return null; + } + + + private String _rcsid = + "$Id: Packet.java,v 1.8 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/PacketEncoding.java b/javasrc/net/sourceforge/jpcap/net/PacketEncoding.java new file mode 100644 index 0000000..2990669 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/PacketEncoding.java @@ -0,0 +1,113 @@ +// $Id: PacketEncoding.java,v 1.4 2002/07/10 23:18:20 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Packet encoding. + *

    + * Contains utility methods for decoding generic packets. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.4 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2002/07/10 23:18:20 $ + */ +public class PacketEncoding +{ + + // create an empty array to return whenever we need to return an, er, + // empty array. this should be okay, because how can you mutate a + // 0-length array? + private static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; + + /** + * Extract a header from a packet. + * + * @param offset the offset in bytes to the start of the embedded header. + * @param headerLen the length of the header embedded in the packet. + * @param bytes the packet data, including the embedded header and data. + * @return the extracted header data. + */ + public static byte [] extractHeader(int offset, int headerLen, + byte [] bytes) { + // null in = null out ? + if( bytes == null ) return null; + // negative in, empty array out + if( ( offset < 0 ) || ( headerLen < 0 ) ) return EMPTY_BYTE_ARRAY; + + // verify that requested length is in the bounds of the array + int useLen = ( headerLen <= (bytes.length-offset) ? + headerLen : (bytes.length-offset) ); + // verify that requested offset is also in the bounds + if( useLen <= 0 ) return EMPTY_BYTE_ARRAY; + + byte [] header = new byte[useLen]; + System.arraycopy(bytes, offset, header, 0, useLen); + return header; + } + + /** + * Extract data from a packet. + * + * @param offset the offset in bytes to the start of the embedded header. + * @param headerLen the length of the header embedded in the packet. + * @param bytes the packet data, including the embedded header and data. + * @return the extracted packet data. + */ + public static byte [] extractData(int offset, int headerLen, + byte [] bytes) { + // null in = null out ? + if( bytes == null ) return null; + // negative in, empty array out + if( ( offset < 0 ) || ( headerLen < 0 ) ) return EMPTY_BYTE_ARRAY; + + int dataLength = bytes.length - headerLen - offset; + + // check that requested datalength is valid. + // (it may not be if packet values are invalid.) + if(dataLength <= 0) return EMPTY_BYTE_ARRAY; + + // valid length, go for it dude + byte [] data = new byte[dataLength]; + System.arraycopy(bytes, offset + headerLen, data, 0, dataLength); + return data; + } + + /** + * Extract data from a packet. + * + * @param offset the offset in bytes to the start of the embedded header. + * @param headerLen the length of the header embedded in the packet. + * @param bytes the packet data, including the embedded header and data. + * @return the extracted packet data. + */ + public static byte [] extractData(int offset, int headerLen, + byte [] bytes,int dataLength) { + // null in = null out ? + if( bytes == null ) return null; + // negative in, empty array out. request for no-data in, empty array out + if( ( offset < 0 ) || ( headerLen < 0 ) || + ( dataLength <= 0 ) || ( (offset+headerLen) > bytes.length ) ) + return EMPTY_BYTE_ARRAY; + + //-- make sure dataLength + offset + headerLen <= bytes.length + if((dataLength + offset + headerLen) > bytes.length) { + //-- adjust dataLength + dataLength = bytes.length - headerLen - offset; + } + + //-- valid length, go for it dude + byte [] data = new byte[dataLength]; + System.arraycopy(bytes, offset + headerLen, data, 0, dataLength); + return data; + } + + private String _rcsid = + "$Id: PacketEncoding.java,v 1.4 2002/07/10 23:18:20 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/PacketFactory.java b/javasrc/net/sourceforge/jpcap/net/PacketFactory.java new file mode 100644 index 0000000..fa13575 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/PacketFactory.java @@ -0,0 +1,158 @@ +// $Id: PacketFactory.java,v 1.12 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; + + +/** + * This factory constructs high-level packet objects from + * captured data streams. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.12 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class PacketFactory +{ + /** + * Convert captured packet data into an object. + */ + public static Packet dataToPacket(int linkType, byte [] bytes) { + int ethProtocol; + + // record the length of the headers associated with this link layer type. + // this length is the offset to the header embedded in the packet. + lLen = LinkLayer.getLinkLayerLength(linkType); + + // extract the protocol code for the type of header embedded in the + // link-layer of the packet + int offset = LinkLayer.getProtoOffset(linkType); + if(offset == -1) + // if there is no embedded protocol, assume IP? + ethProtocol = EthernetProtocols.IP; + else + ethProtocol = ArrayHelper.extractInteger(bytes, offset, + EthernetFields.ETH_CODE_LEN); + + // try to recognize the ethernet type.. + switch(ethProtocol) { + // arp + case EthernetProtocols.ARP: + return new ARPPacket(lLen, bytes); + case EthernetProtocols.IP: + // ethernet level code is recognized as IP, figure out what kind.. + int ipProtocol = IPProtocol.extractProtocol(lLen, bytes); + switch(ipProtocol) { + // icmp + case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes); + // igmp + case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes); + // tcp + case IPProtocols.TCP: return new TCPPacket(lLen, bytes); + // udp + case IPProtocols.UDP: return new UDPPacket(lLen, bytes); + // sctp + //case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); + // unidentified ip.. + default: return new IPPacket(lLen, bytes); + } + case EthernetProtocols.N8021Q: + lLen = lLen+4; //skip vlan ID + ipProtocol = IPProtocol.extractProtocol(lLen, bytes); + switch(ipProtocol) { + // icmp + case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes); + // igmp + case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes); + // tcp + case IPProtocols.TCP: return new TCPPacket(lLen, bytes); + // udp + case IPProtocols.UDP: return new UDPPacket(lLen, bytes); + // sctp + //case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); + // unidentified ip.. + default: return new IPPacket(lLen, bytes); + } + // ethernet level code not recognized, default to anonymous packet.. + default: return new EthernetPacket(lLen, bytes); + } + } + + /** + * Convert captured packet data into an object. + */ + public static Packet dataToPacket(int linkType, byte [] bytes, Timeval tv) { + int ethProtocol; + + // record the length of the headers associated with this link layer type. + // this length is the offset to the header embedded in the packet. + lLen = LinkLayer.getLinkLayerLength(linkType); + + // extract the protocol code for the type of header embedded in the + // link-layer of the packet + int offset = LinkLayer.getProtoOffset(linkType); + if(offset == -1) + // if there is no embedded protocol, assume IP? + ethProtocol = EthernetProtocols.IP; + else + ethProtocol = ArrayHelper.extractInteger(bytes, offset, + EthernetFields.ETH_CODE_LEN); + + // try to recognize the ethernet type.. + switch(ethProtocol) { + // arp + case EthernetProtocols.ARP: + return new ARPPacket(lLen, bytes, tv); + case EthernetProtocols.IP: + // ethernet level code is recognized as IP, figure out what kind.. + int ipProtocol = IPProtocol.extractProtocol(lLen, bytes); + switch(ipProtocol) { + // icmp + case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes, tv); + // igmp + case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes, tv); + // tcp + case IPProtocols.TCP: return new TCPPacket(lLen, bytes, tv); + // udp + case IPProtocols.UDP: return new UDPPacket(lLen, bytes, tv); + // unidentified ip.. + default: return new IPPacket(lLen, bytes, tv); + } + case EthernetProtocols.N8021Q: + lLen = lLen+4; //skip vlan ID + ipProtocol = IPProtocol.extractProtocol(lLen, bytes); + switch(ipProtocol) { + // icmp + case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes); + // igmp + case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes); + // tcp + case IPProtocols.TCP: return new TCPPacket(lLen, bytes); + // udp + case IPProtocols.UDP: return new UDPPacket(lLen, bytes); + // unidentified ip.. + default: return new IPPacket(lLen, bytes); + } + // ethernet level code not recognized, default to anonymous packet.. + default: return new EthernetPacket(lLen, bytes, tv); + } + } + + + /** + * Length in bytes of the link-level headers that this factory is + * decoding packets for. + */ + private static int lLen; + + private String _rcsid = + "$Id: PacketFactory.java,v 1.12 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/RawPacket.java b/javasrc/net/sourceforge/jpcap/net/RawPacket.java new file mode 100644 index 0000000..5756e48 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/RawPacket.java @@ -0,0 +1,95 @@ +// $Id: RawPacket.java,v 1.3 2003/06/24 23:09:49 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.HexHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + + +/** + * A captured packet containing raw data. + *

    + * Encapsulation for data captured on a network device by PacketCapture's + * raw capture interface. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/06/24 23:09:49 $ + */ +public class RawPacket implements Serializable +{ + /** + * Create a new raw packet. + * + * @param timeval the time the packet arrived on the device where it was + * captured. + * @param bytes the raw packet data, including headers. + * @param droplen the number of bytes dropped (if any) when the packet + * was captured. + */ + public RawPacket(Timeval timeval, byte [] bytes, int droplen) { + this.timeval = timeval; + this.bytes = bytes; + this.droplen = droplen; + } + + /** + * Fetch the timeval containing the time the packet arrived on the + * device where it was captured. + */ + public Timeval getTimeval() { + return timeval; + } + + /** + * Fetch the raw packet data. + */ + public byte [] getData() { + return bytes; + } + + /** + * Fetch the number of bytes dropped (if any) when the packet + * was captured. + *

    + * Bytes are dropped when the snapshot length (a ceiling on the number of + * bytes per packet to capture) is smaller than the actual number of bytes + * in the packet on the wire. In other words, when caplen exceeds snaplen, + * bytes are dropped and droplen will be nonzero. Otherwise, all the + * packet bytes were captured and droplen is zero. + */ + public int getDroplen() { + return droplen; + } + + /** + * Convert this packet to a readable string. + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + int length = bytes.length; + buffer.append("[RawPacket: "); + buffer.append("l = " + length + " of " + (length + droplen) + ", "); + buffer.append("t = " + timeval + ", "); + buffer.append("d = "); + buffer.append(HexHelper.toString(bytes)); + buffer.append(']'); + + return buffer.toString(); + } + + + private Timeval timeval; + private byte [] bytes; + private int droplen; + + private String _rcsid = + "$Id: RawPacket.java,v 1.3 2003/06/24 23:09:49 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/TCPFields.java b/javasrc/net/sourceforge/jpcap/net/TCPFields.java new file mode 100644 index 0000000..aa07361 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/TCPFields.java @@ -0,0 +1,118 @@ +// $Id: TCPFields.java,v 1.5 2003/10/29 02:38:27 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * IP protocol field encoding information. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/10/29 02:38:27 $ + */ +public interface TCPFields +{ + // flag bitmasks + + int TCP_URG_MASK = 0x0020; + int TCP_ACK_MASK = 0x0010; + int TCP_PSH_MASK = 0x0008; + int TCP_RST_MASK = 0x0004; + int TCP_SYN_MASK = 0x0002; + int TCP_FIN_MASK = 0x0001; + + + // field lengths + + /** + * Length of a TCP port in bytes. + */ + int TCP_PORT_LEN = 2; + + /** + * Length of the sequence number in bytes. + */ + int TCP_SEQ_LEN = 4; + + /** + * Length of the acknowledgment number in bytes. + */ + int TCP_ACK_LEN = 4; + + /** + * Length of the header length and flags field in bytes. + */ + int TCP_FLAG_LEN = 2; + + /** + * Length of the window size field in bytes. + */ + int TCP_WIN_LEN = 2; + + /** + * Length of the checksum field in bytes. + */ + int TCP_CSUM_LEN = 2; + + /** + * Length of the urgent field in bytes. + */ + int TCP_URG_LEN = 2; + + + // field positions + + /** + * Position of the source port field. + */ + int TCP_SP_POS = 0; + + /** + * Position of the destination port field. + */ + int TCP_DP_POS = TCP_PORT_LEN; + + /** + * Position of the sequence number field. + */ + int TCP_SEQ_POS = TCP_DP_POS + TCP_PORT_LEN; + + /** + * Position of the acknowledgment number field. + */ + int TCP_ACK_POS = TCP_SEQ_POS + TCP_SEQ_LEN; + + /** + * Position of the header length and flags field. + */ + int TCP_FLAG_POS = TCP_ACK_POS + TCP_ACK_LEN; + + /** + * Position of the window size field. + */ + int TCP_WIN_POS = TCP_FLAG_POS + TCP_FLAG_LEN; + + /** + * Position of the checksum field. + */ + int TCP_CSUM_POS = TCP_WIN_POS + TCP_WIN_LEN; + + /** + * Position of the urgent pointer field. + */ + int TCP_URG_POS = TCP_CSUM_POS + TCP_CSUM_LEN; + + + // complete header length + + /** + * Length in bytes of a TCP header. + */ + int TCP_HEADER_LEN = TCP_URG_POS + TCP_URG_LEN; // == 20 +} diff --git a/javasrc/net/sourceforge/jpcap/net/TCPPacket.java b/javasrc/net/sourceforge/jpcap/net/TCPPacket.java new file mode 100644 index 0000000..618d02f --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/TCPPacket.java @@ -0,0 +1,427 @@ +// $Id: TCPPacket.java,v 1.22 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.AnsiEscapeSequences; +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + + +/** + * A TCP packet. + *

    + * Extends an IP packet, adding a TCP header and TCP data payload. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.22 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class TCPPacket extends IPPacket implements TCPFields, Serializable +{ + /** + * Create a new TCP packet. + */ + public TCPPacket(int lLen, byte [] bytes) { + super(lLen,bytes); + // set TCP header length + _tcpHeaderLength = + ((ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_FLAG_POS, + TCP_FLAG_LEN) >> 12) & 0xf) * 4; + // set data (payload) length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + int tmpLen = + getLength() - getIpHeaderLength() - _tcpHeaderLength; + _payloadDataLength = (tmpLen < 0) ? 0 : tmpLen; + } + + /** + * Create a new TCP packet. + */ + public TCPPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + private int _sourcePort; + private boolean _sourcePortSet = false; + /** + * Fetch the port number on the source host. + */ + public int getSourcePort() { + if(! _sourcePortSet) { + _sourcePort = + ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_SP_POS, + TCP_PORT_LEN); + _sourcePortSet = true; + } + return _sourcePort; + } + + private int _destinationPort; + private boolean _destinationPortSet = false; + /** + * Fetches the port number on the destination host. + */ + public int getDestinationPort() { + if(! _destinationPortSet) { + _destinationPort = + ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_DP_POS, + TCP_PORT_LEN); + _destinationPortSet = true; + } + return _destinationPort; + } + + private long _sequenceNumber; + private boolean _sequenceNumberSet = false; + /** + * Fetch the packet sequence number. + */ + public long getSequenceNumber() { + if(! _sequenceNumberSet) { + _sequenceNumber = + ArrayHelper.extractLong(_bytes, _ipOffset + TCP_SEQ_POS, + TCP_SEQ_LEN); + _sequenceNumberSet = true; + } + return _sequenceNumber; + } + + private long _acknowledgmentNumber; + private boolean _acknowledgmentNumberSet = false; + /** + * Fetch the packet acknowledgment number. + */ + public long getAcknowledgmentNumber() { + if(! _acknowledgmentNumberSet) { + _acknowledgmentNumber = + ArrayHelper.extractLong(_bytes, _ipOffset + TCP_ACK_POS, + TCP_ACK_LEN); + _acknowledgmentNumberSet = true; + } + return _acknowledgmentNumber; + } + + /** + * Fetch the packet acknowledgment number. + */ + public long getAcknowledgementNumber() { + return getAcknowledgmentNumber(); + } + + // this gets set by the constructor + private int _tcpHeaderLength; + + /** + * Fetch the TCP header length in bytes. + */ + public int getTCPHeaderLength() { + return _tcpHeaderLength; + } + + /** + * Fetch the TCP header length in bytes. + */ + public int getTcpHeaderLength() { + // this is the old method call, but everything else uses all caps for + // TCP, so in the interest of consistency... + return getTCPHeaderLength(); + } + + /** + * Fetches the packet TCP header length. + */ + public int getHeaderLength() { + return getTCPHeaderLength(); + } + + // this gets set by the constructor + private int _payloadDataLength; + /** + * Fetches the length of the payload data. + */ + public int getPayloadDataLength() { + return _payloadDataLength; + } + + private int _windowSize; + private boolean _windowSizeSet = false; + /** + * Fetch the window size. + */ + public int getWindowSize() { + if(! _windowSizeSet) { + _windowSize = + ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_WIN_POS, + TCP_WIN_LEN); + _windowSizeSet = true; + } + return _windowSize; + } + + private int _tcpChecksum; + private boolean _tcpChecksumSet = false; + /** + * Fetch the header checksum. + */ + public int getTCPChecksum() { + if(! _tcpChecksumSet) { + _tcpChecksum = + ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_CSUM_POS, + TCP_CSUM_LEN); + _tcpChecksumSet = true; + } + return _tcpChecksum; + } + + /** + * Fetch the header checksum. + */ + public int getChecksum() { + return getTCPChecksum(); + } + + private int _urgentPointer; + private boolean _urgentPointerSet = false; + /** + * Fetch the urgent pointer. + */ + public int getUrgentPointer() { + if(! _urgentPointerSet) { + _urgentPointer = + ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_URG_POS, + TCP_URG_LEN); + _urgentPointerSet = true; + } + return _urgentPointer; + } + + // next value holds all the flags + private int _allFlags; + private boolean _allFlagsSet = false; + private int getAllFlags() { + if(! _allFlagsSet) { + _allFlags = + ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_FLAG_POS, + TCP_FLAG_LEN); + } + return _allFlags; + } + + private boolean _isUrg; + private boolean _isUrgSet = false; + /** + * Check the URG flag, flag indicates if the urgent pointer is valid. + */ + public boolean isUrg() { + if(! _isUrgSet) { + _isUrg = (getAllFlags() & TCP_URG_MASK) != 0; + _isUrgSet = true; + } + return _isUrg; + } + + private boolean _isAck; + private boolean _isAckSet = false; + /** + * Check the ACK flag, flag indicates if the ack number is valid. + */ + public boolean isAck() { + if(! _isAckSet) { + _isAck = (getAllFlags () & TCP_ACK_MASK) != 0; + _isAckSet = true; + } + return _isAck; + } + + private boolean _isPsh; + private boolean _isPshSet = false; + /** + * Check the PSH flag, flag indicates the receiver should pass the + * data to the application as soon as possible. + */ + public boolean isPsh() { + if(! _isPshSet) { + _isPsh = (getAllFlags() & TCP_PSH_MASK) != 0; + _isPshSet = true; + } + return _isPsh; + } + + private boolean _isRst; + private boolean _isRstSet = false; + /** + * Check the RST flag, flag indicates the session should be reset between + * the sender and the receiver. + */ + public boolean isRst() { + if(! _isRstSet) { + _isRst = (getAllFlags() & TCP_RST_MASK) != 0; + _isRstSet = true; + } + return _isRst; + } + + private boolean _isSyn; + private boolean _isSynSet = false; + /** + * Check the SYN flag, flag indicates the sequence numbers should + * be synchronized between the sender and receiver to initiate + * a connection. + */ + public boolean isSyn() { + if(! _isSynSet) { + _isSyn = (getAllFlags() & TCP_SYN_MASK) != 0; + _isSynSet = true; + } + return _isSyn; + } + + private boolean _isFin; + private boolean _isFinSet = false; + /** + * Check the FIN flag, flag indicates the sender is finished sending. + */ + public boolean isFin() { + if(! _isFinSet) { + _isFin = (getAllFlags () & TCP_FIN_MASK) != 0; + _isFinSet = true; + } + return _isFin; + } + + private byte[] _tcpHeaderBytes = null; + /** + * Fetch the TCP header a byte array. + */ + public byte[] getTCPHeader() { + if(_tcpHeaderBytes == null) { + _tcpHeaderBytes = + PacketEncoding.extractHeader(_ipOffset, getTcpHeaderLength(), + _bytes); + } + return _tcpHeaderBytes; + } + + /** + * Fetch the TCP header as a byte array. + */ + public byte[] getHeader() { + return getTCPHeader(); + } + + private byte[] _tcpDataBytes = null; + /** + * Fetch the TCP data as a byte array. + */ + public byte[] getTCPData() { + if(_tcpDataBytes == null) { + // set data length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + _tcpDataBytes = + PacketEncoding.extractData(_ipOffset, getTcpHeaderLength(), + _bytes, getPayloadDataLength()); + } + return _tcpDataBytes; + } + + /** + * Fetch the TCP data as a byte array. + */ + public byte[] getData() { + return getTCPData(); + } + + + /** + * Convert this TCP packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this TCP packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("TCPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(getSourceAddress()); + buffer.append('.'); + buffer.append(IPPort.getName(getSourcePort())); + buffer.append(" -> "); + buffer.append(getDestinationAddress()); + buffer.append('.'); + buffer.append(IPPort.getName(getDestinationPort())); + if(isUrg()) + buffer.append(" urg[0x" + Integer.toHexString(getUrgentPointer()) + "]"); + if(isAck()) + buffer.append(" ack[0x" + + Long.toHexString(getAcknowledgmentNumber()) + "]"); + if(isPsh()) buffer.append(" psh"); + if(isRst()) buffer.append(" rst"); + if(isSyn()) + buffer.append(" syn[0x" + + Long.toHexString(getSequenceNumber()) + "]"); + if(isFin()) buffer.append(" fin"); + buffer.append(" l=" + getTCPHeaderLength() + "," + + getPayloadDataLength()); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Convert this TCP packet to a verbose. + */ + public String toColoredVerboseString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("TCPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append("sport=" + getSourcePort() + ", "); + buffer.append("dport=" + getDestinationPort() + ", "); + buffer.append("seqn=0x" + Long.toHexString(getSequenceNumber()) + ", "); + buffer.append("ackn=0x" + + Long.toHexString(getAcknowledgmentNumber()) + ", "); + buffer.append("hlen=" + getHeaderLength() + ", "); + buffer.append("urg=" + isUrg() + ", "); + buffer.append("ack=" + isAck() + ", "); + buffer.append("psh=" + isPsh() + ", "); + buffer.append("rst=" + isRst() + ", "); + buffer.append("syn=" + isSyn() + ", "); + buffer.append("fin=" + isFin() + ", "); + buffer.append("wsize=" + getWindowSize() + ", "); + buffer.append("sum=0x" + Integer.toHexString(getChecksum()) + ", "); + buffer.append("uptr=0x" + Integer.toHexString(getUrgentPointer())); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.YELLOW; + } + + + private String _rcsid = + "$Id: TCPPacket.java,v 1.22 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/TypesOfService.java b/javasrc/net/sourceforge/jpcap/net/TypesOfService.java new file mode 100644 index 0000000..ea97e3a --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/TypesOfService.java @@ -0,0 +1,39 @@ +// $Id: TypesOfService.java,v 1.2 2001/06/21 07:48:07 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * Type of service code constants for IP. Type of service describes + * how a packet should be handled. + *

    + * TOS is an 8-bit record in an IP header which contains a 3-bit + * precendence field, 4 TOS bit fields and a 0 bit. + *

    + * The following constants are bit masks which can be logically and'ed + * with the 8-bit IP TOS field to determine what type of service is set. + *

    + * Taken from TCP/IP Illustrated V1 by Richard Stevens, p34. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.2 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/21 07:48:07 $ + */ +public interface TypesOfService +{ + int MINIMIZE_DELAY = 0x10; + + int MAXIMIZE_THROUGHPUT = 0x08; + + int MAXIMIZE_RELIABILITY = 0x04; + + int MINIMIZE_MONETARY_COST = 0x02; + + int UNUSED = 0x01; +} diff --git a/javasrc/net/sourceforge/jpcap/net/UDPFields.java b/javasrc/net/sourceforge/jpcap/net/UDPFields.java new file mode 100644 index 0000000..5d687f7 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/UDPFields.java @@ -0,0 +1,68 @@ +// $Id: UDPFields.java,v 1.3 2001/06/27 01:47:00 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * IP protocol field encoding information. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/27 01:47:00 $ + */ +public interface UDPFields +{ + // field lengths + + /** + * Length of a UDP port in bytes. + */ + int UDP_PORT_LEN = 2; + + /** + * Length of the header length field in bytes. + */ + int UDP_LEN_LEN = 2; + + /** + * Length of the checksum field in bytes. + */ + int UDP_CSUM_LEN = 2; + + + // field positions + + /** + * Position of the source port. + */ + int UDP_SP_POS = 0; + + /** + * Position of the destination port. + */ + int UDP_DP_POS = UDP_PORT_LEN; + + /** + * Position of the header length. + */ + int UDP_LEN_POS = UDP_DP_POS + UDP_PORT_LEN; + + /** + * Position of the header checksum length. + */ + int UDP_CSUM_POS = UDP_LEN_POS + UDP_LEN_LEN; + + + // complete header length + + /** + * Length of a UDP header in bytes. + */ + int UDP_HEADER_LEN = UDP_CSUM_POS + UDP_CSUM_LEN; // == 8 +} diff --git a/javasrc/net/sourceforge/jpcap/net/UDPPacket.java b/javasrc/net/sourceforge/jpcap/net/UDPPacket.java new file mode 100644 index 0000000..e9eb513 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/UDPPacket.java @@ -0,0 +1,168 @@ +// $Id: UDPPacket.java,v 1.18 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.AnsiEscapeSequences; +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + + +/** + * A UDP packet. + *

    + * Extends an IP packet, adding a UDP header and UDP data payload. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.18 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class UDPPacket extends IPPacket implements UDPFields, Serializable +{ + /** + * Create a new UDP packet. + */ + public UDPPacket(int lLen, byte [] bytes) { + super(lLen, bytes); + } + + /** + * Create a new UDP packet. + */ + public UDPPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + /** + * Fetch the port number on the source host. + */ + public int getSourcePort() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_SP_POS, + UDP_PORT_LEN); + } + + /** + * Fetch the port number on the target host. + */ + public int getDestinationPort() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_DP_POS, + UDP_PORT_LEN); + } + + /** + * Fetch the total length of the UDP packet, including header and + * data payload, in bytes. + */ + public int getLength() { + // should produce the same value as header.length + data.length + return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_LEN_POS, + UDP_LEN_LEN); + } + + /** + * Fetch the header checksum. + */ + public int getUDPChecksum() { + return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_CSUM_POS, + UDP_CSUM_LEN); + } + + /** + * Fetch the header checksum. + */ + public int getChecksum() { + return getUDPChecksum(); + } + + private byte[] _udpHeaderBytes = null; + /** + * Fetch the UDP header a byte array. + */ + public byte[] getUDPHeader() { + if(_udpHeaderBytes == null) { + _udpHeaderBytes = + PacketEncoding.extractHeader(_ipOffset, UDP_HEADER_LEN, _bytes); + } + return _udpHeaderBytes; + } + + /** + * Fetch the UDP header as a byte array. + */ + public byte[] getHeader() { + return getUDPHeader(); + } + + private byte[] _udpDataBytes = null; + /** + * Fetch the UDP data as a byte array. + */ + public byte[] getUDPData() { + if(_udpDataBytes == null) { + // set data length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + int tmpLen = _bytes.length - _ipOffset - UDP_HEADER_LEN; + _udpDataBytes = + PacketEncoding.extractData(_ipOffset, UDP_HEADER_LEN, + _bytes, tmpLen); + } + return _udpDataBytes; + } + + /** + * Fetch the UDP data as a byte array. + */ + public byte[] getData() { + return getUDPData(); + } + + /** + * Convert this UDP packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this UDP packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("UDPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(getSourceAddress()); + buffer.append('.'); + buffer.append(IPPort.getName(getSourcePort())); + buffer.append(" -> "); + buffer.append(getDestinationAddress()); + buffer.append('.'); + buffer.append(IPPort.getName(getDestinationPort())); + buffer.append(" l=" + UDP_HEADER_LEN + "," + (getLength()-UDP_HEADER_LEN)); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.LIGHT_GREEN; + } + + + private String _rcsid = + "$Id: UDPPacket.java,v 1.18 2004/05/05 23:14:45 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/net/makefile b/javasrc/net/sourceforge/jpcap/net/makefile new file mode 100644 index 0000000..2abdfa4 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/makefile @@ -0,0 +1,68 @@ +# $Id: makefile,v 1.16 2002/07/10 23:29:56 pcharles Exp $ +# +# package net.sourceforge.jpcap.capture +# +PKG = net.sourceforge.jpcap.net +PKG_DIR = $(subst .,/, $(PKG)) +PKG_UND = $(subst .,_, $(PKG)) +REL = ../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +WRAPPER = PacketCapture + +JAVA = \ + RawPacket \ + \ + EthernetProtocol \ + EthernetProtocols \ + IPProtocol \ + IPProtocols \ + IPVersions \ + TypesOfService \ + LinkLayer \ + LinkLayers \ + ICMPMessage \ + ICMPMessages \ + IGMPMessage \ + IGMPMessages \ + IPPort \ + IPPorts \ + IPAddress \ + MACAddress \ + \ + \ + PacketEncodingTest \ + EthernetPacketTest \ + IPPacketTest \ + TCPPacketTest \ + PacketEncoding \ + EthernetFields \ + ARPFields \ + IPFields \ + ICMPFields \ + IGMPFields \ + TCPFields \ + UDPFields \ + \ + Packet \ + EthernetPacket \ + ARPPacket \ + IPPacket \ + ICMPPacket \ + IGMPPacket \ + TCPPacket \ + UDPPacket \ + \ + PacketFactory + + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + + +all: $(JAVA_CLASSES) + + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/net/package.html b/javasrc/net/sourceforge/jpcap/net/package.html new file mode 100644 index 0000000..e0e908e --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/package.html @@ -0,0 +1,35 @@ + + + +net.sourceforge.jpcap.net + + + + +Provides a hierarchical inheritance-based library of +network packet types and protocols. +

    +On an ethernet network, data is nested and encapsulated in headers. +For example, an ethernet link-level header might encapsulate an +IP or ARP header. An IP header can encapsulate a UDP datagram +which contains a DNS protocol message. +

    +In this package, the relationships between these packet types +are expressed via inheritance and the individual packet classes +encapsulate the details of each specific protocol. +

    +The class PacketFactory converts raw byte data into packet instances. +

    +Other utility classes in this package provide store the many port numbers, +message types and codes associated with different protocols. + + + diff --git a/javasrc/net/sourceforge/jpcap/tutorial/README b/javasrc/net/sourceforge/jpcap/tutorial/README new file mode 100644 index 0000000..d2db52a --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/README @@ -0,0 +1,11 @@ +$Id: README,v 1.4 2004/09/29 20:13:09 pcharles Exp $ + + example1 - Raw packet counter + example2 - Raw packet capture with data extraction + example3 - Raw packet capture with packet type query + example4 - Packet capture with ICMP filtering + example5 - ICMP packet counter + example6 - ICMP source/destination address query + example7 - Extracts text data from a telnet session + example15 - PacketCapture.endCapture() example + sniffer - Generic Sniffer application diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java b/javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java new file mode 100644 index 0000000..60f5241 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java @@ -0,0 +1,73 @@ +// $Id: Example1.java,v 1.3 2002/02/18 15:33:00 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.example1; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * jpcap Tutorial - Example 1 + * + * @author Jonas Lehmann and Patrick Charles + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2002/02/18 15:33:00 $ + */ +public class Example1 +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = 10; + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture m_pcap; + private String m_device; + + public Example1() throws Exception { + // Step 1: Instantiate Capturing Engine + m_pcap = new PacketCapture(); + + // Step 2: Check for devices + m_device = m_pcap.findDevice(); + + // Step 3: Open Device for Capturing (requires root) + m_pcap.open(m_device, true); + + // Step 4: Add a BPF Filter (see tcpdump documentation) + m_pcap.setFilter(FILTER, true); + + // Step 5: Register a Listener for Raw Packets + m_pcap.addRawPacketListener(new RawPacketHandler()); + + // Step 6: Capture Data (max. PACKET_COUNT packets) + m_pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) { + try { + Example1 example = new Example1(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } +} + + +class RawPacketHandler implements RawPacketListener +{ + private static int m_counter = 0; + + public void rawPacketArrived(RawPacket data) { + m_counter++; + System.out.println("Received packet (" + m_counter + ")"); + } +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example1/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example1/makefile new file mode 100644 index 0000000..7c713b1 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example1/makefile @@ -0,0 +1,20 @@ +# $Id: makefile,v 1.1 2001/05/30 11:45:20 freecoder Exp $ +# +# package net.sourceforge.jpcap.tutorial.example1 +# +PKG = net.sourceforge.jpcap.tutorial.example1 +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +JAVA = \ + Example1 + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + +all: $(JAVA_CLASSES) + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java b/javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java new file mode 100644 index 0000000..e1a9534 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java @@ -0,0 +1,77 @@ +/*************************************************************************** + * Christian Tzolov (tzolov@cs.utwente.nl) * + * Nikolay Diakov (diakov@cs.utwnte.nl) * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.example15; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + +/* + * This example utilizes the endCapture() feature. + */ +public class Example15 { + private static final int INFINITE = -1; + private static final int PACKET_COUNT = INFINITE; + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture m_pcap; + private String m_device; + + + public Example15() throws Exception { + // Step 1: Instantiate Capturing Engine + m_pcap = new PacketCapture(); + + // Step 2: Check for devices + m_device = m_pcap.findDevice(); + + // Step 3: Open Device for Capturing (requires root) + m_pcap.open(m_device, true); + + // Step 4: Add a BPF Filter (see tcpdump documentation) + m_pcap.setFilter(FILTER, true); + + // Step 5: Register a Listener for Raw Packets + m_pcap.addRawPacketListener(new RawPacketHandler(m_pcap)); + + // Step 6: Capture Data (max. PACKET_COUNT packets) + m_pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) { + try { + Example15 example = new Example15(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } +} + + +class RawPacketHandler implements RawPacketListener +{ + private static int m_counter = 0; + private PacketCapture m_pcap = null; + + public RawPacketHandler(PacketCapture pcap) { + m_counter = 0; + m_pcap = pcap; + } + + public synchronized void rawPacketArrived(RawPacket data) { + m_counter++; + System.out.println("Packet " + m_counter + "\n" + data + "\n"); + + if(condition()) + m_pcap.endCapture(); + } + + private boolean condition() { + return (m_counter == 5) ? true : false; + } +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example15/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example15/makefile new file mode 100644 index 0000000..1746ee9 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example15/makefile @@ -0,0 +1,20 @@ +# $Id: makefile,v 1.1 2002/07/10 23:05:26 pcharles Exp $ +# +# package net.sourceforge.jpcap.tutorial.example15 +# +PKG = net.sourceforge.jpcap.tutorial.example15 +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +JAVA = \ + Example15 + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + +all: $(JAVA_CLASSES) + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java b/javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java new file mode 100644 index 0000000..0413d2e --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java @@ -0,0 +1,73 @@ +// $Id: Example2.java,v 1.3 2002/02/18 15:33:00 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.example2; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * jpcap Tutorial - Example 2 + * + * @author Jonas Lehmann and Patrick Charles + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2002/02/18 15:33:00 $ + */ +public class Example2 +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = 10; + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture m_pcap; + private String m_device; + + public Example2() throws Exception { + // Step 1: Instantiate Capturing Engine + m_pcap = new PacketCapture(); + + // Step 2: Check for devices + m_device = m_pcap.findDevice(); + + // Step 3: Open Device for Capturing (requires root) + m_pcap.open(m_device, true); + + // Step 4: Add a BPF Filter (see tcpdump documentation) + m_pcap.setFilter(FILTER, true); + + // Step 5: Register a Listener for Raw Packets + m_pcap.addRawPacketListener(new RawPacketHandler()); + + // Step 6: Capture Data (max. PACKET_COUNT packets) + m_pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) { + try { + Example2 example = new Example2(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } +} + + +class RawPacketHandler implements RawPacketListener +{ + private static int m_counter = 0; + + public void rawPacketArrived(RawPacket data) { + m_counter++; + System.out.println("Packet " + m_counter + "\n" + data + "\n"); + } +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example2/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example2/makefile new file mode 100644 index 0000000..bec62d8 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example2/makefile @@ -0,0 +1,20 @@ +# $Id: makefile,v 1.1 2001/05/30 11:48:28 freecoder Exp $ +# +# package net.sourceforge.jpcap.tutorial.example1 +# +PKG = net.sourceforge.jpcap.tutorial.example2 +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +JAVA = \ + Example2 + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + +all: $(JAVA_CLASSES) + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java new file mode 100644 index 0000000..96a2dd1 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java @@ -0,0 +1,75 @@ +// $Id: Example3.java,v 1.6 2004/05/05 23:14:45 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.example3; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * jpcap Tutorial - Example 3 + * + * @author Jonas Lehmann and Patrick Charles + * @version $Revision: 1.6 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ + */ +public class Example3 +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = INFINITE; + private static int m_counter = 0; + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture m_pcap; + private String m_device; + + public Example3() throws Exception { + // Step 1: Instantiate Capturing Engine + m_pcap = new PacketCapture(); + + // Step 2: Check for devices + m_device = m_pcap.findDevice(); + + // Step 3: Open Device for Capturing (requires root) + m_pcap.open(m_device, true); + + // Step 4: Add a BPF Filter (see tcpdump documentation) + m_pcap.setFilter(FILTER, true); + + // Step 5: Register a Listener for jpcap Packets + m_pcap.addPacketListener(new PacketHandler()); + + // Step 6: Capture Data (max. PACKET_COUNT packets) + m_pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) { + try { + Example3 example = new Example3(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + +class PacketHandler implements PacketListener +{ + + public void packetArrived(Packet packet) { + m_counter++; + String type = packet.getClass().getName(); + System.out.println("Packet(" + m_counter + ") is of type " + type + "."); + //System.out.println("Packet(" + m_counter + ") time = " + packet.getTimeval()); + //packet.getTimeval(); + } +} +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java new file mode 100644 index 0000000..25f2203 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java @@ -0,0 +1,120 @@ +// $Id: Example3b.java,v 1.5 2004/02/22 22:29:06 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.tutorial.example3; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * jpcap Tutorial - Example 3 + * + * Same as Example 3, but includes multiple listeners. + * + * This class works by default on Linux. For other platforms, change + * the device names 'lo' and 'eth0' below to the devices you'd like to test. + * + * For a multiple, simultaneous capture example that works on any platform, + * see Example3c. + * + * @author Jonas Lehmann and Patrick Charles + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2004/02/22 22:29:06 $ + */ +public class Example3b +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = 10; // INFINITE + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture pcapLo; + private PacketCapture pcapE0; + + PacketHandler phLo; + PacketHandler phE0; + + public Example3b() throws Exception { + // instantiate capture engine + pcapLo = new PacketCapture(); + pcapE0 = new PacketCapture(); + + // open devices for capturing (requires root) + pcapLo.open("lo", true); + pcapE0.open("eth0", true); + + // add a BPF filter (see tcpdump documentation) + pcapLo.setFilter(FILTER, true); + pcapE0.setFilter(FILTER, true); + + // create multiple handlers, each with a separate listener + phLo = new PacketHandler("lo"); + pcapLo.addPacketListener(phLo); + + phE0 = new PacketHandler("eth0"); + pcapE0.addPacketListener(phE0); + + // create a separate thread for each capture instance + CaptureThread ctLo = new CaptureThread(pcapLo, PACKET_COUNT); + CaptureThread ctE0 = new CaptureThread(pcapE0, PACKET_COUNT); + + // capture packets + ctLo.start(); + ctE0.start(); + } + + public static void main(String[] args) { + try { + Example3b example = new Example3b(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + +class CaptureThread extends Thread +{ + public CaptureThread(PacketCapture pc, int count) { + this.pc = pc; + this.count = count; + } + + public void run() { + try { + pc.capture(count); + } + catch(CapturePacketException cpe) { + cpe.printStackTrace(); + } + } + + PacketCapture pc; + int count; +} + +class PacketHandler implements PacketListener +{ + private int counter = 0; + + public PacketHandler(String name) { + this.name = name; + } + + public void packetArrived(Packet packet) { + counter++; + String type = packet.getClass().getName(); + System.out.println(name + ": Packet(" + counter + + ") is of type " + type + "."); + System.err.println(packet); + } + + String name; +} +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java new file mode 100644 index 0000000..65de57d --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java @@ -0,0 +1,101 @@ +// $Id: Example3c.java,v 1.1 2004/02/22 20:38:34 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2004, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.tutorial.example3; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * Capture packets simultaneously on all detected ethernet devices. + * + * Modifications to Example3 submitted by Anatol Novchenko. + */ +public class Example3c +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = -1; // INFINITE + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture pcap; + private PacketHandler ph; + private CaptureThread ct; + + public Example3c() throws Exception { + // instantiate capture engine + String[] devices = PacketCapture.lookupDevices(); + + // capture packets on all detected devices + for(int i=0;i to <"+dstHost+">"); + } catch( Exception e ) { + e.printStackTrace(); + } + } +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example6/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example6/makefile new file mode 100644 index 0000000..2f6a4c8 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example6/makefile @@ -0,0 +1,20 @@ +# $Id: makefile,v 1.1 2001/05/30 11:54:12 freecoder Exp $ +# +# package net.sourceforge.jpcap.tutorial.example1 +# +PKG = net.sourceforge.jpcap.tutorial.example6 +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +JAVA = \ + Example6 + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + +all: $(JAVA_CLASSES) + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java b/javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java new file mode 100644 index 0000000..c6b39db --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java @@ -0,0 +1,79 @@ +// $Id: Example7.java,v 1.2 2001/07/02 16:44:21 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.example7; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * jpcap Tutorial - Example 7 + * + * @author Jonas Lehmann and Patrick Charles + * @version $Revision: 1.2 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/07/02 16:44:21 $ + * + * First modify the HOST constant to an IP address of a host to sniff. + * The host HOST must support telnet logins for example to work properly. + * + * Run example and telnet to the host HOST. + * All TCP connections to/from the host HOST and the data contents of each + * packet will be displayed. + */ +public class Example7 +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = INFINITE; + private static final String HOST = "172.16.32.32"; + private static final String FILTER = + "host " + HOST + " and proto TCP and port 23"; + + public Example7() throws Exception { + // Initialize jpcap + PacketCapture pcap = new PacketCapture(); + String device = pcap.findDevice(); + pcap.open(device, true); + pcap.setFilter(FILTER, true); + pcap.addPacketListener(new PacketHandler()); + + // Start capturing packets... + pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) { + try { + Example7 example = new Example7(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } +} + + +class PacketHandler implements PacketListener +{ + public void packetArrived(Packet packet) { + try { + TCPPacket tcpPacket = (TCPPacket)packet; + + byte[] data = tcpPacket.getData(); + + String srcHost = tcpPacket.getSourceAddress(); + String dstHost = tcpPacket.getDestinationAddress(); + String isoData = new String(data, "ISO-8859-1"); + + System.out.println(srcHost+" -> " + dstHost + ": " + isoData); + } + catch( Exception e ) { + e.printStackTrace(); + } + } +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example7/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example7/makefile new file mode 100644 index 0000000..ecfb594 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/example7/makefile @@ -0,0 +1,20 @@ +# $Id: makefile,v 1.1 2001/05/30 11:55:00 freecoder Exp $ +# +# package net.sourceforge.jpcap.tutorial.example1 +# +PKG = net.sourceforge.jpcap.tutorial.example7 +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +JAVA = \ + Example7 + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + +all: $(JAVA_CLASSES) + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/makefile b/javasrc/net/sourceforge/jpcap/tutorial/makefile new file mode 100644 index 0000000..8460309 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/makefile @@ -0,0 +1,22 @@ +# $Id: makefile,v 1.4 2003/06/24 22:34:22 pcharles Exp $ +# +# package net.sourceforge +# +TARGETS = \ + example1 \ + example2 \ + example3 \ + example4 \ + example5 \ + example6 \ + example7 \ + example15 \ + sniffer \ + misc + +# default target and tree traversal for standard targets +include ${MAKE_HOME}/chain_default.makefile +include ${MAKE_HOME}/chain_release.makefile +include ${MAKE_HOME}/chain_install.makefile +include ${MAKE_HOME}/chain_depend.makefile +include ${MAKE_HOME}/chain_clean.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java new file mode 100644 index 0000000..ec6bb10 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java @@ -0,0 +1,95 @@ +// $Id: ICMPTest.java,v 1.1 2003/07/02 18:52:34 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.misc; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; +import net.sourceforge.jpcap.util.HexHelper; + + +/** + * jpcap Tutorial - icmp test + * + * @author Patrick Charles + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/07/02 18:52:34 $ + * + */ +public class ICMPTest +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = 1; + + // BPF filter for only capturing ICMP packets + private static final String FILTER = "proto ICMP"; + + private PacketCapture m_pcap; + private String m_device; + + public ICMPTest() throws Exception { + // instantiate capture engine + m_pcap = new PacketCapture(); + + // open device for capturing (requires root) + m_pcap.open("lo", true); + + // add a BPF Filter (see tcpdump documentation) + m_pcap.setFilter(FILTER, true); + + // register a listener + m_pcap.addPacketListener(new PacketHandler()); + + // capture data + m_pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) { + try { + System.err.println("waiting for an icmp packet.. "); + ICMPTest icmpTest = new ICMPTest(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } +} + + +class PacketHandler implements PacketListener +{ + public void packetArrived(Packet packet) { + try { + ICMPPacket icmpPacket = (ICMPPacket) packet; + + String srcHost = icmpPacket.getSourceAddress(); + String dstHost = icmpPacket.getDestinationAddress(); + + System.out.println(icmpPacket.toColoredString(true)); + System.out.println("message code: " + icmpPacket.getMessageCode()); + System.out.println("message major: " + icmpPacket.getMessageMajorCode()); + System.out.println("message minor: " + icmpPacket.getMessageMinorCode()); + System.out.println("checksum: " + icmpPacket.getChecksum()); + + System.out.println(""); + System.out.println("ethernet header: " + + HexHelper.toString(icmpPacket.getEthernetHeader())); + System.out.println("ethernet data: " + + HexHelper.toString(icmpPacket.getEthernetData())); + System.out.println(""); + + System.out.println("header: " + + HexHelper.toString(icmpPacket.getHeader())); + + System.err.println("data: " + HexHelper.toString(icmpPacket.getData())); + } catch( Exception e ) { + e.printStackTrace(); + } + } +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java new file mode 100644 index 0000000..bd187a3 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java @@ -0,0 +1,76 @@ +// $Id: MemoryTest.java,v 1.3 2003/11/19 17:44:55 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.misc; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * Memory Test. + * + * @author Jonas Lehmann and Patrick Charles + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/11/19 17:44:55 $ + */ +public class MemoryTest +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = 10; + private static int m_counter = 0; + + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture m_pcap; + private String m_device; + + public MemoryTest() throws Exception { + // Step 1: Instantiate Capturing Engine + m_pcap = new PacketCapture(); + + // Step 2: Check for devices + m_device = m_pcap.findDevice(); + + // Step 3: Open Device for Capturing (requires root) + m_pcap.open(m_device, true); + + // Step 4: Add a BPF Filter (see tcpdump documentation) + m_pcap.setFilter(FILTER, true); + + // Step 5: Register a Listener for Raw Packets + m_pcap.addRawPacketListener(new RawPacketHandler()); + + // Step 6: Capture Data + m_pcap.capture(INFINITE); + } + + public static void main(String[] args) { + try { + MemoryTest memoryTest = new MemoryTest(); + } catch(Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + +class RawPacketHandler implements RawPacketListener +{ + String string; + public void rawPacketArrived(RawPacket data) { + System.err.println("vm total memory: " + Runtime.getRuntime().totalMemory()); + m_counter++; + System.out.println("Received packet (" + m_counter + ")"); + // System.err.println(string); + } +} +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java new file mode 100644 index 0000000..3448ad7 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java @@ -0,0 +1,135 @@ +// $Id: OfflineTest.java,v 1.4 2003/11/19 17:44:55 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2003, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.misc; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; +import net.sourceforge.jpcap.util.HexHelper; + + +/** + * jpcap Tutorial - openOffline() test + * + * @author Patrick Charles + * @version $Revision: 1.4 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/11/19 17:44:55 $ + */ +public class OfflineTest +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = INFINITE; + + // BPF filter for capturing any packet + private static final String FILTER = "proto UDP"; + + private PacketCapture pcap; + PacketHandler ph; + RawPacketHandler rph; + + public OfflineTest(String fileName) throws Exception { + // instantiate capture engine + pcap = new PacketCapture(); + + // open devices for capturing (requires root) + pcap.openOffline(fileName); + + // add a BPF filter (see tcpdump documentation) + pcap.setFilter(FILTER, true); + + // create a handler + + // packet + ph = new PacketHandler("offline"); + pcap.addPacketListener(ph); + + // raw + //rph = new RawPacketHandler("offline"); + //pcap.addRawPacketListener(rph); + + // capture packets + pcap.capture(PACKET_COUNT); + } + + public OfflineTest(String fileName,String filter) throws Exception { + // instantiate capture engine + pcap = new PacketCapture(); + + // open devices for capturing (requires root) + pcap.openOffline(fileName); + + // add a BPF filter (see tcpdump documentation) + pcap.setFilter(filter, true); + + // create a handler + + // packet + ph = new PacketHandler("offline"); + pcap.addPacketListener(ph); + + // raw + //rph = new RawPacketHandler("offline"); + //pcap.addRawPacketListener(rph); + + // capture packets + pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) throws Exception { + if(args.length < 1) { + System.err.println(" usage: OfflineTest filename"); + System.exit(2); + } + if(args.length == 1) { + OfflineTest offlineTest = new OfflineTest(args[0]); + } + if(args.length == 2) { + OfflineTest offlineTest = new OfflineTest(args[0],args[0]); + } + + } + +class PacketHandler implements PacketListener +{ + private int counter = 0; + + public PacketHandler(String name) { + this.name = name; + } + + public void packetArrived(Packet packet) { + counter++; + String type = packet.getClass().getName(); + System.out.println(name + ": Packet(" + counter + + ") is of type " + type + "."); + System.err.println(HexHelper.toString(packet.getData())); + + //if (packet instanceof UDPPacket) + // System.err.println((((UDPPacket)(packet)).getData().toString())); + } + + String name; +} + +class RawPacketHandler implements RawPacketListener +{ + private int counter = 0; + + public RawPacketHandler(String name) { + this.name = name; + } + + public void rawPacketArrived(RawPacket rawPacket) { + counter++; + System.err.println(rawPacket); + } + + String name; +} +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java new file mode 100644 index 0000000..9b17e13 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java @@ -0,0 +1,123 @@ +// $Id: SerializationTest.java,v 1.3 2003/11/19 17:44:55 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.misc; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; +import java.io.*; + + +/** + * jpcap Tutorial - serialization test + * + * @author Patrick Charles + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2003/11/19 17:44:55 $ + */ +public class SerializationTest +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = 100; + + // BPF filter for capturing any packet + private static final String FILTER = ""; + + private PacketCapture pcap; + PacketHandler ph; + RawPacketHandler rph; + + public SerializationTest() throws Exception { + // instantiate capture engine + pcap = new PacketCapture(); + + // open devices for capturing (requires root) + pcap.open("eth0", true); + + // add a BPF filter (see tcpdump documentation) + pcap.setFilter(FILTER, true); + + // create a handler + + // packet + ph = new PacketHandler("packet"); + pcap.addPacketListener(ph); + + // raw + //rph = new RawPacketHandler("raw"); + //pcap.addRawPacketListener(rph); + + // capture packets + pcap.capture(PACKET_COUNT); + } + + public static void main(String[] args) throws Exception { + SerializationTest sTest = new SerializationTest(); + } + +class PacketHandler implements PacketListener +{ + private int counter = 0; + + public PacketHandler(String name) { + this.name = name; + } + + public void packetArrived(Packet packet) { + counter++; + String type = packet.getClass().getName(); + System.out.println(name + ": Packet(" + counter + + ") is of type " + type + "."); + + try { + System.err.print("serializing the packet.. "); + ByteArrayOutputStream bostr = new ByteArrayOutputStream(); + ObjectOutputStream oostr = new ObjectOutputStream(bostr); + oostr.writeObject(packet); + oostr.close(); + bostr.close(); + System.err.println("ok"); + } + catch(IOException e) { + e.printStackTrace(); + } + } + + String name; +} + +class RawPacketHandler implements RawPacketListener +{ + private int counter = 0; + + public RawPacketHandler(String name) { + this.name = name; + } + + public void rawPacketArrived(RawPacket rawPacket) { + counter++; + System.err.println(rawPacket); + + try { + System.err.print("serializing the packet.. "); + ByteArrayOutputStream bostr = new ByteArrayOutputStream(); + ObjectOutputStream oostr = new ObjectOutputStream(bostr); + oostr.writeObject(rawPacket); + oostr.close(); + bostr.close(); + System.err.println("ok"); + } + catch(IOException e) { + e.printStackTrace(); + } + } + + String name; +} +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/makefile b/javasrc/net/sourceforge/jpcap/tutorial/misc/makefile new file mode 100644 index 0000000..ad8b7a7 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/misc/makefile @@ -0,0 +1,23 @@ +# $Id: makefile,v 1.4 2003/07/02 18:52:34 pcharles Exp $ +# +# package net.sourceforge.jpcap.tutorial.misc +# +PKG = net.sourceforge.jpcap.tutorial.misc +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +JAVA = \ + MemoryTest \ + OfflineTest \ + SerializationTest \ + ICMPTest + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + +all: $(JAVA_CLASSES) + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/package.html b/javasrc/net/sourceforge/jpcap/tutorial/package.html new file mode 100644 index 0000000..ff30006 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/package.html @@ -0,0 +1,22 @@ + + + +net.sourceforge.jpcap.tutorial + + + + +Provides tutorials and samples which teach someone how +to use the packet capture service provided by classes +in the jpcap capture package. + + + diff --git a/javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java b/javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java new file mode 100644 index 0000000..a80c6e4 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java @@ -0,0 +1,87 @@ +// $Id: Sniffer.java,v 1.1 2002/02/18 21:49:49 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Rex Tsai * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ + +package net.sourceforge.jpcap.tutorial.sniffer; + +import net.sourceforge.jpcap.capture.*; +import net.sourceforge.jpcap.net.*; + + +/** + * jpcap Tutorial - Sniffer example + * + * @author Rex Tsai + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2002/02/18 21:49:49 $ + */ +public class Sniffer +{ + private static final int INFINITE = -1; + private static final int PACKET_COUNT = INFINITE; + /* + private static final String HOST = "203.239.110.20"; + private static final String FILTER = + "host " + HOST + " and proto TCP and port 23"; + */ + + private static final String FILTER = + // "port 23"; + ""; + + public static void main(String[] args) { + try { + if(args.length == 1){ + Sniffer sniffer = new Sniffer(args[0]); + } else { + System.out.println("Usage: java Sniffer [device name]"); + System.out.println("Available network devices on your machine:"); + String[] devs = PacketCapture.lookupDevices(); + for(int i = 0; i < devs.length ; i++) + System.out.println("\t" + devs[i]); + } + } catch(Exception e) { + e.printStackTrace(); + } + } + + public Sniffer(String device) throws Exception { + // Initialize jpcap + PacketCapture pcap = new PacketCapture(); + System.out.println("Using device '" + device + "'"); + pcap.open(device, true); + pcap.setFilter(FILTER, true); + pcap.addPacketListener(new PacketHandler()); + + System.out.println("Capturing packets..."); + pcap.capture(PACKET_COUNT); + } +} + + +class PacketHandler implements PacketListener +{ + public void packetArrived(Packet packet) { + try { + // only handle TCP packets + + if(packet instanceof TCPPacket) { + TCPPacket tcpPacket = (TCPPacket)packet; + byte[] data = tcpPacket.getTCPData(); + + String srcHost = tcpPacket.getSourceAddress(); + String dstHost = tcpPacket.getDestinationAddress(); + String isoData = new String(data, "ISO-8859-1"); + + System.out.println(srcHost+" -> " + dstHost + ": " + isoData); + } + } catch( Exception e ) { + e.printStackTrace(); + } + } +} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile b/javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile new file mode 100644 index 0000000..819a742 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile @@ -0,0 +1,20 @@ +# $Id: makefile,v 1.1 2002/02/18 21:49:49 pcharles Exp $ +# +# package net.sourceforge.jpcap.tutorial.sniffer +# +PKG = net.sourceforge.jpcap.tutorial.sniffer +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + +JAVA = \ + Sniffer + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + +all: $(JAVA_CLASSES) + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java b/javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java new file mode 100644 index 0000000..2ada59a --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java @@ -0,0 +1,55 @@ +// $Id: AnsiEscapeSequences.java,v 1.1 2001/06/01 06:24:44 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.util; + +/** + * String constants for color console output. + *

    + * This file contains control sequences to print color text on a text + * console capable of interpreting and displaying control sequences. + *

    + * A capable console would be + * unix bash, os/2 shell, or command.com w/ ansi.sys loaded + * + * @author Chris Cheetham + */ +public interface AnsiEscapeSequences +{ + String ESCAPE_BEGIN = "" + (char)033 + "["; + String ESCAPE_END = "m"; + String RESET = ESCAPE_BEGIN + "0" + ESCAPE_END; + + String BOLD = ESCAPE_BEGIN + "0;1" + ESCAPE_END; + String UNDERLINE = ESCAPE_BEGIN + "0;4" + ESCAPE_END; + String INVERSE = ESCAPE_BEGIN + "0;7" + ESCAPE_END; + + String BLACK = ESCAPE_BEGIN + "0;30" + ESCAPE_END; + String BLUE = ESCAPE_BEGIN + "0;34" + ESCAPE_END; + String GREEN = ESCAPE_BEGIN + "0;32" + ESCAPE_END; + String CYAN = ESCAPE_BEGIN + "0;36" + ESCAPE_END; + String RED = ESCAPE_BEGIN + "0;31" + ESCAPE_END; + String PURPLE = ESCAPE_BEGIN + "0;35" + ESCAPE_END; + String BROWN = ESCAPE_BEGIN + "0;33" + ESCAPE_END; + String LIGHT_GRAY = ESCAPE_BEGIN + "0;37" + ESCAPE_END; + String DARK_GRAY = ESCAPE_BEGIN + "1;30" + ESCAPE_END; + String LIGHT_BLUE = ESCAPE_BEGIN + "1;34" + ESCAPE_END; + String LIGHT_GREEN = ESCAPE_BEGIN + "1;32" + ESCAPE_END; + String LIGHT_CYAN = ESCAPE_BEGIN + "1;36" + ESCAPE_END; + String LIGHT_RED = ESCAPE_BEGIN + "1;31" + ESCAPE_END; + String LIGHT_PURPLE = ESCAPE_BEGIN + "1;35" + ESCAPE_END; + String YELLOW = ESCAPE_BEGIN + "1;33" + ESCAPE_END; + String WHITE = ESCAPE_BEGIN + "1;37" + ESCAPE_END; + + String RED_BACKGROUND = ESCAPE_BEGIN + "0;41" + ESCAPE_END; + String GREEN_BACKGROUND = ESCAPE_BEGIN + "0;42" + ESCAPE_END; + String YELLOW_BACKGROUND = ESCAPE_BEGIN + "0;43" + ESCAPE_END; + String BLUE_BACKGROUND = ESCAPE_BEGIN + "0;44" + ESCAPE_END; + String PURPLE_BACKGROUND = ESCAPE_BEGIN + "0;45" + ESCAPE_END; + String CYAN_BACKGROUND = ESCAPE_BEGIN + "0;46" + ESCAPE_END; + String LIGHT_GRAY_BACKGROUND = ESCAPE_BEGIN + "0;47" + ESCAPE_END; +} diff --git a/javasrc/net/sourceforge/jpcap/util/ArrayHelper.java b/javasrc/net/sourceforge/jpcap/util/ArrayHelper.java new file mode 100644 index 0000000..057193d --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/ArrayHelper.java @@ -0,0 +1,97 @@ +// $Id: ArrayHelper.java,v 1.5 2001/12/30 23:07:00 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.util; + + +/** + * Utility functions for populating and manipulating arrays. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.5 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/12/30 23:07:00 $ + */ +public class ArrayHelper +{ + /** + * Join two arrays. + */ + public static byte [] join(byte [] a, byte [] b) { + byte [] bytes = new byte[a.length + b.length]; + + System.arraycopy(a, 0, bytes, 0, a.length); + System.arraycopy(b, 0, bytes, a.length, b.length); + + return bytes; + } + + /** + * Extract a long from a byte array. + * + * @param bytes an array. + * @param pos the starting position where the integer is stored. + * @param cnt the number of bytes which contain the integer. + */ + public static long extractLong(byte[] bytes, int pos, int cnt) { + long value = 0; + for(int i=0; i>= 8; + } + } + + /** + * Convert a long integer into an array of bytes. + * + * @param value the long to convert. + * @param cnt the number of bytes to convert. + */ + public static byte [] toBytes(long value, int cnt) { + byte [] bytes = new byte[cnt]; + for(int i=0; i>= 8; + } + + return bytes; + } + + + static final String _rcsid = + "$Id: ArrayHelper.java,v 1.5 2001/12/30 23:07:00 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/util/AsciiHelper.java b/javasrc/net/sourceforge/jpcap/util/AsciiHelper.java new file mode 100644 index 0000000..7f20524 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/AsciiHelper.java @@ -0,0 +1,70 @@ +// $Id: AsciiHelper.java,v 1.1 2001/06/14 21:19:58 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.util; + +import java.io.StringWriter; + + +/** + * Functions for formatting and printing binary data as ascii. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/14 21:19:58 $ + */ +public class AsciiHelper +{ + /** + * Returns a text representation of a byte array. + * Bytes in the array which don't convert to text in the range a..Z + * are dropped. + * + * @param bytes a byte array + * @return a string containing the text equivalent of the bytes. + */ + public static String toText(byte [] bytes) { + StringWriter sw = new StringWriter(); + + int length = bytes.length; + if(length > 0) { + for(int i = 0; i < length; i++) { + byte b = bytes [i]; + if(b > 64 && b < 91 || b > 96 && b < 123) + sw.write((char)b); + } + } + return(sw.toString()); + } + + /** + * Returns a text representation of a byte array. + * Bytes in the array which don't convert to printable ascii characters + * are dropped. + * + * @param bytes a byte array + * @return a string containing the ascii equivalent of the bytes. + */ + public static String toString(byte [] bytes) { + StringWriter sw = new StringWriter(); + + int length = bytes.length; + if(length > 0) { + for(int i = 0; i < length; i++) { + byte b = bytes [i]; + if(b > 32 && b < 127) + sw.write((char)b); + } + } + return(sw.toString()); + } + + + static final String _rcsid = + "$Id: AsciiHelper.java,v 1.1 2001/06/14 21:19:58 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/util/CVS/Entries b/javasrc/net/sourceforge/jpcap/util/CVS/Entries new file mode 100644 index 0000000..51c0b47 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/CVS/Entries @@ -0,0 +1,9 @@ +/AnsiEscapeSequences.java/1.1/Fri Jun 1 06:24:44 2001// +/HexHelper.java/1.3/Mon Jun 4 05:07:06 2001// +/Timeval.java/1.1/Fri Jun 1 06:25:30 2001// +/package.html/1.1/Thu Jun 14 01:21:53 2001// +/AsciiHelper.java/1.1/Thu Jun 14 21:19:58 2001// +/makefile/1.4/Tue Jun 26 18:46:05 2001// +/PropertyHelper.java/1.2/Tue Jun 26 23:07:05 2001// +/ArrayHelper.java/1.5/Thu Jan 10 00:16:59 2002// +D diff --git a/javasrc/net/sourceforge/jpcap/util/CVS/Repository b/javasrc/net/sourceforge/jpcap/util/CVS/Repository new file mode 100644 index 0000000..6b2ac42 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/CVS/Repository @@ -0,0 +1 @@ +src/java/net/sourceforge/jpcap/util diff --git a/javasrc/net/sourceforge/jpcap/util/CVS/Root b/javasrc/net/sourceforge/jpcap/util/CVS/Root new file mode 100644 index 0000000..f84ccad --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.jpcap.sourceforge.net:/cvsroot/jpcap diff --git a/javasrc/net/sourceforge/jpcap/util/HexHelper.java b/javasrc/net/sourceforge/jpcap/util/HexHelper.java new file mode 100644 index 0000000..f162f11 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/HexHelper.java @@ -0,0 +1,100 @@ +// $Id: HexHelper.java,v 1.3 2001/06/04 05:07:06 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.util; + +import java.io.StringWriter; + + +/** + * Functions for formatting and printing binary data in hexadecimal. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.3 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/04 05:07:06 $ + */ +public class HexHelper +{ + /** + * Convert an int (32 bits in Java) to a decimal quad of the form + * aaa.bbb.ccc.ddd. + */ + public static String toQuadString(int i) { + StringBuffer sb = new StringBuffer(); + for(int p=0; p<4; p++) { + int q = (int)(i & 0xff); + sb.append(q); + if(p < 3) + sb.append('.'); + i >>= 8; + } + + return sb.toString(); + } + + /** + * Convert an int to a hexadecimal string. + */ + public static String toString(int i) { + StringBuffer sb = new StringBuffer(); + for(int p=0; p<8; p++) { + byte b = (byte)(i & 0xf); + sb.append(nibbleToDigit(b)); + i >>= 4; + } + + return sb.toString(); + } + + /** + * Converts the lower four bits of a byte into the ascii digit + * which represents its hex value. For example: + * nibbleToDigit(10) produces 'a'. + */ + public static char nibbleToDigit(byte x) { + char c = (char)(x & 0xf); // mask low nibble + return(c > 9 ? (char)(c - 10 + 'a') : (char)(c + '0')); // int to hex char + } + + /** + * Convert a single byte into a string representing its hex value. + * i.e. -1 -> "ff" + * @param b the byte to convert. + * @return a string containing the hex equivalent. + */ + public static String toString(byte b) { + StringBuffer sb = new StringBuffer(); + sb.append(nibbleToDigit((byte)(b >> 4))); + sb.append(nibbleToDigit(b)); + return sb.toString(); + } + + /** + * Returns a text representation of a byte array. + * + * @param bytes a byte array + * @return a string containing the hex equivalent of the bytes. + */ + public static String toString(byte [] bytes) { + StringWriter sw = new StringWriter(); + + int length = bytes.length; + if(length > 0) { + for(int i = 0; i < length; i++) { + sw.write(toString(bytes[i])); + if(i != length - 1) + sw.write(" "); + } + } + return(sw.toString()); + } + + + static final String _rcsid = + "$Id: HexHelper.java,v 1.3 2001/06/04 05:07:06 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/util/PropertyHelper.java b/javasrc/net/sourceforge/jpcap/util/PropertyHelper.java new file mode 100644 index 0000000..8974cd8 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/PropertyHelper.java @@ -0,0 +1,222 @@ +// $Id: PropertyHelper.java,v 1.2 2001/06/26 22:52:16 pcharles Exp $ + +/*************************************************************************** + * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * + * Distributed under the Mozilla Public License * + * http://www.mozilla.org/NPL/MPL-1.1.txt * + ***************************************************************************/ +package net.sourceforge.jpcap.util; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; +import java.util.StringTokenizer; +import java.util.NoSuchElementException; +import java.awt.Color; + + +/** + * Property helper utility methods. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.2 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/26 22:52:16 $ + */ +public class PropertyHelper +{ + /** + * Read the specified float property. + *

    + * Throws an exception if the property value isn't a floating-point number. + * + * @param key the name of the property + * @return the float value of the property + */ + public static float getFloatProperty(Properties properties, Object key) { + String string = (String)properties.get(key); + + if(string == null) + System.err.println("WARN: couldn't find float value under '" + + key + "'"); + + return Float.parseFloat((String)properties.get(key)); + } + + /** + * Read the specified integer property. + *

    + * Throws an exception if the property value isn't an integer. + * + * @param key the name of the property + * @return the integer value of the property + */ + public static int getIntProperty(Properties properties, Object key) { + String string = (String)properties.get(key); + + if(string == null) + System.err.println("WARN: couldn't find integer value under '" + + key + "'"); + + return Integer.parseInt((String)properties.get(key)); + } + + /** + * Convert a space delimited color tuple string to a color. + *

    + * Converts a string value like "255 255 0" to a color constant, + * in this case, yellow. + * + * @param key the name of the property + * @return a Color object equivalent to the provided string contents. + * Returns white if the string is null or can't be converted. + */ + public static Color getColorProperty(Properties properties, Object key) { + String string = (String)properties.get(key); + + if(string == null) { + System.err.println("WARN: couldn't find color tuplet under '" + + key + "'"); + return Color.white; + } + + StringTokenizer st = new StringTokenizer(string, " "); + Color c; + try { + c = new Color(Integer.parseInt(st.nextToken()), + Integer.parseInt(st.nextToken()), + Integer.parseInt(st.nextToken())); + } + catch(NoSuchElementException e) { + c = Color.white; + System.err.println("WARN: invalid color spec '" + string + + "' in property file"); + } + + return c; + } + + /** + * Convert a dot-delimited IP address to an integer + *

    + * Converts a string value like "10.0.0.5" to an integer. + * + * @param key the name of the property + * @return the integer value of the specified IP number. + * returns zero if the IP number is not valid. + */ + public static int getIpProperty(Properties properties, Object key) { + String string = (String)properties.get(key); + + if(string == null) { + System.err.println("WARN: couldn't find IP value under '" + + key + "'"); + return 0; + } + + StringTokenizer st = new StringTokenizer(string, "."); + int address; + try { + address = + Integer.parseInt(st.nextToken()) << 24 | + Integer.parseInt(st.nextToken()) << 16 | + Integer.parseInt(st.nextToken()) << 8 | + Integer.parseInt(st.nextToken()); + } + catch(NoSuchElementException e) { + address = 0; + System.err.println("WARN: invalid color spec '" + string + + "' in property file"); + } + + return address; + } + + /** + * Read the specified boolean property. + * Converts a property value like "true" or "1" to its boolean value. + *

    + * Returns false if the property doesn't exist or can't be converted to a + * boolean. + * + * @param key the name of the property + * @return the property value + */ + public static boolean getBooleanProperty(Properties properties, Object key) { + String string = (String)properties.get(key); + + if(string == null) { + System.err.println("WARN: couldn't find boolean value under '" + + key + "'"); + return false; + } + + if(string.toLowerCase().equals("true") || + string.toLowerCase().equals("on") || + string.toLowerCase().equals("yes") || + string.toLowerCase().equals("1")) + return true; + else + return false; + } + + /** + * Refresh property settings from disk. + */ + public static Properties refresh(String name, FileInputStream fis) + throws IOException { + System.err.println("INFO: loading properties from " + name); + Properties properties = new Properties(); + properties.load(fis); + + return properties; + } + + /** + * Load the specified properties file from one of the specified set of + * paths. + * + * @param paths an array of strings containing target paths. + * @param fileName the name of the property file. + * @return a populated set of properties loaded from the first file + * found in the set of supplied paths. If no property file is found, + * returns null. + */ + public static Properties load(String [] paths, String fileName) { + Properties properties = null; + File propertiesFile = null; + try { + String path = null; + for(int i=0; i + * Container for java equivalent of c's struct timeval. + * + * @author Patrick Charles and Jonas Lehmann + * @version $Revision: 1.1 $ + * @lastModifiedBy $Author: pcharles $ + * @lastModifiedAt $Date: 2001/06/01 06:25:30 $ + */ +public class Timeval +{ + public Timeval(long seconds, int microseconds) { + this.seconds = seconds; + this.microseconds = microseconds; + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append(seconds); + sb.append('.'); + sb.append(microseconds); + sb.append('s'); + + return sb.toString(); + } + + /** + * Convert this timeval to a java Date. + */ + public Date getDate() { + return new Date(seconds * 1000 + microseconds / 1000); + } + + long seconds; + int microseconds; + + private String _rcsid = + "$Id: Timeval.java,v 1.1 2001/06/01 06:25:30 pcharles Exp $"; +} diff --git a/javasrc/net/sourceforge/jpcap/util/makefile b/javasrc/net/sourceforge/jpcap/util/makefile new file mode 100644 index 0000000..40ce611 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/makefile @@ -0,0 +1,29 @@ +# $Id: makefile,v 1.4 2001/06/26 18:44:25 pcharles Exp $ +# +# package net.sourceforge.jpcap.util +# +PKG = net.sourceforge.jpcap.util +PKG_DIR = $(subst .,/, $(PKG)) +REL = ../../../.. +include ${MAKE_HOME}/os.makefile +include ${MAKE_HOME}/rules.makefile + + +JAVA = \ + Timeval \ + HexHelper \ + AsciiHelper \ + ArrayHelper \ + PropertyHelper \ + AnsiEscapeSequences + + +JAVA_SOURCE = $(addsuffix .java, $(JAVA)) +JAVA_CLASSES = $(addsuffix .class, $(JAVA)) + + +all: $(JAVA_CLASSES) + + +include ${MAKE_HOME}/targets.makefile +include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/util/package.html b/javasrc/net/sourceforge/jpcap/util/package.html new file mode 100644 index 0000000..7e111d3 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/package.html @@ -0,0 +1,20 @@ + + + +net.sourceforge.jpcap.util + + + + +Provides utility classes used by the jpcap packages. + + + diff --git a/lib/log4j-1.2.14.jar b/lib/log4j-1.2.14.jar new file mode 100644 index 0000000000000000000000000000000000000000..625130719013f195869881a36dcb8d2b14d64d1e GIT binary patch literal 367444 zcmb5Vb98UPwlx^rPEKs|7u&XN+qP}%#I|kQwomMwBq!S4X zX$iwF*%syNqtpfI*E=8L-Yc3;Bt$i=y+QRnHCfCkmZ?>P32$AVz~|{f-VGxc_CCU| zI}W+8v_@|3kob&5RZdE!h)D}>Ey%?r9aWcDWHC&7BC^e9aVHwRe#HyrA}{%p`NV<7_!1XK(H1Vr$k z;DQbgrgkQ#PV~k$hR)8u37qmn0%#%T&YaL493UYfMZjd>?FB`JP=ygcBSZw-)~iMm z@3UG^Bm2Y#5ckE2^46HtQCipKS7)>DvtQ%a*pD5fKw)`dKj6@BI@R+CU}qeb38?67 z@tw{T*L#!BP`P1vxqbVvwi9)tIFbooAisZMTg5T7%kh(h`S3STa`i@m32&&T8&ZO# zADD>VNl0FRJ8_^2+8okF^&Q9qdPEOU`HouWKrQ2qWx1qm#E9{&YMxjTb@+czsqXTt zj&@Of$Kls$-L2843Kfui6_zpy+e_-azpUt!U(+|`TU)MBYPam@Zv*bFEbe)pnpE8e8N%P;bm0g7mx2Fbh;4qtOk4;cAOr*; zAd3GtLnvFD+L*f7+x^2Jv1-~5sH#|Bt+Gv)ooG-Bflknb8cB;Df{D=<15OJ7N|Azz2*Qpy5LjlDkv(lDM&gPhP?h8k?pi5&z+0%Y9nDU&D!J6x_GN=ql?h`icm_pAYK-EjV{;tl&-nL z(ad#;we3eJ4X`=GXqo@w*vD!$ZZ}R@4mnz%#ow9C98|0~D|M)_FzKuefr`Qm$=fo` zs12b-3|FZwsjvERTI>L@-Xs&OOCj-DH`55~(iQaGdLM$bD9be#aPESazG8@ngE>p! zv+yF?)ZF2z<_`0DK_syopbX{O)})1@p~%@i8bqtLT?p^+T4fb;RewU$9cqoRUUn7) zn`rF{BlNXy9-bhC*kSo;utVE!$DMDE*C`fy;$=Z+4YO0RZ^_MOqS0xYlQwV~y2V-p zV!gGxrwor1ne$|EVw3R`Y9_B)8HNyL_qwT?6%PMSrsUW!-U^lqQ;01VB)s&kl}AP! z{RjiQWLBvT3q9_fR`ozF#DpcFhCVC8+s_(X4a}XMRn> zk`g_vCIyU)t|hhWlu&}-X>qq!*7QzcYi7k`xnfpYcNazA!%Q59A{!z_>?e! z61CpS9gY%=mX+|9B0f%1r0tHXAy<4-=dFy=Y>m!CdDx7H?hwxQTsMM?g$JlE_3rW= z#ybF4P;7|0dbJ+oQl-1*0Pjk5e&M3isQ6qd(E5Y=q-|0Iy1^0OmwI>Q4u5y89@3lD zCjhbJf(~Z!j~l1vytrtRoI0QpN0QevRhH!feiS}b>eJtbE5z2fFC*yHTc9w zgA_8THpe{0jXOwr^}?}JF2z;Zt!&yzW7jG>`D;9J*pA%B@?0dz{fRpZRa3Z^>c;jf zi8V2~(^ypPKC~<7_BB;PNK~W|c3%#{i#zi4+N85B`D{1u#XTwiLx{35u$^zb%>4JG z;6X2?E4tJ#h+pq@g zUh;ltDxo|hyr=-D0=;3e{q85isW|H8a>ZWI&PbOkiPs7A0$*_C(+SJ!4bq5;<|^p` zhu1-5rs;91L7Z~P*zg=^T2@*()lS;OH|I-{5P3;3_qN`DGTTh^V=YmNvUi!3*j6@i zBB+2Vpn@{g{wb!Qv|DmvHv}$1zav2Mh$9b>6*$_!wTm>PN6qk#6_hpbv!yM=n!+;T z7|O~k={u{GDFscIH|Vlg%1U#GS0U)oNPc)!-46r$B)#N7#jOGNM*+!;pY;ay$FTB* zbPEeWZP}j_rsI#TMY_w;x*JiL>Z<1k>;8%1!;3b3aT(l2MK@8e5oBMeiQzQ>hM^aL zgDqbCHHG8LUX{_#VQ^@~GxW=;wH~(ZEz7@HhWGUd{a1CK$!sCxX|s-035CNR7>2)8 z(!}TO5An)ebLrj$nZ6n;eWFaM}kS|f@}Leh1%aviCtvc%AJ;*i!2zxTaur z+1Sv@MA_BW*3ilGAHgP7Mb~~=42?J0^)QwRIz%9=xg-p1eFq8G!UDEHdP%^*@OJ`R zRP$kIB(Ec`=e5NZd}QHg_E&%!NK(*dxEe?#rrx`ER_y86)zw0pKj)#d=tFz0Z1uMdIUe*D zgHKow6qLmGvZ)P;d5BWO@@1wE%<&${?e@usD&kLVjey%+w%HU1@I)Qe#ZwJ`H6a98 zsVmGRyoxB5$bf`3*on%&mgf{@=7ulE7w01>+oPy1Cexx-5VZ)2BL5KasZ(VOGc5e_ z7mRQrZ6PyaY1o<%m0;sge6DGxP>0zV@=ZCRcC!u~qGqSgNqF@nDJlg0F+rZo#q{J3 zRo<-|;!>p!L!q_-o*z1=Jm-zP6MnVY^*(FXv}3NRle&QFs=QR?`!K{CVChxn0>t}N zG%Ihu{P{E!s7R6f(=kL1Q3;GuV-uW4mQPq-(mQP1zG4UyfFKCEP7i1e_j}=nSci>C z`Xe$0Z~TTMVNL-p&4Au}k17Q{WVJI z9qRbvr9T`g_qU0_mTe-lQ(A^nBR)TW0r%v2NBZOrp1LjQS6R~mi`gQES27r`YEC(L zAcET3Ca3(`ufwAYGcvY!%=*(LFWgac0O&3J<`}slVx2sL(@eqSg?$6oH@f2gckkOJ z0PCj)2Lh^t1_EOE-|{{OLzlno{-3-%Rc%N4hbr3lPPQyY5}g96fK>FKpQ#}s%SsJO zHrb1H%RpN77TPUSX3)~x1dlKIG~512g>rXW9rNjIJt9eu=10wWd%#L(e(m!ZyZM9k};2SNI< zgXSnYHo^E?0+EUe-p&J-+nG&Sf?9MXTWy(amxBj!uA{w%R;k8vP4^8h+1A41dd3ao z@(KAe6|3$897`^XPQ1%O_kmSq@~wI_T#NM+DWPji=hdjGhpTU~;|^^SeGdxlk!P{0 zxGXQXCP4IDZ-}|u7|!lPjU#{L1uhK}0l#mY@Oi^i_t;e9UBJ>w#XT%EuYk|oy3$k8 z6|O-aLu$8O&@)UP+fMPB5-C+?LM!d&DYNqOSMlXKadhiSQ;Kgtl_sDSmQpn=dx6I| z>abo~19u2O_K`SGYFV&mFWE%~k5l%4pP!`o<2$kcpARKX1*2=v+M=ve7s_XO`dS9jr>CS{X<6PxxFI zH>30*weD&Ih8L>!SYBp6B?t7%7)5X#1nTi3WeCrWCQ~bzQ3VA?1mV$;AZtcb8R~k2 zDMGQ*R{A!BTLnueC09GfWfd4SA2{(q*eGR`{W7rnOPEr@(VFaZkx^Ojw!6q6`GpB2 z|C`w*QSE0Q4z2=g7x_zdQB0{cRWlt~va^cp+C76p8MmTeHDEtFOS3!8Q9FdPEW5n& zcvd=U=*|#5R2&%+ZJKb+^$TJJ7@~@mD_4(aAb2Uk0s_y;q(&%N{ z*vm4yWcDj**VxAF%%u|vegom*L|T3T=T=?ZX67oy^Fa9Be%GHOM{D!u9yt$%FLp~( zaUOT-FR8B7(j(rs)kvB2W-)%ESXzVydfQq7W}WR{GHa{(7YIw!6SeRkmOKJoTg`}z z-6Z#P8imFPJc&8NgviOKgk(z2P`i(F-NZIXAnW`I>;C0t(dCBH7W)D*s7Dh1?N`u_ zq`>}U35@<^^$z}I^I)H;{UnKep|i|5yFyu3Q46HcvyDiX^4sDDgwM$t7)VCvX%-W= z!g+zTGeR&=vqpXMvqe^@Mdcz>X_+MyiWf8)iUo-D3NY>Opo4x1#~{SGB#IT>8fw&V zuF}QS6wIMa%MTA1EBc_IIyLJSp*X zl{aS1=h-WO*m=*ja0RVNfUKn^-o-94d%^unxd9W8FE=z^kd*LC1^y84>W$#vmtFnK zBZ-^8a?=q85D@AA=d$}xmZJe{pskAiC6|5NdU0*M6CAp@IAEZ=SZ$0F_1Xh!hQ@kc%;$EkAy&Qi+=-S&9g3Of zMIYfI1cry4p4`Rlp9f;_?4F7t**%oQbd7Ja*gKVm>6pq5ypU~@{#~@YL`B@D0K%EJ zk;0!IKZovb3Wkp%#gj8X6Ciq11MOChja!%^JaySHW@P1MIRr3a0mzg z-U#7k>R1t*H%%HD5o$#Oq4#zK@vfcGn;234FdQduatP#8f?R&;A-?2yB!EBl6x%Xy zDHf|C4u45${)aHpQY9kJLOHf7<-T6Hp=;~&^9znz z-{A2Gy!5X$b_VSxi{D9P@X~9|thIIu3b8Q1pAQrOW+6s2F$VdW@CM02Wj%FO(l>Ng zde+q}R_{iE2C~kCINYf|+__!aF%d$BlYE#aTb!F1>lV}|Kg0wMhEMBPbd5#ejB236 zy3T5AE|`Lmm!ejeMTyPImzsYWG2P%?3pO>dqa3q#i1|?ba*&bIx^jTSDY(fp(55_*u%iy(6pnV>PoN!?$ZIrC_juATaMeTH~}+pq=4YhHP|pMixNy zNimi^%&64#S=7kPd?*Zog_sMo=<(EU$%@r$#s#)zgtn0=6hpS%XvPr0$+F|_xw?Z4 zCq9A}m{I;K0xjPf>iIb<4LSS(Ci92U1<b8F~FHG;EbKSCGaaSr(>m)a4JS&ic3vS!)>1Ga=XtQI>&CbgA8%^D)R<~B<8#yuCv+qHb;qL=1=){&Mw%D1HWcX8e%(`7-%>GUrzHjN? zo9HbV;Exuxc25ECzuEwwe)$HwJAYRi*Ec!4cf7oJpBC39+GZM#V1;)(Uf{ov4*$J; z&+w^T@NNuVJHA_T#P6XV;P9l+H2EF!nrR+pd?HrPgL?Gv%=;Ae@GM3s_MGA#TJxY0 zugRwcGHHD9Ku`W;F^3C(d*MMqaIO*ljKjC=m_P;F3q2$`2A(2Cr8okCbclH;ikBWy zoGsdv-5_dsT5hH_V>b#xBH1mU!z0RH720|=Ppz22M3mP0IP()5HXO~&RA%Amk1|mf zm1=QnLBq3`jPKWas>a}-h~=w>W(Kq*U2lr?hTe69#sV}|>|_%&|MZ~#kp1OoD)gfX zi3C(wZeuEZXf5`9YK*14Q81ih!;HeG6Ic>DHb%^2`8>O)mFKTtXDjc=M!YvN%F-pqEK`uuV9~Di`GB0tMfC^YqV|B{} z1rCh!U*?0=3|q1Z8BaP(QVA$RY^_VP1tZ1sD# zKaAi7o7P@pTv+3J*}P&bq}Q2`TokAGF_TB8W#Pv|5o0Y5-)#6=o91JTs4Q_YrNNul zG=>SkHNvi*P4DwUhj-0=n?6+C_#@pL^cw%bnb#!;8-1&O<5Pa~nbd3sUkSEzxHz9< zhn(hz$Oez!J9Dnx;)JAodu}g5Cf>gC2Yd>mIaD~T@S)Wtfn$CHHr9hBy%l&OCURul z;0>dmJ{VKO%g_m!LN1sIg5ryaa5+Oz%>9<_e%zRE%!>1E0qLkn5X}xIqWM9r?t8ct zqF8qj3<`-zY>hFm$JeY!&^QqBjVX7MU{&zX=}EH2!0ya$>0ZU7CD5rt7FXd4S+0x& zIcZgiRleSmmxNJ$k|v;SQM5WdD-mxFqe zMEk^ZTVV-pAXGj8A8&^=y5Ne}$p8;}{+426Ddr4A>)=ipI%uE~UE%=**kHpOmktgp zbvR(gC8bUp;))-o-wb19A{@K{KXsi(yLNLcG+;Kl9cJ{DBLUpkTM1{bu71}7AFp(F zFojH3)Z%G~*r~Pz={|OZE9QoZGnK6#J@N!L`erm$Iw4wF@y@o+vBaP@HaG!=@*&RU zasbWs54a_cX;-Pnz5y!Peux)k5$ua?M|SO(jrsM<3$3IdV700nakVBtP^;`)<%C!} zGP^xo-okU>u@@k)FX7o0a9Y@HvqE%m!EszM+Q^;ECDHt_L_2=mI&$0r^Fxr>iq zOZxHpLkN4Mb!?W0X4PUYHN=j0d|t%U=FDo?uw^HB-c4C+z4ieT&tI7JQd2oJ?A>YUO9$&s^4(Jb(`5|EzmaDWXhFX;k#Gv34HT)myvDM-|gu+-y zS+zU41yzi>_X$=h9_b0DQ3E$cX`j*&P&X=XPAa)9hEAtr4EUWrtqI14Ay;O8=wtA1 z*h-`<>Om7$Dl#G&d2+Dci^JEt11k29q$dF$RiV2tEzFjaO@4Y34qB=4LrNLN5~_`# zq?zzils4nD5SWLB98Eah2ofSEyUE>h-Jn)#FiP$yR0Mh9VqTkrm5Gbq2(eFK#Jq_T z@>xI^Blq1cRFTcpaR3@`+G%Aa12Zy1y(C&1nvJPC;a)&+F5j=Ut})GNx%yvlLDj;6 zS|Jyee4&vH6DE%bi*JKNrH(5i^yWnhtV3m5a7Jm6WJbk9eZ8@K6344>! zZ)CV9N@l3xdqRs)sbl(si`-ghCuj2IcI~S2le&4wy7+0O&evVNF?GYYn_|vTFP>!V z#Qp@c8mc;NkkKz=))9TfEwDJKeN`gVJ;@=9BUw^?HIhPu9T{4WdZckLG(wUg9|5X%nskr2J2OS;)}Y(pcEu&dk!>)ydGs{-63psIs;_ ziXhroDJ`u{L5)R)#E9(_wF0m`gO;&U_P+3%bhYIo7D1TlHhlrNiDt|n&0Yy(RQ~|} zNe{Dv5tD{lQt#7g&NJ?G`?IxM0{%n+(0Djnqn&=+6xZzq!_o#rfuT~tQ#w#|4Tzh= zytv9Z9N}LbXWj>}VInPV<3Fz_Y7I16dG))ob6rI40^Q$TlG{p#KEiqKQuun72aWB= z6&g(UTi*h>#|l@{Z<6&c$q2k=^Pc#bYg$F zLxLW-PgGmUK30q>bPlFkAr32qG+FUnuwX$tp>Y&mSBSwhcxCf`g_b z+=&Qy=7f`dkC`5MYxkhk!Omf(eXw(9Ygz2xuIrei;%EEmXW0VS6oJA@lkk>FN|ae0 zGuS(?4={blAq}K+sxb(a+lWN1C6Z?jzDx)DkPvM>#Kw5JJd?o973Q9#7?X%C@E7-j z=oE>EeCh-M9Fxa8fL0xXUw)yrGlJVGr%(?P8hCf{L0(Xa@)c#|LRB!{kK!0s(I+F5 z^J0m9qb&`aSelPh0$$XcYzKWr+1mhJMxoC4mG4v_|#+aP%x}=wfPa|1a@5 zR}cNTwh_}$f zC?|eBOmruCQvsDos}401hN)xI4tX8oL~F7?Fwpwyq`$~qL1n4vpChMy3KjeD;$^Hr zQiVTAAc=JwBz(FrM_rh42=p2DBP}7DGy2JdBac1QO{kff3tUG~j;vqZ;V0Nh@8v|3 zw0P(g(&d*hC9RJlj}4PL+P3F0F(_rNDu!L0M7DVF2x1ejVS=w+xNt6U@?PVzK_qRd z6QfF@iRP2y^RuGd;K@eET8`^Q$8DuZQPA6Y^8JLOWi2OE)NhwlFbGzXdM*HaVlN}j z0~1sgGKwZHfUG$Dp9V&C{iY-h64WaqIpm;al4F*W=VS_oOoD$ zTt5o$ExeKiWUYIBx9m!F-%*N=)!5Kttq(3He6^g?Q^em%m{1~ja3#e~?41{K^CC*Y zqNvQoAOoefA6aL*S3J?iT7os5Ao(?y(ek(~CIB_m_0_I*P4nc60OYa;3T0Bdg6al1 zI5Hcz1gaytLO5K5@pA?I>i~S-s&oN)XM7p4C7k;a!taIN6_N%KDOl@@W;QG1y5?VA z*7p~Zbl6N_x^~gcfmg7FQBWsXD=)I~XK$8cy?-_%h|27hq)Uj8I3tZvpuq52H`Lr@ zNl_t7U|neieXVi#q`XO!p}i)m@S;i=RZ51a9B>yEZ;^cbw9ZMk}}43Zp~H?mRn!QCys*5(>a^U2myH z$1Y1@>I#4rQwg&}Pyc9X7ETnlPO+OSV zvgvT@Ag5lDkICcdYwEd+A8(SK4O48(V0Me`8N=CCTT~y(xSpjj#eBG`YTRMG47YQ=cA0-*7iXscI z1ZLgG-f9ORzZ~or;>ME_E1*^Ym~vjEMF;y#i7w-Cx`~jRa&cZ6dB}(^TGCN{EQwOJ zVQt++4<%}YG_qPr8h=&DSS3e-Zhk7MThVLD(M!(MCEl#|ph(KjOnvNw@Ve=Z%=aWU zqEyTp<}02*m1Z`UZ44fWJVdGZy|6Z8$novCf5;3LE)TnS0UQ(ToCsnh>^);6r443? zBQvmDb;3JOPMiW&JM4!dpVGiMHv17mKd2?pE>kN46ckqj;UM^ z&Gs>hrOpzKj^cKZK(8s39YMHK5mg9L>BfA06X~Mn5~29896%Xb*kp=($gC=iK8&{8 zu8Eo&L9c8_F+{%|`tUWXq23K)sAw0odZuWXMpq}gLcLVkj&!d)v|@Zyr{_9c;5)=Y zZzDQI<)ywsy;S|g{?Zw7V@CPm5FZtPNK&~@$;2KdTiLFrQ)Yz4Ug-gpe;=u*YBOq% z4Hu1RJlocR-0GPn41B$SCI>J>ppIQoA@R+^ikwWWyf*;wE{t#PwM(J<7Unm!RVt%{ zKGm%g$KFHnF_h#g-KW1*%iE}qurZY%))jB%C+T^^*prx_fvGs^ZN7RzH)Gl}<*ZuH zyZ&;?&E!zM|9h|;W&9SBY~2Kz^01vXtVu&rs!7L*k3-irS#Zasy3WvMe!9mhP0e-n zWxPQO_~i-F zrq{A6S-r`$gC}bX98xOu!{O}2nWUHyfUHvvez)3PZ z0Q~de12DH5U=l}jXS*8GGskWC^pfW1^M+GtvWiVgK@;4y^|SI1?WmAGbVMkd}j0R=kGZN{f_ z)IVgX;Dl?t)8!pLq!B5ogP2DBc91p$BhXhp^qwml_KM!P{dkjxuF=;-A^2sezvSPv zbgxHRh28Ka;NKQ^c@_HkC;YPol>Q5RGN^1HzEge>6E0U|0h+$Ufu=5%6q0ZJQWxz+ zm~tc>`CyXS_{Yn|-&jaR+7)vZNB-tV$))Oi2mN-YfWs5rpQlX82i>OwJtK6|LyE-} ztOTx^H?@E8oP2kneEbcB{s(TgzR>(Po3>AOfnm%i*eH|X!;U0Q=&QgE6B_uIxnkM~ z{mLGXpf4r3nd`Jz@a7;Kq0|ucA4~ogr~6FV1rh(iWxd_-)YySL$Lia2$F9qm|;%VO4 zNv_cqJbmN(PAy^|eLi?9H@xYG)+&C(T8y#J54rn#AZy>FfF5RdiV5ym52c9>Wr*aQ z({u3zQtj@*m2Ul3D|nGCmf6`I>S`7hcfe2;E^xLey>gLn>1Qe5*!@DM<%aS9z^29A ze;@-Hqwh{)y`dh(x#R7;{Q%q`Qhp*{)T_@25E!!hw;heK1-oY)dd>#{N}nwl27o)2 zaXtwVGKEGYiE{B%(kd;e_=B}D;|6^XnW}&0xHgsZPXhVD!RtUpYU*VDkg{jwVfdMY zZ;Qlp1v`QvB{(G^h&zhRn}Tq7O@1r9T}PYg?#*Yf7|5(BxvP4tE4$0e27CONCV$&c zaDmZ2)YxBa8OTN@dSc2(gyS4);ldmMRiM(WoPe+#E!XUnFpcwb2BmO@xgReL7$FNn z1I3!+4|~G1SmUn9>ROU(o$R;I>chnR9)r00ZV8fZr$S81zGZbz1D3~0;d%jRB}AYm z^|uBjx`#S2YHj011DAUIN*p#S6Rd>kux>fh?J8$AtD6Qc^}Sus z=v3MDo3ie+RBlxvzhtdluRr1qTZb9mn9-X>+|e%koFhbX>chH;9X=zwI`;LDI}RPo zgCj=G2G;y#2M0_(N0^agAAI9v&@uLC2rk>!PUBC#THgXrkKve&m`x`|&4v+SO62%; zou28&QRb#2XiqSfd;1k@S_J}JuDDpA?7oW8 z2VQ0dwr8yI*!`ojA9K^&JdFj2mLRsmGOYXM}MMCKA}ep1ZPeKe6qYrs;@Sh=+%t@<9O zMq0Yjt%9WveA3&w#8<}$zld%Ey@&cID878{BhFrknAHPCd{*nvcN^42>u&3?H2y%8 zwIgt=&!W?dLs&I=*vn6o;h7)M6C~WIr%u1wp5GDveCTQ;m=MeEN53US_H3o}$QiK& zu$v4Bga7mwa{iN27QSW!v#bfTd=aZf&8RE@JSE!+!VBL1nFaG12J^Y97>MdIJ?xiY zmm)mWi3`3>A*2Qd7$?~f^R&teZtEGN10`0uyve{sd{-2r66!b<4^@is5*@KBfvb_? z6p|vVRjRaQndFi_aP`np*WlwV&)+#tjzI|(PoVz8bG9n#H;DF|2id3lm5$IUo2apD zm1XQmK0ZBJu%_$?!1n9`f6>!&<9W#5L?U2W{6<6dWfiq2a-U7*2g{Yp7DX^@R-&tJ zm_4woR515nEq-i8lNbJdn#r0KF|h1S4I|{FQ>#%TZxma(hWoczT0$E5GW9~J{q6Xi z$ca=`Z(56VKpEW3xooWa@$dN*Nq6OoO7rG&1 z_)aO)S3^rn8iPi}0<>ogGr(_gdIVOMUmdIzylnPjKC_VW?ao zDduJH@Vf#q?Qc=p$!Arb%MkSGk#|4?K4kz|->zhJ-zxvPM71936agG>@C<^3zChxG z=#QMepvUZiyv&GM!&%Ax8=YYas{IWRkT3W%7{TL5IC26ZT&mF5+asbP zI1Df~1d+@3!6C~XXGNf({b-6@$cjd4l_frT-$D`f+C@>HlgYm*kG$o6utAK{ahLhl z%{_LXUA^Wr>>>42=8a1-;mQ2`U{DppMcj2++hGM%T*Pz&n^DpcT8tNv8_p@19`u}@45nM6g5 zx~jj{EY$)%7M<$ab1YY)r)X+E$|Og9^}s4ob~h3-<2U64*X>xE(-I=lg400Y5PY=9r%)9*hkG{6dn zRAHuSc_?dwRm{3Y74^8G_)3?C_ff;{voXJO=G9V({j``Vlj|B`xhYMt>50#UoO1Pg zA(5Ad{eCgn4C+$Xj}H8ufYmJ4j&IOTXe0QZ==S6nnWtA6+AF~08{xp!gh-XkDPTgd z5N~2TV0wefscvyCoT3t^Sf|(M;+=VXftq?$$e>I0mwEO|aToEX>qKM}**=z|21{wFSKC z2Kwx`qe3t~&js?1Imif{J?sG*yUi4fTT3DcMf@3&5KlstRGlXyZa@H|kE~IeHy|9+ z`*AJ|Vx6l!2OSwUA}~128o7K=iM0q~c*^ka{?OmfM9livA2j|7z-<4~AMEX%?QKl| zJ5N;E)7iz;R@BK!*~Q7!(Dt7x6v?)KeFSan+x=3lTy-A!7ZwMyD`NrFo0M@1crtl( zM$8p_U8iGPs>`+0*6+JO0MmkqOm!lr9}s`a{dTRjSTNJei09<@=PYmAb={shf8q#) z8>`I03qZ|5e2DtSsy+OJxl*F3w6O9JSokaQdUHTI%*M24;^%U=@hqcqo9>s>y1k>L zMGJ1FPL;Rql%>{Snx~FRP~LTN=lv|AhrfP=7-9R0`Mm7fN#UtR@0?`4?yJaJJ%n1< z82s4fO&%8O+%s=DKLK33_w8aK}KEtb6v#sFx5UFu${r+pwIoRg_6Z zous9SoGc&MI|mtw>*7=e1$L?PM= zZ|+cz1ZA#)-a4k42dO_ zp8}inoy{j;Li13h(#WDPlO+^mJEXO^TMv)~{ICduhyCEB#l!=^q;ISdniP)8RZs^* zvsYE_c^jHr;(dGm0U@qe_f7|#o30a_3Jx?&mzY7dufz*+pRW?OXVwgdKfE26V?gX)umMA^ zo(k^MjK?PHRvv=t?7mCC9Cz+Jxx>A7oQ3BO;(hYFAbB(<2yd8<>Be9yBzupB4dV}| z`s0RsJNszjCO6?a{^&wH-_t~YB+80_U&6s)!wGAU)-4eg31$xIa@n&cu9RXzV)z?H zW1lipY;XYdGjK`^sMqIz8Y>Ur!HYKREi#6CHlz$URvTm+KKh#%J01&Y3GM;S|w6770rk0GLHoH~k*;%&Rt_*cp_k+U7;4v+Y40Z4VTibn9e;L* zWR!7p9xRv)vB`R?2Q>>J9)+2Dq>}+kX6Yp(V@Txe!QY?O6o&O%%0aSz>iRg> z{OJo`I}B06^5YjMA&Xku2esk!KOBDTXPg=lrl}Oa>9F>4yS@;{Vn2vc8UR`bp`fL& z!lGCNJX6ug0#5{9wmOXyqn#2vy;fPGIw{N^^8|$?EoQP>Y3#VeC~)bsbsZWH!v=8N z*CaWobI{<7B0&GJFw1~Yazq1z%o$60NSUia7A* zU*prYwvp9m$%>7n_3E5^MTQxMWs-kS`uSCMk;Oj7>=ReU;xgCIOW_llY?!>q_UQ;YgZ{&==*4w!5firDFlc&%CfksGA_@hAu5GWLt2xPP;q`j z=5j87=!vrHr1N45M0Kff&|?*-KE8&1e27^wl08R&!S=ysmQWr|%QOjbnv5?1)5+Vn zXlyyOeCCBdEnQa55@a!32;;;ps53x+OtDHtpXxODAg-n< zwj@bBpK}$7f50s0?)gHFv(3dIh*S;ZKa!H)rP^c*}*lOL;H3)1Jbgz7bs? z@sjsmF%n*%P`lo7nh_WZ9J9iZEP&<%*8DKPxkpwwy6&7gSLYG z-FIc?-jpezF^D`Ht0cijDkxY9OrlOafSUqFna;71OA4C3)6NZS)DqrO##`N@ww!0B zSd5{9vaDvSYEvU#v-)9iZQ5eh(xO(g_|4w50XMO@`RBUZbL`vqwyTf*wa5SR`tGOH z3{)YuI>cQK2;g8#&aOM8>bDhPAZY>1Ay_wEDtYW1Y^rLQ^glT6i)cvbl)5%Eh~D z?h$u4HUZbz(O_!p-2?eag=R*s-dd|mqAW#J?_{Yww2CgxKF%Relo4oR#xsGsk?yN+Xe;&3mCyHV7~uI4sR#Ybs;6 z8+Q_BUMbQBJ1HrI8Dk|=)@Ajon_aRxoTvrgvRWlQa(t-QIcs3z6*Vzbnbol^o;Hao zs>QF`xng1?M?J0>c730xZF|GWhF+>9p*canMC+bPW(pc(%Y-f}sVf_jXt~656gH6; zdw%2MHJ#*OxoGK}X%;%M*i}0>>*gQ&d2VWH&yWcSnIJnUI*|49Z=BNtX!RADhe+#h zkJ6;zC!^*5WU-Dn_)}ZHV4dkg)v3K%uhu@pRlxH~^|ebhoKcIcEj3Bw^m|Z)*D8}6 z$_9^X+WPr5sxSm|(UC240%rl59qrYr>;!8%CQFUK;3U?`gEH&t;<_p3#4dVK3@)~z zq6oe&!TyQ7Xy=JFnRJPSM*`OZ{~}6W>Km+5jI#NLvAsotXZxg+Pg-74%S}nFlVLV) zb3B{|wQ-ug)$Cak8)nfLFU}L)?5y6lbFJD^%FQ+L=p9dNu+cT!UPArg4Kd*CUZrD9 zCMmN2(1PcvexTJvpV|tro|WrI8(xJ`$~wFtta+v~cX3u%+0pSgiPV9-_5EHQzHVO? zo{P)kXAy~tFj@-rXP=O~FlHxfhDB4+1n7hc6Zu z-~)4J{l-0OF66`=Jvf|*&{kd7w6wqR-Jgx~Ma4XPA4Xtr`G&c>dWSH(;(*agoug&1 zwIfDN>q05LelmGbd{kk`YZ`(oNi)3<<&IKh{)D-EJl2KtMd$L+s`7E47xpU14^KZs zoH5WEQe)CS1Ql(J-N0Cr{R{Cm1KP`>C5)uea1~01dBD-0VnR=V({&G%#!OGpaYFcs%+1WK9<~n5hH$y@U&_u|J?6IRY>el~3*E=v* z7Paf59ox2TJ007$vtrxbu{ySG+qP}46hQ~x+zfX3nlknlM6q4Q8lD36Kdb2QvLjU0 z*VnDvSaEfQlPgy&@Stk|mN-nvw|C?C&zH?KsQ{=bfG*k|rxTFOx$GHjF*+K#b!Gdr9#chR99XL@Kq|earT;Y7Ir?h zF}5n>sP;e7B(v&-(~&K&SK*f1A)9S=-~onHX+87f1)k7ax1*Jtms4FnuuSr$%E{?Q z;SmK8`gvWbJw-?OG_gPw{aXW;v+=jJ0Jl{#--LhA!w_e{&NH^cnX=!k^cZq7GH<)!xN_&x?$<_*)2WHdYbS>&x5H+JUB zguI+#HXg^8ddx&Z`MS*K8x7a;olASJ_~)eGbjh-|yrkmANR(bm?O4;c{&gR++Y@TV(W$etmCAGQt9ONEc+?=pNsfa=plN9rTIgBC< z=CLM}2t49`59Niac;*(?8oN?LEk{K+5y#T zu$n{RtuyrpJep#5*Y#6VaBuphNaon!mNZ(J7bcM&4B2Fcm7)0!3wB2`oLL-AH&aGy zYGTTu$rb!&Ol&7akFZTQns*$alav=GoINYKA=-PgDYV!EBXH~&V>kVFB^D&*<}m_0 zg;PmMGi(5Py$M6NA^t3jL8S3aNis*KxrcVomXlqmX&(Ouh0}?b_ob^Q?Dv3{j{Mln zFUVpyTuHmxWluhGS5@;Vv{(|*->7kWooc1WiIw3!*^;Dwt9Y6wP12`XRr|B!#(WD<)Y8e|unFNP9! z92cXweu48}T4TJ;k0aOUH%HUt^r){r*FN}sc$+zFUW$V{i1DvGb^D8Y*=$%dk7w5F zkAi#(uF>&r{Rmvb;0J;$7`@>SYvut191~q;kyL~PE)frAh!sSFg1AX|Z?t1?I3({( zIsY&^AXiz~`n}KI0n12s2eOkX$=+DNQx(h|v8wc4RT4sx)kdb~Vgg6=DK6v#Qv#cK z1~szti9yr`0o$!q4r?Sv_DBf)nec2}jN|W>>p{JA?KNNdUI`SFz{+&^4Bc#FzTIc} z{cyQB9A~@Q`W5|)WUe5aKc*=u?Hi4Bv-)IcuKF>dx?<&rJR>xmWZ>OhrVVh5= zvyD}tQdiz*6v{aZI%Ph3PYUWP4xw}5{jS1vu!ZNYwmH*WP9#4e)C9=)j3rW0+~dl< z;+1J)`Oa=dHjpWFunO(s5`ZhYFS32v)=cHB2Dra25t6irvA&7t#4V2s-# z(R#Ah2ocsb&WjaZ&zr7t;7kG{SUXV>_p~89jXU@$DlBNPnp9%8%wyH~Gun@;<=6+D z9_(q=dM#CwI_22r$^1x$ws7dSbW65)%$f|&<$7Tet9afTTp*&=XbRg_hedwreY}{t z@vqmW+ys4H>OM1?RAy{cSr%fwGrL!M<|0XwVa8{cvexkFpW1z7?7H48(n;2~nNI29 zbbvop+9K}gu=4MzoR_#xKUZ48IIn(cT_WWgT?mDyCQgZRMnePG_!*k<8xXR#AnUhc z$y=c?Rx&e6=fpafR4a>g3iw^3FI=%&w(K)2Ew_47Fnbm1_K%>*P&7SFdp6?cb~i6n z0n#igsCpi-Ry(0SFjo)k27!)dew{>0+MoY}Q4z#bM%Mk8C}jE%ykq)LaEXK^z|_Ou z{r@9Yq)g5K$%y}pT=}J@s5~TsnG+^fT0}Y(0UY#3ZhoEZC}_yw zC1OYm@uPnvxiR(&rwiCL{?Y*Rt4xXm+}aj)SS`KqA~XT54B5)0ez8%s8f|fkvf3oI z>MBQ~Lu#TS&cNPTsh|7^u$R~<uQ|#40OYv^!D2Nizy`J%EDC;#6+td zxzjB&ExmT_t*cS`HhK29VT^qMWhET^=2lY*B=6Fi^P6{tW#j;w(>%Xt|IeG-JinLK zOXDDETpJDG+2Aqm-Y^!nwyr_UAw_Hh_mIg0hlriK^ z$iq5prX`xj#G~tvFOA%;<6lNvZ=yu1VSs@h~Q zsrfVGaHG%h-_mpDG{>tMU`_CGPAmGoA?{&u76w+7<5T zC4Gw-@LZqqg<7gz4xc`&*jKD(dgm^_$5>qtkNlI^meGbB`pyUp1M;g?`=&`nn-B1i z*+$LvnWJ3S&6errD+#<%3%Rx5ibCe+o_xsyM~=@w$qe`1?f0^v%1`jv?bth>#Sw9M z)kaB^=;sQIN9mrb{ucrTg;l;-Zbsa$=^rNmz8hhQ?H@1l&+WYCt-OVdQKrdgqB@GB zqt-YBWY)s0sd_~>rt2sN+SUC=N&*j%9@e^Ng4IV04^D!Q;=;0wyA%r6_!&1`6N9CE zu_7KIeaph7qxsI!wc{N5SH>)rr}&pbyU_Bz!e251H~ZKN(MS>c#J@Cn=EI6*(BCEc z)zSh*_epQM(Ptfx7A^#ka{a46`e^nwLRE4El+-bF}t z4M4}c>xx+saAgBN!QMG*>Nl6G_OngF;O=r9e;+HB!3o??h{ki4k6qI#2jBDe^^P;mL06mrwxmHj21OZ*bF>0iiUO5Wmt zW$Fn@NZS$Bk-sJ_D$Oghgi&Quix?`>{6K0uc7jZe)Qjxtf*uSx)i2m?#=qBVeDjC5TKwLn`8i@I%b zToL+=dFcNThHbh~vc7l^c_04l>FR}0>o&Q&^5_t)PP;w;Hl!YzL`ZW9sqs$lZXVt- zg-cs5Xf5yCULGb??9tP$ zDDi}0@e4MtSOn#)%tvJYkD60q@)7&nE>%31`(o=#j31_E32z9w{3|L}tO?O_!3zYmUHKfO0z=obn2RQ&4W zXl|aq34Y!@n#sKNPk-so>wLRy-xC$$K2S!p4_W?!LOMTsOc z5~}sJKxO`7GMtdE%*7vArDW*g&AiLn|Ezb-OGce&qoDWG%UIA|KW=9|Wo-&2J7O({9nUQd!I zzl3FmsSyc4tBe8fx(v7W_2GhoJJTv+c$1{4y|p!`{#yJbOT7gW&$F@k>Tx!faQY8I zx`6K8TghOkl$^tcesG8TEyAB{J_bQj^RS$;1WIf{nC?>r>_!?5oO`+qVYBZQ=6Q=m z#rJK~8rADXt+6tB7YwqsZ+y3-$qU;)v*dz1uOmF+X)i!Jewlq_aAa>AVd`u@Vxg zxE{)ZG_REdO;gTYqUFIa(M)wfupZH{h0$z2coC~ud`=94<#W#6+M*w#P>=L=K*gV} zj2O)&Q95g`W+l|zfK9gDNAl-}==O#X;ImA7Fcg*(C~{zJw+*d$DgM|kluYZ!b7tm* zP+WPurg4L~O19d)MSgVtE-u)Pes9!qYKWL2Usk@kiPIeMji2J9GuoI`k}ywu35p^& z8ZD05?1L(<;uVWn( zy7X2HTK>~W5<4yWJ8Pb#hsPpGbVa#WJY zeGb^jpFE|Wu-?L*Or~Jc$n3?knzluU9>t57V)qwJGJ_!((NU}dc4_4Fa?!{wbi%3{oUBtFVz%EFssgulD zJH*!_8MDn1p&?FO^XkGDyzD8KmnL6wPO!K*x&eci>fLeC0e2n$30I^H9d*MO^_dXy z37*TU4Gf~FU*8j9I-{`@`7XJ@Vd1MLwr+qS{1l2JbSSRuz2Fq)vk~HxV11>fBkvA% zg2rqbDRXW^n~~UN#+>iOaJ3EZ*EYrU1d7zAlRginBEW#+BwXsEg{7iUd^m%PUQMQa z*2pZB+E<~d+z_1#e)3bnN5>stQw~VVLnN0Gt?9mEK$ZoDH9f$;AOA*$wu4>oHzNB~ zP&@<$B7A065EkKK_x+^6|BeUs1=Eu_0Pa6i<;i$x-i)v9vD2`_-IP2Cf*^mSUBS%AB^ zv^_K_y)(9j4}y&M9TMpM7TV%zyEoPM$}ss^I}?*&Tu0`g^8O3yvac>sS)1b$zQwr2 zvzV`;tE5Gf`(a=9{CmaWU)jQU?aT*&u}^c3aE(7?aqACghM#|6L?0TsRq~9V?g#eQ zZ+KDb(c_@`yNzaCVqJ3%fcoMHR6UZ|2V2PJVqljo;5XQn2jDk&ay2>Q?;6h7y_E~# zK=CLackF`FlnPgf>g|HUuiXShJPc`dW4<^?KnOoQgiFyNLYl@Hw3~aK67lR)?&aq^2$jqa*E;wsZ z$B{9f?op{S(OgeNz1TwJal(sH#bU#7i6T<&hdF0s=4KScIN2^n_JdH3So2X19h5i2 zH8O`y8*vO~Fej2I*dt0k44#uJ@v3)pk%1NU(*l|kM9Luk&dd9{luLFru%Qo5#3ZEP z)>!jkwH4`?X4xkA)Zh4BXiBOv`QzAK5Y)#uEFGGJ+aL;J(%t>QwQTS*GY$O`P>>@uttSS_ zqjZv}(35^arcn-o2eZ5Cg z1h;Mbo&IrQlQ;AyFVovEeU||*A16`ux4UpKwj+1!kj{>DX$OKvb1Z{Umd-#iVS|zB zQTD*m{`85C6t?txS3Z^ztO2Z^ZnZJZ&u*i!dU+SFI=bRxy>J5>kS`w3-J291PwF9H zha99O>_j{2WKO2#o=5WtH{pHaV*5%c6YnR{$x&|?s&R;Yq2wZ zK*Sz6-~TeXK?e%NL%BN_#Y0I=+(T)8h@bG*7-PokwiKiWx!@^Jc&m+(SbVCE!|^=2o{Q!`_` zZ8q@ZKdTq`s~GAa(|L6D__1LmaHZmE9!h5sWJe<>+LCh#wz2)i9Zc&>Yva|my{*Qo z;^Y_hJ#1RL#iTB54aM4Q7CVI30K6vw$S5jU9L14sU?Jprhg!izY!;hh!3M!E=~*c- z>CqO;5(&4W>;j6f#g4VT?d8&Qu-2IKsV_?MHigw@ z)sRQE&?7|5XJ9MKqFvG+1=8#j%F=*t<5CwBruuLw3d(3Qdr7f^KbZb(BUUG~Ih-r6 zID46yo^X2{DLi~~<>;)4agu|22*4ewvx;I8C+W{w$%A+=2( z7i9_AEt4cZ2oiY{1`M1E6J>iL_z7Z<)K^sQ#>>9XZ@g-<1p5|Q;%P)LPBwWk4=2MY zF``EW&`3eV#-xNJ2_-ja`pDI)zkD5FM{fEMsKH67e3q5i8Pju%G^Td0-bT4t4b!?t zJ1mVH8pOYUE{2PSlV+BQz#!88Yq}n8`P$`B`n3^Zx1pKYpk1U;Q?~>!9DfZFM~pX) zlcUw6jK=JF#K0Tpw)0NdE$|1(;1xBfbmbw-w-|xM^jGVxBjcbEj_}yN!K;9CU8>919g ze_amyUr9DkkyNMX1|=8^=UqtD^acDp9hlUEBJ1fsjZliuUy=G;6W7BAN(KoPzMF@4 zFWP1Jk`q%CN&5&@24v~W)SR(~O$+BNe8}`U!&*hrx<;AR6i!P-$xkS7Qp-Q4P-J$c zxLiTHrqY7MBX`F}3=doAg)ir8aRDUFkGot_Pn3$4+H1AdY`!ZxHG{L!1hQPh<3iK9 zeHDfr75^f$Ra4Q&S&KzStA;(wvS;XQoowo~X`O0NOEhq)CkUiZs}dfh^q>$7`UTOs zTA`1-f0KRxi}>B^P-iYX!OK-%+Ra3=T=|evlRtg#v7L+I20z})$Dw(A8Qr=O&12b$ zunf|j%Tb~eeKlhoWaq_j6KO+zDU{c0x2|NYFOXZ!)37l$%wM%1TBvx--Mu+r#sYDT zbgW7dvFoZpvHpvucX!_ouQX#N`=q0`1Q{P1!P%E)eFb*rTF(7NlYv@0$F<4QLFPJY z?EM1EajelcM5Bg{QwV>`75a_*I9eSNeZnGy*@|c5TwqETXb#4rXaJl$d9=W}Wc7kpI!(GND7l)SZSk%C=Sh|`+ z=XyLF#D!hVO4wX!J*#Sp5>g6WGmoE`CY%si>a7{UsT{F>WL5d@CNeK9+`mjtEIynt*<&5h{T-5(+AF$?fZl3RKy+5Xn!ZA@ z5?%kHo}j%H?75TOORXO8vgD|3pXBF-KZ^UIsuVW{w}i=qS6{}?H65nBLMx5zt}7Uw z^6e7(913z`DLL4ljC9&6BD;iVUiuj{%kwAEm656p=P|8Hxtc5Pq7STc2W z>2+Hs8PN0;*`VAoLib!}kBy4}%C|Aqqwo08{O%lIB%?qzc70lX9nry=@DNn(GOT7e9$?*jTUBMwfipEL+O#b}R9zBG41| z7zna6gJhP>m?n+#(yTUyEZzy>z9q1Q(~!Kw>nPE{jW75}uK7@@E-YJI+dLHRLo`Ou zslf*cY77K>qH)e*m842hB49LiL}0{?G3ph&N9*qsiFh1yM@}t*>yv55c`n5lyTar! zz&0UC>Z=-@Z$u|ex%x23@#rRLFZ07uwJ4F|C9@*J6ca{>{lrmUh@=nB7tu*)B4K;_ z(eDqGDY}+)ZMgE0dEwFic_uI#pm4mRtDLaHwc>LQ#1E zB(U@cN_C?#Eiu_lPH5G*CIs~pK~d671u_$^ts*RIN2(?6AXG_mA1vK$(>hr;fvM^6 zChBG#BD^(^Oc5Bd1V_GI)j~fQ_Rn7Hh}XTj|r|h z(Uk*c=aGuu)n<)qNv-y%{hV4(3Idtwql4wQ2%t8X^62;q_aWb2C z@y8|Q#&c<8Nq-WA@}{uw6OGOn!g@NcSl|*yjn)nG)gNq3@^!x{lSN_V%0KYdiZEXE984 zOl zvHS?H0X?Pxb(KqJ#xI62luJpRI&7;0d>6X9(&!!|`*9?o@D8mfi27d85!(rf-H6jJ zSK6Vth0-qXxI;!1B~S`-PRAVCRYT#H!!b#AhiQ``Xw=*a4z!_ZlkILa+zKJmQq)%4 zFYQunr`XDk&0o+42HYh}mWz=qu>{I-J8u^`WouM>=Untg2I6R4i|Mb=wO%(J&*{z~IWOC!LDk}463V%BsmFRK^&Doe!(`1V*m4bgm25#g@e0b!4~awi z;C_J6d`XE*%S~}Q{doW&HqJ#Ku)LPo%4W@}r?s#&;Lz5+8%<&h0Dg{LZSNO+j*>uN z*PINGvNS~Qq{?}h#?zPPIVUeUP0&&X3HHbgb7Y|zFp1@O%7Iqqm?<(-9d%g;)y+b5 zW+ynKEI7jliftB(jR}fPnEzUY;X1wuSx2~^)YMc#UsPcZlr+dl8>y><3Sx=WP3iAc znn7*BvACvyyDkK zL)>L$M6HLBI7OoFVd4OpTnP5CQ9wlZ_|K8^_jR23x3Zev#t(-Olkq5}sKQA~!$vkj z!o;|yC6{WJ)biRoqoeBMnVED)g7j=RxQ}k|m5+WSZJ%cbG2^QYbl(HTQ$2~ zTw%Xcg@HAfO_We*auAd)4T5RC>mKu-0S*pbzZ=^o-zWZ@?o`{6O(X9*!Or!*{JG>oxlQ)o=8pTKH4^+v8mh$=`~+ zza=_f%_M(|g#WC@*T3EU{)T_pB27gWb!w;)B~(z?r1t3TGCs*#@Ycru%N` z0@TFe-b=}TTx%!;WQ)o3uao(NGcS`9luzJnK_@EqjG6oR1T*E$(vb4LOPhyrI@H{} zW}cMG!|T_#6PD;iLg$C39CqrpSQ<1KojsZC&3vK_RzX)LHRg=@GM-o5SWs{V6h5Nn zlT&Rvj+7(>GFb-hR?9Zb5!CsXx#CG#HJQ=bx*XdC)3De|WeQdT?=&(U!xQlqvpX{U zc(+Q4o$l&#R&uQEL#8L99Fw_jvx^eKPGcWShMBP^oiu5RRBFRVP09;bj4#=pPdc6p zJG^PpG>Q=u-OPz{N9zb#dSxrtZ;n;HbVNK*9zszmn>^h7CIBzG5L$#X81u>9MtiY< z?c|$Jncy{ttQlARp_#F!5Q-@@u14=3YnZ_->}lYnj%|mzI(yo5ZLM|ZHN?kx1yGo2 zCstIlkHJ9^9-su2C@*WqqOf3>=1&ji3wGqQE_)F2oPgERXh@E3ntIX`3|iXUeYSJJ z_J&Rd#C}xiVHQgr&%)<9){!ok>Fg0|fz@+sA&uc`J(d@mQD#K=F!!!$T}0--F~;k3 z`)4_Om75ipCCim|6|M#@ME3kkXBQ2RbZCzV_@Fb6iTdJ zMUTfkFOFgEu;zMDvtW7IrR|lhB?XUMoks)QpBL~uN4BkzWMNNeecopmpG2D#D9vBl zuTNVwn(A{8S4*xNOFL?VGwVvu6i$$->+I-ny2VErmYGJC9mZouHM@k<(YGA_@>QDZi1^$Eb2x;rD1Tgfk_L z@xS^p?7S}J4P&+H5u`E&Z;lZn+AVr zCa)b9(_6Sp6N98141=UgKaJP}@d67-xB3`sEF{B1WC}R4SWhwVW)(_{jewcCOK=q& zx8JDJKg1TV!$zJiO*L)k*-eP_jkz(=pUgB}{lI9XWYFUMZWi9^dANfn$B92@v5d!& zEx0r%ENm#LVpO!CYGdxJeCQ&+RT}bVy97$H^bwP96muft)?%SgcT+N50N*t1=e*g( zkIHb<;|7!|Iq|wgJE%nCVjp~0qCKYxdgNEuxHpSdvUL#c7lj>S&Im2T?$f>90bUN* z5w!mdO>THisz>+^?In^wCW*QBrew&yHG{$QrI`21OneFGFi|HikWKxtLw#%uNif<) z+_A{9NfgRF-Ja7qxR5#9qS@ryGKXe8*2ZTVd(^6WD*NNkF@MLtpx~-qu?wkF(ou7- z=%SEL$W{jB#?nzi!pMu=26=oVRQ6B<^4*uwl6a1Fy~07S{kQWUnK49yC58a{tG4EL z)}bK^pDvFGvUa-3cT1X&-Ia!hj7chM(FXS{>~$x=QfFuYScQ!C%vr8^rUHL}z(OIJ92wq%9w9N=_6 z<}<1)@g?Qu81}OY5(&Mly7eeM+{|q>YMm>aD(VlUCgqS0U8dwonS=TATCXZ8y}>3q zbd4dOKL4$@ixY++X6~$Pd}PJA9imOhYWqKtQj-@a7J8l+OKBH%v|0i7=nD1|T4J^_ zd$@-8DT^Cm&GUj5ieBZeZ#uRMjNMBcR>p<9pKa*$p7dhWYlsSQ6=JApl!SHD7s5Mr%4S`*apP9+n$2AOMH2Lg>J8vpn(D zggv)dQYV^-;Weqr|a@OA{Pt-M$Jb2XF|=cqlGHl128Hh7U4 zys{o?)gk*bCQIld5A0zRp-qMknX58M6LXgb9{RB^J`Bp$)L6XF7bSA3UO_itEi||e4sh;G zEAgOFonO!NN6M2JPS#uE9QRyt-kEjtt&n7~t<;S4WhynQU9q8R?fS{@P^PtAsUE)4 z%#?YjWzl*h&=Mz+H$mnkzZXLPM}$nNKp36LWNjo9tT!m~6v-~oG-l}#X8;#DDc)Bg zbhreYaB$mx&I#DQwJ$NZnh1^`Ur5dSVKaj#{Y!|;3s^(SrQTLss7cTfB&?jXP&mog z4Cgeys|RDo{ZX>|PH>l8+x|nP6Z&N!Vt-`^F=pdZItLE*nMiNaxwra3;I>N-pX(-`&XG|jw`R+?BpPxW8#rXVDF&@DRgR;y%F4wbi zm9tvY05@M@HM66fnUYRiV6ax{^{BttE`4Ofc=^ky#0?i}j5jNWx?_udFxVufIH+?i zKNKgwsP(&IC9xy{F+*a>Zej`1?P`*@3)h}>0Fx|n6V-XU5NfP}1+s*a$(w9Tl}1#G z^yDdD-jAVF4wtHtKGD;Xf|L5Ik8SV%*}u&xW7S2HQ2UZK8u8#om(^N+V~rvKT)yzu z0`bpEUK2!7c~a6?alR#s%?F9={cL37972e!x%ZMQhm80x$T2R&s(tlCP)zf_mz2_Z ztFJ$v+kHQXKAHJeP4R>$cB+7T1#vb!`7!r?Igi%;fA)`!*naKc@EHNm=hbg;y!T>K zK76LW9{$Gc4C(l9q;(I^$)QNbDumW*D+iWR5(z2s2X4rQ{}vo5omLCoCV;z8zB&T`a=`XGe%a8Xi&;**(Lnp_=cI_qvP(=T_gXE>)C&5|4V`zgQp zi9VCq8L{hIaBaQzX01z>id1`))QS*Myo0WSdpJ$ugnvp;IFN}e z!s(B0Dy!*e>xN=C)G_vzREvcM%56*QoCvFvO9$VdbK5?-)T-3DMIP&d;CZkbMCs_E+!cS2I4K|T)j4S}o49l8E)JGl z*ijsYbC=Ch|6bFKO{|w@j-^;Qk28S%7e`r*)9@ynhdZY9Ct9uE3Rh%rZutgK*8@T3 zLo?*ck~X2rnErv9>c!!IV>Q4&u+yN`A?A zHiBBlz`ANL4gM0A_z?1!eD-^oD$Mi`Zaqk(E7(*==KSbEnpNV>^HJn66*D}}B&Ocg zI*!__co^yGbKz{k>MgLvP2aW$1*Ny}D2uu`i({@5KS;2I3ZCYzOo0BKvB>F&=S(#| zr|i{Ag~eE+STLm16+7mbu=xY8CIvx<%9y;L1tirO>EH_2>%Y%5Z!TiAKyO?gVz;2R zDSl;FxGm*wBVCDnycp+dp8bfe@t44oC%pWX=wL4$mb>lu(!j2L)s1z)2e?>Ov zyNL;Z1$~u+!!Na$uP{7pZBv5>LDm8x*M2cS>|k89CX5Fhpq^m7^a?I9Jw3D-#@f~U zq~e)Oiccx(`%4!C2)U{hp(g^#C2q{VLj03G|6ng4Y-f<|5Bt9fs~^CeC6Fw&eIHYN zz;K^dc8U0my#{I`PT9#!%_pWAH&}k6-zKf!XT-=d)gN%a0rid{P+Y=o$(grabTK)NGDQ8|qrGT&PS`1#dKyAsZ*7)*bP;YBnZ_cN_LMYg zpNq4PZ#nx0o*!{-=24wAmxJaL;<3icCym2gv`2=-YksUt;P2uiGHHH&LB5}D(*DJ2 z_}~pz6_R8K6I6|p-d#GQmhtr&vhF(W$U1Q0DjxH|0(7SpjJ9Gj7*0D2opN`ir9aIu zOW!jyRh;pxl4u_5%bQeSzL@{gTA$r9mNDTk__^d0aMJwuf0)yj+DbV&|7ltOwUd4$ z`cG^9|HE>3|+w$oByf%bxBS8F=cxnO?V-JdRVs*SE_L6w1c1Yr-a4Ja3Bw7i8szw6LG$ zd?}5@o&t-U0#Z_=q)g340y^ z+Wn?7Y3s^(YJN>jxY!QsIKKkh=~m#Je94cJnQn4jkHcRUSxW^R<4s4?rW(Bm^odM; zmNtdk?S)eU6qU>NZ+GQRxyaA0}hNgQn`mrQ?3`l6tMD11sVtra9%pMiYTwtD*T z8S-+ciLS|`Um{^fV2_8?5_9{e`5?Jkz(*y1>d~dEfw$WEtKI}>g;J$}g9zys1f2`$ z`9ZY6)Dcy%-bw^D+SpH zojZLg+vb1FF)|iB=L}`~o%Y=Z+y>kPr2gj2B)tnh&jfM34y>8%ZPKFFoQVDM$zOQxyzrhJKC-+!D$EX$0Yibj9YJ{&N@l zS@J&MQ)C3CIs+(8o`?3R>my)w&`Fy&jzDgNd9Q}a0>X;=s`|MOITkPZDKV~0p={Xg zsfhR;+}|e>IO|7l1$OqD8JBNYflqKwf-9IM^UG!d{U1Hp(b?m4`uQ*8=3t@!IVXJL zZXqFDQFcB1qRs01sbx9Wqx>f0T#4UJsZCpaROPQuP?E2+g@w0-_?yIEnP~b%eEgHM zpM!qmx5ZkWxOLxU_jUH}**%{dK*t=8j)E>fz7bcPO&9wAt86>xfbhwc)%nYvpn7oYZq$`p0!P z1;XAAcpQ9@sB*P2T<|>~-8JIT%tCX9xo|jov8GJSV*67&Ut#n%QDi%@&+CMgFVEE| zw;g$Wii!WGV*v?_9_VXBlQ6$d7dv%kLJY&LpwZj{PCIrlx3}c8P#Mow@A)&aP}PUq zE^mOgdTF^gXfEC1`r31420;@{N7OhB#odePbKyI`THtQZD)jG`=2WDtaW!|ZlX&^} zSnuVX8{UG#EN{~d)aqRM4+v3m1m}Ode@=~Ldryy`?qR#+M+xuP08yzWVzW0`0QHf* zT$p8xep^wx_8Jtv`ON@JSrR%J$6&*5gP^d!Uwiw3b=3H%gW_*p}0|6ZwmCr9O-I$kKrQ1d*p* zCREh}#xf5!&fCF-m(5_QbL_YV?p2N5xVh*}@NC?W#WG(fw&G;0Oz1@;frkJ16(-kz zFHcXhW%R>*`1gb)`-oOtQb(VFu)w7^glFD8eQq+8K(;X&8Kv_Fh5ZcDJg(E~9XT!? zUu#!ROsIiLi8*=8`1otgf-~rGM4t_jOVw8f$-_dk;ep!&4u*o>z@Exru1Vcg-ELbe zpJ`_(zm3?sgJ`v4TuAEaf?L+-b(G zCkb~>dL}($iFW0qYPl`vlB&+xigdcM?}?rIUd07>tS!YSS*HvF>l=mmE?D6@p|4h$ z#*+ts>@XpFh$DqX_eUkel*TGW`xE?$f%OE3L!-(?S(0a1h9VZSHPHR|9lEv8_V}G9 zy_UrMkI9#J#~(Y}!8E&9jl(}}ueqA_HDUR1RdV+6swfbZfD6@v1#uy=e4>^3DIVD0 zs&Dj#O2#7YdCspIk8E!>hs|lqNckK78m@2381E?tl8j@4SCJ^{?j21GW>mY#aTu?i^=Yw(zKq)HNgUuetB!3 z^%>{Cz-L>056R(@#zyO!!p2JLno?C`PFrhE%wLwJ*B0BGWauC!$1#DD2S3XFkBx8? z-WM{PSF~y2c#0l@co4>skCj~1EZD1a^Dz@`BR+@yFO|wzJL19=v(uDWDNja|=18XW z1>6hjMSYe+zCUg1gsNzm)wJ9pmxD5O~1$ytUPmnY;=FcD%K~9 zz9)8jx`w68w7Tus(OZ^LPY|L-$1GU<-x6O4!7nJFbPaN~uq$3Jj%x7?(OTJnLG=u? zop~wydSqwag8AzC6nAQ_Z5#Ipc!VuigAkxL9*VdNze320D-?nat8u$YOn`p7v{FpZ zXCZWxtH(dvyYXhAH|3={1rv`oPS+L0c*^CGm_qhp{NHa$KVw9p*nj4g{D1lJ|Ixsr z;AEv}>S${9{}(7~Z~GBwqx~h)f1bKj1Xfg<^F(#S$zHyefitzl$+}qZX;N(0`WMQ< z-stfstr=d^SMQFnVbXe8Pxq#Oqf1azyBPs9wxxBNe7PUPP!=3S_(b!c(XF-6P5KJ+ zpX2Lx1Dwnp^Kex6|9Rl=yQJ#r1PDuok!HOq5T(g?C7XOepYqZ2X zjHJ!GCxouAr>pO<~@iB;;s9Ko^hM>B>8PP6v~*F)d8 zlJ*gg@L2T3Y6p934)ItLjv}D#Kq5zS)EX*CxaTBo1+#pH&%{5y%~uuVMlRVr}Z`#X6(JU8a+7t zqD_@Y*kj@V{BBu?uFyWQIQDr?pN4$D_L2q69fNHdAh^h2gA{Q@e+)X<|8H6PLwfu;$9YiI0C4sYsW5c(TLNYFJNH z{@8n?p(&m@JO)ZAr^1{Hs+OXwQlK0!%TIZZ4U$|d%U};@T~YY_1gAr&mt zT&daP{ssd=Nr{D>u(F@U(UOK!ecIJ!{7dp?#dyxS>m?7V_Qg<#fKkhRas^Rvc+{ zaC|2t*W-~~=2-M_ry%6o6>R59>{cf)=UbQ6*H%E;2_>u=i_PI;|N}}blmP5aJQ<`TTF?-ibfuEyBuihB~|jJv+;BYF?E_$OBOiXl*rNG zzNdorh~Y29!<(Labk)h}PMT3PHf*bE($pF9=ti~($ zOcOKX$MQh5k|K&YMOX>Z7+32Zs8EWl-UikgE#~GN^V5@cPQ*w~^^6~RB#^nBddQgs z_*D9|pH(0ja51?pxFdylOW(1wLI#*JrSDyA!Ct``J z4c8Pf1rri#O#4a|DCv>17)##!S8woNCD#QZRpyH43{g$#J8$6>OD^Lv5?sIfo!^ex z8SNr`o901Vv74EC6`O>(h1VUb)<5lCZ1!a2&64mXRcgm70=$;9K4VZpiIIkEd{t*$ zDowF^l~qXBEQ;I(iHrD9RWO%jj#c$yWSQOfLqGfHe-l}yqPpfP=l2Ws6$iOhzk(g}Hk6k+U#C|~C67IJY#|Q6 zw8Cmp98ALU5!8)yg$}QdMVrc?Xiy(fxZ&;{+DxxU4WA=wR`j9Teo>x`il+p)L{M&@ zUdhRw0-Q5u`Z$5&4`}sDQGb408wp^#K~<8@T8lmLVzhq*X1bbx?RcLSa7vmS2-je@dsgTAyI3CyX zF`J~3&~Eo`*k30?rx5UfKf+?hpdX=*{;(uc7{sOR)D_-{Kw}(XF^v;-zsSpCO@oMl zI!8exNg=gDVO7cNhsvf5xjiL{AD&??%MC@pK~LCaxr=*C?a-dn7=)#*s}#?mSQZh) zNR!xSZV5Ie12ON+KpDZut4W+l$THI4v&ZSo*6O0M1x7k|fJh3V)E~*TIkaNq;`+xX) z$KXigcI$VdiEZ1qlZkEHR>w{zNynPlwlSI5wrx#}jwVh{-m`a|s=ezuZ&mk~uKsp+ zuj~G=dtJZPqcQY*pha3>$~bj;WAJ2WXh`rO?7gcX`u?Wg)$MUv>XDctsd~4e&d`#0 zpe8EjBI8pjc(Odn!G@WJJis_l~`0^Wkx60KhE^w3}OWOMN2kVr##N7CPe2VSCZ7|**c{7m3BR}EF?tZIbrAv^Jea66)1n)}D8lhPxZ8F@ z2Q)%f5KtOXBYMx9%=^GHrIvTr%`@Lv&<$hXSj|&5`ezm{MP@xwoPM+ML(IE*^u|U6AwQj;i8f$>b5v%we;su*8 zz{#p<8skj4^Zcm~*UD{J`0y$Bw;YVQ#I4Dre(teHr!Xmyw3-q`XQ&2H z=sSl!WXa9{>jzG_&l+@Y`ijWfPDY7H|7)D9{I0~VnKdQUHioRWAe7Zf(CPfl=8W*!mS7Aeuwx;e>GNX*%!^WJ_ zpk9vhilu2O!3A74`{{ykg3)z_1E4!F^>8F`%4J zEt-B4VBwyuVOVoU8Bovf_bmkLN0nX%J^#P5LI4|2*Y0KuHkd@W0j{kce zi^OkE-!e`HaN5?IeS^;4+1Eg4T%UiW5_-YI&yCP71RE-#+^EN!peV;|HBdnm$BVij zg(lkxwwgj{oCH)@6eR#^f=-sEilw1&*9;T0y7FYu1{2F3(`t5TRtA&!ADs{bz0k$8 z)=ej9>zUX=tfj()x~!v<;+4jmMsLonSuI(sS};G=4d@0>_1J!7UMhT2<-#>OQS5j+ zA1{h35DFYvxu`t-b3at1>r?u@800?!uIlxh&r$O|4&KT!BK6$5X_(t9w03-R@{fM* zo?GubI?UIC*}?N)i*~4^?~gVHLBwErvtGB{gbN<>X_J34m(G#OM0wN{Ka$*YOdrhg z#4b@KL!Wt;hIi$XX$NY|{Ecky&5Xi&{so%@;JDEfv56Fpq&jXYJ0 zRvWpk;;;)_sF(PdEFQUpKz1U<9LpzwAtB6MB<>t!swTVd^3>3HZ+RbQ-JwjhBr5UO zR3}VD@F#^>V&2V|mY<9Kh6uyY9>bCNJu*s)CpTjMfR;_L{*DNErmBMgsuT|5=i7ks z4rzkr=lvh;xk{{fz4>lDKoj9O32&I>QvZ;n=6^Fiq3b|j7$=7VNXog!kV8R=KMqav z{ogi3Ha>1VP_SF$DTwkhjZ}HN3+20O7nW_MYUcV3Z~rjAu4fG*6YBZ0{CI_)|43*G zB)v3}dF8IyI+t*m#VVrrN+n~7+2!4lP?JY8Venf7W|Q{Sq@KJAnv`XBKqdPZ_VL)hS>~q$+g;x&o9w*d_I%GW!cAeZ^n5?ToCU=QW!ckaMR%^*FBc@69xP;`iqugCH zhYpn8yt7JQ`_G=vG;Ew{%^FeNy3^;v1SSpm->;{C@ag5i$Iphl^pCC-z!Fel>eT7o z_3Bo$d@4+yz-Yh)Utj$F!;m~9Ez`!qLv-3wm`+nfU#73R6Ivn{JM1;(U-A6+(X+sV zQqFQo0Zew9F%Od7EA?FWTZyF1T6aD+YAy0@9^4QfbJcgYH74*eBVW}6%@&$)a#pyM zk)L7*eKNeY{7ahN`YbTqM_}B0xIq@lRgV=^`|crbbYI-vjVECJTr2#1{gkSYMjf^T zF1#~%jHzy~R^AMT_W~KF<UrTHK@U}`w|a;dq}khSXB zfFxb2%E7RJx`2swdXOuDILNM8wrD}0O=GV`%;*cc-?=6zM)lbNk0Gp%3sdF5V&0U1A9@Mq+sfl zK0*@AfS%tY7JII86^QmW&Dq?6K{avR6N})<6?OeOv1>08q0Qxg6de#H|1}ix&lS4L zky^2V?@gKu`FG-)5g9qdv2RRYK-3;SdUsMbNfBf#x2O8V0B%`DD-Ka}c~No(jf^*Y z%P{`oF5L6l^pH%YVSrM|X_kW>;PE`6Bv^MxK{vuHOv*zksCIw$huFyoz(VxOUT^Jg z0|y>Kj7Ghlho9Zi{L4piZJVg6udt7P9rd_zY$__(7;d6hp2mSBf8!CJ%W4B6+to!Z zU&q8c_T8{%J!43_EAM*5cmZ{eNGOVnQHa}^ zSUEbmy8XX3if$HO|Goe9MLzjIq+$T1iYXkl;21&k?Q3g>ltg@MchuBuLs9zPNN4zd{pw) z8p?g`LFZIvYk$My9Bp0YvciJ+zh9wYg(b20Q6-5#CDzXqM{4!MhTi79b08)6h_S?d z7Rw=nV;0B5OmqZ+G?I&hjwR_*>ePZC)M;@$zM|O~C`9Xb`tLOV2wAbV6WsbouVb^j z3|e?c{w(m3U~HcJ(qnpnpnRknfxzuS31L~l@g@^Man8T)=@a$A0I0nd5_+XJM3k6r z9R+Yi3O-ZJ3Rp1hEVnZ<6xtNPMc2Pvlf+XG6vQwx^fuN9DL6DUtXkt*qjND+1uMVG zz4@^u5{Y^1Ase9`G^mFIuXyWLGeazWyvp4--j$lOCE0<>Eyw4rg#o!P98aI=-(38> z%uh6?1a5Q&*4kNN9mG__h= zFuZ-J57p8Dd58T!?{Qrte$pm?O%4{M|DWmc^~3nD=@F}Su7Y90bUlklwihbAt{$@-{fNi>y~I4#>1)FG<0S#z7XW?)e0lni(q8%DeZv75!scPp_Xh0?y{`+wl9oa=0PczAa#93 zSJ5C?w6u^GN39*lMhYWfNo!Z7@J3y=#bi^Gt<(x(*v$3yyWwegNao*?8pc}6W3MdM zL{}hM)0$Wqn4rTj!wfDHWvxLsM=7-`_DOmxiJ&1w+=&W%N`bX|KMh5ZrqU6bk0g7n zx~j1p?Dg(?=%NKy0s}dfDXu}*UMRbrerhHH-Y>-x8R_#E-Zs{RN!M4&i4wCbVD6Ny z>x<7~p`8Z1O3=Tk=hZ(2U;k8|GNVE*8-=5Y@EF3M>(!2N*4URYyc^*qj!K2nHv|#G zm;EZkYHjlB!uF$4AZ3;KFPwl?gVK=UX4yXUQ$ZAI=VUO=L`sy@Y}vk4M5PxLJYDUs z24>x!J0^8KN&V{;fy&KyA}wbE6U@g0Ft9-HGxg3$;*Oits20lF9syFi?F8AKAtm)U z^<1nQb}SEXAo5>JD~rHCVLA*BO(j!s=~zx#3Kr|~@RgUzQF#a0bOErbDF<$P9dF&^ zn{M}Cw1Tj$r$14T0M*d2G!1##p0C&@*l0duMS9{P>V;W{y0u5Ddr5h<>)FY@PWx19 zJXU+%uDQ1uhMlvgO#`O+qo+MZ!;3c7f#z0wwFiR~0~_BwZ)IRB_|=vzTVqIMllPeI zOcKNBn!bQgqwcF>Dq~i?%@&8wju#>(Gfc91AHwhhPy?jCfX!__M87^MpRlP+OLFne zNPZ%&n5}(E8r}B3zhNd3ul7XlPpaa%Oju8qs+toCW|aK!Pj*{%x!G2S^Mr{f0n5rC zsI69FHiP$Gx-;ftdy530?9S{jZgIX&P(3U>j&B!*C<2ZEQF?a>*Mk6tCcyXa^`S5B!OOw(SeCB*iBjT$c3hic<_6 z;Nl;84ldXp%-5;QF)mXaK=$+1c&?muqv&U-S62L)sudBDjT-KmuYOuYyL?$~O1@8Y zdH9Vt{sW5tukwKP6Gk4{#mq5IIe5d5gxkPiCqPVP`K?Qn)E51 z^vM&}yvCuC?AQ=Ywe!cA?Y!gM`v!o?6&_mHk67q9qrwj4y)EJnT5b%HlDdX_Q(I99 z1PXXVN@6!uy|%1U0MN4@d9$*;IT-RSyJZ;)m*+NUVPnl#$;?yrHm|pz9tC3{_QA<;aWYndaO@Mcg7>azr^sZ!Ax#}abJ{Md2_g5FI~9w7R7rLA7Yd5W3Z zG4F6|2k-OgaW;d>kiNVnfItwV{wD?z_po+$X*SeFr`0|Ku;aw^6R}umZ-v9CoP12ZjIZg>G5bZjn`pp zN)wK6AS1A^k^I_phaF`Fjnr(Er7yuKAx-{Hf^XsUE77F4*_?JeAC`S-(vay$1Ak0S zNjwQwa~q)cnPvEweArc?T}gcr3^0E&Qx9CXIR>+@iZ^c{k|KvnaS&KA$(36&bMiHW2JNM<(>@LIbEQ3Xov zULDdI>@)vd4O?I+rn9$75*icdP2ac8;u;2X9_Cw8_HciDSVdp#;N$mH*!}_Vem}v$ zE{G^oq0TM1;3#ai2R5p<&%xmzJF$2D>qb}*GR$51v&W>?0?Sk z%NwDVw;tS-3dU{4Ggm(l*_$6-&u+;+YcQc8*TCWb&L>U%{DBb}FVJNDm8K~tg z?C`q%BoL@>m_^@$ZR>(4l)j55~07 zV>NgkQ5ILN?Zg8M9r|Hx1+k?lbYN|9t%iaQd)i+Y1=9QDyD@WkS7t2O?bDKsKSTGn zQ9n*SesW8@MrPTKi8Ce0A8TnJo90xt8*Y$f+mmJ2I@r^EU+|%8w4ni^@%HYjj<|RT);CN=)EI4^w@6*2BVCktOtL(D^_ems-j;TKfHYFl zU_DRJ&@h+~{Awq+UVgyP6ZIt?3gz!#boUmdzm=pA9hW)s(5IkZhc7hJzX=y0^ zys*b}%zJFxzv_V&u-GipIDEP?6rJ%|XqvwsjWzmt9A%!qg`hbekeTd$LPuO{p!Ytb zaf!C{A6+W9qQPN{?)etX{gO^}jV&IEa90=q2Ams>-tat0#DG-gyw-C~q&XOxCzQrEqNhXSE*ZHApg z2%i}yAP{dS-ezL|OmFIa1zmJ~R};Hp{_^f|_Rm{HLx99Xn!=mIu>k2>!q@qAyQR<( zjSNdB5hjrJ`Z4QFLVMV84e1eA1%h}a7rmH>tzPF5LSeq4oW7uoUi{e0UhLT6e|w1Y zT>1?LPo8sa5T`#qe$xIx-YZm^lgT5M&LbD!A(7wNhr84+xL-QGP#!$()FACoM^{e` zG=ijiifMvcVU56kh2=Z(g**xWz9TZ?iQ>HRSk-F%8mGs`(qR&y2e8Y?#9@9cI@?5)is=2_R)sf`m1qYY2zY)>0U{2sT>9BOoQz!a)Wx?;%^E#cO z^qOEG{}}vIpYkuaocKSgkBg0yi;dfV?-=I%x9}Kn5odAy zK%-$a2CI>UAuebNAZg-agbX1q0IDurQ*M<`RIhQZv8Y)QydHMM^9h|i?aC4BCes#~ zNsVxS(%fWszyndtM#49J10Qqm_1^Of-ftX0*Ju?+);0 z@<7Tk`4B7K?jhk>BEc=eP3@N>gx@{AXEAnXEHKRwmSO#TRU|}*C|)r%vTqJ@f37TY zyQ}>uhEi{v-oOm9wiMe~L@U)~qO=~MNwb9PUmDR^pqmn|#LddANOJ%SWJ+mIny&qV z<1~+J=+ST3W$G-XFnf4u5EoRQo z9e8>c+`&pv$}<*ItdjeUWGPWAU)W4T7WT40(=VS|dc7@n&}FEeF6=%1{`>KLIA&M* z8Xq;?0K69uhXO%@hXo1PPPGcx1w6Q{y?Lx6v)-dy&~%K-^6x)ND-Yw9&5mdK*j42j zcDh5x7mhv`(2^Rv;tc*xwl<}Ar}4I#GE^gG?pSRPh+Wn*G5Td^df{?cL~~$U5?V4X zcT#jpqNn5ilI{hCYGEn*7P%oX2!py9p&>aG-NiOcdP|ieFI((lb&c1fv8j|A4ihr+ z`TSh-)iRyUDVF{s8|!!I(t~lCaZLz^6;$+;SjmnKW%e%93+gXeGA-sOon<>Kwx$00 z9u1M}p9*!;SPCsI!QNGxv}d#-S*89nmceGB0IXxt6R|*;x;=Fmh!gCScddPtVHP6M z;Bc7}((Jt@4CF@@xIJ!gshSZ$wlQxY!AMY>RnkiWLOSr;}Yn5fr6HlEk8G5BfIYyYPU7 zhJp_BJf0P9|IKbPKEG!8$BZd)?io@|(8K&HMLL`d)fgl6d^2z~d>E?)MO_yu)ILdK ztiOL_cQg-CJo)?3GPy4R1*-zfG)rXk5Z-zcrZ79X--$8q`{ODp3*UX|wjBsAqwkV)JeGME zSwF4v;@?yDJLrU6X7K>$n%?z(miVhnByKw0MbZ)~TQe}EF5kW{kJ+m^{|J7Y5%Lyl z2g~0E?t_tFLO975DcJASLmuc>l39H0y_|nmMRh7sZjiZDTEkl6l*t2KJ~Qt~20hIW z!zuZ(_v^0EuQbl9^l7yu-6hN5vdGPIc6;=;DNaH{Qs@>Ul``#br>{(qkZnaAp&Qq{ z{fdENZ^@oU^A#qWNo@kl6-pRBtPv5JTcaI?`swq9;MvSySMb`ms5ns$v{*Xk*$4DD zG!LoxR|<7pN!z43qMku&ifJSXr7*&f{7oDrsg!y%=Zoin@cRUg*~jvvZVrehc9GcO zc;k$JkX@#V#()2p04_Tgr&?ot`xg3Tu+jf#0dxXbxVU+XIXPO|Sh>5He9?vf%Udbo zh4oTjS~~8WJnWJuqCkMeSq4KD)kIN`$PZ&c8MVY>A=#gplw)Jb!2SX(VbCwPFB?<^ z`#LDtRe{^W%(pkUGS{fvUxw8*|B2T9{@caKuH5DL$hjhA3&6Dk)t&Wacp=1F-W+Rl zM|^JcMi;EHP2cp|^Fg>e*FxX181;b*)hqXrK}Bb53LsC99C$VT=nF+4$P1$0jTF#L zj*M;)?@RhRK)E(1qbgbMmw}GeKa%NMV?r6#>Ni6$wJUaAptNYThrsL90hneQ?0tB+ zc9_+7#)7$}#v#G6a9pf6mQdTq)k~9GneqaJdgl67yL`wT`?zqm$2;uLzk}vNy)uJq z*uD$ki061V(XQ4ShX<2FanrR%HVnXd(BYUYBO-h3t-(oR#*E=;)o(y#0oVhZK~`14 zf^fM59n%_stl;CDFsFL9X)QoUFgDAZ!iWB-^o}Zs42s!Ok!f#C&f6^`IF0_v0jf?J zB#ZS)2UTY|R+n(23spA(l)Lf4b=uvz2ED|>ZBrafAzUj1%7R;HysCm*XubFsIzq6o z%rCcx@~+3dT4Hv@lnZ@)X|UqI@{#IJi(Ga?TQ|zBUZGg$5q32u?-W24lcFwzcum`& z);_P_m9f^o4a+4^eD|ihdaVsS%b0Yvio=BtIu<1gm=ouCx?GFg>gt*~al4$zFm?(5 z_J_SVFl?;OEF>wgR>*FabX)bPTiYFjwWO-(bgdgJn=1+n znwxw=cq*EkO2J9FQI<^`bc)M#N^>n?1*gaarz(lcr&wiVX%7sFlVXN*r8~vq!@*$| z!bvsOmrA69eK1VUSa6nfa#`fcwaMF0bsDiWKav zv1VYb_m*@y2J1ObqdbA8Fs@<%t z$<6*zm~D_bD%meC1bwP27d5$Fd_e;w`D8*5S@J$kU4dDV`7&cW%4;|1hk8l4p%nA$ z+WfgVz$EA&)*?*gDz7_^M|W80R@PL#)&Zf4;IauYWDvK%P$csi4`YPC5IL&pg3Fbn zaMG=e0J^1*W#2+q-wC^1$44)VC?cHeJVm98u_@&qjS|u$o-`)C>=&0ydy}<1H5u!? zcL?cIcbhCXzI8K8y`&yD^!#cZ&QmC;yF*+md8#HV zs;B|EkUkV=!l*}eyg6Gtr)L$tF*M3QkEKu?sz0S%<4D4F{*vZrp zQ2nd49aLk|v$EZqB3I1q=gA9Pf&R($-8#tdkE$HhzKTTS={dSK@wVid|5!p5inpWo zfP~}M5hKN(I*z4b67#h!z4!Gg18UDX+WRqfX&|5B>{R}KnQBgG|2D;wp$eC!h|c!O z%@jvXLZF$NDvs`Aan0QmJF&^p?vgIKp^ckV@EGjUg0-6z1Ru2=ny^L#ttlPbc9AKw zU+Atdn##Nac*!z~^k1K>NQ_uK72Lr5edHTMOd=q}n>UP!eN=8lDoBcM6Rt%C6|azv ztinA!$K14p7}GJFzg$k{FHj^y#vO2yN+E3%?$W>shIZTbTuOk#09J6jFkL1Wtid-NA?NJGkV zVhtmbg8{mKdxqOhdBSxSAhJ#%%Rz*N1?(P#$za8$$6N3?PIv9VU{2hI_^66^QEdk4U`fU z4su6-hrx!SbEYCaZz97Dtl4)0Ayyt7fn%F@40@xhManjjkOt_{pxxh9?j*-eZd!`- zhmu9TX|M`=wtci~l$Af}z2(4N_wH!C34VwS3s-vK>=cVZk7OJmH5-l!1@;SPtx!tE zay(;o*X$dC>gYZYcU1Nmy*ActF(0f^4JuVD2d~KRIy%~8to0>L&xxOuFh4`D`3&>Q zN5!q?;TX{nes`%d$jXgPwi1D<`yua?)%I~Yf=?+$-OLmZ+f(7E=iKkG1?2CC6Mz++ zReZ1tk)zhkoxkge-XQf@@29sqt%A!#V*~czq=!CtJLo>JuPJLZU1dr`U?Re#WAhn^E2KBcX zvujr`=^^Iy@W^I)kBUdvAoxb4;tUBozi-5qPn3R@{Z=5}CCUyAHqmMMPb|ixm3{&v z!GJkJ$Y_GsbqpIxCN{Y?xDH-pKQZuOs;Yf0v~-vXIhG2ty;ah?D*`f+a8R8r40ITL zGoOku@b_#+qBvEM;N%*RG<)rF6n3DAq%xVRjpks@hXd*%Yf5MGA2kJKOjSM$$2u_A zp1F{+#PB3GJU8Q?(EJ;9vD=u!gSKp%xrSB6@f`&ySrn>xK2QJ5@J`;eynvwV(tFys}+HH{?rt^ZT zn?B$sqIJ!#sJKcLvinuC5`!($1K2MK$~O z4%IJxVzK7Ly9wpSar~Y|)3dS)T?vk4g_@k|*N(78nLa3JLmk?@1>OHfZP@<%mg>IT zlod=OoBK<~e(fD1bWG(md8%0=T9rP9pFz&D{+E;k)i^_-bQncj zi`+S_MC?2u$|zjfg6C=kC$<3@uFLh+#R4uZsNi8Ij+C~)ZJIN*ZcF@AfHtLU4FMs7 zl3gYSL+&bnjagOx3~x1a{-sC~1W;=<%#eF5yj>>ntP(IvF%E{oh+s-HBffnusXoV+C;m*KxumgUru?MQ~} zG+o2}??+|YeiRVQwG7ku`;-wyB2Tx(2?>y0nc0;?;T|nHFzysQNb~=nFt1O+4w%R9w=uedS_t??EF&W3+KlS%(}hx06SY){p?|{u}^yjepuO8V9PMCt7Fb z?looK4)s$mg%?C$mkfZjPgpuw3-xV);z>04S|NA^^{t4)OXz8LLb2 zOL@l-slVy(=Uis}*2!ZCkZry!77*^w~>kUCqxQSFPSM~#FKD*@F2sMSM5^+;(y!{kCSsKxkP zZDsn3@?a?MPRc+uDjNAvL?I(GRLti6=pYIkQ!0kAvfZ!#&7XM#U~*R_zybc>{{}cr z{d^3CpI(h6MN^1gpcumEv@?qP8N4#%AVtnHP-UhFIgAZ4d)Zs<^Spy^dJ)8u(!a%wWCK82L0m(>z^1ZA{+eJTGXpau4h1iFoD+oZ5vYW8+e`_GQ&xD z=sMwi zP`)$jupMvsfRhEcF8tIBVzMtQAIGy-bQ5+0q-j0GpAT^jRP2N|_2RZ4^4;~jz--sH z9zXKB@-Sh+AYX8`ScQX@QL|A-cmUDkwE+VRf6L#bmgFf!@^F?23?Z~il-h@K2&5Ex z{OC>9r6Gs9C|m^NN37HYHtgkVX5F~v)GI%R?a4Ry`KDi8; zlZ*H^#U|mrGZ|33!gf)%J@W1f`aO24chrU%WCKmnENjz1%@aD&9qtnbu%5}Z60x$|s zx{1Wx{J|XXr4>w~h@FZag~t2XTG6N6k(r`Bh}#-}wl$jLg%FFnmZ)}XYAtvc^uz=n zMZvtS8AT&Ej+ta0ON2Ahu3fQx&Uwz4U+44ALMPEO0{m~y?Bmc2qCV`W-y!;JcE25rgWxp>exwb5=yITY{~`<;N? zmZ}5<7~4GYaJTp%J+`Xoos^o^lEy(D0;B}w9L){*8H}rt?-VYv3@t4c$eEt~Gz5~E_wX^UCiopyR{vN*E zly2PGB4NE#I}-s!On@A2zBCaIy+uEPOsIej21Bx>SVl4wrz%&IwBc-VgR%61@$X~^ zY}tc7I2-UyDwS)}=UovSw2L&Vfuwm1uLSEZswtFV8}_ABoa0|+*j_NP$Z8N8HdVChNhN-DxMOxPL0af%Y;6b9ieOkaY@N-5HLD~^!%Dk#396D zx+oGbYX`7f)c5r7h+FzVe>lo2HM>T3Y8tcSxtMQ^l0Wte{3ho5^R&4QGCV1cChLA4>ZQI8no>W8X{vB^PT#UU8YC*iK>;W-FT!%Y?CK+>LjWq3Oj0BL_@KfREb!G- z(#O4J+!L+3`x-pHvB9Nx-6^bf`;eH_Xr6_N&;_l{qiK_*^t)6LoE5{Br=&0#U~*!_rvEz2H(K=z+IjdXjP3~|0e(XBof|^zpJ>}w_K%<3iBCLPQqd)#0@49U9PbbcybhlQNjv!4=`3cg`7g|6T z_8bmK2mnio7X(l)bd4ALmgM`E$UNHCvO*gh6fpY}>nB;K)DpV%n;Q9aPqo4PJikau z`B!=#?npODOmaCZ$i3>@odjSXhvmk)av?aAPyaE%QY@FVn?MGrHdhXg?MI{ij;P8l zUQ&~+>^oX89eQ4JXI$nc#Jl9ts@482H;svGq#egFjfvE%9YIPa&8*f9GgVgW0C)aR zxy%Zzm99zVl5^?L19`B$@5x9NW0ot@A(TAOLTJ;AKh1W9`!jOOmY;eKm9v3DK}t0o z?ZNfDH|DO)89m63qWP6xcbOtJEpF)MGTiV&!&y&?coSGwE_km9LM`RFvOF;*aFzb` zA)Dj{HEzSHjxvR%e2eN&qMPv;A0w)|X10H@;tkt%cbU%0=5-@V?U-AM(U03tm1IjD zwn!A#4KrKis>>s2c+)h+uM#NS-jV<3^J1=*HQ17`P~goMLxTGMW>{*OxS3g-J6ZjA z5KPrT4*!cJ@jFsyt2R$XPuTVxn<8opdk2FS(r;aJ4(-M{G3GbS`cw!}qX07z()y$Ma?`Bt*#{l1f0{biCgNJI`Q} z1!GyGa2_$NLDg$C-W%mk{Ch`*N~Au$7Va(P779X0f$ZSSKNW>^qfRU}bBaZGBCR$R zEYIL)4pqjmXJvd`5LKNNS;QZGL4@X5N4TWii<>4Q&L(}c6G7z$=_eJc<&^9`yOWw? zG?f^fw#1s@jU@*)?5uIBEU)?Mlfxfl&3hGGJJrA9g}e}=KWp}P&{OsAS%D_lMt*)n z)$zQO?33Nzkt?d=WK@du^_)U?rR`n?sls0UB`gRMw5t70+o%d#s_ILyVr}YI{~DIm z`{d}n9|{WcuEeLSdv4ROlj*d^z|t~@kivyr(2A9+5c|1QwRO9{zvf)Na%_YJyG9Wm zBfJAgh;?v!jZ0PQw-dh$vPTitTrU>Je2{wr{?#SuwTpjz7u2HZTofFscTG5biKpgk zM<~K|z4%|u{}uc;X2P#4-SqYT&&dE6Cl4D}8z)CaCv%Jcy3GE{Q;PjRP(HrHEky;> z&N6PaF2L%r|RRYj5pN&^% ziabL&O8TytFkSmZ`EdN-j#ycGC1t^<-mMU~-5+(TtorSUclT3~lXn{>5YZ%E{9o;q zFkuQNOH)R?a+97Qq;_D^CnGH51V}4%K7i(+zuwc`xaTC2qHW2A>38rfE+nO5G{eJn zAuhQ$^2r?$;i_0R=i;-+GpA%I1SpI-e{YSQPH9u4zRx|Jx0m$JXLS&jdiGt^)jq|R z2yfMr(X{C=r||y@UQF(&_8xyFYcId(7*zl1kM!RK;bJEC7LMj7|84q*s_WTfXyAN& zba}KaSgc_sW0^xSZ_r+vN{IN1TtI2jQ#37G7mn5YW+M?=E?-uAAW~7`kZ;F&MJ~}u zS7W6_w>~7&C{aC~WjS@<3@1e@4Sr_pc$*ndT3#Ia+_EYOs!JRJc>IzVfX`oY0<)g|Ak2i zm}uw}5oKB69ZMx`=}qM{OC|r8f=rB20(+1@mAROn#eE@DWIpDqfO}h7joY8f+G1`Q zTbPiCrnAB6Nia?XaM*B}Bptv~?4xOznVwuFJ-{W``^Uh~Z$gL_-w}7BSEz<0o)<&5 zD=1~Hhd2Ya0Y^=)>zsy?gSrirWlA2CsZ6Hr^fz6`&qRAZ4QGstf^amzo2cJwSb=T> zk9%bxeRe{xN_CMYEbB}(`P(&{tjC19fABUQts*DcWwTm;AzLG$`ln3$5G_(QzO%Lf z(*bXpjIzW7v1PxR=7kf%m?dfp?`nVu@zG3rpng-5rP73%h{RrV+hKt9H}3{ksY$#q z!O*C^A%@_DI}ARNb1APFwE+g@1f#b1L{;%$l6z?*-qVoiUmrc1Xnc5)SB$U=e-i+B z%Y(OU0J&D5#z5P_Rk2Di>rGXEwR{bq0SAP}9F*xpb+r)5g5C~V_r@845xZv=+Z4-A zlcL7Y3aQX^&5zZ_TFG)-_Nx>gY>ABVYHQs2Hw8*C6lO>8YZJpw^yO-^3Suye=<{e2 zK@cJM@e@X`&o=s7O0WR%#AdKO24B1E*?Kbq@u#V69V?-+n=;vbtwS_S?Ko#Nj4P*_ zgma0%Uyhs@G#6a}Vio{>2a=0@{FwOg_oDcHoW-PbMF}~~!d;YmSA6AfN%ieFr{1Ym z)dRe8=b`&rI#CT^Pwj$)`M3Liv`Xz9y0Ds736&d+SM?w+VTZF6b<}roaCkJ?OAxWn z)rR-w(E~*tuOYU#!CVq!A6=mj+g=YxT#*e?n$9ie#MD&x^Zdi4#^84@sy|86AkvBk z7b4<@@=1k{zbmylT7S!fGzHo|xRPdkRd5*Kg4?iREmft)D{)DW;e0 zy1(Vn|08PwQQDWKH6+EE{4(r==^76VUTMhN?xpC8q&{K9IB`h7MhW9y10zbA^D zf8~)R-sSO+;LRL>eZeU^LC-E#a?VxUh31QlzQ+wHQEL^?JMhdLA-;$DC}wufzygFS z9x%Va1uk&6%39ILTgeo;F3KKPiRQc8 zX0|FGs7K=S4-P_}=o(H$S=4mst|`)VCCR}%(4JCuEvU|m!a?HkE=;lrJbC!F3 z(6iAvGq`Rc-|T(&NVjFa>^!31*+oa%VaZ{@91ivod1}UEvbkf$QdhVQ^yZ|fEOtwm z`6#Q4#oDABQvM_vE4BUJ?F`)Lf7wK#Ud8%sCb^Awj!OH*ymrIvmRy*`9)y+uVxokD zVl3(Hb=1^IIYiiXTy;Bi!o*P2I(mOfVfMe@$=D4mZ0PuGzkl*jd@PnRJkC~fu(`^c zf4Lb-$7N~ridg8xF6ps-Iuix-wWrFz()RYsE?cD+Wbz;hMakL+aQVCUM21JMUx{^8L8?W{V|17g z<9P2ScRz(mfG+Y`oiUbVBo|6f{^}s54zrCzJH)qNY@iv{{mk2?wc3I%N14~f*)=Nq92$M2Z-__ z@qkF@3U=QD0{bRP^zKamV!^Ywo)Ecd%hIBW`qFQ?Yogb%vl4~=4lqAHsjbMgO>L^q zm#Cyyn}!TgxA&8#+i@4M6L(PWdq6O{{eH@OZQqV2ODcA55a}jkjOXAb`uBh+PsFd? z{6?X6?-sFnt^Hzk^$r-r{h^i)uE*;=e+c2Ur|^cEUX{qt00I+pOxZLEo$5^(dWvNs z6HAxnIFIRMghz^aPy8n+Cj6%#h0m0dAx|kmMhCJeJ**%-KN=)MPL{CZAg~L~)(6Sb zI8nWfRoRbaw(hhQ%E(ISV>+a^Avqln-0E!Yl3QkSZw-=x=z||Sm7?(YwuB-p|7hS8 z5?tDHWfK^DM)!||eT_HqCdvlqd-+mz$^6d&5X*ji$4B>o0|CSsJ=}>unnQv-9`my8 z=fjsL3I2;m7*W*(Vc>d6ldEl}ug{Dl4c^Fea2W=YynLstuD7PQN6<#Fw4U=-9j3wL zc2w5N*fx1N7R+ZA=pL6Pk<0phAd!p6y zJ%uSf<9~uG^MjF9>`5-D=(bfL3(2m;k@LXY!|}lRWOU|iqCAGyu~4*;TZl#W9Vr~i z|JiMpm+1|rY#E#^HD`i2Hx(S#E{BBLx62^R*#5lxM*ZuNP~^;uZR+{C>vME1_4B)( zO*fcS)3b-tAM@^pua|W|+gt$Or3Kq`ne=lJaerW&IaPk-j&>?*Ag$Ts{tub9%HoSx z;}n<1!rR_`Ld`7^Ix`ik3W67$joPB4C-8nmd^i^1z3(DceZ$Xoa4rL}ce0K?vsZZQ zdmI-pu_Xhkg_}YI+AP{X6&*j1DCeLy-Dos>r?64?%_brMeg|D?EJn5KAYLYiss}W? zRqH!JWi$nbmo-tQC0%?NGdJf0Z~TLQsR`6o!ghCE?`zMT46muXg;4gGv?kHi+>peW zr?yO&Z|)fNmuP&*%(mNSl*;%WvGAClh6DfTm2IUdmmuK>JBFPOsA|i!PsrkecuL!t7JM_ld%rJ#;^VwgOoe$+!mz({WFO|2C^@hFys@EIBVp?5K30(x^qtw91 z^{?u$EbOQVdpQ#o6?G;w1%(KDG&zbO`^g(8#rCMuT8wP?o<|HLc9mg|8 zj-hgMF<> zr@olH8DHwPf8+0~#(Xhj%V3r7W)hrda;8y&dl>D+gMHG9R|VN*r5!VIri8b864+VHgbI0uFi~BaP@yuXNZ=Wc5`W7=2{9 zTMUiTJ}e&KVRW+{B4`0c@d!_Jb;^m9A}Iul9Xa>0W1&|qbQahw(_L}cwM#)ReQ{g^ zhs=dsfmY*}JSf3bh&d5n+3T)oFg7-w*Bx3b%8gjJAy!`S?_aQe7kza&5>6^C2`JT| znVGZrz$Sb}_YaV_a)@6b*CbUWnMG{AceDP8iJ3;7>w^^W$_!DCg1j8@W<28CU2*tU zFBJb>+*Du>f|760!A(A{pA|T`4ie9nE!{(l$x5T=s#hrv95||hW^(MH37L*Pi4FqU8Z_1P6SxI zMvGx5T6T;|BW9i7%s7@hHD8yxYFl^TkClDXPetS!;^gx^>e!Cbsmbon-8_Yg)LY!nQs^D@xU> zX=bjejUj9U0K7}Bl0;SJ2m4C&vp#t{t63Tzb*>B%yFG;iV~bliv3DQ zzI0p)x$BX-u4PFxi$!>W-@=^7p*#SS>q38KN2Z!O-%wlq&yt!pN7G_}yu^h_wHEqv zP|!8c=In*^tz48!nbI0P^j8&EQBxZmx`FX>I!Q7o61dy~wYfZ~)e67k(0iJJVvlVqN3<%H^ zDcE_scNt}frwT~=GTwNLh0hhh^Ubx6w!=brtZY|`ENRck8jbrTV{6=>=F7oGicv31 z3zRFAyCAYJN<0!IO!=~Z;1^KUX_tL!=U!I=v>R`Ybu98-TDMENi=s?C^@fRKMzM`q zqsUOb-dlfXGfi+upuo&MM>z{}HKxViaMmzOk7^m;vDS>Yg?Ny*F#`3==&Pil_3+~3 zB}u-L6pmU)OT*Bv4v&?HM*mPBMj)qv|ClLIlH^}bpw(BlVVgfpWi2ryROaD4BA8 z>x9d2vp%#y*?;O_y26GXm=kox8~rR$^G+to!RV`>M1fB!q(~SO{RYL4=><_zyp9)S zl!>q?k&x9=hbtW-J*`lTS8I{OOG2-lhOtyp5#Kz6H%(xzmOf@)!(@7BiS_L`6DA0G z=beJFkM2ARFue+>l(B$Et>u{ml5ghWp=KA3dB-K>GeD$4qz5HD&AAur4hRIbB1;b! zst{bX5{y!XA(Dx>hJQhCT99l9*Tx^D_-ZKeRr7{i`v8hNX8?wm$8i8b&rJnVfuH|+ zjMuo@h$FX-0=AIP$Qy6gUh7aIzNimX!FW>sM}p4^T^4@PPA7;((q@iH+6_sgEgZxB zWkL(cePCRSk7FsjCB9QhskWlLwYCu6Vos&<5e}h?_Wb+Or%jPm)SguFl@irfe&1wU zEayg%d@*CR)b*&*7Zt}H?dLLAypj#6A&Bx8UxABJR`q^_M5@EC10QDjMk@hF2R!|? zGaN|o&hW=+r@`j9tZ-o$sLzLQ)p-_n6{b&CXWyT&JuwYic84~iZ z7M>Uu4}7p0`j1t%NFf(YCf<43e=U3^L?WgRJ{Oaq(LT4(|J_Tg`MDcl<}B>!_}L=+ zZ*RP44J$`H3miW|-4@fICVy_@xkDT65pAVoGP%D+uQy3M;s(a*$?t90{A8GjZ;okd z$aGE;X}`)$!qlk|!n4%F<+CE*Ktu-(&ElAY;J^Va-~c2)M}ezLofNb7si>yy`l~0w ztJkiP*4nqH16^uyJo|5R{%dt8YCs`L`Ioub_A8iMPT> z4n{jok2d}IQN%bJz`7)dpT-Ygzk2r43o3;p?TLcwq)NQ0A$na>1uL%~lrVPW=oK>X>br{Va>vHIE( zrk8@X9XG=D?l~QMgi(QNVsfZ7P&ef}W@|1coUH_%R-VR@BsGK~B2YLSG?&A!a`Omq z&+yKMrNE-Z;C$3N@$6)=AC#DUEW+64T@y5>9GP-0dH=y_v^Fvivo5FF@zx_oYjmYT zZD%D=v9oT2kPf@_ANP4u3Gmn#B%}I^Xp}T2r3g9ZVYIz71-;4Rl`Re64^OuR1V1P8 z@Us{gB7?o6A~lvTU9+XMF5b1h`E5QOCa}-YZN?L0f<%A`p(nNCXt)t{%3)hzHIgBL z+$WP5m$W{gl_$%^Wx#Kcj>2et0}NR@1qsK^5Gi?zawVs+yKzA0JJ5YVW^UgZU=&(U zYiw-JKeuHv1cbNx6O`US034S~r>*J){~65N6PCHH{?9nGxJ*DMO{svxa&w+ zHcmH4AH%9}(55G=Qjb*QwJUzYE6*?TtV7>@R+*kdbupE0!Gfk!Gd+xu$!{svvQ{^3 z2<+^Rqk}4VG-b(^Ni>hR>U>tL11p+>TNPWIy!Q-N8g3t}pC4QBO*xQo@U*w+wSwp2 zW9Ro=880z8>VoJ6= zXm=c>6EmxvW5l)1aG#5F73h zkZS3=wt-|g#eLE2$w*TO*$+?a$Ry~@Ap^Qh{CU-)J|_*VHyq*4nqBs3=$~9GRM}Z` z#k-VIrhCdAJV%-9?wl-@eYr>Bwe%>G{BVmv(1B83SISneqE<@R-K7kBF^liq@2#Fp5!cFkVG@#p zh+!EY)2>~5g!z>m(sOAo<+UK~Td=&)OC$Yi&EeaRllYMKmb$)>kA7t~^WGGMT~f-U z3w#`D-9%>uJ_zv?;#yDHjh-^$O(Rjgo|K0khT$S=Y|f6gzZ{E>>P3pk5=wuA=yh_#HNnxUa}+x=%H zsf=5UHA7ps*AQy zPmrjMjIf_Ndj0A3EBLYdx0k`h)9uIkK0(X31?*vX z2}iQneC3&3^LA_jrWnum?Hw=SkTgx<`R0JX!#_(j5}bA{#NK$)y@KW5zjA;mlz%0M z&hC(a_IqxS8NFC6(ag=~NCE5`1`?_>Su>UTx$WH{ml8FFRuQ4^u9Z-gm_-k@?XP&3 zz2jWH;^@5-aGIIl2n*^ZohD)aIKg|G%Q;ct@~SZj=&t|aj9gMFjBmj??oL(iUcj<8 zhY`%QI{zj{kPv48ae`+Hd zx^=>C#04$JoogZAc&;?~oP^x=(mK8~CC40fabGr2;4XexCgW-OQq}9q1=A~djfzIoOMD%5dZuY3q~?rUpaSOWzRfBi z)*E!D_eP2Jt8ph3^U$en$6UP-LQrvs+UM*s8qw{~78mPS_gE=C^zBJpmD4>W)O>|`W=7KMzTzu@3(!Sqiz9{=ZipX*1i z&JMOpM)qd58oykHZ_nxTB-$f6=9o&l>Evu)&rdjx~$}y<{(t!AOML>>t}2B zF5N?&#l^o;V1Dcc-mHEf=k7$Oh$wok<7(t$+veIn{{THd;LVpAvBlzF9yy{RO+L=r z9`F+y4fO;0Y0G%8@vC^XOh%u6Y8~=bP>6)chz{B165ZyJy(u+wb^6WjvdVz^wsCrn zrj%AjkKo(ijf(h0CVm?YEPjqcL=>lx8l~B}{>&wM9TSqU`_){#NXc@rhpC5!M$N6|u^U*z@uZ06 zee~&gwBmS!K4Vz`}_3kHIZ*Wb@WBZFQkX!3NEeHDC)cIZ)|>;s0?qV0xYm5uwC<1MF%aUBE3vDfb}D4aayW_A$z()0&$ZA|B>7PAu)B%1gN6ea>aj+Qxd=f=$4R2`#FhzL&< zF5>pCy(+igik1V9eWJJUq(}DDyPd&Z@U+ihT>1I82AZNHR#S`+TZw=_T>QI#a7rc^ zwhp`%y3QaGjt*K@5_v^}tyb^%-cFxQi<#q;k9!aODP_MuepM7S^5k-ztIN)!Xwov1 zN~R88qx1G(Ic>5boezdbJD5H2OP0*(c*>?(!Uo5#!V)GfNSFa?#f=cExcEiuG>{7oR`lEFv#m{cX`fB-&<2!i2xQ`1remU`VBD zx44M6^P>l|_YE?P_X)DJ_cL<2!@eT1q(w%9|4drZ!sUSp>>qZ6n%ElpVv>A@pqfzq%DvkUNn??R{0sWEYa6fABa0Sv!cG1cySv;unjJxqU=jUMV_$*=FOP{(pa zu8#$IhS2wC?J{U-3mkW8%j!)OyfNSZ8CU&ff+~YgT!sI4xU&5>uImbD!q^`r)%sdk zvNj~1Vs(4&JoK<0xDFNAQw5a7np<+MiSB3aspp802ExD-1Q>1`Y%GDVl(uRJ+)(BSlPqcagc>004P=tQ ziy`TSgUk&F7_O+y3A;ZIH^ef}Eu9^m(`Wg!$+6fWf85DdQCY8X=!17%+EK&m`k8l| zf2Llwowy@&Y^I(Wm!{^|blE~$ncdiy=-`i$BW_=DZGJ7euw%W7L zxoXUXQl?$Va`Ylb(PfQH#m7{cj-D-w<-KWhd@Jdwk~rEyrIyMqnAHrqve5f9ob&QH z?D9B{`7#`;PV!ha)u`3Kq8eO|p*<}mUa)|BhLj|QQ*EJl8JRl4*dYE#=X)lVs9jp^ ztGK!NhCA@d^i9d(^mWPQ^liyYz9Ba1h4fPE9k}6RSFZ=`5sqk0K{3sg43ff6R*R3_ zHn>f_6mXL1xV?jVLpQ(}35b7*7@yvMvwkZJAND>N5rftW*Y~F&1R5tIncCi~3-F$DJy6!(b@I$WI2z>e z(}oYPix5`zImoE4gG^nvtk1%cJ;WAN=?{$ukCrUI1zb01z!)ugvKF1HZ)IK)@Zi2l+)Cr}sH5*D3LWlZ;OzA#IZA)g~W8IYh zPmXfN!LWH+PhA$Z@m!48UYK#%;An{@{2Qx0!o3n%DI}w{?Kd(l$2dS8IG!c} z{BB0D_&357dVbey=-3nISAujStwJvnt80TlT)~Q}lUV{{6jDif7pz5*UbkZl#St}E zJE#-NooLdHsFgHHh%Eb&#p5vA>O+g7uW1)o<+FRJ`OBK)O*qAnQ5b(E>6VzqiPpY! z2ME8wOFl&0NB;hZKGn~@wG16G2>BpGH)&H?<|~pTzxw#%a`YJIeDoCOj`bM#tZ;*V z>uO$(3kqQ2-3;`K0*3TY5Eam?}O*70sj`WnTH8@4qe8`hULv z=pb2KCi36mNFQH*CEaB1YMA_lpB6mSak?h66nK z=jEPDh0#YX;EBH3Pw z=TRmvzZjx9;!@rCA+D*nXOl+OCL{6j_hkB4J;b6Y2&q!&d9 zQxPmn60Q1EP!$QsIGuw_wKPO_tK1VnI z7bO$tKREr5gL(_h=mPc~MF=>nw46Ph%hAj-*g@Y0;h_C#qZ6tY z{4i0$!@q6e{DpD4P!IgZPN8z{lI;>R)9mv2`ijKu8T2ZsSJhnq+l_7Grry6MR31r} z@RAk8mLuttha@&VE9=Ih0HVr~7fU$1S+GiwZ&RcAt^h^l?UMvI;WIr;m{Vp=N}JBo zwj`D^mpJj@TU{Y?)TyW4{VGDM-EE4!jJbsH^dmQam1-2ZL?!%5GL%eN>#Hc$63)!i zPZD_nL)#1}>^|f!RT=d6tkmMX`3{3(XaCOmP_C@x7 zAryGTN7h+B*z)2M`OAMZX_Cz-j+3yna!!mox4N0>P1|=MJMM`(T$c%PKiwvSeA7xz zc-zWw?-}=Kmq_x#mJp|m-Vo^hJR>B!TwsqHDH!K0>HTxHO6t88C;%8X7}L=RtazNz zwRw95V9lm;%Ql_1DJ+gSZpQfV!RLx=rJk_=6*1dCGcC8WnW zoxtsEYwGZFN6imrL9RlM$p6Jch#$e&9Zd#N9YdCIW^#J+X=?K2HMe#`SjZ0a@m_AbEHKuy}7t0H*KEadspEsYW_WaYmH~kyHXSfZrsB7uN!QJA_?HAHvgXrh4Rnr?&YxXCZDM$H$gl}cao3umHo zMcxpi!+(jYzUqX}? zK7(S6E~0|{ND-->is{afiF=MQlT(+se<`xNl_9j( zKgEA+jQ@wD^S|x)`~%Zw&7VH#4;X(xC_DKY8xtW0@(Tlmz{yEMNkhp!_w60g;-Y6E z85G<@r*_P#rWK@)iwo4f%j}wEY%YQ|o11avF~b5RA#Exjs;XCXnwy{e?d&e{eS6cj zSIF^3iQMkSUiGhDx30Rky|11!skS#8u^`Kg8=_+OOh^S8_t01w`-@rS4Jiu=)+zKD zfv`R*!^v$jgG;QYwpcebIIt}fAa+5tqAd%a_K-vyp7xl;nQ%~75YuSdwD?$Cj>|Uj zZX~LGl4D{JLDrcpX%GIO?Z)JoCU<*qVy*Knhe8kI9vxNpflC7rOf*tn^(@v-=eStsZLTTW zvLAjh)qm!NG9+`ui2z8*TpgdC%rk`g=abtGH|_IIv4U1I?^ib^GIlL-ojv4r;Volo z3QZ&~B826%B)Vi}nenf1s~^@ms@ebKQ4FkcHqKB|N^s8Lw#uz7w1^wqT@w9LIos;O2R-g+C0Gn6P2@?wEvf`JI`` z{`$}~vIX|v754Rk^N*Lrkc;0C271?iMYi$pq?&3u1m$wsIhkb}I z%L_OsqbDcpRDna=BQue=V09g1Yq5mgrq-{ z#qACj4(5cVqQ60WSHEUOr1cC=%yqhTQ7{-1zTE}I6@`&wt#ojVz$EKH_V(Gp8jRq< zi*L!4qVY9LQf_#OppiHf6qd(J3~iO^E0#6~DKz+n8^&`y7pnAUN>PJ2sCswzTeIF` z61M|y9VNCrk1k&W1HSJml73X}FmV^{FuWx@`#K-wCw+xNPp~UbvgeU3E^VLer2+A6 zX+mZm>1hz@?o=nDKLZ?J02__9s2ce(KsnQ4dRrxnQ*tn-Nn1aav_QJ0 zS~kcM4+Bg0Ly*=inm>|?=@*Xn#9NSV;Y0Dm7%;^}PpBU^YohMA&=O}uw5iF;EM<7fZDGv&$P zs~g#z-CZ{4T!_vo-x*+$vsS;;i=lYz<)xWmvB|ATsp&a018=(UDW%uN&ew#Er^D7{ z8m9Vktzg8~f@sK8QA}}ODYkXhYbGskbeCV|%aNewaSv(y7M*dXu4^_M{lnP2rz+a@KB`u^7k!S^)-YxA@Sdwj`ov3|i*>^z-8| z2h11+**^j%tN5!_`?pITH~e7)e#JL|4vHrN<`Li5e9fZqm3iyM-#8tS{I}%o2;!$- z5D9nSV)lZ_kezMz|6XeJ>|Q=S*L981X}WDd7%HjVQuj2xk2g3uEZxHNb~A_eEUtk; zbNg>=EGB}2B^~0McY43R#O5UqAAx-!f2A&w)`%C*D-hd&w8HL38J&X{xgb+2V>mA> z!Gc?=w|!NC34a zI9XYk2E7V64n3}fS@JJv_4dx{n3P3RN15uP1fU{8zwtD^nd6#0J&IDfOpTOPRkF68 z5&~~qF+SGhkMvNuj?jjO1}ix$ zw8m!X>KM#e!;DlD4vbhVpy|ffWDhX!IV*tI!8eVMq~9BT%}Uaiba+I_+EWA7VFz;~ zu+>2{)}h}y@?si8($*(v%=9^DiFY^7MR>_HLCKU-+KRBXmQ|uea0H~-@a;f$witaeXPGrr@iA!?na!K$m33>j+7xm=J0Sv=a|z&ghm7sL3cNKc}BH$ zIIlsGH+9UvB|q)c${aBW(Q1Z(1BmBX?t8x-v2u{zcWI1>axfo(IJ-FfbohfV181HF zo^VWXS3AT@*_w4Z{G9*>ZV>V+TxqL+Rmn(1A4BhN1*4Q}sMX$Z8THCKJS>sG*eSEx z0yq|sHib8s(=l|N*}1f>#8=YJDE$C??6?*CWf`g;#G{Dy#(H7`=~dn^(x<_rA!oCJ z=;&(?kj&+pQm=cUpAhruyFiB~5J}|v6RBH7vo9Vh*`fV~d5C2C@{D%@FgFI}w z_n9P$f7%lMTT8Pu;UYoIA z1a~NynjI!(aMrSR?2=r&qZ7@-0%lGpcCA35>7h)sSjEQ5#!lHZP$f2}=~1xx$@kB4 z&ST5pCv%Tg1Q?R%sZ6fz*UK~C*ZaSO-d~rrNDj~1FdgO{vqQMfJmDUXAq;DQUpJWH zvOOz9T2G+&pa>jB_yXFLN8~*}uPg7GBYYlyyqUFMa>Cmp7`#Ar4h`XRn*`_!Z!nB) z6#@y*v!fSo3<#c#b7P)%1re@N<6Z+nzl&Cxz6+KCML~5T-`IV`Mgl=)F>E(1?R>Di3OQ(1gn8?pn@PDX+UZqC?W>C=Fhb{g5koooBwHz9TqgZ z>*}=QB0dL@OoQDFsdf|Rq9HVt!6LA)YT9nSlk4%pZj158J)?87%;v(qa8rZR22nS= zC6QBq4|0CoW{_5)P@pH750ud~q2+Q`^SXib?n8S6SNYjs)%2KQh`*Tviqlj9l*N2z$C(G{wwdEM*_cbV|(Jht&+evQCE+epidM^>z*+Oj%?boh# zt1wnVq$mhp)Nd;ArApgw5wuE}?VBpMjHm{~mLpEIoprlUhwElbr$;oK(X3InTY*CS z9rm2fx8)`wF^NP^>M`aiZAL{u@50SpGk|Xovq8OFSLxNT&PEgZdx=}bw9nnyQ5o^* zAGT$?aQKY$eGWP;dyr(ErCNe|{E2o#as5npMnK_x0amz?{&sCr0L9M*sP9y8OG^?P zuH$`7*XO1kTWuz#Dunt(eq+poY2qm+JDQ;8kZo)bgP+CDlcxfJ2>uOa#s-w={~gE# zSy@^u1O991?wm;}r2#N5Q`C9QUQYw*7C{M!Q*`5_+)3hTc4R?RE!Q7Q`&L9Mm3I`kAc9Ys0V_ACn=t9a+0|;mA?)`oJPLXvG-gNNTRGbXa$|76 z+#-S#Y|flmG|6F@4yB{2OiE#`mDVPdeCmO1`wdt6$s9t0WetglXMZ1EU#2O}MB^0Q z45xaI-O#Nqoh&mruuTumEhLTV6v4KCSwyR(Eg(p1NpNK@RZjP8y)ckKb`5xMH-bS& z#wZ-$lq_{Puh}Ar(L}?RMzFb4P2Mpoy{0fvP)n@Gfxzk=ZAM9}q^TIV)<~n_-&zv( zNAURi)4@rXQM* z-2>RDJz@z<$kdynQ9VvS)fuQ=WWu$i%Q(?SB!Z=nMhwS_q1C48@F%h7$EQc|Xg2uo zCL7{zOQowuqwZu;G*6a1Sp(rz6EYqrc&udIO^huV&rtO@LsHReNtf&~-0Kl$5|+y& zot=A9B$C%mAJdBN%O-s0u_197=0}4R&1IlRc`_{__?;`--ujOo#fKW{I=aQF7I#%Es*sq$rE!M*C8MfcU@`JbXWzj58eP0v z2DNMfRs2^{(_TX{TJuGZE5S-_Fv!@nwzR{w#(oM*GS+4sX^0OkjnWPpH*-$!4P)$z zJWx=RbINpy)WtjSpT3U#@EtAR%G)L*^S*3e*t!awu&kCFQ|(|#X{Q@`1U2(bU2!on zM83kxcb_;$%%b}}8^QeIF!wgPdkG0Ttn2fTiZMH#!il)b>skt5hkM4_SqP1M z-kjM~27!>yEz^baD4d~nCQu;0Q8LpZbyKjvGDq<%kW_`#@q{X^-$Gkg-lfrP=PMDq z@n>=o_fjemW#o8naUHB4N=9yMeTeNqi z^iZwljraGp{E;qvbFVxEOs_y~+h6vEmX^_@meL->iK7duR-7ZhHt+<8Vi}EgYEm^> z^(yF!q({*kw$wwCaER2Ok44g|mphj25s3LU71|ZKh+!N^apv3HKT_|S_X0hQZ+U$% z$L(*{4KCPjcS>;GIy!X=6XgBvtMzu(W5!x*nXl4??o!XPXoM#b>KU`fXzYVu`5?g3 z=K2Vwm=qU0G~{s~#Z2@_^INOq(>&tWZcl4K z-JiSlcx{7^V@-Nf)5tz&jg*GRR%N*hq8#x5&?moFv6}V^`ZOl(+T4?}>~77(g0Z`H z_bSS9vU{4G2AaJZbT!XkD@-1EkwI<^rfo#wZitxJo273JH*{yWdw-j_Wt2FzH-8X_ znm54pV4B*Jbh!dx-_#EI9b`4r)7U`Air8?S;7iNfpK2%|0&x{b#=D@{e3GTYcL_RUG}J z<@x7=?i!R1La~srwXBnzkS}Xr$rMl>cZ+Z5Kc3!gf_D6>;@I9ct!oQ)4)1z`^ zY=WTED2ETxm?K-`1WGzq!Shy&r<|+v=jqke*Ac_sj}T}~WqBi5E`}_jc%yKm^j%DV zT?ijM9egFGpahM$W2#Z~E+N1-L=k%#hm$_(#wr3k6UHZ{@8~N{?YWmVS<+U{Z!L_v zu2=uFZ}uRyA0_+Wn!7de9kSc^zbbUh`RJJK0p9DyfR+=_h)la;{X6hB%98;Qr`Cw;Z5*#=z`?DE>w}lKM>3j*03oU%_B@opC@U_d&>)lt9+jZ@8F0S>o76-7N0b%2V zUP|Eg3_LgscVlFY8vwAheDikf2Z?XD{?48x$=9_u2@&1%UEOwro~yWu%jc{7(`-Hf&Cr@)Ag17{1W*H`!O zZo4c17H7##M6_mny%Q=Mrvl3)YnC~8U?b-tb7EgACt=;0D1XBZM$KB=u+k4u#x9g# z-3@~2S6xn8Il<7o#ro7vnZ=8oAaC8y3e;0hCAy=JMt|440fV~)Js!8b)2~$W0t?%) z7q>3x7_M9JI<=J&>W~#{b^upHJPq7+za1;pod6nFzWN-G-R;IJ9_8Wn*9YEAZrQ6{ z^xx$38#oQ~8~6gMzwUi1*k;@h7qZj6ijR1@73T7wgmyR@K8ixKJhq&3M7b?=u$?e< z!?@Ee;gqS+Y)B4G_ZSAV5~W+>Tv;{Xme~rTcfRHqif)LZi)(2Ou+ZNr{zmPT zm)!2>*KkCsY?GUL<^L&2&cusaO9p32Cz%k`f{%(ZxBRsjZ)sV)!FWxFoUW!?)|8?t zxs)wo%`5Pcp5baLrfVc=H7upoF>G;w3A@;60lUyCYM4731~;*njKpt|F)>u?`^ZgB zmwOm%@n5OZ@0*CLsUK#zSsxf(n>^f#f?a4Xh%C3NTxxm_G6ci+e6E1cv!R`)a}<(( zgv1VbV^_Ns{`dss-#HU%amMO}Z*$`Hm=l13`@Uq)9r0P%zw03=<;tw9o}=w)NuY0ee(o#tb^u;=yUx-1Go<=~a?WxM0KmN*PiyG+*``Nt~;5 zOqnmmNOw+08*E3@0_)qqdftWLTdxgDNoxBSnQKhGwz|P?&&3a#enV};8xbIQx)B-? z=Pq%}AUaFyM?+9tq8yyI_8dm0o9X>=%p^O*`3%)sF;FG#?L0*!J~#}<-9Hy9lYr3r!5DPTs_4`U(`MNl9!Br(M`gIOso{t-)|KD z%FXcU=kY3-UuT>y$~S11nr&n0+NtVJO#_TTo-*Q4F3t=3H1@j2g*SsYR+Y=1SiZvc zUMXoVYW?Ad3x^odAp!nJqs&Fq#%676L29PZUW^)KaYxdMqH}%t2H4nrvK)Gxj)Yj) z9dD=R$VxEf7}_2jN$_0*HV9_m4oWPup|bGfh|i;l&$Ecn;C%a;83;x3bIcAq3|rzn z7P!-W;`glZ)HmxThExQH=M6-ji}&D(6fqcz7Zg-#AYOsh=fhRwrNoC(o(_fpu7Rg^ z`AoRg4XcX|PaVJ*?>m(#mM5|8$weF)frmPwY__2Rn#O)d4p|VNAMrAcs8Tt*nJnz= zQ>6T4mX|MI8F2na#HLYL8a>;0D0$zk}Zzq<}|1k^AieRf8>sDqv&=#V^n)vzOKg2V;XFr^LhsH zg`;dhE5e(`^HuT1%mFHnM97(MA+vkqq;Ox4b=Jg>B%4%Ci8ecDd&ugWLUZ)9Uhz{l ztEk2K0Y#kRbD2iXpHksJ|IZ*aKNng)x8W|4zkFf%|DD#Bb1*X1l9&7c{?(#2!+)WT z;P}!_7?5zLg)QJ4DHD+4tp^05o`PFP!9Z!dn_w|Zuhkqh)6-sMY+`W6by_8CJwbLe zWpLVoL*VRjHs#x`-S=F*UJ}I{ZcoZcv;+s2^Q_`GTRT3?H$M)@kek)j+hwn z$50Kf=wbq^Ju{EH1%f<+ZWOv?p?mp)p28lxX}7S3b+TZ0-wWP_u!#mk#jXHG<38j; z3wsB0&_oEkCPqH^xk@)<$buB?zPv#*LD#Fuf>;AbqTF}`SR$URK};2(gox6CHhpeK zydHX6Pz3W`E!IJ_c2h6(kNVF3fhxKryyVv@h=YT?~ ze5txW@3IAV$pMX44!1Qv7bWmgY*=RG>B=pNCGq#H)=`;VXG!6YDSR;~4^vb?J81-^++s#%cmi#fDiE+v`ad;=e$~2W7K1d_$lj+ky)ec3=n6mKpvC z)~*R_!yST9$8pw%tjFU}5^l3$HH(2$uZf_+NVTjWQGZIG4!ej-2f%WIl*91Q3^w?u zoA*9W^$VD~)uJz(%=qqqY>FtYrQuQ#r3Fw3GMbEt)AFbq9SoyWZ@wu{MI^varBP!i z6u*iD#A(5lY`di8Eqg_1;(qv;ez0rej7L*z2{>4L*qe%}&=Bt#vPI@^E_+U&wYn&b z+p0ThbCaBu>?}J|ChcncaE|n}RY%U|%WUfY?4{u59GL3T>JtADmkZ)LuQj-@Oahw{ z$&Ik!kP9sTW2n#_pj#uH&;oJ6BIy$cT#1ROwF2?xEI5AA90Xzm-MW3NjktI@e89IC zulZ}NJvn$sd+|0qMBZE3&xf*Ud#ZQ&Jca*bn+$`=8YJkKXN1(D_ND}gy*5GMtC#Ip z5&q&E#OrFGTg6kgM}_Mbk!uCw@yq|AJVgr*vsLQF&0ar^t=`q5M;R`3%$xodJcZ|8%n#S;yQulY`!3segJ+> zGE@q5H2;)U^ALdgGrE?tN+@8|F{jT5Fm+uY7U<3f5A@aVn3RfSZ`-~vGXree;dLf} zZ-NKD)a~MU{r&M*NHdlYW1?vg=wx4hJnbEv($T^*pttF)yZ^&GNpGB6LhZ{EZ+>}l zx0J3=OH`VHTlU2esVYCl8~k&!@a(<=?nlfoOAysZu@O<*441NW<4l8jyO>M7*;J!@ zSO^zs<=!^#N8sNVV=m{WhOFd<9+S}r{G6zvv87_hdk=iZG22EaD#{VFF&CiU$yrl% zyd3Wl_N`bKWnI;=tB1pw~+bQe^J-s**N5m9-$g8H2;h)@L<5T)-@=tG38NnSLO;TAl&F$mZrK~FXH)gO~S;iH~r#FB0 z1REN8X3p8Vlyg#YE+U!X_U9frsx#F6y$&!>*yvRuQhPA93|(8Rt2*yYIJR-d4t9ce z9l<%1!tDzthZ9K*F*9Lw{E>{CR8S*Y3s&45(7#f04^QNGk+(M-dtf1sv8Fm3sKYQl zT9^&?IwZ9VVAkBtJ|pE32w^OTIgcBNCE2bvBuu1mXtq?1+lubh1qZw%=gNE_68nGg zTJc5|{?Ol(0-#smmgFNUkhr2m;^y=hMDPy;yE_36BWJmPE&KqYr|5~f0VwFFfQS5~ zSoKlVHW$zeWS+s78Rw|WLY}>Y- zij5Vl*tU&|Z95g)W>vCc+qP9PZ_eFk-*@(T=k43x&)M3Xf5seb^zrqtf4yt_!lv3$ zS_*nTL98d3{z9yYHzoL^<18KDnx<9@Fp~o%^iy#pX^bI z!tu9czwVih0JDHSc$#nF_R0sx>iD32=$X&fV$29Ulh4^7*-m+>RXGe30FXz0ijb^| zja*hU6Vnd@+DEP*;YOVM=%Km&nNpiuQPn-nj%p zBCI_WVN>P|X_`8#k4e7aIULC*v5l7%HJ`O_Q*PYl72F%q3^ z*PV9dp?jIRU-kUdC=0WX-aQA#%EqkY{Bvj)x0w{nXagB<6c?OYucj5|#SW`mY_^1C z+PS^W)SdO@RBVgi7>&HX1R#5?)pgZhpG1t5XqMyDEU4(@brE3>uoI}k- z{Xw47N5kH!1{_h5PV$NoGe}`mUSQR0dhjquM+or{W(n`3OZ7sr z7#MyN{MYM@(+HQ4(x+lh`I9{0{J&gh%*-ro&6G@xOe|bY9LbceT^v6{vHnp*Bm=#a zSH+P&vTaBTVDO-zC)p74=F&oc6nyyTOHq$L+ zDbkN`FMZ>DqYAxP5HUqj&gyLK2!F4ycIlkvE;4=yW9^ofx5ju?Vg0G}_Rcdz_zR#b zeMHftmMm+HZG?fqeo|Mt`e8{&{irF1+YN{plkagv^RT#9>?xoEqM_xhCr7bEoC3UQ z0o{>?B0Ucd5y7ZCAqqUP5R__WjLwXa&y>$&4-zZU-#%OaVcgRy81k*$xOZ^0r z6t`Fp(x_&$dbN!mj9ao@O89KL3!JX*VKwLuaC6fq>e+_uCMOb2^r4m7sLQhfC@E>@qHW#ebUhypDCT_s`3NB96~BX95_uK26|R)YkShdHW*!G`;lh0^4Zna%rfnmLOHDXsPPp zIDtXmXa>UhF*rx$RS5>|k2bKBL;^`;XPk8Ju@k6uS!HxzlZc?AwxxgM9r@Dn=yryq z;z>gMX6f5h1%yC{W6;4ty5`M7&sLwd`U@%Ov|3>?3N)QTTNRnEMyKF=*jcxi ztucuvhs=^im%R54EmtQ{_)gyEAQ!b#$_}m9)?kz-u#Lw{Cq$`N1P2w+1Rdst{>W;VE!ozikP=bHa1&hr( z7<0sF1<0QfP#PmSWtjq)30Yi^ekkpd!6Wm7b!`V!5eHx-yj_2dpGe_h=nANhe?{Hq z$^ULXenHBo8T!mAFoeu``*nr3(IyK2S69r^d*;uEnd*X=2_G`Ygo~SFe-kM^+?oO} z!n*XZwYz(9^VL5Ws}h-ZD+)*JlT<-e0tJ^QKjpR~ejhl@>k$@wC&#g6ILG}y`71Do zl`LC~v+L8yJqMxfM_Jn6bIc=El3=zjH)ALhWL)l0RR7rlI zAQ$Bb3TClm?7|iAfYrTg28Uwm{wT%Juy&EoP_$XLCz#pINa;BpY2#!VVvnf3+!wKo z9;zxD2S}=VGU5O3K>`nz40QfvHY8!cd|~|mb4>m7czSX}QA2yz#R!Q~HX6=nZWilL ziGz}|T5MG*m{zG*$w%%$00qhhVdI7LInUa`e%x2BLFF8F^-o{#ZZQ@Eo z8Cq^%ZDc-N+^k=2xTOnzyx(y)8Z!D`{2}0D3{j>*NmI4g?7>EN;;P8UmqPd9q71=A z>ns)Sml3`<5!3}-(>Mz%8FKVVX@aRC|KS#7F`Ot*3oSDQJM1@-7t-}FGUT;3s3i)4 zg~1by=nbKTOMO*WvCvg=KputBHBv-rOHkfI2;?x(Si>GY?k8bnX&fktWxegUp~Rhq zZD*b|;^ytJBgSZH(71?VdAvz<%{avBb%VkF+irn=SG2TuQ<*d3KrO}d?rk_NwKU)n zQgsdC1BlgFizaVv7~1D>lcF+(LLz3txrquXoK_q+m;Aw0bw+J#?*!2Qz1fgFTV*XP z{sYK^GMd6WsWVGd`XV>#jK~7F&bkop&kAQ_)M$DXm5Gr{v#-1sj{@i4YID@a+HMqa zcw(B#Ylq?#h}&xZgF$_+g0A_LwRxAN78>$yNh}akd$w7WA}c}6Nd3zVHg}@dg=Jqt z7mnQ+`k#fgv~0K59E|VZst0+Q&X@Xb%kKadfVlBmO6`&id;9=yo~fY4lt|F&x{68v zFchd-JehhGzeNVvzEM_=3rSf60vT5b^3@6@&x=X~9UVu{EDqVAR=ClRzV%h85nJ{$ za6=MuiivmNT8oQWD-1bUOY~&oZ1j@D zleW@@fa7co@FukuFN#WbRv18eVRLweBVg#PJ8-i{Jg{}f(!#ACIM0$l_C%e3yZdD@ z3(xrt2cB>%A_VaoS;WqWA~uNy+o8-ecJ+d%N`Ij4uMj-pE-FN>CeESq~cDnk7-tzNsO2?HTi*NaAAe0M+ zbZ<06GxjgYlG}37RWS+7UAsIpbQDjZ@x?9(<~?*j=@bFV7od7`O*b!7>@maS$^=Vz z8gRgti6>i==)Q3Jo=qXSKA&I85!wxYu03UU78b&`$i!&9)@v?x!8|&TU0J2C@6R_I zJoyrQ2C7xyW$i^!V@KvWt2GHKA>lzU>9m+9rq163KCj7?XJRt@}Sml28N&nurVD@Uq+o@iB?qM!uUCfJO( z9U4CatexG0O(=q**+FxY1YO$kw|JP>_+}O!lE9WfB(#c&yfjPBuq!SWmW0t=w+P@z zg$csn;jG0ovK;y3JA@|Ta{eUF$O-0)Yl(a{9C|NSBOYMNbOfgR89|z=jf7j1xs`M63lY~?NUw@9B@jn zCuW!!c~B7>QTwfgBnccbUiym1<94=U36J<{C)_Zx@K5aD#*sW&4`D0hm9O$UUro34 zQzi}+^Gj2WvydbFr+~X?b@+Y6_1+0s9vGp+HyWDwJ!!Y%^hMIQXkyF4PDGBlRf{{c z<_aiOdJrR*2}Q2Y&8iMhdlT}@QSX96OFeVffD9G3pd{RE0FmU=D*%Esr7@VYd$A-C_X9b|Iuju|IpKNpC$?a zG&cxV(y{svYPuynbKS+N_HNbEC^JQUTJ=hfIs_>XDKJhcw;i9s`@!h`u;x-w@l#Gb2xZUPOTHFvk7>nh_h8wo2jU^FHB#ls zMZw`$j#6?UsjriDV)gV*GBwI`rZzps70^SoGFiTVN3?Prq(WNl6kxTD0LlE zL^_mkj7d+!*PCnyvp z9)Qz}LqN9l$25SV*}XWjd_U@t!WywZJQ*Ty#_^8*GY9xfOE!bS zOMputxbJ;QKJ|0Tr2w>60Y6; zt^__kGnA7W2mJa7`VPSlxK29R>stlN3cWPd<6XMrUA>c~Q)()cS%$F+>a1^r^slEF zJ3K~xM{+f7!4 zWkZPL#7Mz{AOeE4VPV3+rn8V_zb1ScfDIid!(Kb(!$4)Z7JOu+e>g?qRK z4X&_LW~d#aaP(N{udqGKBT%s00Qq@L;0ToLYT!>EKYBBF`+bsE3I6Dh^(fcq_PW{1omGpU42Pwd1`G2B7y8qo{TMQ=K zYwsWN*O5Op*SL3&RsNgX50LZEfiZ$O?#Mq`uFPJ=Kzi)2<3C7aP98g+-$G-4mT&%~ zUjL}t736uZxYC=s5(Gd0Dk5rXq4Y~8j7q6g2KicSR&23w>5pwaib(3RH@b2vcYD$i zi(0BjNRo6K&ycsAyiz+}QSP3x&IsBSnh1tu8wD(csgsNq=;Hpuhu7`w1Vb`YUp_HY z(gWDLYSbTk{`J=_icmPuW{cBeO!f;8E|2E7?R)SAAzGXkl(%UH#$&Q)PH31FH*55y zmX6`~Qg-8h$TRb`b3Herm5cj_RVhQ2z8xTqs!&kGm%Lty(lB^+c@mRo73V88#SBoF z6dx0auhf@m)vRyZkyy(c`u$;b*w*Uj8c?&HnYMdS zn&*TU9L@t=UK%OA+7uXBIuk$w`+b;`p)?Enu6D9n#2`Tww-FT-4OCJ*Shc6hz{zvU zU*-ME1rUZ2WBU2r=4kL5N3PBv_{Vker0Z8f7x4jiwbD!!>aWsOJ}*W45$EO;zc54E zf>`e6**l$8>xZUxQ20iQ@r>$8c2?kwBb6zl$^KF(-ep>rMqOSyK8Wom!PdJZ`3hh8 z2x3FfqTaXrue)`jq3C^`Dx_TRaR!$X!bKDRXn0An!w3uwS6sd+Y;i4C1g~xgC@bk4 z9`U^1sM%@C^jEn8S0~M4L}d&SwXlfo%&yyr%tbwQ9nrMJeCj^Wl0rX_liS>*Ehh_I zP00+-;iusIM7cX1RSd4pYW!%q`aIb5qD@I?Xu^deO{V*_!DP6E8;UU{|DgO+_#vj6 z#=h8Wq*^-AoSp1tSl>6t2?r;sTHnNk;D!%^_jC&9PMua=;I47@E+A`^S!@$8(yV;t z$T2jLxnmvxty~#VC(k@(98VqTz&QK3{|KEjmUWboWjTVPVM#)b+>>8y18Ly4l{&)BnsS2TWI@u8@Nh_9y{K6-lC92U?bp_}H=tU&IsBrq>^5(qlWos#C@0(6EB^$8nMb<1PG#-CLZHI+}uM#e^FHNQ1=P`36Z zH1A*A{E1QT&P!CM4LsUmIm9%CbAb-CeNC|+1P?B=XI?ou^Qu#7A6J@ z{u=h&UxLSDnZ?b3nM^OXPHI?+i=7=sljrZ6+pz)?P8%muXYO0eHK#eoWMvxQHHmkc zH-OUPNBX*YlEf_x@jpY{O@B+6vZtD2_`JK8%5#rLW|Rhw+zySg)&=y#6{~5H7*J*g z%mL^$*_SOxI4oFAc$G4;%%nS<(^}zM8a7Qe=E`Eqq)MoHjY}vFGwWsAzscwo8<{3e zo^wWne0-$WXJbtQ2w#WD0P%UhUhre0xW*O&Epx-uX6QS(;WRM3)ZgpX81w@(Mg}Pr z9#=%46E5_P(W`V-QQHicuK8$woDiU|%~P)RC1*0s?U5)m0ObsQb9^WA;u4n`eDMCx zS&c;N*m@x!a6EnEiK|n}hQLV&!eKiv#MlM1q~Wfe;q9~XTb_g=js3MLm1(cWthBcN zJx(9p(Xt?lvykCfc4h<%YhRg1%sXvGd5W_DX`zhSn#aHelqtk*!DUg$8=4(D*;z1f zOCxojW;?mKC@yyWP)Qt>tuy`|-jTfex!H0lwBaDs6S3v@#Qg3A)+(gNl60F;<*GLq z3fW6thpACRBEM@Hm;6kb?Qj2{a3NW{g!RU;SfDa;qNXLkf8x!0yXReynCQl#mT*?M z^{kx!(?ul>0%*thP|b&xj?L$i$7cppZns&iR)1YNOgg4V{TFJiG6U8L5$E1X%#hO# z@18GtuZWE}&G1})qyd$NH^mIEAR~LTydaU;TWq9+dcDv4(k(G`c_CXgm$r1oTL(VqV%PT7;^&c|I;1`kNNhCwh&Q#TPa)XW^%l?SBpbe&QxAY&^X1F z>Kxpduh{}TPmg_h3ra}m{dp0XxmJV z^={wNeRwg@(EiSYJXu|N+4WUX&g~=un~~!rqN4UdUh&cerRzdc@mJ4_ECdfW$P7Kd zaFo()Ip`;RyJc*mV*suDesK4Tqp&;IzFl?0OR_{@-8hPSdc}aK5j{Vol@ak{qRfMY zMoA1a*lD%xbN*)oPI zovcSnyFG&;J-%MUa+&sr&6v@`ScoaxWQ&gJa=ptf_Zvtma(}oz+(h6!yode#WqDd3&(oIHEU3({6K zlrsl9yLPG0%gPDFS_Rl*p7^&D#T^`d3~W3Ma7?^LVMj$QvK+rzoruKh3$<$dFjT@Y z!Z0#mfyyLme|0PNq|!L|l7g+7HOex>%+tWIkUTj$;tWO*z*LknR!SS0co;l3vH_zD zl)%&$F_SUT3jypgCpnHdipn*~R@*Dgb4AGXCEQk?(y-OE$r*r3x!qfbEFm_O>WanD zyW^5mFPM=gM;|oYlSm(n{%uz3=rhiHmFS&HwiDNn!>?uLMjC6c{x=}p?iLwD^;ctA(TM&@%Vtqwls*`qLG{&mxP(q6!)kZY6 z>2dAhpQy8?RZ5uyL|$nCT&)S=iWJD&!4+js(ldI2YSS6;vL#m6mc<(2Wx9cjEP(d1 zr&D`;1BbE0)w`hes26*11(CT6gtf3mR1R?j&g;T39E2T=PB5H1tDdU4A0pBvh-QsU- z2et@0@h|sRyL_FSr)3%iQSt9wLkY8y>Na|*CP@xguYfZc`e5wtxZA{zbYz>nPboj> zjT|vI;au#XUPtJtw{R7?W7gU1COuTQyS8Cxj+V91yP3QJSB?&kC?6(psRC!5h$geb z1Bk7;=euA@J3_vKV_5pwl{aLh|k4m^h z5<;bOCpy^DE8l0C?6k)(0$kJIT=3Gbrg#WZ)nB3R1q0i*m#{p&Vhlf!(U5yJc_SdC zy@uoKa@YuO=%1NU?Xl)|*8LRgH znC&Tze!2vp@$X8khlFw1P$yl{2$TC{1l9hchNAYHqoI!kt}CnoSmKQ&nw9&0*6yKp z8i1p~_En=026N?zLjj;&oDRDu_{|O`CiOPEK?4{BDO)?up_b4X7w)a6+c}{xUzIy} zW|n2ZI+|TcwiICB?o?CLHKG_=EVYBvIylN$AaV1db9MdqNM!7#2#JZojdsX+|_zNH|h@ z`1=$=C9a9VY~lW!_V6#=p>~xVG~7<5(j}#r*c47Pni1U!*%Kxk>@NmI1@2kjPO2EH z)t|I3T!nxkp%(u06>{{uU_h#!@=Ic-hs)@17;=_b$5VEhEeRS~SJPfJybB^ONyFPi z*7mv92%O_xU)R`Rs-jGfp7`2mTTk_f1u`AOT}Q}#vgKssD7Mz3AaHOG z)0X){tqyOsX&JpKHy^=H?GsH0m!H3SE$2NwmX)eM5fkf|3C(wgR<0lDs)dG5 zUn15X(ea+pgK~71>%&LMl_i__S=agXew%te#Qy&I4&mDw9ZGz=wT|S;yddB3@YVk3 z`)^^a!Jw#Nq~bW_y?P?GUUx#mAm(Un?1lg*_9#SV%mKdY@O=s46m(5k!!{}-se#YY ze(V5wu^RYdY(tGvhLXARa#i<{+K~b)>Z<$`Q@J<3rYmIT*%i#M95>FkEKyHqmoTCQMUp$TfP z@Y1NP0Q5?hEN;FUmK&H)pOF9sMa3&>+u_!#Erg4a){-A$@dl+$W7JcM2|eg*5*p%S z{xSIh?B2zH{(wUi+fN856Z_1eg6uo72bCP6tyE?t6J5G&Gd4V;n=)p7;%L!V`8EAB zdbqi%`m4h=@ll?1naX3zp(Vc0TF_h=pDr@LT$WN~sDr+qLaB93t?`gF#}Iz{zML4} zW!Ud5`67s9ZnP@Hb=5ugxY6Ixq$*k5xH#||g+h7(+`XR!J+d0Cd8WA;ws`Jqxi#)8 z$jdDi&QxbfbacM^O<}jztdi{DFNz0SwS5%eo}IGxg0wZ284+H+#wc4PC6PPA5_sIZaYd)F7k>`L?B?SUMBs8DwL(Jox z{kS{j8y9Cu);M*N6u}b>kPi9iiW6gG>&-H++(cG{?NOCDu2EmL%ttAHKA4{4n#*)A zc|Vn~?N7Q_PI2@)D;CMoi51yU!TruN;@g6b6$4*Ay4@E4fRq<^OIzidxS}^+A$=;5 z7ZfT%5(U@ds+-<2{RRx$9v;1P8+VQ`!G(%+`M_uoCgdCp9LAj9s@dx#JXfR&5_tXb zkchy(8f6r^ z%`UhmysXDt?Qt&q#1D@2n=hIhcmyHt-L?IR}P!j_(odi3S+l@GQr(W+q5 zwuJ6$rsU&g{UajdyYj(@($%KGTFA#WaTwvt6>2B-Xp1{h5;7nhuBhI5cq>IGMNl}0 zyfDrUIyqh;kG%e>PQ38hoSGihz6}mt#+>`fq!cZQ2Erk|BAv79YDSu{D&H@w0#LdT z+Eqz2e=S>KqP|qWJ+-=1c8xEwB3yRuu)ZXv=t&yN`{MN-idI;nF|?_fnia$DRF<5AU4&IRKxtu_ zkY{aidKH~Qg`lx+N7J#B-WsQFkIU$>-Sc}0NvH__HnH$*PsOqrWurPv6~4`>r@BIh zm$PzY|E#zDa!yQMHE8`UunS*AL?=*#SoSS#xmkks?jk9EN_N1RQn>6W@Y_#>kN0>| zPZbWI@EG?sl5rlj!y{yQ>|z0&1&A`fY5d5{_PkhArc`ps+dZm^I53qxJox?@M`8Bavsye#q(T%BrJGd0a>6Q}K1}X*Tdfi=WBTq0E{XQk} zu`yxGnr3~-;Nuq2{x0~a8T|q_bt-slQqEg>L<>@fE>8CHLFiE@DegaX79eN)9?Q^{g;%)`6&e9frec9^VJmjAp?CDiXQt2=dgGE;FU0jzaqN z#u6heufa2r6Pv)D(@~k5U3S^?$<)A7QpUVxRt2`A$#>hi(|A_WGo&+8nE0)ILR^Y> zl*0?bbu%DtEuatd)|X~g#%vg(>(Vp?;OoBR(R|1bLS6+zWMYS#V!O!p5k{zkM>DWpqImil=;&mX$^(-C5^+uv4e^bduaq^ zm~^L8Bg3Sa4f?!Fr{AWM0|8^1J5&e^sxl41005m@mc}_!x@CtX@7+@fglz#<#Arf% zK0Rnn29m^vSudX9E!F9t+)8BOn^>%3(pK+-2t>qgpEv+A$3P4G;8o=dYmH#z5>#W@ za={AWp!cQt(a$Vf!NmX~W$DD7g*jI`cI}ktFK|~NQ0ApXX{MWKg1z`S;Z<#y zfpdq6tq9u=i+I>B!K2p?r=sR}b2C;Xy17M9J)z;L0$<2Q)j zu2$p*z02yZR0IW2`w5LNM{&{*yA3q>#otwC%teD^n1RKV8o3ACj05@XxKhOc5# zYiT;tvy^lh8?{U{fzq(P$F(kV?a`{`>8j=NYQ}U6`(iFk-3W!81GBF27wd6YLM_5- z2odIEs!mvlMSf#*0GNq1nVBy`&Wzcrs%lZ_@ewfibVOWhFf5JV z@*qDMQ(M`TD~07Oq=bd>LRsRRL)H^hg5uaNqFK~`U}y7Ng5_7c)!j~mNa3-+g}L0fF3x<}FdyE6}7M)Cz@_)f~#kRw0YlY$lMTVO=k zSFNc~HQOhJ6~~fPu^t^c3Fz_x$XJB+D~<1UEp@^Qb?$ntJJkgl@!pvQc-He8f!Cow zcxKJ(dG{lGP68+?tL|&}dE|6#2~6^=xKnDHwDx!@J5Je^)9DTf<|T^VtHX*O95svs zA8>ULFY{*GFey2~yhnNt z7_?Om$?TAobs^JMlld24ff5Y*a%7T!)p=u|6&tJ&IN2u+)-7ai9{#$2AMto)(yr9w zK5fisve36!RS(3cGvPH_4@UfjD;SF83uf>NBYushb*HwRK-h!o?HODJX5ncOH)(Erb8pW#(vblz*TC!ycs!HycK}$_`4JL~#Hs{stB>>LIVpu5guV;4$9*tuL zP90u<_x)Z}vQM#-U|ZS2k-{OSTp>&vmJFqu*c*-=YFkXcM1U_{eA)8}{kw6oJ#55# z3oQe$Rp;tTeT5>zUGIRL+!}<@8CCU&XFGUUhg+kM^*a*u_*HLS?a5Jh+y0eA`7uF^ z+&p+Pypmbo{>o>FWdVAWj$GCShw_?j7g-=8mRmP{3!htq67s~xgM4X>lT@7t(Xx#X z+)fWxV$(uq1^v~yP^ZTfLf7c%6p!1^9?BQJ=}|LA>!dzmZhP0;qK`iJ4<&vzB9Hc> zY1_oMX+vabwFaKijc^`IQX-;iV-R-5 zqQNWnYX(T&4Xb8?$rri$;BRZuw+D=RoneKLDm?@MdP7x6F7Q_j@Ss*Z+oTQW_e2jJ zomu_-4%e=v?pl4En9SrZP`LJ%#5NJ8hb3!}7mF$M-ZVbH<;gLUR4gtx3eAelYRWRj z5T3@I9thyK&Cjg$U&xDII4m5aUru_$)!-(u-&0SG4>Wt2Rn%s+molK)(;igle$PyE zA_Xd;I>8^6m*Y&0Zpd{%58>;b+gIeGu=0ceZv%_ zzCdDh4neDUyOpocJ92N;V?RC(n@vr?xz>Mo+jnP-yVLz6r9gf&7?oI|w{>>0+qF1p zU>2%8va0iGIEifQuv*iCy28(@j(L?eh~Ia7-Rw$^rFZ~vM3Din_A?wzv)+_)f3D)J z)ErqT!A=_XI_BWs+R54GyPz@nijRlgL|I4rt22Tlv-bjJZKvwKJtz1lM)o_u(@{cP z`Zh&jQcr=?QI0+q0!C9e@^L2YJ0+BRwnln=DjE{Q&!nRa9p~AF*cNQC; zM1i~i0J99LdvuI?F+oFg8vEU;c0sHr@eO)buSJSJb$678?XI?Z|4OcbL~C76#^4@atTnE;&DwReWXO>D_`3D6tsA0Qm-fXojY<5m2?v}Q-}9y ztQ~P~p6g{&hOkjm+fZ9Gf;wuOIxxZ+?NJ@rp%<_E$tTOC^i(!8#VpS zEj{1LehPhLG+#cMsxQ>m@%h|8F&t)H@@{fpwvE02-OSaIpugWH6j}=nAnYfyRD|04 zVx2C{G7jkg%Mhk7KiG++@NL*vskp?Mk3PX{Z%Yh+a^yKH=J4&YIR-OeDFV~Pb2#=g z?5IQ7TVZh2@%V*Dw+w`MB@+KCIT#!G2<=PLSHa^;aXRVpN)o2GqbA&0yt~MwyXYV_ zXy@FSx7)(QaN3%`D;NKJe{fZ3Ez&K(9TV2K^KkG5=PM|CaMCr_84=D3s=s7hgEfQM zsm#2Wq0p%egmYr_q&>~ybRU*Zt$}m0C;ZcmWZI)sD^Rc0zZz?D*!Hn+YRmkvj*DDQ zc<{SXHmEBQ+|28{CnWo0{o4~XZ2>XfB&HI;X+Tz9V_H_gMV}`li)FSg--CEXP|!NY zjLs$D@_Pe#k@Z7mazi9eqpks5NdvH#qk+};6~zvI_21!=m7JWGq}oR9OhZIcYPB14UQ$q@JFo|gT;7QgP0(O zl(KS<>%^9H<~%UZlqG1kKchf3*whFq@}%8-y7ys` z+Uv!T8ICdDW?mw9;6B_OF``=|CGJ44T!EL5PCZ&Zu!DLnM1}dXPO;6* zx@fnGq$Y~U!69Zrn;sl1lOF(nwZbglpX(Xk8&v|1FRTF4Hxv=hJB%D7WF$!>rPE^T z;W5x3PaJ+vOy>`BeE^(yP%QlIufRI{R*jM%xGW^o0#M^(gcK+yGsNE?2C{EQ5a;om z#==6hDejS2uD^-*SlIOu3=rE?E4h|X4c5tW}E*~?E-BRo2l<1KoYdV(S`0H)PfzFFYP>5uVCsXCh zDztUHmZi;x^(xNXuFK=N%)Fgm#QVL1@F!~2$HYPFa=^U3nF)@ZMmjdouyHhlO$NKe zyR_&=G5@b~TbM>d!_3_GA}#KDt*ZW~v2<*V%8-rhwC~njdst$UgT>nfJb}cY{tU# zr*ZabIs0;N@QT4*8KvJh9ruC){>iGsO|97$i&-~`6 z8PHnx&hKHI>hXA0^LVRL?uLjJ6L*sH(JSA=>Rgpn{;U_S!70h$)l%!Qtn&#IGA6jv zb!wdPkU-=pB?<++t#XGuvC^fMYSz*Vgr3pW{84-Pwsv_Z_aSc3HPnE%)8G)Q3=V1T zpV@AwMb$^OU$Gmd&S>x|MAD=a*Y*C*elmHUp^Iq9tiY+-r~!yhtd)BI^+rE!s=eAOt0m8Ya%2)8y|3 z2d;rA@Hd#L5>L-2_}!&ovK8hYKlLO9mMCh&_yaqfLk9!};=sfBev@j#1ky)*2Suvg z7EykDnBU}Bug>bO!iO-J4OQ^mFF_l4XR=+49K|<{H538ME_`MtLDz?ve*D zgAI~=yf0Bah_QBbOjDa z5N=pz4|Ipyc)2vW@9ibe&koEJDz{tB(Dk%>7D>$>Qx2~glgtC_uT(vsd0u9UB0>>U z2q#hr8Om|Ku8@F1XAWEqHA)nVr@M~Mkts*Y;%;@x{;aMI+BBBx?oaZ;<-J14^TqV4 z^<&zoVEQ%A{sR;>>**|{FzKk_Sv2L-;W{&*4BmwMpplz&Ux?b76l+pA$1^iT_F)%A#KGWHyU4O zI+OhJUjydy6Qsodk)49u{;Ch*~)|6$Wl_GC{@GN1wV_}c|jhwkdg+)nZRl0M!nU$-*P5k?JhGq5+ zz+U>Nbt0UbTPl2bISTG;nlN9Ehew&%1b29Ue_8(z^rH(yV@1*l9u9FxaYzbCBzMdA&$a!R zRr<%GWUIZn;r64yFL+jV>Y@(HXN7U8OQFRX8wt4=)`<+w4u~NWbL3H23~S;HpHg)g zHp%a#G!_L5_$yJ-7b5}hE`m0jHM2Rw{Z_Ez+dw-S(M8OS_cAs%vG%h5vfk!o zcANY0zRMb9&sc5o2$`empc$NJfCCXdD+Z4ZwVcG3#5@az+HgMQAkKk~ZpMC}Vr`AC ziau#^6cE-E?<2=iZGFI&1@eH$WUATDd`wYs*9D1rYwdVTO!%~bgS!j$KNvoCC;0-Z zJJCRhg=dIGPJ)($vDb;NuPPjjqvC_K%$?;sW;D9WQ!Zn56}=9Jh}g*^jR3BKAA~J* z+j!+zO&O)sVf(ow`#Jpf-m*fI!)uie6GK3_iYy;PPaxVFG6b=gCs4?3N~uuV*^mq; zVz#%|a@iy?RIF+%O?Aa2tQ7wh7Vw2 zTuXz3XN~gP8i`qeiqfh!S}Z3MJs3w)Wc%6S-=z}(6Ic^93#usMJ+bbotbV6@wv&pfq$jml9X9m##MI9WwrGw$i*gZ0Q#VI0NaPAUSdL~r- z62Y)HT(SDm}4_n%0WDlKobNW;f(2MeEa_d3o*`+}- zZdcXT8?)D5onG21d^L7|{1QN7E;D(>w>TnkVLv4cs`@c@grx>(D8G(h|$$l z=UmQGZX6&Th7fn+F#Gb7^B0@iZK;;t$S2WhcgxWLzf!CzFSC;{HWFE5d^Q*paFz+s zn=%0R6XHCjRMv1ju=ON>7K36+bZ0IO2-ARZn~Ps3jy5LY2waJrWxf1hv$7@0j%$uu z(>3R1w^cQbrGTnWIhg(xMrb#?ssu2cQBRo@Gq&yiMrZlAX{gyJ&pcnx-7)raV@Q}l z9U}cpsv{WhvCYr|qw&e6=3p@3Hj)Z)6~3dnxX-qGd4(l`_fXwe_1vnCj|Pq*3<#p> zf1``aSm1tv`|kBM0Q1UP>N~$0k4$|bJ*&!<`_%c1n1L4W?DGhh9aklkj_LW2D$^8t z>KN{#HzKQPw$sD3AhS#Wgs-hok$LBs(HG9#Zl|n z9Y<8{d6C>yeq+h3A>+ACUVm4X+#{F!w--KMpBx2m-A@s2zb^^i6`!$-5HIa3aZKTN zMgZfOfDisNTGtUCR^@ICg!QnV#Nr%#<>f_n0j2U_2oJ|bN6^No$~T@TL)}IDidFC> zP@BO-43QXRp$s-*D>5E8PZVj6D^3Ac!M&$-uMt)WY(%HCcWP30VVTm2q50<5oKf$u zHmB7*9PpvL+mpyTe}-lGv1iUVPGRkChFol;ms0AK?$e_fTh1EK+evcO> zlEr&T8enE`#^N307fqnf@r2Nr`-kM>UgB76Z8!EAGd>~1LXUOdqIhp*RS^UW6)IqPU@-Uh)go4-#;#@f4DD&u zI(E3DF@E2pK0#?cot%pBu$q)jZ0m|$^nIUL>~YZ*{5}Tb%vKZUFVNXL`c-XWo|S8P zEBC6A3-g(hMXgpW=QDJxCRehA@8kExX1w3PGT08h`05AZzoKJHT<$3Sr@H47<^RjT z=U>rL(b2;8^Ahn-c=YgAQA2;%H67m*BBCRY6V{BEHLd@V*Bqn>C8K7kgEL2>iBr`m988Q>rD8SRzN_?5bfM{1^&Glz+4*2vFBg~l z`_*x??IFi&!fnCpu>XVaFCAa$z;EGJ$d-_)u&&@jTi7idV)yLfRg+eo5FeH`;!3xW zS~xd|s~9AeGx#0br;F5W0_+R;JiLct`=3y(SAKXNOhMr8rBIiBAh1rE?n{Jie)k%< z*l*K>y+Uiae_li{U%(%KAe-(2xZNc~5Jzsdi3G?J5l1(Sgz%tuu8AN69>btK*ur9A zDk+U`>WE?>uM5?0RiFq{$Bl^b24{sDVX76vvQX>gDkyJz~YUUw!}JmgEhWc;z?!-nrxRXz{O0-=t{RhasvX~ZOB z-GoFH-Y_dIPjXp&vnTSCt0W&{cwX-c@%Y$Eu}0%gyaArx5WuPA6w_qjNdqSP!)Rh8 z^xXjd`5#keG$)_4JUA>qx)^^U8w$csWpgGmkJU$A-d|T?8nz=phT#7G8b)%)_mLqV zAa$zOO7i^Cpu*AXwGGmC4ao-%l^8}>7g(oiDLR6+#JDlszB#i7#mJXyC)DcL-59Uv z+75D%V87)QuNj^g!n-tiWL@%_4a)fF^`s6a0tAHqUiM}&ntF-07YsaQv}iFSK^2G8 z%v{6QBu6q@D&1Klub47tSufPE7OEFVQw3vj<{I)gkKS~KtF$Kj-z9d3FR2&gO9rzW zR)w2ZDmehNmA>F)led1Hq@BW2>GpDB^407?uNLo#dMga2+?b&1^{J^`{6XtoQTE0? z27U<+x7*XI40d2r8EUyz1o*3PtCOjA%j>NN2=oG&;I+A^bo&z)-&Z(?pz@)<(}_t- z)eQBB{E_H0!l#`edxHhoDm^suf;phF-^dRNs&bfkQcEVg;5f^8o>|n&Tb1`Jt@44> zBY!L1S*Tx6-O;sG8>u^RMjZ0nA_PrtuCJ%R2KWUwW)b8@3$6s`^b&O7$GAXlm*g zc9Xkz$#Qc<|1e#dY*=8nb);2UqEApDX^;=@t#f(8wEbpv?pZz+g&I*qzbyJHtfpzR z-0Qw4k*UkNXGS5Zi{%)YML){y=*^I`)k3ZPG}LjMx+AZXYIl{3rclGouj0yKXQnc8 zZ3oIWPpT1{`-MB(n{n9_uSyk%F0GUe!-K3uEAOE!P0OsbMIFA8x~kXme1(RG)HGvp z8nWJCckfkcf>G3tA?nn$6~~s(n56MSrZmOGv%E+JT!szydqDWutu}F9UPW~^y;fO0 z3FW+8w{zy-I~TGFmVZlc2RTxnRml;t98J#Lho?2r=0hP?Bar?mNIUlpsYDe_=r9+O zxE?t5eQWsdYv=iX7PE9rQ@l4!+f2DakKiPSE}Ih5GAT|S*{aqg$Cs$JDyT=$I6*6! zuM$C*F^K+dYdVBxXAPg9ubIo&eKjut7k+9J*|$DT(+9@r||44-(3w+Zx5y15md zf`;BnX-W9BaqQ_VxS+40^c6lZbJ}l>YcTm3lJB)6Kzhvdcg!>f+%|3)a|Hc>FhVXn zg~Mjs=jtsMsWgP%*n{#4?dSQRi_8=f9CSj;9>sLm`qk%#^hFro{)-5Mk~^$lf+Yaq zJ0cimMwoDf;&z%)CAzH95w4serN^2|Ap&c11XW!>fXZ$0P=MB15R!BmO&-dQ8GRee zQ}W3)$4`m`S&Gb59>;q+1m2fsNO}~PmxRPj0~OJnpv;v1Ize#_cJF~i;~5K` zf;}2@t3a{s#l(TBqUDk%F-X0yWkT3--RMChvWr!=ZO@Eiw6kb4#7if6+ z#;MWXd28sf8dvj%N+G&|q?l<)AHj!FX~Y`gg)fkiL8gZC6&oTdPY#_i%nWIhUNa~?#6xvFmWn>tWGUNzB%am+iVX{K1gyM!(vgR&(N z(7~(8KD4%G?`V(Pn>=t%UYSvB3pA-c4tQmbsjkN8KN3{y%5k0K$73AUO8=stMy4;R zwjCk47%<)p!)%Rkabb_}>WOlVD_{n+x_X%r%DJ2$C(A#ruM-q&tT z7AXXU&9BCXRwp6d7EZ;uHBGsA8iDI7%}WP`f$k*RuLd&bjGLC9sr2%w8g%d;)_c+W?{(M8))XYwj~saYXWaAuGnG*K-?N*4mR(8z z8EJ9Bm@pOFD+Cll04=ggLb8hj8A9eKzyiWTAvVY*NjA1;YPLoU)YR0}ye{pvlDniC zqwWQ|h#=Be5w%plw5^G1N8Oa7W(EKDo4F%HwjS^Ubi4Dp>$-cpCFb*bJHS3yo5lTx zcQb!S6|}{p7O2Gw;_5LM&Fvr`;%`a^H}4CeZ)yns?g-KoGN=#KlRE>PTj?rwkK5Rx zE$Z{AT@Uy>L#}?0zZdTyKS9bnPipWxFGr}bhdTf~mAixxUh)Jn-UkYQLWdw~%=q;T zDi2v1UP^0EYzKKEoZR@95|wY+o<-R+GnFrC(5Ghq?}D8cD&La5XR5E*2q_-wn(X^r zgx|`yo#E&_AoGpr4(dbF@dqZLHKpzCei5+huiEunxB{)EFOefd??FQJov}#~ZccaH)X*VL5UmO9|NG!z+fxc*; zY$EbPjFPY+S@LhQDx%b_STMpe6!OuUf*;f?)$>uM$%bTa%^5Zc83+R$ss;%iZ5O8P zI~PL1wLnc*15FzX)MHMnvcw!lFVs7$+>Kbw#R6`#fUZ#c>>0YHav2yj$KvlnGMh{@ z2<2xHV6daYs?mtsCG8+F=P4Rg;Im4^1MV_Gxc0LI*HO%KN2Roki%9G1mtb1Jx#yo) zF>hN5ZSFw^Zc8yEs9Cko2QJBOog#688kp(N7hwEN-KU~eiHX=n zaM79fBs~NJG^-{J^I;_i1Mgr(q+HvUJj!E8WI0q?psV zM`R~J$uSNmQx`#_2cATdTt;ZNfs~l9PG1oUG~2dA-O_ECI*2@#uh$!yiG+`~;)}F# zJQIUR_D&-kY}sAJrld`z=<(rZScVe#Vp~Fz-4+rp$81jPbZjH&#+FfVVDc)7sAP)T zDLaiQl7)4V)DuNT#vF*r)YZ$Ug-)0EQFfX)0(vQpoUo57GjZ<^>jm_eM>oWnb5{I+i) zZz+1nx{L~R2`5EVc+f%Rp+vGWXl+0XF_^f1oaCyq^X<98Abizfl>H^4W$7G}GD?Ha zvY9ld5Rv$0jbtB&#bl;oYvB~jgOrBRWJlou`}p&2>0zy8QX*x4>=HlDBnBZ`B;(X} znA0hc?^!O2twh^OXK!q@N75}>KI=rRO8D2X-QHSi5p9ap%zcaG)0|M#Q|SX7L95Y9 zKSF7R^~Yl?H0}lt%(X}t&pf|0XnwSODD40%Qhv~^brLjW9tEP}*t3*IfpSCgu*8LJ&Bdf;s>!}7{CqZ5N^&l@1GTElF7wVm{@H-&%+?B z5UmP^8j#l&>}3Pp@W{%CM`e)!Lk?EY+CHX{5l}hL z6JI=x2*>4D_x4uWXJUxPz%8@<^{dMiR4SSuqur%K2=oZI#LvvN=8$++X<&Qx#Bx(c zHj`OwsCofHp$#Aoyaqz71nH+P#Ez(cw>8qRqu_WO6wGrgFAVnZ0qEBUFPf z1Bro=xVP-+2~+=VTv@EI25(&}UepL1c#)LG{f~c&TI{9mNU*CWVrfl^CHQdT%CuSs zpn5>)@~^Wqdo87WQZZiDNKTN*%+LB_TU(j>x-4Cc(wXpmwq|nmC?lBb#*$p6m@4)H zv3X8LYK%ZD8?g#J$l*tMd-MvkX-E@zP^wAQj&;TMU>`C#Cyg)`51%D2rhA z7h^;4wr=7{f#tLLg=yL2OzDd-*n-)jD3>Kz*-l!lq&8TwmcG;ZCQsR^HmkDlliRKS zScm8g$%Caee=abcu~nE76X$v^;TZCKv7-~E*mTLu{BQ%Z-#RNm_IEK(nN9nP!!=ZT z91xAb%Vos-2fNV&h$}WcON1f61Cy@;IvOwVD7@Uq`$)C#cXvF&+Ej_rSs`wfjg1PR zcS+bO)3%f0)#8t*B(trguY>2|T>#o(i%i~k5nI7Mx;`YG0ru0M3IA%%#@w>agVdzF z*ZXq3o{kIx%22s%#t0!@5NhQjDCLr(WoXFKtO!hvobR5S?-!IH>pdOl3L%i!qrT!Vnh@X+0*_p>sCxgv_GR&a00lJTi9-&v$Gqi1{1e0PZN1x{5xylZo3?*eD#TX_jT zosM{SxQnuXHq4t*Vf%xrVw+>-$^W53cP*1sf#2Y1UBVl>#*0K-vv_>h_O3wVkxf+l zeqvMfnaXS|fQkyN;x>o-8o8j%WyCg>Bj)P%__m8XKjq0HR0+#KBw zQC%0b4N}g%Ee%$$VVZhHnpjk+jHe|WGH`3O=cVat&4~MEpyUf(oh|9M&0uF1+FuI~ zle#LOb?T0jI-O)SSB>SPSS|^8-)P;nP$aT#l}2^X9n0;p#Z}>$(m{S9+7x9@pJ~BK zzCYtfiGU@=54x7;UGOEicXfQpV~Lz6osjz^%`H;>(i1*(;FnsuLy;6UicGJSByB$2 zeH~I)CS64@ZQzV%GzSYI2gTJh5~s?vx0^^-7E}nVd?he(_r8m4+}>BkzLndX5kOj) zIrZ=^Ay2apn(epNmAwV-aP<1J^N*~~=)GitfMj#NiMs%3dwev&YrBN=JTm3t>S_Tp z72*!ic*k!b9z2qCa=WxVHbI9%)Pdsj2AqaL0_q*qRkfp8FtGvkx^Z_(KgmpX9mkxkb&nRvkoA2E_ zKSEbdqo?JBtU>DYrV>||U3a~}A@cAK=VQ~rh|r~WQC9?WgoU+-ynwT0jIey|Uwe4@UA3+f!%^vLmf1x~-in|fg=kfWEZXd%(a-N#tLW263Y6%O-hjd;R|JJ%`xUymsZ! zuK4vQ7o7F~V_*EwohBxBtW1;u|uK# z7n;ja2J_e(T-e17a6Phs{+1_c#&Xz$guw@4gs6lr+LzKqjTCs;`8MO@+1c(Iz)ItA zPPWO@>ciaQuy#%u5ym{jfEF}up?8TeDf=tkD!t$$ihn6=oH#km$8p27>7Y_~h{HbS zMJKaTMZ2oTVAj9Cai5X{qfXFwH6U9=XC~&MoX9&z2Ps@-qBS&EAq7tfWQ?NgAT}5M zott|q!#{fo3IC`Ob1SM#p|z-D0Y}ff&@3_{x}A<6ZTk}Lldp;?baUs4e`=6HLY#X@ zdpo1}`O~u@5Az%Yp=%H-xeX9O?a}#A;zlxf&>|>|g8RN_-Wd}01cJ+Tw**tfH^J~v zza0Ti5Vx$ydB(#+_BgVhV)H-`u%@hP|0bHq7mmI!i7L|X(wa2P=%n_N%+3@u$l^^` zBzoc&>vlRs$rQYzZ%6zEnF8fQ9ActW4d!|6O?ZaPBJcWj_8R57qCz}lJ=-Z>b_>3Z zJG|w3DAfbTEOh`^iQFLPj9qGIW&Vpci#d4wPuKj)G~a&->i_`$Akh8ej{nyO^XHqL zqZz${y@8Rr3B9$Q8H**oxry};F~I3xSO)D^1RLEy8esgNEy4eIYX0+Qf`(3Z)-KK_ z$`&>zA_mSTVs?%;2G0M{vZ~J5VXGi~ExTSkdM>1r{lZqvJuJycZ_gv7l~vs1faD;N zU2lbCp*kR)A7nu)y|!jg6IPb1I`rC<{+FyOY=uSVjm2`mXMIZkss9ad)Z!> zy%-k!NvfUhOnWumo_yB5yXXJ=2|%AMDk;d01Vt8$GG7>5j3TpN1lP*H-4n1HkrKdC z9Oxj{N1ci~pBXzHYNFdp194iZJ`GxnA)qNFXK3ianw6fRnI%(LqFQo1Gez3k<>soh zF}qi6dbl6)YpwQ<7>O(4$3l)}LSufioNm7}kdK|p!PF5vIFb}{t8C~sVPFJI3w8o& zQBmVB!-XZO4T=loJWO7COEPSUzFHRN083Oj$c&Vt|L?_GnBztey9b6kA4%?s*=mh} z`5EO1D^Jdhit$alAx%Sl$VT^v{1 zKUpmoRy@jejA)dkc>$3W_kZ}ND<`o zEB65K6!HvYMZwkpoKZOsR8aIw)kje4QmOEUjHtqE11+UPzvYtS_%}u@x05}1kIiOE zN>&veLP$Wc)WUiG+A1kByHHouedl#v6>e&!?~ZvDOiguO52*%GwKw1{_TSLb_ucqC zZQ8-Nm$=wgCJimpbJWn(v}UeJtu5dY$+zLpb?x_udU|dwq-K(cY*V(TjY`ooH<-*N z%718<4T6vevAp7^l;-@zshbdyK^x-?nNu~z%Y=EtiKw}T3=(#?ZF%Q%&xYWM^uCpO z)W*Dhk#)uNz_Xuz%7a`}Q2T4p`ICf>KRQ^JoD$zwzk{7`ZFDFMr;mWFM*N^DgvCF^&(|l|;B4;Cb8h4nrpEzXU=rYr&iUfusx{2qf0A zFNCB1oQ@Z6w81OO+YhW+SpoiDatrzF>JI%*_65Ha&)I44t3fQ(30p$If`g#NDHp^| zCU#VR&3xZAVs)k)A##NEN;cY65^~y7-bIT9(c1EdZ+C%WC(Uncr*vsi*MSbbaGO1> zBGj(AqC22R2zRIn4oN2dvUlZ9*Mv^~JM?B*p@)67inc3`rK7%wp|;u}eKARuJz^3q zA{;L_22;;5QF1_Zw+Q9Uw(NkaW}j6v%3XVdXYDgy_w2v&I0^##XAe;OuP}xTyGu_$<0u(a9nvSAa=5bF>`8{_mZLnCTa} z(7zpS4X{N-d9%oNWg{c zkCH0H7_@N^^@t&13@N-mW^Q`v!WlWb6Go%&kB;2N|FKP!Dpq2c@Tk~>WI3L}JdV1k zG+SGfbXs?s_yn?o(}+HVg%VLZl?1#D)nWj}x=%KWo|%?OJ4_f(v>BhcYBZ3;GLfzh zke%YTQUQ57+Hz#HN{l>hFkN7A2JDNm0xC zSQ~L>(Q_chbrfWB-z=^U-B@aNtkdE=S$2ioV3kCW6rVKJF_eFZB0iH5y^@269GZ5g zq`zUbsuURR5~c~ETgfaWVxTaTe|l)$0cM~?rIQe-VCFhZgPncIrHE*OyFF8!m}kQ= zbP=d#+WYlDoKwX)9EoY#_LMEqUtS868uX3y4zmW^PMN`c<#8|gQEI~l1ly-Dx?Yb( zosgVrZ#J=Tq#(U4wQ*KdtF^s&3&M70E?Cjqo+L^IKjMNj;DAehQy)$DlfN6LMseKJ zEj&W<>(m_;6Su^HEPBPcla9BO5V(snq~+kwCQ|AATccY=;=604cp6bj|G2#At`?Y# zij{1sEW;IdrZ#gN3NT5S9}$vmtkh=uWvR7%uJCUwO_!(A+M)ME-NQh0q`E!o%>I*q zAwhQ=g4^ zF-c2^*lQruYQ8_d|8AZM;mIo9UmaNj5XBNf4yIT%uojQz5hlU9O?#>^Csd-Rb&VzM zPoTRv=*+4w8O1ER!If~5+xKAaqSzz$JCT*DPi-vWXQA!Qf zLHWhmi7UZS2@+~%nF+?^%ts(xYzEohOSG&jT6wIh63suzB#6H6Kb371)YB%BXa;d z*!ap2H}{HqfH!6)>FbArF6j|=`#H^i5pmeZ+hab$N!o zGFPtccTl{q*e*Z$9y*_A3lw%P`x|dVg1l^?%=-!Mg;5Zld&7ED0#BUIQhHlNV7b6j zr}d0WNwP+|&$k-oK5O!JO5#C9dbTwzsTC|q0;6XD20NzGHl7CNz|7GOjv{8;dVZls z^-!>Wiv`@+ghE|V+NV#Ngv&`wVVj`I5ymN*^a(fFz1JDTNcUTwSXx}HJqg7KERKqz zmIj0(aoHr`-|xQP|3cOD28lpj{V6pCe@e~&F}3YKOHCm=mmgp?7Lyc{`zM@6DeEX< zo1plzb;KeN70JgU4UasT-v)btZ!X%Rx@72Te@Gdic%V} zWCHqLb6{N(%QikdA1;A@*?-gITx4DBK_OqO~-ytdQ7RK_Oocg_SH@ zvPU&bQzwN=hgs2Z)FC9e-)fO|1!AYT_QhG=;F>+s;aE&crz{=O-)2pN<}sh#kP^9< zxtr>Uk7IciK86m*7iB4mGSOdFNPbzKg#IeS#w@IFDR}b;T=s=ql*a+}=4xD)ToLKT z&;)FhR%l2aiZuQphPtTCAF*hz%CuxSw?SvGg`(Q0v)gQ}Nn=2jk)#^l_f1rTt8kk+ zklczG=pb!^7UV1L!&*q-I8Z8+G=3$E<#@`EkkwT2(@v$v|;7VW|>k(V~g=QDi$nsjTgnEs-j?%4QI7vqzcggh@#~Z2&%Ke_NB%$4q#Tu*EVbr;Amq<^hhU&+R+-2HM>^(9JmF9T= zYFT7-&Sef}i4MF~g|Rcr2HA#GP>-KtF-5BhBV9R%p~qzzv-1>Xc%Yg@i(H=ZcLbu$1|Yn4Dr z^>^g(t2ji9C|*A07s6b#DIFfs6U5AC(FlI7Xw0{t4*YEUv;<+Nga?9bB3HrnemOer z3Gw`Z$d63L^_e7EA4)u~P^Bd1PjVODbYw{4y-?04;PlLEUZQHr<2%HbSb$?pgzDE) z-sZ4W+R|}ZV+Ax*z`J={L}(6djId_*7;d+k@M;9aAw@sOuRtRa_UUpNgbhlVeHgU_ zmy=)MC+n|me7zSW?ZOhECwvgIxCti*6K)I`x$|&dr7ZACsv%PM3Oc0aQ}r(Q6L6X0 z%sqR!sYl4@>a`IVeMMXhBbG&6!CwH8(|d3F^V`{pu`!>T&|4?C(_RLK-GT_gPJNZ$ z$Bdd29b4FGo1*IPnCb1Tu?pzsZnU#I%@jgfS%25Sf}A;#ILs`n6xm0-mJy=wKeMX{ z$8|#s?Np)XWTad?o~JPOs0K4q*hi~j?io2Legq+=>+J`Zjhhl*2jmYRr(GFR{!gla zO<;?IcIHarEZ3&6AxO8Z592OG{Q0N2nmlnOpP|1RBq#5MM1)4SA@J61G1*fjfE$&cL2 zhiv69+1va(MjxYnuVF22otCigYb)h05#;rnw2`0TBUN;7QS#-Hzk{xw9sZ!gje+rs z0eg;m1~r;F?5DIpH7~Y0bfO&^BNS~#I6n56H|wI8ccGmH{*b-@r4?VmBQ^H;8QzTk zU?kJO>)?fd@X`4vo<_mN!o*q4(c-@tdr3M)+ zRTe1+5E2!n*>aXBW^z4P?G4BM+aE4k1mq8j-z!d7O>QfJ53#!HcC|m*c5LqZ@$rNU zS!u`|pr9?i&!x)55GPF>;0*?f!dh8erYhBkHH2kruD)WQK)7}%#ICQu0b{AsO0;TB zkrCzd-edzg<9QYF=RGO-xP`XEs)cLQvGZxTd+8j?YT}vqJMZ#}b1~kEiGtNGhB=Zw zZ~{N1#!N#3-!(zQVblO1?k}H2io(pz+_gBh0Zv|Q$vhBMCg*$>0VYZ#| zAcI3Z*#N{f1I;I}j;2mO!{p!wSMx@*D^Si=!bB-Aruc!}l4Py9qy6vCvE>c4Yp{N& zvSiEq+~pNkgCmJGWxH7U$x8^HhW#Ml2!4b(ga)$EPzWnfHS=6K&32Kg52{6La+fOh;0MWve zQ)~(alc>~6cn3ysZ5i!BQlZoWQ2PDw1132gAG%~7V99ocR}OXgq_KLC#dlanf;GR2 z+Z)r$nDiX-ZSupiSs4`~jJrxWiZVqTPbu|y=82wvdC@Ndn)>>lXDuSVxxqug5pc3ApyZy2(el(+WbHZnW$Wtm>iCRrD>fzvhFB<8$Sd z!2gqB;`U+>`5a&_QiHGdc>=9i$o|KwUk|;Q{||P550VHfnB^^x?xT_XOGZBoBs0xq z6+k>-CsUZdfx|3wUF%-;K<{Lv*&jhBW?Md+!jJ%>V3!9|vYI=daj}-gsi=l1u2K=H% z01+%DbpckwkCmJUB?YHO*0>H21m#2&PYZO|Zc=2PSuoo1ahq(d|5ylSwwv=rp$VUh zZS=0t0|qwIYQBwGS=o|CJn5$ zuD#WZZ1;sq0#5dXQg3agcX-AkwGHh$CSN`@mfVF&nU$c9qA&-nQ zt+|xe{0z7i2nh%y40MUBAcB38fwb=;qChg1kQ<<1!S+(AXm!;VnYkTBDjTY5D1FgP zQwY8jRyG*ROgZO7?J-5f!4f7D&!*_^!wxeMEQ$q3_nRatE@DdW7N;?|5J@hS&{;UI zY&+_@fq9Ic3^7dUa8~SL%+6uhfXWNPg96^6*ef|yugUQ#I@jR1P@1P9yQ1kn@L^)T z65il4$;%E;nB~RUee6xZWqF?1taof5uz*h$1i@kDS|HXSS*^0M*E@7#4mpK7fP4yIe1aR@5)7F6jRx>n&XBel zA0RIEe;R`=n-zfYlg&T^y`RO}JW|mB5+HVAvE(i-7FBH*gIgyMguwytu}C*LDFsnJ zinObTVY@GrAw3|An1Bw8=J!TO69Z^S3BCgPV(QvxQ-shh-7MV(=f&k$>*`{Jqf9lB z{`_LnA(-nD{=gVCf&;F7vbL!W4Ew5*Aj1m@6K+9U>uE|7ZgEZf={PjvSx9Wf6~10UfTei6rihYSvjJL}>vn7jo#zfzvwFvpJ> zP3}0Yz5q?2c){!K0eg#T=q+s6nLp8X7hGdy@0fj@C@$^KDWECERhJ?tvEz6SdcY6| zq);9aZ_TtSBCphrh`JvB3x_LE{QJk(0|3AS765?q-=Ww)rr|OM9(FGOF%6GWJy%0k zL-?izVbe(dL!BF{sW2BST2Q4~wVYf6D`qI!3#P2C57`$RH5MFh(y)j&fCf1dK5%6FCp37 zML-zTh+K?}iRgr+iQuqjgNROQJ=}?$BGO5mmqhy)^)@^3G8NrHqaRKi@wPh@9%K<7 z1{BDMH*0shu6t)EY`PYJl%ZhCqPsOY^i9Z=DmfGnO@70MWWG3=A*9J&41Jbo75fC{ zJ;ZCI{|mXR0+1>}ES<%Xq1bos;c@8URclvu;f%OWWRgef%40j{$BsFt;TaA@!(UcpY;FmJbK(+n zvxUYeE0vSBL|$m8w-tGwdMSQ%SClK_lorTfXPS(7E46*if@Vl#^IR8~2Hj3tzNEf- zK(RuRPJLbqHc@0v@v71EKOKXXH-e-vRmaw;TG_FnKU9J33#xiX*kQRek!AVL{guIB z0 zODA_KGd2-(cy9j|tOyRYKG7}180bZ+FmNv!9*@GrR0i2aKg?8S`_ol117L>Sg#U3d z2@k{lO<~0D4bsU~V$vBIkZ2VYT_-i+WpG^Y#KhM>!o=sNH_TVcr0Y+$R~{*Mn-<9j zQ@5KM`N=^*{AWhgo3H?XMMOKr0hrx{W=9%RZ`TU3#n?MwLm9oY3t_~u1!0F;i!i`b zyTE!bjlTlt;sOd3Sa{bA%PqPj%6*uI!E~-oOt;pRSir~B0c}3~Oa5lZkJk&-ePUgM z>eUom6^{xfLv|RtlT$406^GX!uT#S6b#V8#fu($f-nh|y9bXoMvP(<)+$7vHFnpdR zIDRm8K{5P3UeSN4i?7IJuhNSS-Nzu^OA0Yj)rLYv)tOeVt=|0euVazvD3?|{NT7RFivH?#a1LQNlonm-34gt!w^rIu_U$n?wtpI4sNC4tIX%0 zBdq?CY@vOFb=Y|AT#o`bNdISaWf7_r`8EjfstO|MQr$rJm;&591wtEr@+fe5xuL&8 z=W3Ef#|-u;HFGpOF3$0w1N_FjD=NJH%!*~LLWm(mLB92b6|cAYcrsa_2_4aY=$y6m z(aoz1Ju=E$>q}qZZ0*F+?uaa}4Wr5>w2vNKY5KeNoRB{m01Hr>7R-Awt@|~shd6(= zl7gEd)~mqB@M}HZtmiB#;xzR^PA>jp2!us0}W^2jT%C*HPucS~%<6lJ}qrH4aG(Iv~E_J~&A zh*sWjJ(S2TB)$?7uTFM82+YzfD4d#JclWMW9}vJZ;*}jY>Q+iU09-bmlgDVadNA_N z^6nJ;T?OqSV#7A)3!^S_Z``-7FhzKsD|yixGfb0CgA|9$S+DLURrNQ1=uIi;)B&2v zrw(PaIHX5d^wmb!v(zNfTbByUIUOfBYws7I;!OVHpQdH*G1eBVyHA6cs8w>`4leSf`vhza0; zst(<%0q2m$-?#rusr8Tb?f&3qq3MrLH{p-L3*-OmZSz0wV3p4uH$+grmQy$s5*KAJ z3Q4sUDHdBqY$y)*$Yl4}h8As*Gm8a&Gt|>goKeJ!$79}c@c>T#8R&(9@13{-gZVo? z>}r^S>3edKy>;(%Tz`Br)ARcsSiyQnq)%m2QeRpS#I5kf9!_#og`(6q&Fy}3*-rD6+QJ?s~VlhB`fz3nx?0`bGc`MRm)AL3d=p&2o2Qq zN-G-m0z!m&4cSk9%mxEUjVjrQ=R9*6=32dGjYp%r)n$usj#v8Zb3lEzeza4;fmdl^ z!?Vl8yxD5or>Y62!^XY)Ngh7Z=zKBu-0wW=4A7_A)HBW*Xkz)`lD*mprRaSvw+6D1 zY>i>tbd>1EGErn6ePn*)nk6H6g&#ih8u+r8>0&tVT+8o}Yv_UngxM-qfxu%8-0nlO zgwo!I%QcVlOmydM5kUPh*q4l8{D7C)S&m?PnKvi9g?Yb*wcm-NijJHKtN7+HL)QJq zeB+UR*f~yGpsXFY#ui8YE=+Ai&t6GLr7#vv9eW-Iw%n|Qb>&GV@kV|KDH++la1S5` z`9)h4Q?JzBKRmp|y?Bok4w*yomb6?ENBUN1Xv1Bc;G6$VN+83sOYL5#gE?BAB`TMT zi}+N=buW!B%Qqd;>GW3QKNM8hb^ABIzW>;8?1iA6wCyQ?) z!{CavcTA^OI+V6)SH|D;$CvIqYu~oC=1`1bR%A!q zpzdX_7GOQZ0|kg{Vwy)X(qqm=+i&3iPPr-AwJy~CX>|YmJhcC|(fx-TlbV6Ek-4#* z*?*3-_0+IMQNCd{?qY&~fSL$uMJ)z|uqz0X3|R$c4RfnLsO8t`#z-{UFOIC)lJWE& zfM1TJ-*>2IGKu|+W^RFBWFLe}pMMF3<@1`#nI3JoIbC0WU1hyK#^n4Kgjm@bG9Xxj zd3^trgb7I9HAoKO#GB`t6uL-9d5j*fIyR1GGJgxT-!Yc&EHzJ0op`Pq zOMApKO{SULr_Gx;2m~H^+}Uwu9j71LBk!+*dqDQia(EP4-lX^Cnx*Fe8VNSRZD!1ZHImX5o|AMRz85Vvx$;{1D~q*k zA1c^6@5;x{nWJH$F%0N8#8a5X6hff`wCdEhZ<9F*) zVcn{$uO7Y6o4`qY15;g_=gyRhDa^#0oRMTCmAyV62a4Khkx?sgKumE$!Nh>w!Nu24 zqR=QhW{b@!x4cP>Z+x3Lg>!Lg&q&B{WBLXX{H^u~x;}$bg~ADVrh5f0eN~4|TQ{}@ zKjE2FhFSW1K(&lShY9z+C7QRS++jEi&7Cz$Ky9xRR|DpY{323qltDl08ae6t5w+nJ z4zU{4h2D+IctOhLp$I$E^x;{bl~!-Rp4ddPLuMveQ0^xU-X2pJ!9Asr?2W~iRMTqH z^z1bsPVrtsr?^<@J~cgKEFLS0heYx%yO1oMe9{P_0a{jkc5)RleQFl5pGRbJj#y+$ zEz~9wkJvX5O{qeNy~3PV8DU$EaPLB-&6ZG>+cp;)KQ{%-6d?iSh0KC~n4{Pn{G<$& zGy)#A5i$wH1x-U{F>k9lgj2+66^BILtZwhjIvgp@;s(|ClDaY!A$@qNJTxyt`JU2{ z#G>$h`U8?yrBN22pza0g5_{z2>@ue{0jLY70bbX^%-cOi5Xo9j5huE z3nFfDpNPtBGtoJ~iaGHIlG=|@%F=$->#Q~gHy9og0fDrhZgHVqmYP7gU38ufvFI7% z&SzbVP*IgJinXvV8k8q@3pO6lFr(Y<2IB8Lvx9JwAgNjjQMgaOcOucP6LXLjiUk(> zDZdD{pWH8tyz})!2^Cw&^*iDF<(9OHke*22@6?=Zz*v>PH(S~Ow(bk z5&8E+mMj@d_5<*X!oilXQFEhpEi;Xq*~@f#`t$XC13s`WsNSDNH9mF7@@2uCC4M_S z@R5TJWw18Bx401$(i2Dw$gM~#v9?Gb+Z5+{Z`A<8%_hZ9rEr9wi3E2JN|&RVv_KrD z&aBxAe1=kI)(R$0O;?Gbu)LXi8>Zc5x989$gh+GA%D!aSM=P7WPhz(D9maF%o;Kmx zy?|C`q`{TjREvXm_j$@^=K7AHR;OaGxsyqF5#0xIwq#1MWh58J6S#-)$wrd>+3Y7$ z=JyWOPd)+^tP>Rz(ovkr=y>9({R$I2aL$qLc_0I@gmAHaT{M+rid4BLT32IqaVh-h^taUoR`Th55ny{#EcG96CS>UdjwyyV z!hS7hE`d;`C$m{`9C^+91c~i9uN8A-0Tv-z1m|G&_vZa zi}be!LPCm@;v_Io8c6j!K$4SWCf-B`Dj_LDE=6DkjVh?3n z!a>o%$4r)+Evc_9HZa1O&yQLKbaoi4vicnzJ5c<@W=HfYS0TIdo1bg2=0vZNZ)#+x z&4n+yC~@2Un6}YoaQ)06l-TbA&XenN1Bylq1nhV59tv4>vJutm8g2B8UD5rLq`?Fv zXRwb?6<7d3Fy1T1o<` z3DPE?Kxhp_z*+%ujaCL>mhsjQ=tcW0l=F*sVd`uq8#il;cPoUGmBF5C6VOIn{pRJ4 zyX9KGTiordj9eHUHy^QtcVxO_;Gr1h2*?K~#UvYNn%>Kdyx$pcb#-ymtnCYqVtZJv z9ShdQezQJlF=znY(qUWGZMUI+58+z-7R{y`bBDDu)*ePx{fip<@qLFDN-K$%PKUWx zU*^EMqRFyMuG5>aT<#++E19*ylk=j<9fqYiQPL`9*+HtSQ)H!pRulg`&wM?B_K3i4 zFmX?vF`md%*oH<)MWqZbD%l22uI^9~1oVn-PU>^I9m-dNr6*tqJEC`^oDZ;vSuTP! z5H_gH)3@6aRFcfrZ|SL0o$qE3?5*uU^7_&Yse_=M#L^?UE+*7h5hsrDOdG&X>j*rh zz;SwsM<&@UsU8AB$bC}EwJIia)c)gwFk3q-%)Vw_%hR}8Sq`3@e~`hh7n6E9F(-H- z=J>574jRp87SVt?&CKq(MLQk)4txo?+0u=YLiD#^c&5l4bXynRY8uMBOOb^{WhZ9` z6rFanfS0e~J7lM%E@_w!%gX|%*dcP563YV11Iq*}#iCPgznBQ#{n}6llHo!L3o|&0 zEcj9?Hc!tZEKf@TgJ_&7m{p2dI0MNLf|3>{YTOYlrrxj@Tj#V&zX-KpQ1D%-JNKIU zCBLs4N;f++*xNhMyf%x~6!cT(KIG$(rAHP!wO~vpLD-R3R#yU=fffO3aRG>p*3t^^ z*9CAR7nOMf@;Aa&$Bno}mA@L9(3QUBc6uY1p6$d6yOYTcwh9J=$VwNotTUjEg#7JA z5z%T0-WvnPAfa{<^pBMA1;ywEN8BEJzcm1Ib3kFUB*HUNlBW;Fci7=09Qg&8{1#ki zJ12Gcuf!gH;SD_tkEmwrNdQ5pMjcMcP{n9i(`W<*R6e}fAREe%ZK@%N31hg^9?Acr z>>V6)@1G>m*tTukwr$%^PHdjowr$%!v29x?PHx_rySu-gyEAw8UwFRN^>p{As(Kna zdb?Ru2Z>Y%5#3RBvyasgdS%#l6T$5^zAY?s5e+|b^hJaxAEG^}mbg#!ttv_Kyg&#& zr72)~!$6XERRmw$?vB^9{5#7634S)rcS1y@s6L$p-g5{NCXQq-25@2+&HYS7U%CG8 zp!i9f*wqp|zbJqB70EctgV-ejrNBF^qTChPrr_yrR^;oS&gzuUfuGH~FV~7U?C%A= zfdp4W_9>*$lWoYWWn=*;w(nif-^=f6lQZv|A`jXrR~z5|Q!@_nZ<=v@O8O~@pV_7G zCp?YxzoKgyd&3{4KT<+1rVnd5 zTj}l2_$N7D=AS#?KKJr0#_(T;22h-^9_Bo*ifWR>^ zwPU5Vg(SHFF%8~&Ob(chV0dsdf6m&7VtrK4dn*pCxq52$OmTPOoOTxPXer+!P(E8? z)PH%4L-myG{Q}+@eunYJ=bya|-Tcl^@>U*=h55j+$8^WO8Qasv<&USnv3w~HwFZj+ zqj4N1z`|>*+mH}*bev!upzq)u2Fg~%(~6>D=dkQF(IOC;v_?)a4c&z5RCBVCuA;S@ zUuB#uB^J#wOJds(%je8bo9h+iKX2WkR%h3`wFsU`IIY~d} zVakYf2u&KGYx$N6^C?aBoq+nCkniVG!fOt0ewm>Dw~@y^&z_Z{lIRp(U58tO&y7qL zw?kifcEG(x2a!Q;Rdi=sD_}~)m3_8DO0rX^AY!9bO{{OTju$`d`iIo*z9-KA7Tch(DhD|b|$>+b>=~71LKO@qeXx0F>MEiZXARMZ)86NwZ3rhkWWp+ zNd}N4%a9~hq(~4)?2K?uWH*!S&Qz%n^(_d|G9(~utOR%ikSQy(Cc*2mSn4M|h_I>K z>Y&L6ZBv7?%B)K2^O^LW82sRf zsaNVkO}Hhc!Y$1{QzVpj&XWGZ%twF&pVttoP4*SoYn8@+M~GHdV+fe;u449(br@Oh z-6kTF9JoRD6&lMzlhGDLij04N%+`YNj)f_^IlMD?S+&wf1sHlPFE7)`mU`#B>Uf!T zgfnS&rBoi18&oOnx!OG>N7c%lBLDlmh+8dqEQaamwQw1R*+#)7c%mAIJTvtvalLqc ztE^*fQM=k`&NV$DA3Vv=2N6e)5KpW-rwz}2Z{p4U_+=7|&r&|=b(2CHd zoH7mu{p>OyOd_@x-q$qzse^2}6tz|(s485*hjh^)K{hSY87Q_I{xO3_Ge(m24y&`6 z*UK});}ZKCKZRX#`#u(Qk7u|EWZQAZ*(Q?n+S1_7``hDkUwl~)fOa*|XBFO;-eEcT z>Z8i|;kc7S20!ImQ-gD z_3vdR)NBAk5mcV+<(~dfUBd@r&In~q*Az$*kt*O`&;QUO%mGhyu!-RAzZ5H7RVxH#k?TSo?=MLsYhY6M*` zFV(R)b)HCa{G%>QF0nb0+w6Uj&4ajtW$TwuSVY_-9iM7r?cUL!mR1>d_fU+>}s$%}4 z82z#GPzDUtom{@>IB%c$JQ>0qILQwML0Zaq-u8ei^LhJQ!WTH@C^A+W$pyIaFnPK;`EWH<^xYFfld{2*+#KbXzRa@5D@{RCUBB#W&bfIe-RALv0#Q zkB?YPAT+jTx7DGUI;7X8&n`%JBqzA`pS83qX@cr1E=YwwMdhp_?KP!$_26zJoki6( z?3JY-@|QQ8h47lL4lq4Fw*BFfoQOiuNUW=%a4P#nLCJy7K^M1qwm$B}s$$wa(AZ|0 z4sRlG^4o}6XGwJca*~ObYW(p!DcPBSmR2~xoFtxZ!dafDC=S|eTIzRrl8JsUIXeNd z^{G&6XzE=49uk+zAM3WDw7`~=2b?KeJ1C-x7zK7NRvH7vL0y{ipKSd=U(`yh<=gzw zSQ8N1-gwfi$X^p7c0wmU4GGzz)_sa{!=qSy{T+eFUF?QfndL>q?VCbiM zK%>u&;?k%B=jrik>l8Kkw5-}(i96Ng*R)!mfjOx_s>*I1QMUO64h0I%nB1mVUDeMa zrju4|z+1o|rQi2hB8#t^}O|z1v)lzBAyI9yY$+=Vl!=g=lKoY;z zU^6WAi*%LiJ}tsNoI4U5<=H4sT)UJUrHXyp2ki2;G!5DBvxqXY4p2P@vQVd+^MNVk zvuJCbs+_abZ!>^TZ3N&wIlT}C>Kxqb+}l3c7n9)MIfB^xqL+vPh2(nl9`kz<3_^CS z+Ls%{GDc6ggD$*WF8e=Gnk&J}9xC5&gI_KOJK^;)_i$za9mV7j1Xc1LZ#Vq%{h1U5 z#vNP#oMr?$EeW3SA{O6Z;@4ak_Q0%;JOTz0ko7aE7@*e@UjVco1)=*NX{TA!@a;s1 zq(X~yLVRIdlY7lZoWhbjJSy|=GN}rvLN4Qb7cpBU&`V9RA2X$`9cxP$&HMT_hndk2)T7QT*OA$jj8Mhh7VVpV}+Q zDe~ZQivRNQ^>M+x7`7Q^!Rb`qfeH2zus=fEBYRIIpC8gIwaz#Q-$#S(*EZA@57~7_ zlD|t!KCtnx4;}xoQ_~b~VeOB%7~(&>B>X?5`*Oc*Y((vT*_t{T{)?$tQPzGz0Kw;? zt^NQ+NeYTIX&zoxsxYv49vd~4DmhMw14T7(W29<7n(bmtukeckE(wpS8ENxX5!KiY zwIJ)XpSjci#3$=pSL z#i26ZFp&NMmEkr>$NXKt@&$k`~5zl4&a^5NmLWYme?go?D& z(V&=GBwWWk?qzLwA^2g&h?qq0;_(fyK?@}E#EwLf2GyXsE1<0bTv)J+2n;qUM(y!b zI3%SWDB7jl9wa58LHQ58(hM~8V#XSu<_zo+v~T8k6dXQRL{I|1l}U&X0k^gl%t6vO_ z|2eU%;Xc{ZfM17{r+M(7-Jj|eJbFOg+=2dZh`G`3i7jm;b(^sDe}hf=t=}E&T#xW8 z=v<5P{qkQ_$^U$M-%!*lw4cwu`6Gp5{;y_4c{>{qc{^iMQ70#Rr~mErNV4jN60#ry zudt9^u(X;WA_9WoDu5y&J&59vf)Xkun8n`|&BR9R`av+MZEmvet-l)D^}mql|oy?G`G!)=gHsYp76nvfP=Y z&#Y7N!Sc4s5jfoXU!k*6hM3nh!Upap(S#iK_Vbd~%XLHZ*VCa6YOkS`B&oW)$5?JK zua}%bcH?CXMGY;=GIvb$Ng@+Xk%`*n2@L<(GMrLgIn7Z;MjUNUI9u6d_Y~siA{-iB z>nU(TulEwqmKvL?C`>#Zvr9u2ySsL=yf#tW8>|(+VWNeYm`K9pBV2|OUsVvONV_S< z2e=EA_C(8JeKsz@l%AkED^RpeG&&eY$I+-vg_{LA(|HZsD^A1+TVa6Ff0r^{%t|Mb zA$ip3pe>gq-FV`re`i@HYQ#WZ(CYw%4OW-ddlDDQoRQNs0)pkr$~*cyOwm|I?nN14Erb+(pRYM_N;m%`3KKvdi@aUGT-f-tr~hFl3v z_B(VIorPQ+9&rwMG+*1im&w8*$S_8bBky%D8gsR*spv< z#<;p+G%;+^n)kj{q(|=g5Lfo<6LAlj&trhNbVEEam$`FF*^FK4JD6nXB#Ll@A&S&-Stf>b?3+zUkYRBjgXZPu_YhU=jX*IC z;qy+b{B^qxU0d7E*y};pjphxz&dSb>uxq#JZsv57AdO_NZ|7;h?}ywQznuP7e&0P* zC&e^zZP1#!JMeEd)P&)nFqM{xSjIdQ(XM2rtjg`fQx zxq-nwQ)It5)XClyUC0*Sw0Uf7jcM&b1P02k@Za!sp%7KZw31sF{27B@cN7oKyjz)& z$b690-%m;*@(**IJkl@|L&hxwM^Ne%Jfow|9yzH&pmFT_ds2jM0T?QjT?+Z=4itP_ zlS_Oxd!l-9lsc6T*|Wr#N1h?rAReKq=+xdNsi_p+DFfzS9_0fk?jGp_Csa6y+;r;h zA?~$*$X{bKQS?j~e1Uv&iqsEcW7Qw9?krT=Bqj7O4t{m%QMmS`(krxS?!gLGM?6hKAF*eKYMGlp7g}|XhTXp8qDYi*7=${wLy(!4( zll@&Iq?j7z=B#jNHCRNwR%}!M^Gu2Ja8DQF=EZqk`1zDg8)ieqXG~W^1-jR)VRyqqE#l1KT(yvoN}LIX-Wp zBTZHrJVZrUKanz~lGH4nxZ6(#dL;~5Dc@?OSOWDfJa}0>57uOntB1<&IkT?1Q~-bO zSaP07Lk@1FDl1k%zMRR#I?0gELv0kE)*Lae+Gs(Y*g1Z>obM}5liynW=5}rt*1}v9 zX^gE%+oQ^CY;-BpQQf1FK)DzgjddA~btnewR+SdtmlD)rc}6Cuh{B4b zI5m%yQC!O?YYPFCvSO1PVHHy@%6aTh1INSs3En)$A3F}GyU8!gEgd-acO}#c8n3HQN49NEFopPcZ~%ggmtKiW>hWL(RsxV z7f5G|%hilPKVf)r&K%1tSg`LTmNcPnIRbENBtLq;a576*S&e3UmjZbqk<&G2-&qqm z)Af43a2ez%i?ZYcPy&>zxSd_dokST!B3*_GF28txS&cSlo_s`E%qZY-hpieP1~g^P z0>e=^2vgdb!2PZuGJhbCc50(r4hmc2&7eN&I5=5b?14z+~`}B$QTW*)-j_`dbB-cSWAiHHYJxD6FJYCBX1fy_OVwB&R$cYqSyccUoUTlnX3Xk zCB%D&qc(}5{rZM1L?EyRhXf&w(9jE1+T1BV>6qm=fy+eWd?3(HC~!E)~(y zz>Uq5LV4OdJj$J_4TflIIhj^d0tQp9%o;uZJtt#hPGCgo$UiFRXjdX*$>LKifMCIp zV=nX=OIgZQ#JR-IR**nH{9@=_hdTA#RfM!ejMXhnN6RSyDjsCBzrozE$52ueIgnfX z+l)=gTmdZ(I*~YG+l^3g58%^>!lN2Rl+{42!c@KFWka^WB9lySu3Sv-hy>pOJ8agl zuGgX>cb7Neg@LG$(J2IlC`@&8K&{e~@LcJQI&{DENa7?DQ!&zHk(mNR218vod@zF7 z&251xsJzk0cW+tWn3f6;ow^=xx*pUif=8fzpc$7Ijcbr|ILIBoMD18An zVl!n7DK4#$vfA3KccgvFmfSnmYSh~Tt*xcv8K9@~D(#)=z8ORJXM6$ijFOr#u5*_? z9+0`ksWbIP;Z@FX4KtCZavuHEY?SNCsAF49zu2!7UgfPogC?YLd1G3OKD$}(y69fl z`x#_#UGV0}OQk3Erjh@TV$H6XDi{gWvB4nBxSSRe3 zSdBdPVvrU>e@gJr_bS}Y>CtGSx3KK&HzIj7P{O09fKG;MMc?4*Q+Y>6K}Hd@iFb|9 z_GF-rEf7-k*2)%CkK?rCFm|NhG8CE^h2<5L zNN5+~SHjsJ99G!1g34(|1Q*(CsC8UNB`iv3-O42XTfv6U2FlR=%>u z*k}Gy^0SFlTO#0HAHR~}!;L#Hp8pa@!AJg4WgWh#Q|onAz8Iq3-JF7e-(qphxJ)pk z#)GVIsT{+2D1{LAsLZ9X{Gya5NaBK&TH_wPhA#arwNuzIT>b&W4^3X)5m!8|6drt`2MC93|r^sjR)S^e)e*Ul=ek6}Z)_RaGKp0u=-ubZ7VA4 z$76?bh43Y8d%5gZGNg?T8(5Xe*tfevFQ0G0_Dlw&EMBuH4@6XBA*z{9Xn58=&%^Y_ zzE`2`0~L}jKa{Sho{fD3vp5>OWM?_Ig-hf~pwMzCln2njxz)0ckZeGex+ZO%;Y{z1 zMKcCj(v}tAP}2!IKX@6re2z1k?kT99bbyxB9y7(YhSfzJdftLP%F7;ha@5v!ba}Pq z#lp-u?oq0TKH}$uV5en)i4ON0`fHq)*7pM|*On3FR<)F&W><@@U*?gkMAT)sLpAGS zoy7NDqGlW==&59mp2(A`!-0$5#%T20MZt;Bwxc0~vbwdq$y@2=5WrFC1%>R9cZz9P zw3H@={semz+}ECQkHR^U679p-o`_SLMzL12XfuVJHYNjaZZTMQ=Iz&f<3kTP z5xlK{QgOM^GdUjB%z*2H&O5q1uT#B~gYL9n2e>fZO79af$*A;+t+at!-t8L8yrO*UQ}_2h1k{Lr z-Doq);2!xZ&n^h)D_pmN=mKEz@CK?0<|l* zlE6ANuLO%*zHtCyQ}~~F%(}D6mWojokmdcPwp0~TX~{pi@QI!RDNHqi zZl=zQt&7sKNK`unuwghdAF==z(;_uDUN$Zi&hsA6t3G1jfK0={VK<*KJPUf_P@wKz z&>K&~e$3WzsIl}P40KYdaEmdEX@LfgmQf&J6sP;UnB`%>XBkFGS&0|XyWiICaL%~A z+OnH@mL+%=%L!`Z@sj>RT2vPxRI`ACU08T&@b8h*cmCTuSg$W^YY`NhMG1 zi1oKd_J*IDN9h=^xS`_~V=CuTg=~m?uL^BZ!f>)%^Oj|H{jE+q{Ed_N~XA!p1Y5Z5_Dv;S8_&ge)8OQaYhc^sFRaSYY7A&rrV zwx;h&EsU*HNA{+?~KQjTY zVh5;x6L{Na8s}I=-J!&9rVwsj@v<+FDF~LRIm~SFa^EzbG|L+o{QO~~FBvc2`YioT zyt@<+AnA#&LKiiW0RKjAUDMay8rxWuBuX7M1}SOc9;O{@7r70FZv4BVC9M?2i_Ipy zctcO({p<;XCp|;wWRFpcBL-d+MY#dDoWW9w9+M)1saCSVmD4&DiIgeC9hH=3xJdbi zVB!#E&1G|co*hFv5N4+qaKb0#H!lpWu5X#i;Y{>-s#iPFFQgm5L!!GL=+{ZtD(t;2 zklJ5^_Ph>JLY|N{_e|MhwSBL8qBdP{=v;8%?`&D;v}2!iJ)hQx-S`6Yoh%~!VjN$% zJs+5A-{IT&e*ItHP_o;l{IfIpuEI zd{UuSMfC7T%6(RQ!4{wWl>vS5F;-Qti0)F`6g)(N=eh=oqQuSu*>*Uu9r8Sq*j(tI z4td3xBQ1%|bV%`rU~!m{;F`?nTTJPvA;HN9XkLdn|+eFq_*k@54NfA zCEbnq#`O|vJonn9?X%r5-bUkst7Qu6skiYRbNB(1V-*?s@`)HaXdLCdS0*5b{L>QldPTDEP=fZr#BQK<@8J28mUd~3qEQPZ?D~Oko>gLE+YTY;i zk<-2qAyjd!1NdcjqO2!?R}-j+o-o1c(1^h5V5`Qbn?)HBX)23!C0orSg*PSgidTX^ z?)`=r*ykGj6cb@jbmoVQ+E7!C2G)Kk*uh+FpuUcfx;}i*BzTi%L{Dq|%UsUdi1p`} z0Q8x#ioF86-_XlU$=YDf`bC^}fh|s(qGrWpWk+zULZ-PmconXmkU1l)P!(!im2bK! zqU}Ko(;I_#^l(PNzM$L{uXoZ?mGMirMTX`sJky#T#@!bu)ZJPF^e;&K_ul6XZx!leNZKQ zBfU@Dk?~YNLq8$5c7R^Vyp(u3HZPq_P-2&`4aSeRgx~-Jwo5Be%jGqu*zU22^tIsH zV}gfAjLa$?owVXF2kLSPAx~>~_yG#V1Jq~~#gA!jwVmV}g4C@F>&ryAN1Ae8A>o4ao5sqoxT-f{0I$E+E~45m zAgZOko%64Blg+ta@qdl4Dq0-MuCZO3BS&r|r7f`*y|V9LVEw;nsZI{YtnC#^dtuqX z;5J{pTp0awl|F#64&6?vz7V&@ZcN+n099I^N#npxo(v^FvwQ<^?;Y0O+22UvYV&Hp zldEJSUNV6`EpzbdD*Y4xQrd*^7AxKr2l=W2@~c_mD~ z10q;`bw6Z}J==7AMg0#l3Y#W-zbS?vV&{*p3zJX?9Mrybqs?J$dLhC&K=zh2KC3~_ z`TzCp)aPe+=9)fO{_?Y;F8Yx&(f?PwGX=wcPGs8shviwcs;)AYI)*P?RoyJB64LML z45Wwrz+keaqH3^05oF{7Hfz?RZcT%LUk-)6xE8iuOL_}d zy3gq;e5MD|z#K;g|Geis=7}0$;?A%J}EFyvC+Z@!D zOh}-4q0~+?8IL6_B5A)FWl}4;2d2lX&``aT7&b<=M3q;m@~FQa4)r(61cwdK=uo02 zi>ipHP7ik~=4ec$NI$C3tR!cP5*w^qE05^5UvA4pcDT`M@z+S^J`m_rXM>I&Zct5{ zKLNt?F=lM8g3kIT>o&f`4sS3-NA@f@s_N)_JUqj!Rk7-n$>>+R5;Bz=aX_UBC}+-uaCgr3 z1igL?SETh?^wf+8W8*P*{cg}OY_)R{zEYV-mP*jw1FyRw-| zW_B+$({*i;@3?M|{8;3=nt~;!XYjOIuVkWxe~OGo;%#U>_paF#U8+_8YsKk2oZt}R zIeHT6QohGD!s;D`2wRvCwU>adZ~2?3#1O5Ob+ca?mW!?XMQaePh1EOow?G~{acJo( zDxo3~;`pM3ne%X>R!a;4MjY-H)Wn4+b3&1^_u!zCaz3!M#FVIT;DnH8&@C6iBS6+S?{L zbT-lDTB%?FC}nw(dh2SEQTe@%Z|u!Yh}Sfe+adICC>3I_J+*7 z#InTLm-7#(LA;7}T6~UShj_Py3tXCKDcg_B^tyerV*T#2`aY0lW8|rb!tHVo7xds? zZg*=P^|ko^tjW6=f|8kw<^eNo=)ysyV$2$5;1($u+U=B^pOfo5C^C;t%sFy14#o>x z`#sa{?2OjKk+Tju3YP}q?mMV3f(vtsN&1qXg9!ol6h-c?H{%|J{uqS?bJn}N8P5!& zp1qekotx-;M#A&_F9M8zNaP;(-YoyeBticpUl;mskcfhzlk?BHT_HnfOXL4DuN14y z$Ri7)e3j7BY|)7#svw|(*7N&|f+9jus4xx-DL_2um!aJnEk>yjV21ER@4#Am8;Po zWrZm_?Qnv`l`K+8QnOPStOH9V+`mx)1)gMNkzb3snqhz;y{~DK(K`zHd7Y|Z?XXM{ zX{RbOpYCiJ@Y!*#%4*y*a~fxzANz5!SWIrjXslOMLAOt=Oa?cdYyr{NI$Bmf5n|j) zw~Wqmj`DWa$!H02X|AlHB@lrTpKu77O>RDb%$a>|>8InMtsH zIKgP;mkcrJm6GW#u|3q7B7XO`IDE)3^^Ui;YaYj#*1RM*%v&H?#pc%n0)qJrZzX^- z+JirF|BV=w+7!SRgJ~kF*$WNGY%?`LF~+jP#u&u~Mowdi>rV=`44E|&Ywt{3bci)P z_nVL$=01DD-|Qb5m5`lFMxGo*c)E(vxbrBMBJLCzG=j`cnb#-HBFvIN!uZ|_?z+%` zq3zMW0F%`<%C}3@lC)?h0i~yNEMAN+leQ+*%6Zc?JC$3+EHa37*Y&%ik={sd=@rh! zw4~XZQF5bnC(0^_D`=zOiPd(w6EOZ1r1!Z50}vA%6yOtC4pk1$Dmi7W9(;@{p3m)9 z;>|^P!-!iSA6-K8iXi(7!{rsj9Q?F=dfLZH@O!$DIxZFzJ(%KpBt-c2`8NnUUCCdB zHw2tMVS#tKzd`%H4Tuel4VDeT$Mb}Rb{orqCG`XmEJUL6@t(U7J}## z^y?WVbq|1eMQi>Ad$^>)pA?^B&r&IJOb3v~aX#@))M)+e zdDMl(DVJ~!v+A9|P=oXnxzhLx>R{L+$fV%jqP!nTPfh`+Ryb;;O1R1>9{Q+J}EpVF%V_Ay?eG?--YZl%i zZ)ru&-}h|x87JR_ZoBW6tD=;{#W8e(d8dTHxX*T|>MWo{j;^)5U5x7-%fBQFvOxo< zgS+F1gc`i~PKw_nAq|Qzd^Y!Rl>B(1KXID#p#D@Q31wX;Mn?2(Vb4qs8Ne^egy?jk z#sw&9olCxiO&cv>599g#@ixR?*UK(f^RB&usd2vnT{s6iops7-YLJ>#=~iiZX%uSM zhL&zt2hU_TV%Pd_K=ww;qR7&=IGAsrk!mJ7$MhH-EvQCDQ8vRNomXS-My&U-duCGKR&6w;jasX!ht4pWtP}44>4bDtcyLNJXGc|VfYaQ zJ zS_TfciRFQTB=>AQdI>gbb{R-42Gtm7*h}hX#ek&>`Ru0RiLz-4hIyguNOtFdA-}m{ zv|Ql94=VE^EX+Uk;X{k!1#Lb0*buR0Z`uYIa$J#06$nanwq6;;&b?Q42Wi@OV>MWmC6^?fpk=d_zvrONPLi` zNxhZL92SM_tp>T?&~~t{7koYD!^RjwkBT#6H>+mS70F#xFBnU|mkb2vj7F;DeH)LA-^lwvNmV$)u zBJ@8MN8DPlfwhE?6Q?e@Z|=HAd6@bAvVDT^7c>+RM{q$MQTb#-^9Tu3%MlXNQaUhE zxvr_&R$|_%@C?-Yi9wxVdb|Vj`8&-ou{#FgaedYtULt6zLKBT34lPF!ELSgLG+nPu zEHl|@7c@;YBFt?S7o&g12*++4bo1v&BzpDsvNKqm(WZz>wSGC)8K!n&k9pUedl%E6 zd$NnvojNwyou>0H=2uyY+l;}K&pAxHNq?|}YeCjXyy>c%Y_FUJk%C&RGg#D`PCRO;lPhJI3x%7qUM?UjK|i zz;3zAFtD?U=@eUx+>zhfrZ{~pO*ut^Q}A)wFQ zI2Exb_ov_$H1yBG&piyGMwHy-|IN&sCnxDCYM++-^%-8STsLI?qL(w^7bQUC5w**` z(mN9k0dUD1cnM5&3E^{z@mUnhR^W&m0~iGTJ_17o8}$wn_Y%hNFDUROb?B;FR6V{O zV>sALuF(ji5U5lVHpZ~65GGkL<4_q4zNV=&auT4zxb&d#y|Ukbh&sr71OdJKQ2^5Z zbO$2;{aTUvC!EsI=07Qygn!cohVDr2w=tH42r2haHYKrudJ76cs1OoS5o(qxDRSD+ zM;}b+YFl%EgSGVqU`u#Q;Jg5SPz+V!Cg+h5A%Wja$Lx5RnY;Ray?p_zZi-F@giymS zIxO|G>a;ozj>rb$hNLeN5z)Mh8&Pygl=W@QxReEo2frOCgsj0C7PG#3UHB_p4231s z9fnEujKy{;^`dM^VCifk&jrlpbH-*h+aQz#tMndHmpj(0H)<$uUaFa(&?28=!$XNfMLM$PF5kpQWyqcAw2Sfm+xeUyF6#O6)Y8 zd+YUdo*C1nG1wBtZHb0OZ>_UDV0+&GUYA~dLpPAowoSigEp>~=mmmpO2@B?45VLh{ zWIw3{wB~t70}vX145+5^gSMy}HMCCsMBUE*%dX({4o#K&qS8;PhaR1xS14vbo7d{F zwnDSS5zQ=Mm~BdR*AeARTrz`|IJ{=(Cw4?#QTxS!i!6VW_S~~uojk#~?NP-rsv%p| zkYNsoE`As$itBIMhcBP^3t0evgw7%xpc=?{fDZL-QiE!jXD-Vdar!@W0te7CfGI!p zJMu%n{}&CXjJ@%{X-oeTOsQPRAuA&MGj!>uM4}?nQ;ZF_sGuPL(ryzZuuukr9DOUn zZIDjdHR?*ZBj@((rvZ?C-2!@p(etx}Vt9idWNpEsFGwLbaylRXdE#bv{(ErqjE^wN z`=>&IF-`<2C;_G%V`PhDeymKUAt6d4L7AaKfSlxGD}q2FVD>V#`g|9IP}hZ5nVm|k zoW^B?m7M*lp^kc>@_aJ%26{%5t*hepKKO8=<{&l1K6%w|*@@;Ga!+*-@O*=|Z5u69 zD@N0SZPS~uaYEx{>(|J-ViQh%Q+G32SL#T{RD#MJE#}{fJ0N^lPMC*fjYnr~2N|DGcZ@klEs&JNF)RoG)cay;kOHeOT&#xV&LcXnl7|9OlfHB; z#Yl-@voRKCLtSC3XHlZ8)B1cs6S43Nqy|~cSa^~S5zSB>#!A06J!&3A5vNy=zZi4< zSVd!WzeAEqTrvmvwaGApH3t+rMnD!Rth!0eHx?S|Z8r!rE0*5b!0IVJ8ajJSY#i-7 z=2^u>GP3yyg{X5)nT1RDMzjL>zPif*jJnz;Wt1C^cAp_d?&Wm$og>dy_|+nk0`pF-}tifNL#!LAhYAPHs_vpX

    y7?_zm*DO`f>w8ZueoiI)a;{2`7@A#JkEi=mHI4 z^fiv!i7&**C?%Gelh4^T<|)(%-0oqxfZXPMY{2K2;Tf@A9(lQdC)(~;-Bw*D<@91V z`j0{AYeS>dU_Zcj_~BB4|2~(>iU|LoF`uohE&mVZ%{CfbG$~R%djkxvV4sJFhLH3s zNJvB(G4N#NE(|+=t=Ue~$$qG(QIPSySPg-be&8QuwGgVT%)Zol9sfDXOt(MA`F{HV zrK~bq8bGl#jqkUGc5_%6AWD&;$Ict2Wpi|(|Q1+*CVe= z&B%Ac{W*Cb?3GBwe4(i0hb37BSTi5Tpx~Hc4saYk^XogeiVWj?T7@%^jp5H{{a@OB9HYlC6 zDkMu%Kp3qYt?X)i`8ew@~6F@uI6`3h1vs*X$%FOH@!-GCs%3sVXG z`e-z>#eWe;-UAY+zBz3R?8jyqY2IQqmuca))?6VmBs^#s(o$T2 zf{uXbVt4gpccGUiz%j%nY?peNHVv;J&ITKKJc>AH;7!iR&CWnLxp-469a1X&soN&T zG)HjlTX2l; zux|n0@Ebd9qLL9ZyyNWjlTY8{>=}N3Um>7M_dFvIXi5qV6-k=%wvZ!<%@`3mLBW0~ z;fkxsP~6p=$v!KX@n0LwgH(f7HP^2xc1_V@(x)-z$?#7p4(kK(kFqoTOars7)fpR) z%T}*GV3vc-po1D)uEVY;rvfiCQNUqw;TpCnCc||cA{3qk z>;=vOeZj;M$p|%)Vr)SjC%-;ISDOyN+xiqKomS$+6osKGLMe3=>nid=bO&)ammJ`q zQIjy2zr%j*zvy50uAznHwpgr=d>{IQrBc)lpw-7sF5r|}x(;MmN1)4Ria6J(Mb4_s zazebpDI>D|{&Tdqo^pJq9Sva6^jk6kQp?gJIBMP!y(=JwgBJ&0uW7L#@PnHNfOnwxyE%>x~KS|y4ruY>IQgXc&idvT>2W2}TSAZ@D ztuwB|IYBd?sEnw$U&gU3DVd}Zx}C_B^oxthi!|5tD6z3tbe`uY%GbkF&p7-(Fq?2Z zKvB*wlbm5(oMB2?W0y*bCz@$RA>S+6d>^l(TWi{Db%4dJY@P&f56g`5o@64e&*u8eC4XWe^j7&ZZvk zxDRrdyykrN%liH}@yq_En(=wOA~z6hX5qRe$!XZ@WaGK&d%ledIyJ{#4N+#xa_tMf zLC*u`uiN7U$KfdU$FJBEhvSLGuWUtMye+`eQyNSM>WWfd+>l3^th9P5$NK6Q+_Z+v z8s?{JFTH#rXYI8comu<{1-9SMwS7V7-flS1M}2e-`4$EIf<0N>h_!X!2uPOdhWk)5 zoTkp+rrf=~v3h|QeM$CwZ^rFagt=M2%XR%oh5fFUxZ$kBy4kqphpXy;clFL&eACC~ zb1~?iKWSytaWF{q{2UA2;oL1o4c_;5UnVm`pQ1y{k*RVWFBBMe`z?FPMp+j=7+{ue zid+g@y(w(Q?a=+Feq0AUP{|^dsI%?TDO`(nhU~$%L7;97UFw{-{w4n^-$W@^+^7Cj zkawCrU;#h++)mU>Q>?)Oc>ZNIC=CC$atk zt9;JnaX=u=nSv>ush2Pb!cA^u#tQ1KYa{dTTZ@Mq#1MI!tQ8Sv1lfjgJm40P0cbp+ zpY{Try@7q*)W))iSTB(P!^+C~{B~2&5Q=1eh*9PzEq9P+5*dYsjqM~6jYu4MWF1xT z^9T)5?C4qtGr}si#goUzM>Vb2Xe-g0Q_P5+oz=$jItT3F#)LhfJp%{qXX=E`S4xTH z*vZo0uRfPUH;L^z6oTSzOZ&{;cFHgtFGYpb7F+SeRz~!1Bw92JD|@KJf|=O?+UOpg z!^yyc;}U~euPKndT8R78{35!v1x|$6i#e0^8>$4jV7O2#;(QBvTLw&caW5>ej?SkS z&+FOTdtZUrza(B~gLQrDm0=wq$pIQ&rEH7%=a);?#PvB#;8tEw61{lxi*hiSPz_|l zhIXu_+-Nt%$zCsoTa1Fkk4i1abxNVM)lq${lEw*<+^TrA>PbhEJ`C+T!(LJl)ka!| zhuG*SAn>Az-JVRFlw&&xF`7>`GZrs_=(06iM1H9Uwh=d{2+?@#X97Jee?9Srcq zSNZN5{gy?nYuIL1srrjz8^U+NhIxSs>gw7w2yzN*8IiS<>uQvxPY)1{9>?xw%xmkl z6+jQ&T}D*QnvWFSyz}P`*qbHNC8#+u&>t8H$D^1(K!=R5d zDoxrYB#+tUgHw_^kj=h~@GM963!Q;bn`R)-ZUgt*8|r=uluh9W(C!c!fYvrno?8g392W~}) zDMyTGj_u9(E0`;#nBi;Y%WhAk2C=>cTc}s_li`(-BBBcHmjZ)acJg*jC&2w)AF_Fn!k(eTy5{ov zN)`0;GJBdVs|N{_b;Og5wa$=B(=(Zh%&`;%9gNXcr&!A{j0tqchGh+A@C(y&L&)59 zaXmIoW~NMu3R0YeUe5J)tNTTULyR$h1&ob~Yv)Q-OSgz{EA0%Bhk=u)rC=UCS4Ye@ zeg3phZ9va^VoYQLZ0TlKoXJhRF^$ZvJ8xI0OPvR2^GVbH3K1;iV>Nf5xr}{SP-M7j z-uOinr1yqlY~Le`#*-`_N_e=(lixBmQe$7vfoZxGA1A(jl%11_L0`xgxM<`66#vo* z7g(xuY9cjE?WfIrobXkH`?~$zR<=H|Mg9mb zrSFyROR3+?`0)uvYK;kw69!X4VdfbLoZdv)e>y6ao`tpyfq*vK9=|2l5Nxx>4;~JGp5X|{@ zyd}lQ$?^WYUDQh>KN)}yHnh7 zj7Q*E4$&2PgO{?i4&l=Wyv_d%Cw+s5@M(zjF5c&3;P;hqQ!I6(-{+FH)6P~Wsmx1I zlC_+|n;yh#Iw1#BLBDN1p|W^^$@r!{Zutb-UHKsrDs1&6)MR(**)lcTRAa_~KM&lc42sOx*3%;C(T4^QVYy;_cUL~GRD@onnc z?~V);N&xUZlr3i%2MF3$Rv*=hT%HcDfOyb&TeT4|R5~~Dl2?CE*nH3jC*K|GlQ%pYGgHrm}G!mdY#hU!ZLgx-UbN`DX5{*2 z^u@YLYNGW)q?7!=0{WtN?g&$+J=IrZfs!NgJdsf#Ya)8$6U}f~3|86w#_-MQN?rdx zdx&c^uQk{#nr~V>S14JM=Ua%~alIrk2S5=AmPh3_6aY3=Yx!a!TwwCo3>imw@8!%U z;dLg*RNsw3eMY5zBV_F{VSELap+#&z^gdQJN zPl{_+lbWKp+$J6lhQ5lvk*?iEP>8HIxYbwE04S`{leFLBv_i;A zz-7e&cTr~d&fCLvkv{FJzd*{2`#<|~MI0L;^ClGE61u_Cj@aJBbp$6L{(2XhzbRt@ z<6TtQW3GfWZREgSV%dSQrrcVvDNxxbmRpaP8AYu88IAr_rtH;TJU8u*M%~L{tWGjX zOffhWH$QAT^PIc>XOVE)blU-UiPrj(si8EhHuZk*c;jg<`Z(4hBRK`o`>>Im1t+WK zU^N|?eK z^cVUG=I;_dQMoo2A3xN8i!=;VWzwl zYit!$?9^c#YO2_=gIEh)(0OELm{oOzL2&3@lKJdoAfV1oidX- zO8G?+*C`?vF(;Wv(gscap(KN~UvBWj^R*80*C3F7LzXzK-?7tkZ^cq_CnYo^r~fC01*@0N+> za}+&K@BL4h4LfGeh0TGA-HzaU>5M0hMV|%d8tH`( zrrBGc|8IdSG`(8{_dVwL{;ik)ul&US!Uc;|`W6WPnM6Wvq8hJEAlM>9%WWvsM3$$? z`vX!YEchGUz*B84mrC6^{j%!yB6~MgNHRePPx@Vch;bbRk~lVbmCIL2{5l>!E9_bd%Y>ek;8@U=L?1uk zn4#@Ppf4|g7&LIb$++6wWOj$8AFx#?S*EfC`KHBOF}L8WL4I!0L}M0}YplcSWa_KW zk;Oa1V^L;PdTq6t+mE$@w`~GWqbWQ!le#SZImEqj_?XmW8AF=U44GD2x!Sh!HkDIf zt%@#!)%(;cf8;E@32?f4Mil!7a2lMnQAFpiavGleEyPMwS761_WR=XSOA0fEB8EAJ zmfGL~o9vwQrn#xh*DT`OV%!+x5meOLaa3uE?^If!eTE4~+6f@A)u__mp==}LQ`Po1 z@2$##8;AVnAm1SVLac){KsP#R6-oEg5yHq*y;rw?dTgQ28A5MUWy+%%!lpb@CVSNB zg;Wur3~umaJ|OB)xWRM-$tUQ#CfFKpcOI9aht|G1fc8&jGMuGp4c>5^LYd8>=78m; z;$#LcQ=V{yAym-~Z;%rqkK8CYhmNhEC^b4@b9iEkC?T_pKjeVMNtP{n(P*8RBoI7n zJ2e9=LW)(wu`d5fYSnB4__5P1FS zG9n2PAF*ywN4$~r;^}C{`KTUvzoTZZ6EGYXH&bjEZloO0!zG$~*$JC~i_Qpy3rYHU z2(iQy!!7iS$tb62qUKFVKJ)MF7MM$1oR41v_4lVuVi_S}L_YZ+$l9E{S4aUq#Btj* z_VP!V{S1}g=n)DhD%D|lc3Elx>JWEm@oSs2e;NGyXY>BgRc;#ow^GXet&}qVZ%V0x zvDJ6u$=Ue7r7!#=!T)o^nj6P~Kv4KQ{-AB3j)mQ+5Q)IR6<`t+(DF#Hn{yhqx2I+j zzg9EJGx0qC`nT%^x-Nj{naaL=?ddR;y6xlrDS)cX)vT|-IrNK*D({ad3$9`R5K;^3 z7%BzypqfLWtdTBVjbKn;7IeXu=}6llsNj{;3dyvmHt3%AoGqkNUpkLE>bZXS8%$Nf zZ17OV)o6--F>YDaFyYo2#57!cd$Eq}bF5tLlg_i&IHNvf*RBS3K-siYkMEWdm9mwzQZ*hG?+h=glEbkix?)4Fr;4@ z*3Z+}<4YT@(Aj*pj=$;|iU^bj(=6d=3Cat!2E#2w&Ei<;WdyzEB^?9o*DQ z8&JPOLsbfqBNRwJtGsrp$-^Dh1@zQd`w`;}@t;*HPkug-Bi0%i4El-C@T<`kJdWSC2W{0ay) zSPkZYJg%;ZWjeOpQ&=T~@aqMrGREYph%Ax+0De$xITT;AFkLMVnsBqve#{o6Iha{z z&YI15h3HBrtexdXXUC)_jI)&2zr972wEsg%^X*@>%74xrY$=+I#P^x&{XTR5t533` zn}e0@e+4~8Dr){S?(_+oBzcNT*5sP2v3WI* zMh8}~aLP|4InLIG6m!Ihor)0(x7g(+f7CNxNo+7;uH;5(Ux>@+YAO%&WSzT)h(Zrt zcp0gsLw>@kq`E>e@&p2O{tlo0b!`?F>?-v|Dw8i=XvK~+YGc0QjLf-~d=cOHi92sw z`{TDzI0w{A;bN69Xe9KgrsJE~SG-8O4f41ko#7#5ZuOY0xLc5T6=4|6gdx(nBcq6` zk)3AkS&M)B0EsMvf>`DizGxRTWec8AS)A}%p2!vCZZ|!mgr*QM@nAMiZq-XZg>4!W z?#2WP=J6UyRVKOC=%4T`$sS{QZbW4|Z@xD=AtEH4-zJ`dAu7+~KW-7gXz&i0OVYgK5ME z!)kb!u@=ez>hEq`&^L;iENJOJXxf1$?A zCK~mm3+94IOqCrLQe{mvTWF~MHtM8%MG?lyaTdap$&EyCO~$%)6&NU!&T;D31?^Uw zi&nk$7n$l+YeOx=Es<#f#^DLJ>#4b!13R;Wg9wXc8jlewJ6AAZcN&9>)bS?VFy2Sr z^J&b&GFa48nhiJcGcBt;l&-NdRu*iTsKd7DRj8>$rTS$mu@>pMsZ_%lw4y_dQu+JF z5eP+aZE1vDK`mpz@VVw7LyLis4QP>NiY7ZLJ(km0NrIre70QkGYp~izPQr$Bufk*? z%LK(ch+1WOP*pKC`n9h4%Kohj(ra1zlXx6c>eq!J>oIE{uyOo5=e?cfQ=@jsR74sg(9itd&=w41&Ji<;uKCs)g#YaIMU5yN%%7LTVbx~6lA}bKJSdT1y63PQ?KYY)8)>YA z%50!;Zo;8Hh&y_9V3=@RtE!iD8K+*^lp(NMjyrEgQ+GZXFXKLWtyrCx%s6xGbW$B& zxvTvBvAZzO(27w$!24KjvW{AhVcS=%Z=7ePS#MzE&giUMk1u0CfWyI7Hf1)s|F;SA zlQR9s?UCxqp^3ImDum{w1M$I6*Lw=|a}=auMu@cp2Zy7&_c?7=Wt1LuVl}tEW&a+0Cfp9zI2==&r^^NIHhi_!9>y zvQ!1*9eLjtN*=$;*YSqDG>D{Y_(ATN-7};6_t?Q@pIi$7lHieB8U^IAebF{ z#%V(yfX?^R!I%Fnf`{l-c$C}<)~%nS@u#HQfHQnUWTUd>C+GK0-pGMH5;IA-M%o(f zirA%z1!Al5$tdL?az_A&+Ejq`*x$l47#%HPx?1+ButFi(i5XCxVp33M+{27zr11DGGOjZi*iY+3ES z6>m6^w(JUodthyMYrt}z)1iJKjz4EdMYA|%+*MpX|EB~=f0JLlhQ-NvN3 zR8UZwU9N-76+#N82BGps7Qu^&bI70yVr@I-wsY|ALC!D+xAFQ`3kTgZ*R%+bC~SrWs_E-g&mL>h zl(BQ1Cuz|V-OX^&J`iT+=QZ@gPprdSLMj3n$B}F} z6u0Xf)mn%}6HwK`i;;Q%lcW4k6br_iZ;j&NJBc9s--;_#w|zAFGorOMwfS zaq7mUHCn)EzV1+fr#xZ21T3V|gHn#s=q%8Kp|OE1rx59-tw*KG_|P~N9%qBvprD;R zfoWXXRhr5i>Jcr`u3-r=ag1p~T*lmJuN=LEm1r3}Tc%@sWyR#LUBBh2^eO*W>%+Zu|% zvgE1QkL_95X`4H*g_DgjmHallHpYWoiFpe1+J4Z7k_F+zY;T9aYr35X#_^nJg}=U% z7+$%EA_fcxn`2U|X{HvgT=)hQB_QQLB%53cp9n}0q1SAgs|ta)j4My%Wv!K~5jh zg}IYNrA}O_91ADi*zNl)aNJ0{b1R+g79%QO{4{En z!to8AoW>j4L#+{5yI!1d;8QGCor*!m*%$>u%OKHBgt}H!MnZar!4@)5^!5{C7joL* z01Z0$SAX1JJEEO)gYPZExXutY+NlAAyxkF|!HBV7fSwd?@Ab~MXv9NAPVLC z9?!(Wb_T{rX4RSvw(tJ|sQPB-eV4=Ef#N?tsNYYv_NKJ@0DVIGPlzD zQd=|n8`E6Yt;4&1oSAw7n=XAA{c&~eR(+-dOevZ&L(^5k_w7qU{3Sg&uBN)rua z4I6+V$ndiv-H`{o!iyoIMG=lVLV@T50wQtn1TRtBPU5u-_Y zG!Wxim^~j;ijc>LsO4FbR8KMkSQ7MR`hUf74o#@rpTwa!i+ngBRXL zx)_Fdutq%fJs*pHYO1p#U1lTBl-6*IiB!8}Ms9$toh?IWRg0n93bD`cb4UAi@szoW zK}&s^`&IahX&6#F!~E!D-?qvqB!wgXuR2t`el%(99l!=0xz4?A4$MRfWS(su;xBu8 zYzNRv@vYIq7{fsjyK@QC%92)g{7||{*}o*MIr~m40?Fb871EOPtS#pGQK%J)WT%Wy zTKM^L+dC>sa8VeeZ<1{YCEe|0_jncbDl`sbGO#mOSAse99{kn zm{aG^G;NL>f3TQ6Wry=!rTU+o-hc2GXbVG>_Q#yt4x}@^iw*C)3iL-iy#seb)-$du z#jng0Ju+Dv)@SlATXWb5G>5n=49m`z@0&ieudbV@o0qGc4BsptS*8aSJH7*TFWgeT zYYf}!Sw2@rZSOu|W-Z-GAYw5H`eznolvZS&YG}1>4 z-RpJ|q1FSesx7-ynXD1$9Qqg!su03alu9nS-%fT>N5}bw@LdBFglY9n>B)z8Thj|1 zCxJC5zQ?)Br)!2Y0Q$bMb;hX`E?r}qm({|b25RiyiR`D!>sQ`9AxMi_Cgx68b&_qc zgvJAd2)WN{uMCE!QKQZZMbwFx@oh&Y*2=Rm8Z(wg9CJylNsdYc5~2t=G$zJ*nAlQA z8ikOIdTr$DwS!`Vae42+)tc$oa^pg)GtNI1Qh!y*eSJAie;Y{#B#Cl&B8xMwN*UKB zty07xKJKJUZ=TJ^*HRN&Nd83h?|AA%yX$nFunF<3Ei~MfPpTeUQp+Wt|0_Nh+bNOE<)C~2smJR;EqKC z&mJhym+As=7>Do?uMDyH!LO%7Y)#HOrHmo!M(Rum1PwtOAlUR$Y)CBH^e@H)kIMsH zp6FH2gkEO(EhE(id{~90YVrD&wj0y=nG-zfSg`qxb!(oC3_qVtM?+oN;st#fX%DKJIpr^$1g<)Om9r3VOt+_2v|MomO2#Qtdj-c88Wd~rY0^nh#< zY0%WS>F9izfiPiA=YK4Zqpv%ri{Z0Iu0?UMFT(@B7{wn=7(q%GxsAqnLv(hV5G^Rl z4Ra?#_QG}>(UNJIcZ``E$(P*^eJUbPxps2pnze`5ZGM?CQLQDX%Mlj%6a0hLflx6V zq;+H>aOlyzibt@Id%W|w<&CTJ6{zzgZ<^VXYY^4l+hjK(nnt!ZIpp^OGr42f@C^c$ zy=eG)v_5;PVlecu%8=Hzb{t|^jW!8`K?S2k9Y)Q%i4atfmh#D$5%3mH@ zv)RPaQR6!`>2Qi2`uwx1stSF|DP=5l*jS`wuj=2c6XrQ)WMhzmwXJ4ku&A9{8m=#A zdC71nofRlLTk;QgzhTi@v1tyxTxQ2v4+#=;x+PYZ7qa`xJP+08cU0Q&uMJ{ACa!m| zPIj;mlt6XsQV8>w0!P_fKy94`)OU?uH8Z4q%JVnYKf(TAv--ymzyFldq5QWgowe(~ zWOV<$!j2hgO!nQ|*8Ucs|63a$i|<$X4ICWp^$i_`+-&r%%?+gmjP-5)y@XWJboqxJ z3EL`#UZl_`{0kL`pg{b$-=8(0H7rc(N(CVaVQ%rFdGh#FHb(MF7i5&{SF&-mY}dg? zChfIGxooX*-kolQr&OYOaZ-@^MRteBmq(uMu1rRsueWs^AprRHDBGXBfMep0n4T7? zzIsFwqXBs-J%tEbn}K{+@s7;++MkMuQ{yN6@+7z8h%_T7gOmdH@_h{vk}2Xli@-GF zt}xZ(uD?8yB*>s#h4qx_Gf@<&ec3TMj*wd7{@^#2km!YdP(d(5*hwUxp!4B#y4$XN$%Zk-wAj!9RQDla-hnFcG{$he&Yxhb$Z zJuwLq&HMP`a~LR(m_--03DT%jE@~$_b7iGM*v{iMU7kmrM@cSuWXN##r@o!O!{uXz zZnPAd_jPNhe%g&ML3Rv{J6QDAG#K6o9ueThET^XCKsvaV|OGJ~b%|oyo$M)gOMB066Vt3W2a$A@3@v! zwy0Ko1AQ%{mS$}~NeDS?hF0LQR!B2T6U@rxUAVko9PE=DwX@c77EJ~(PwxEGJJHru zg7(V&?NWAezGW#LHR+xYbOsBVu<{95EUO2l&sqFIrM2PxN<#G%q0CD8(-A*_CJkz1 zhO%o8#Aadf&(NbyrO2>m#V;W+Rbt+vHyr>_jX66|Z=Ec;J z9vb5AJ>PG_4u#W`KlctzPKn9T94ai!VzZg{ZZBhQ6d;X}zu+;x0pF z%r2wfPN0qJ9ibM=@<=H&+ID?vTimnuOa3UD_V%n8Npm$(Z^~0KMs1)ar!id5lKWkiw@H2FQuL*q52#0e%_=qc zS}zk;(7GHCw|^bj&L7F{6PVO2<~txqH=n%o84+RHI?k-(=F}T{almjrcm5Wlg_GXs z8x`y(7`y><2g_6M)hl+rzzi`~q~~Y8l9wJ-xK%EquWg7##xrSgdy5wo3eEJPx@r*8nq!3I^ts}O8NhcXZ#oCUNtWUh5=1xQca21heB)AYwTvI~ znL6S$MI*o_4Rc!#*W51GtLNQcFCTCZ`iPd8VPxbfN^(njJ4GVv%}iQ@2|=;|&E8^6 zB`KIaNFK%8)*y4wTs@J&iXi+Aj!5>2@|OIasvxE!CC^el{=rUowb`1Gx7_o%uxcg^ zJTupjY7{O7IpY&c57d6M#rULN)|ORd(8~=Q4CU#%fDGf26zi)ubs!@{J{BM&%_$Y< zUPPN7ItA-n)eSR;Wd;iTv<*fISP%;;r}K4^=LTtUq9 z=joOQ_U(c{g)p+9_w%g9#mEazp5fQ%VPE4GP@{#b8#)^#r0ZH;q%G@{6LMlq>F(wa zj)pDh_$FyhArbd5wNtF?3r!B2_gwa4fuwVqmQbYkZRX9wB8b(nm1J2yBmK1J&$zr~ z&+@}CQYX*gc#K*k7KbSs>=OU{ikWcOk5E2~4^QvVGpGxR#+bHm?DZR=^Ay2@8gItm z;^UDYsw=uzvn%)Hs1vB6cF9`nvt^Hy4vqqHla0jpmJy{R$D);M2BgnUST?Z~A#p

    FeaG zLucgSOSxohEyz{m&=9_#7qeobJ#@(E5;ibsC4GbC|IyeL z+ucO5*EsG?&@#;Du~@!&kUVJ7o&U-~xwP z9=cD|d>?%_FE>2Hzb@!r{y*1Nho3pk>`I@}{$BzH{%;AGI&$%h?Dsm{+xM;hpR=id zm&X2UHdUww;fZya_|+}86frCan+lxZAEJk--c*SAn@A$3F}}sFHj@b!n3NAg)6m0@ ziakFTNzr|NZcf15*N;5G9vLldlLJ2~-reCrV&%%_>FoQvCHk~=Gn$*7bM4Iz#ve^+TIq^`0eS7tJmfWLGE@B%H3&4f@O1Owakb<#42a}S`rdvs(R-7tx9HGy$nkYp_BF-(y@%iK zlkvMR5QI<3PV`MD$2@|od_a~jFGq+O(k4H~FOx`|XgN31!dQW*%#cLExJ@8;ut6xV(5WG! zuL65f(y`D_rel<_FF{6wW*+jkL!zjhIE?HhHxaQi&b-l&6Htp9J)6eS7PK^moOr5{ zx-{yTDFnlyO*`+Ny9gR;fXF~a@VI(nZGD9-!tiKGK>O8hU zQ_!tlq|M+o@&Kzpddc7f>E8|vxyf*;Vg}c#nAeH;7rsi&cG~zpN&TeR-Xsg2bHz;z zYcYx>xUqtz1nyj&a&@uDQXNiR)cJRFqFk~~Bh~x~r5Xogkad?)F9X9UrxX7Wk%YU4 z$oO%4qkgAU>};L?D6Yu_EJI)#?zlz2$QLdnYo9`rN5RG1onX>Z^6X`!bM#4(2}T8o zz85p`xKLG?g?n(;HESdSy$JY&B`W@0DkE6@TF4S_0V!i^Z#pb7r-Q$Lo1EH`h{%JL z1}j84#i+)nIEmCFR6k})K`*{}jW{MO44ySv>?J^|o|%y9KE*b_Pr<@tsBS672IC{3 zQJLt9J~G2x%`gB3HV}UP_W%5K;o%qj}vj=@3|&Yh)jm~N7+I4N4J zm5;t7_%%PvjFB?TcER;O%7f$RnlgT4*Yl7(lMQ>muzOk>CZZ=6s}qMlI=Dxqyy`4t z_Wi^|U2ntP#5UffFwGnkPP6%I7iya1wKssd`znd96lUk9=`#e&`;8JSMLPzcbyM18 zFXvVrDH@j_uBDfp%d8J|KKTV3YknjZ3R~hBbER?%x!KR_nu*d@(O0+^@0wBL=-sGr zOYW&r=y9q|u}KQd>r2Wm;yD(prl@#}%p=%x#c&oAR(uPsf8K>ph}T%0uhE?tZShXa zF^+*V^V-;ei!+ic&zX={sF5IBf<7Ei@h#v{==7gc{6$cWVCfb>vXl}YCkaP+56J^X zGF$atPihcqlla9%HX9=WiW7I@9m+rfqo`7dZA^?Qe@geupLRDT4DA*OO&<0=0O=V* zb6u!Zrj#w*fg+XdC@%wEM=HTW8D(G$|1tq|bW!CbS#>lINK{(5%C1)0`E*H+#!ED* z7j+>II1hdKBJ1aTMDfB3sXU zG&4$Q=o*;^aIXv~se1q8N(wK(tD_8S>Ecw9GxBrtKG5wGJF|{b{4faG)^Dijh@GLN zSR#R+s&@iz{7F0ow@kLdS2C%DA7Z^9q7Hwrm!NxsG(eC*zKpG@GRwZj+oLK*T(q8j z92Q?yKRVEPl}${|QC6T(b{;992omZMwJwRiV%k|D3uI}MX1&*rwZvFsve!@V9=?*? z)I4E%nO&$}AfM-x%7_6wc|G%|>G~1h@t-5D@FUQbA+d)LeVEk*dFv=_gfJ~jRd-e? z)^{A-CP@n#;z`8;C)NYDKX1!*WIszJWak+vBIoNVx}>uI{>ts}n=Z<4dxb+^WwPv8 z$uEvQ^eyi^)9!od7=EDqkV-ybPs}Qwwi~BUPR0^|YnGs$sduoS2*pd}k)7lna##1H3ecSlL@cSB5D8xn@@_9|WdoTU5 zRSV71$z_c+Sa3mb$l=C8eh+cVfQ9M{2jy_OHO@JGd;6fL3~DB>&h%;SmT8JZ;NW*F z$40}juz#2996L#ZAgOgtaHh&qrFX&fxRsA)WO^|SZM)pkyx1HeI8p@9Dnnhznm+#e zI7@Zr+b;u6v*f?uL;1 zP3qdSB&F=y!>AA*^ZID5?8J8&sVD6u?ZqqTqlN$;PiF?J7xrAF4kwW;k9~cAERszg z20XypajTORC##}Adpze@TEmtqdWByDTmEq*7&bpnMw3d_B2y!MECvtho=7%*AM2;? zpGot@a)rrm+O`hLbPJ{Xc2%s981I%G$fLvO}9?Q{olEa>SS(RitbK7+L{d27fV{dchH96VuUcTX}&Z+>}-DP zYo-M9g~5H{5@9X+z(KCI0@bXcIdZD-(Z;CTJTGBG49G#?Vl9CM!I^ zm1GvHi@t-$bDzluF=+|RdM~{{eQY4{#tUNjS(?oP4yY;LnF+;ioXx^-I88>co(|Ay zxMQ;3Gg;lHxM+2}+C%Sw(?`35rhUrEE*9`WOfBfVHEnnd(E#;p>k56w25Uy9xaORTLxI1SR&Bc${8p?cWZk?D zT03N!Hwx+f5mct_=;M!}?8#kcQ8+kmHb1GTOESDY=4JqabMVuRY&_E0yUGA(J32%% zT}N_oTBd$bP@Cz@{5n&l7rFB;PA730r)gaMIXYYcMid4{b?GFgfEKE8 zD)WSF<*g*kOv834Eq6TAjHrF8ug&wIs0nRSp)5~e8=v0dSyeO6nosx#;Ygk7u9)P zf%jxn23sDu*PMY*E}|Ad)Z8rPnY_#qn4(Kn2}FR;KV&&;z)eiSylMl%LkMYn;b=3# z67)~{x%I5dz(oYlU7^=I-#srB*s}fy?o;|kn-5b$NVO(bc zu?tFCzDQ1^!{7LoY5%^V0U%o<@q!R=b7c3>=fF|z+*R2 zd#2FU{hl)>ts|thE(&0OrRJbNv5d{ox;_ zU(Ed5IndtF%q%n`yk-R1?!tiZmhT)hd1CQa-`=<|as6RMc^4qO z8m6UqCU*O(^V6N331B_kS7m<3^wxIWj+@?=yG_6Qqz37()UOo0=fw0z>n82?*4-a= z34Dc9dd~#~@hRAeR(=l+<5j*j#niYxCU~VqelHB`R=8cpT)W{$F;#w#4C`K;3F$^M z_o4OsX_L>~ z2d`pQDUe*YP_g@?D}T-y^KqU7Civ7oP-8_$qk0B3P=h&Q>|G?WY6bwNU8*2dSgvHD zXs(E4T}0hiuUuGuh?6MFxh{coM_Hs$ToL`!K9FS-xJRL#KgR;2$lzWnvCKT{>@N}VQ z&X)uz7ipf&5fFrgp={92{RQ0F-2FAR^$YCr{}A@h!IiyVzVJ64+qP}HW81dvq=W9* zwr$%^PHd}#6Whj{-+O0n&D=XPw`!mL->y3K)Or@`g9Z0=#VrYin8Rcq<+(m8J0wx1 zOT$_pSl7UqIi@2H;IS=&rRaR0?FsZ2f4m?(KWZ=HPp2iTvSm;RBWNVgicrADHW|ob zVO96BY_&4=F$GP(p^LPWzRcxt2}$0=9$40nA}5KpD_Jp~0KlZAGh*x3DW5zWsT8q> zr<}{+zP#5l4=7og^Pxx7n|D_lfwb&2CKt%56I+4dk}UHYo*eQf z)dk)rStmK+sI5t`O#FZ;j{ZYbl~RtYJJrYBX)KlUpbO*y9D}s;;s`I&Qr6`nt74R( zknD2V@s9Lni48zgcL)lH=te43 z(sYtQs~$4ErlwWS$qGyNHe4t@hFvZAgS2tVT-^Ai>DA#5JjBqx=0ilxQp6?+jeIZ)8uEthsSK{R-v9lEI%CR(>-IZbLhL5hG}4`P0p2 zcNgW@l%+~x+aC7SRix%YG4EbM<0@IYal=EbEHun9@6)=X4z=EbFWPbjV)RHjWl*E!^WyzTm!y?;4knFIFb4@)pY>ig?clLUyY1S=jRk^eVHFK1>i^CC#k}VAUR4_VS7T zuUPr-k=cp3YAY2>XTnARCG_bmZ8&nXu|g98gGJqXobGDJhod!FgC$Nr6IHx}lT!(a zgK!RjVk1g~Ero@xwV#GPhBlA))goZgck&xf06WH1Mz&m5lxildTr5Nsa+U3LFMsH zxWqgbAnFx3*q?Yr<Irl>d?YLhYnf)tXUWCs4rlg=&`HJW3kz_z_ zygq7;utdW37n;Gc6G$xz1LNCAfzs4l!7nRCRrFu7r6VWM!e_?%AR6g9`IK%vA_^z> zZ2W~liR(h$?TS~@)cMQ4%OYUuO^5L2MUUtVch-_v8-TiyKkj?e8ZHUv^>9;t-<_gV z9sbR&K3&J=<%PMqTk|b(ZO6KI#1BL5ZU?NOgpTK`)vFYHq$o>87brktzClp88p#yS=*}>u?y`S8 zS2&_qYD4%vbtF5E^sLgFdo#nc874hVGBUPgS`)O#gigcm#qkC%3u;#Sssf9P7g`9X__(I)DAJu`+{)lDPK@)0)ES-a}3zrBc}kh|%1$I24bGCKLp z8pPrybQ{bQ5TvTF^xBGT*VzXGG2mM3&xrlrRjAK4?#q=CpYfL;TI|}@$W73PU&6`0 zFThtYxb)(Q)iY%~126ogdYmBn-~(%a8|U+ZPk-kq_HG60^cmApW`qxiM;J42QYhI2 zh}RSY&K5l_k~=sa6GOs4ZM=l1?h&*yNj&Ld<8?XD&E}CcXy&3hg2M27PQ6~3!C4oa znymq5r;RkvtPY4?<_4=MK6qy0wlZxp2o+nU`}54w)8skgIyql)i;qN1*Da{p68F?} zy=Cs2B4?d1mR`8(MiFS~Y4dzK?a0O!`-m(-KL)a(Myrq7Y-4;h%e?qP&*tumft*>a z#r5@_dKpfh)&?N_esije9wEUq=Gm}u#9rpi{@5$rwHespIdZySqV1_6UvwkbICC@w zS-IQWURK#w?)`)Nd=$N#8F7pZ{Z3;nfy`?#z~FFcPLLFSz0tkqQP*~uqA0_UK6l35 zN4kBHz-q>I3jgTE@|vCAkUMQGqcB=(S1aKaDYAw_V{EWO$EeZIO=lQ;QOURySp&LE zJoE)3XRK1y7)kGphcl3RZI)`u-V07uV7ct}q_9hSdCmZ_2IJ?DSd7N(2vUu5oO~Xq zv!>M=eLG_P2|Gge?heOj=tv-vQ>N8*9MQ3;My5I?2Iq~&xND|PjP_LUw}lhc8x(Hv z z`j&zsZM+-ZvPPTkvgH+3Uue8*Cq_0+gbqs?$>cE{qLVwQt|4Ak(;VhxZqQvB7OrUn zYLnqw1P`0RuSQL9b{oaT+zBP%k$My%$!J(Hlzam>sm^8b%I*$OIZxuo)va9>D@9PL z$(-Kp!rf%!RS@<_RoLb~7=k_m>o|(XTw z14R%eYDgZ_CZ1tB7Ul2sZXrMMi#2ri$cTELZ4t~O09j-QEq#jA;B%AopJVj z=f|n|8bQs%L+x5PJ#3;^DSr8Lx^ivUI`HS2OxqQF70mBIX z>TX*bo2xg0b6-oHizjn;&crRPohMr2JM+J9muJ2PIesT|BRfK@deu9D&v8MBGHp8j z{Lf(n8&5Qndjime)c~T)R7c5g)(0vfp^78D0D~g|Qf_YCbzVUFbJ6p2QjkKVn<_xW zn4gXSk@lU71PNfek0yzw;fNNyxT7RX^$bU#=m-}ZKH>yUdENHstE%rkD~fVxB=MWo z1yDf|U~9#fYxUiPUFM!Le>9i;U2MR>>|GA9jqbXukNp*Qqk#RTd>x?p z2Hy1zi~iUZMERt3)JG}kp+hAjQO}-^8!e1WtuVc0wD40-_XO>?#klkLW4$w~@o4Y&D2yHK;p7 zCyf4JwJLUPFFU*@GJg2Myw#v4UZ8azol_Mb#+!`nZpIq|HZM!Mkc^KbT`b4n<6;_i zGXs-swO$w6JzJWIaPA@kkG`4ulrbZTP+DX1>mvU)t{qU{Ty61()NWm!pduenx?m0E zW$l(O`odv=n@;+`5Xl)+B&%>*3c9Xr}dvFt~B&>c*)Zx?KB9Ae+b)> z!Fj5G<&gvv4^+*Qj}&o;0k*SlIhj$C-?v{RzKLonxiM{6l5f=2{!wp}(3YTLu>TY=V_* z5eXh+34L)wC;)=cW-P5(OtC4e_fA&|Xin#7|hhnjsYkWkeQ(*+|wKW6fbO&;jRd^7AL;SIEvbu_DF?*AGvD?s+ zo&JIIfYq7b=$O$x4zmOoex8hKhw7@iQ@S0Ci1^U5QDsULrEAQYg{brMT?9IMbSo0h z1lQ##g`A0EZpR=Vb-O1G`G)480R3FX^DC&i()1`TbxY>etyP?O_4G$=WspLj4=|`tfyzaTU6bA7ECghej$vkGUM81G z%+eQ%CH5s{3?qq|B`A9N%HRH0_}uuZ4i=Ct(%FmZWezdUweuY7HG3HG1O5$YIUV5^ z$vl$7-q-rP7cw=3@sB8an|&&0t27JnaBVSU)7~W<#P;y7V&;-Abd**0%bsFj=Ypk`g+s}FcE-7BacW58 zj63{)bX=zNy+0i||jWbAf_jkP;$@*^LOD*deVbqq3Zo|bqBsT{z zJ7?W?_m?j&`RTi9{tQ1!YyN&67pZLP_fr!5TAZ=BIGHjjMOl!R82X2B>>Nf}5+ zrjhyM$KRhHH^y0kCorfBB8ECjob#nKK+)Rf<{-4(77bVip-f{a5fgsiH!Jk?UQd+` zmg*d;4Ynzs*NqXw5=HqF!8$ZM=3o&rE` zHG)Nq5yaK>dCCa04O}C5(QmkBqc1I!GFZ+SBLq~gH{!^_%;%K}-M^DbUK~>{zmS*8 zb|1Vl_ckA|kwr-Xrw|m764d?01=Uqwbz`8xGc! zy8(e^w*sr4ShT^DGIr@2+AOtQg1=Rz@C6?DEN_Ur;2maEwkQ2C7c~e0!Jlf}x@3!! zyL%>@6tV_`vKm)8KbtZI&95Ew3LV3WhncIeN7m=~#x`zZx?of9w1>|U#D9~8xkK)3f#Gy}s;nZS*8JLQkpb3$uveDk-e>|$G$kO|D#xyQM zSe!8(#aCBO3S2Zak#B}St-a2oEK3}^J+k?_^WL|w=PNuV2~4^xKnm8J*jAW^YpAw} zCfY&orbxj-bV*!~OC4u*tcX`u)#B-+KY;t>poi9LfTfy4uISUYJ^qbdKSVu-W=&s( z9*Pydf>ZU%=%iCMs``npWAj8@6)jCN`b!Mq5ns4*!SkbKxb+pDxKvNJdyg$u0imft~*e_s>5Pc>hyV?_gnJ=KNn`Jl{H9 z^e@4NF*4D3C?x!209b29<(S8)5AG%Ysaj+ptH-`4|Aq(7CFL!Ai{B`8&{AXkDd4 z_fpsj;WsLKcTEGi3X#16q`OT4YgoxQTFid({jASj&u3cT27Q>r_cACwbXYwkLB48$ z6*S4`jv$9oPk8{RnU74rG9RP-XG_%8=yOfb)!1`S6d_gFAnduL%gKo(jQ|}O>NrV;RM{nya=o~nW+dEcG&E_;FAtMY%MRk4o#v^%izUPo~4%3!fS1~$l<@s7F8>Aa60Wlp7ajluBrh@oz zIJymRtgStUNl;U{e_cPIb}0IWN1Atgdwi;pqW*h09@0ewy7x9-emg$H2%FWX)6{I-PFEhL^0{EQ`gUgLN{Dc zSqGX_caEMnCf3@;kx)mXUT~+X9W4Rn53P##D>F)#CBp;qOo!-%g|2|Zw~s=)I4Vi> zsL~arTB$ylVIT3*D0rG?p{xzPmYj}1@?Y(mC%@79P*TAjN0(4Rq^fm+dGaz0``@q) zXuS;x;K?6ysywkt*Pp;I&|uadpxUC5r~V+M!)NEQ5F3Q>DS|lXZ^&VdJ=!bO7c{hW78&ip~6CkyxaE1AJat~_{I zvPr1;yK}W7wcGQg!N#T$2!T}VNa8?U=NQ4xR5f+XXjMPyDn3Z z8|%u;_?(~)Xt{Pkg5X?*Ks~g_T?94eG=u|_1?h;^3yk}nE}g0Z3HjHN#=dCpP(VI8 zK!9`VZk4+$zldi`J0f=H%&@XhGoG+6S$p(}pJ?-(2%QPORWVUs30WJmdvqOtS|?}hAx3#@Ggei}Q}KXRE^S~Qm< zq1^1Y%c#(#bt97G1ySmH@%z>3Mc9P%uve{TB#hKhb_!(oX(^Uc!z=+)VogL>UK^Fj z^kd9;$46Ea@rE)w7vOLBJ5)frDL-UM=Vyq=p(&wAmb~ah(x{CZWyXuRV`;xU=Rf*Y z%7hpD8Wp1`yty06!ohBs8BnY+6m70KE7qnc%X+Y)${hd+j5M`%F*|+9gNu7fuL_g> zpM2P6jU{bS;gnuRHMG)L#1O33I`U~~2xV=!4)s^J&sEB86No_M@EYY4>kjc^8?nD# zgoq8BKb~vDyw`)@WEnTfJLJjbOp{-LUSdO??Y?>&ygaI>rP(xMR22#Gpgtoo9Z+C& zTwt<4K$4BwsFZYzx0(8b_F#)fvOZI?GK{Ymu_XA0L9 zBoRvd*@viHC4tTQAN_Q-+NB=4fF|FWxq-c`L<_L)Q{r&wEHD$ue~8~WNOhs28c0pAVC%YJ01ryWfmYXY+!4V{iAOJl=LX&V5noO7>h< zdCIu80;LfUd)zAQ~O)oI38@iU-u}#$~T| zJnBRfb}VUD#6|`_sZrRLO4a4NSn}wkzZJ!9wC{LG8(pfj{-@YGDGOe$lXtKFgNIkm zcXBc$@!oyhFcmK0W2Z|T6z$_pq%x+CGw||uQognA%tl&MERfBvlpBY1Mb$C@hN_)? zPGhxG@`1*Y^&^+VT&rB%0A26Pt}-2d7R4Ln;EsYdU@D4t>()t~W~d@{KI&fqSO7P< zUrG8k&04(Ls{}qBV5$u~XeAFNQ8X6*dKA8i-FeV9dXqv2h`(GG7PFkOZ5G`?<)I1C z0kLs!wc!Zks(}I2K6HUlLtmCDp?{w2%xyc3G+Zj5h|=DJ7#>U zBn$geN*FAt>Vd|ZW_4&JL$izTSxV}{K0ya$_5^DLFlCZY-pouDbTCA^c#azDW88`G z={Ul`Hfoy6q>*X6NDTP3=t;Is39!#1|AKQ~!zvQ^+UsagE7Y7Hq)i;DYnm|t8XOv2 z($eA%N6-cE-kvpg5!}8wpB+#tu3(#EyZL@HIV{B%j0#p1wFTB5<9`9mRXnS-fJ0;=NrBc4l8ZM77O+^5x559Od>Y8}*sCJO|*L zXfBK-TD{L0P);^X^ZCO{I4N0hQJ(XAGJ=u>1wWe-#=@Sx(>7Z2{8`I)T&qyAM0gwG zjBNglM2w$$68O~U_qiH@)C54@5K91Ds9Mo}Ra~;+jMUXQz@5Flf7|wxALYQGW9FkH zeyVRs6k76X9o5!PSD}QM*WV~+_bw|9Xs<3}3q(8fpiS>7|J}$Edjrws3YmCy4q$Bk zu!lY8T0DUXuNhFs&;iV5TXYPp-8j&fnL!_OkGaEN7q_8j$8`TVwVyB!qu6ljSL>ot zJaf-(rKfb`{XOvVvx+z1??T$?wiBGjBY(u-z_J~5o)CeU>6+JTr}Hc@BYR(rPUrql zWS_OQIWfyE1WPSD)m_U3;?xt8$c|$N>5xQT<3hf|WR|l!KR!D-O+?$jyHK}*c zNDI0OjuMi_S%qaba3a2Lg_0aEqG2!aUyhz=oUS+Z<<zmqx2nYmgzn5x-ZIsBWX+)bg=e&8ok*03QE za#txK1O;!FJzg1UZZ@DSuXiW1{@^*z45U}gNUUH7^i~PkhDdr?y0LMduju22KikMK zC?*hx4_A$C{J}KeDqqZzg*>o*oRf#h)uMh=Dt?p=E&Ww?kq490PS){BE2&bj@`a#S zNr1TPfiRSSHV{3ZXUYH8u<)Wk=pY{?t!*U5sz^ontk?Yp z*@d?M7*YNB#)SPJbO_9Xtk>jlqd_D0mtW?g{hRl_LZ34J5rTAvc(ow9|NJ}d@_#!o z{g*O*TXXjRaFqWtYwCZ&u7CPI#-MN2DBXW`l>hqV-#wSat?Z3#t$vv~|1b4uvdV`2 z!cQdr%pe{qIn;T!&He-B`FmrfaTR1`mE%O2c;yFlyR7KO{u}KxIoNk}sE8p@!afON zfV`p%GK%l&&E#4-YwJU7?sgApEPGY5($E76-6qv8g+01cXB2OnPDr2_>=WIlMOoKL zxBy|Oxq{d{)l}UjHGUi4;pfk`d>D>U`_nh)R+J&I#UapnU_ppsLu`O|EGgw4B zx?SW!0BrgYO}x@hS&s?CKzfP$H0R|g6*J#$aBxYqSrc8=s-{@B(a9H%Nm+?m8*%Ip zk6vE19-}nDU<3$ldeKnv$3deC38EY=UTMtr42pl0<-q@+_FQ4pb-SEd^J-+ zTZu==JQAL1rf&D>Wq4g`w2WaqfhF=kcAWTBR^0OzMu}ar%K~fMuj<+c{o3cS&eiBB zgsdan3G6Un9FiR2JJ3d%Wk~aBLHQB1KTDRv1msv_dA5r8FX*rpKZ1O!9Rp;lXGXIP z50iXjKFJL;rEO6MENs3OnANtrq1a2mB`f0E#C ztd`6j!kd@`#{F2Ie-zPZ>*LAnp1hm~e9eBv*ZQU-mrgG_T*&@br8v4oVUnaY3h{pY z`TBjPZ(OPF2(O7WvZTt0%Y&Eo7EJ*QDR+Mzxbfj#0AWD3c95B-zg(V;>v;2^T zP+|#DN%*YX;!h82-$b=*#c4ZMp?|44V1vR%tj|oDisaun4RdXCI7f2{QYP#zyG?O` z4n3A#6m7ZMk-xRO)~eB;U~w*(+p&*t4YEKU3uI4^Vo;bTLA1Y$*#&sxJlbk zf`rk960M-u1URsvDa|{go3&3eSK)|w6HVqR!G;HS%1)ruU%p~IvFQTPL)cEtg|}q$ zGKse)uPxcI+KP=JJ7Id3;`%(`Fn{!@; zIJx3Lf5>rKm+g4N3+4?uRy$Zsw0I3R$@HAuspQn8S|Qx$Eq1J+*>#p2!J7HTo}~a^ zN`N{+wNs(~Jy&^5Sy#La=NESsGfaX_H-FVLaj2LAl`-xA`b=+|(zMZX>fOk2jaUc1 zZEW66LfDxnlp6(lI%$F~#L33l|7OAb?45dB=hI2cH!fmcn@Ef>*TFBimH0!KA0M5jl_wHSPB?d9Fy#04vpCl zO1H;zQ8WK5@Df{D=ucD+1DuScN1%`JYFN}M7HjhJFoLaqXt~BoLQFJ=XvB+hjtTDniG*IcP97wsb#FK+{c7dCrbJ%u+74x4TS)f zpaY{ed`BH$`2U<2g7zLqLZJTnM;hh7snP!`EZ+&?-)qail@twcS2PRsFZi`{Q_4Y7 zXs{MZXhlmR|0awGczXJ&K?q?gsUTrBJdVVvxH0*(Y;tI8nd)`x>S{zZyQNpE)rj%R zOwA_x7Uk;Y*Q#pm?RDT6!PgDmgNKDVr%Z#)$=F!-mDAN#=eDok+raN!9~d*u=oR)w zBhk^akO!m@3L_F9WrLNs}%{JG1=*N!0JAXLpq zsHlf3k+IxUbnsisdBF$^)ClrXd+eduS0a{B!&|s^y!q9-lYZsrrs@7<@v zn0shbH`1~;t+;wecXMb|@MZ@YT`}p(9PSzq;nvN=q+kfvH2UgYiW0cGK^IGJsWd5t zI7<;)Jw8~`1+v2Ssy*d8&>X@)A*F`*i zUzN?r-6RCX@q1ldUi8d~#eTrHm2B(?jms<=uVPSKcm&=Oy+LVY!!bKTg-0G36+;LiT;7F+fSKXH@q34AUEgsS&)V>>7V9yg!QC9tDtI!S zvSYUUXx#L}4Hs`<^wCK_Q-Uw%rCVa)+w>)HVh|KYudcoEYy0PKAnT$SyCg-+p9^CI zcV~D$19~f-Gh=#9;{5f=5?tRw19_C417OX!6Rb`TRL`*4>=qKGIkPRSi`AG|NB4?O z+_9Arj#z$27Nr--v?4k@9-P@HMe0@4gGkmISb@gDfWTLL+tr==_ev~2H)ZSSO(5eU z54r>_Xt@6~ExUF0^2g%KxUb_pJMwbhH%pqLmg^Gr)s_RHXkEmb3 zVLw5l7JH+B@YWMK-N`_a>!u2$>N+manhG5R8JterctzJ$nasg-h`7a*JOZ`0DpyYi zKI#Cb<+k)-FnWpW%CFqSy7T;f*>Z?y@yzdYc_4Ct5vUNC8h+L$$AU$2od+ZN9G5nTeG8PS9`zyEY zx_#}$qsw{Z;Cao#w$-xDsyt9Jrze%Fwq(cZb0EFkM$ox)XCR+xVUj@q#m~d*iTTkh zTdMg~Nr(M&?a3XeGEH_6Gdxy#XFgEQco&!l;Z4tdK67WhG2_3?ibWkMq(7zv5&3Jzh$6vF!{mu_hRsHp8rxZFvIlgy zwA>)jRt`{C8Z=!Kw731eod_{PJhmgji=dMVV=>s7AwRl2P$HTC9MsMBtqf>$B$#vU z69UZ7N8BHiHdcH72E%bnw0Xyoe%=md4+)6gcRHmBt`GqDJ(GH`hf)U1&}a|rywFsJR4=n@!CU!;g;)0DN%*-WUPV8h#q|?r zVicWKuw0p$KL_X-a&g*Yl@>-|_vpSOBr3(X_4hSF7iEwQ>}~~EjJ$yln)N;w$-+Gj zGBotj1}*1 zy#}C9`jrF6P!pVpGdQ(^E4Y|#uAv-jW`1l2eY2G0cP`BNAdwQz0W)ra6wSEQg{U_H zXU;HsCqiU!$fA9J&r#gNu8Brc%fU ze3MGv0?c0!&-hBl{E(Ri9sy3=mv!C9)UhWRZi8aK+JmdEc#tkokgKCZQ<#*YP9{{=MN91QCEV7 z>7$}-EwyF%vPY+Fm&Dy0!sn|MlFb#2-A_U*z|)2Q7wCWPWO^_*<+s0`>%+g@?5O{{ z2}kzZ*;xAfrEF&6;B5N8=VN75Ate4p)5JP^updHknSU(pkq&6c0zmo)A{3L0@~(S= zi0MMM+O!n6KcIc@#xMPT3$ly(tDu|y{WX<7K7V4RjBiSt9xpt$z>%OFkQE`v&JmeB%Pv9!${r*O`) z@&$@de4H%2qcgSKs(&K?9v>|aHd|T@a)8uZE>Sl=R=_qFD8X3Tq=-e2dLLD3#l($oAsZ7m{8P>Ik zmzNFGND7$?Z8J^UEzQI6GvM54Nhn~Ed^zR5GU6}GXOz4KSZ>MKm3LZK<(Pc z{snRzfBT3Mfr?|4fhp!cTQ9St9w}C{09Vkz4xBYe8DObE4mmWWk3ou#trF}3yYG|8 zt$pV1A7Y8KC38q)Bc%@(4CtmD1QC=wZLQ z*r=+mpnoFNw!>+#1}I!J11t@HGKa;A%YlK3NvJ{;TjF;0fr~?iY+_%}EmBn5WvrG& zd$Gj=4(EnS*vtE&aBvEJgE-_i?vp9xI@Xt5n|p5yX)6U^OHW#7bVHCSi3Pdd&V3)( zYVR(5LsveZ=EY2nsXzCIf8ouDG4xPOtaR&M-t6H%m(V>$oQo1%4t@~u5lsdT_)G+b zb}>0^_6-UXGGCX?I^cRv1}5sG?eH2OJ1O}IyDJ>-Qu}ZsDgd#ypeE%LOFjVV|*Yg#rZX?O}$IH*Bu-7J4&%{?6MZ9cofB@k?b zl7Bxk81D?TJYLKkoMB0JYFV9L9kYcVGi*0<300y$qlI}1KjKgzezU~AlzMK?Y+Zog z@(lg74*$V#*Ro*REM`kB+_V*O-jY>!UBg8C7vDT?%|5@YoSeDi+>?noS6?@wB}g^u z@m{MwO^$R0LqWMVfqze`#RmXFJMZ9drK%ZEk(eMw>kx%5N8DJQYi@2}R@~9sxZqxP zR?WX?|1>-}r!Q_5rKWB)SOlVg11Q)V`$^)Ez>7imQCTM}LpmIA@`PVnS92aF4_OBG!ttP!hhV%zYK;Kkmu-8&iRd|AyVH(BZp3$R-=S0nPm z?JSv`C=tA`O;82<1yBW($%7~m{ml2&qG%@HR)sTGqbX1YM~qs$ekm@9Rs%)xzxwS% zfU&%xUi+~UAHFH5jUU4le*P;^@hHFBI0@LDz}~pR-%|v!TZGp}Ae1oOepPukIFSt+ zWLPGv>W|dQo{xYa`q}MqdJYC|XFTKkIqV@m7lw;)*&3&sUQ>wkKPQH_IxY@vDCdix zGu7ks@;x_(dtBFqXOma~O64}A;3+Ch%TtQQQ=%Id$CW83D6}{xlo=;5YRj}NR7>{bQOK~8er4TWJ(b-afAuqp|D z*ZT(aW+B~=`Oia$V)L<~3nfCdb)DS4&Ul@aJchC0ad@zJSa!&jAAjIt!tA(B5R0<+roPb51}UinWsrr?`#4T{mT1ktXEc0Cbq6@hd2}?*72|q}4EIraPeFIk!d0>1jc!o+mj^89#7++Xc?UIRa^rbl ze9w zlS9c#&+F|#NEG}!FN%<_ac}2F18~q-zY%BHbu5mqF)N)~D@O?!PtkWxR_KGndJUJd zvzF9KyZo8&E0)lM;-EnVKCSBkqw+%x{fN2pB~4k(KT^Txxu0v%{Pw~B=oskr!udmB zo*PTnYg+i;()Ng{P(MJ{%0OvF1F_tazNA(x>UWFqHJVQ`CX<8|#a@bR{s1XqkKkoX z+~FS=S6)#t_{R4mtxqG}(0H_!NUNS$wpijV7zrSENZT3Dd5ep5W7c5Fev(AXF-IB;ghJJ5+41l@dyen9nvy_6lAHZ`npfF8_*M@P>Lw(-Kky zz?Y2Y>>+7|IU(C^Ke71$*J|U|rERJk&#BYmljyLa>W*brmjh;o=+FUGDjh=cZs^E2 zG4Pmv`PnYu1b=d{liF%Vp@e_?LVeAbK*EX`)1dF7<_H0^59GD|4>;a~je-$Iy3jK$ zE!NM02j((iX{d(Za#4E@bR*tb=wEpsPl^G*DO?_m{X7s1)8>A^VRSd z$}sC!Je9u}yN*ZBQ+;KQkIYlQEl_=hjvD|pbPw8VoH1Oo%U%qAJWrFcC>wCN{Gdyc zzH5L8jn&zXGGh~)tV|>wwHxbYaKVb4F%CDcnVFZZHY*9aZwCR?k3lHLc{@&G@V6-B zVElFnUHjgvi8(jF`o$UbunXGd)3lGEp9&UU=coV3z5EwSH;xpa z_Rlv;m-zi-`F}N6;@^9ij9kS$P0So!|2O!VtjMo0$b{sJKOl4ob+~#VRmGmLw#`wyEVu#mJ8#&hwr79?#|cEV%PJB&;y)hXLTrx@ z1vEfayz$^0Qf!e>$6DyBeU*sFGqD21ZAF}`9Jpbb~7p#8b z@&7UQjzP9YOSF0>elYv-En&N=|1V3Sr#&VXi7gU;0AWb$#rIi1m!2LTw0c|p_`d_5q~xw~cw!EIs8c8JYptt0FSq%R zOFul{;9pNWa-0cNoVopKg(rh*L@${4wPH6gN7JIWGTu>Y+e;DNVQSN-FSI?Q2b6Zb z(+6PEzJCb$=5CF&7jKb1lE&r`w4rE@47f8q~tvLJglLlX8v9GFUg6EK?nj%Fx1A=5)@XssP7a@;(PX{;R}--Qf#bd_V>~Ow z+H#!Y5K^PV&TQVKD!!g{BC1hUfd7Qb*C8HeYv#qg~-PA%J9iCz61`>f@>&GwLr zF9=1T{b5jc-mJN*;0RM30?;Kt*%ri)orR2xD6T~5Dii~Jp ziWbO3JTgL4Daz%@s*+iXDB4zN0yt=SY@Al}t*bZhRCUI*oG~9Ldo0W&oMtfOrwTdxWp zuzJUBpq@4pHhzEqJBOaf+|fB0wM83vNgqP1Sh~l=$8BA-vF-78-LS_>!=l;Ta zLV>g{YYDFkbsFQ6dTeLSq*b{WMs|P!_R>vkz&X2(KHrn#j9AU8<5C~M15{t%=gG4D zVBfWUUcfYc``?E5I<>)0P+P;*K15k`_g|l&q3PI$jB(YWKhDE+!>d=DZ@7cbYlS~) z>~8`p&>vot(dIR8VwZB#~cqwexbpLAB4!J6uSRHm&n}stt6kLaN1xM$yW6yd+V@zSJp7 zwPvEl_aeT~7AFszt7l}b3HuPsa_NBg$_|l}M;&TmEmu8C7S%qUJplT+MsP{Pp6m~M z1zFcz8czS`!jImYh4uPXaD&eV0aqT~x-ot77@7?tOqP_CY5@Fm#faWLs3wtajIYz} z4(uDo7EplKEF@d!uR!ey+A=`5S6+`Ey*r@04}dW+;<7@Q*Z2)Q$JZR=yv&Fbgf$+q zZMp>>bjhtyabN#b6yU`A9Z113b$1ZWJ5)ld@VS_tKvhFg5G>W1qpg99G+dg%&m;s6> z5pRFp>Wo2h&UgC>klS~+2CfKi=gqFF^^ZXAO$$Nk3enqd-nV6V1Ar8Y2wS{0CFa1c z{C>`@RDzD&>Wlg}WEm5@|{s)_UZ3Nzu~JMf!_nu)N{y{^T~n}E5E@VfOtCPVIr zc@286W^9WykVM&t=WC-&oRX3WlM(29>_x*f_Mk)4vr+At}+1l zga1o{^V<^8SQPLzk&(sbYvDr+Vo15HbQ11>ulRnOl;70El2H<0hZo;42=Pxgrg$1$ z_=%vnGaG=R1pb3d{;#=9um&XvV*rkd4>w8ZxIlwU?0yr``R+(A+3k@sQq}rH=WUw} zj@8bxz?z3%8j1U0#ubrsT+OSt&>4Ms>BtC^h9$8+SpBjG-f&jOWI_3hlF7z%*a#xpy)R12>)k;|@Zp&szAv!Lnn2Hk z8u1I@hMa278SR6BL{GI83wEoI@~ZIpLh^ZB8RAyl%qQ$e>Q7|J@Y=`jLCy8Tdp=XOk zM6yXlwi@8+4bT{QfVMo)KfWNv50moKcJRCICq6g!45kq9%|6d`UT{`sIhJdVD~qLd zS0v?U-{m<#b$3Wm4%xjlU9~ZZoi+OB^6mWj zQ2swJVNnZf=l=kYxE}46c|lD7d0Dh!*cblRRpAwZBlSV#p zJs)OhWaz9=6eeWTv3fM&KJ@~JHzg(|A_Q(n2;&%4Fd8vt(wnLAe%;P>n@@K;UIc1g zBoziM3$_J&0X)PO9%PJyV4eL0!O_e!AKZj3d|~*Yp!RRgMc76~$6AtsTqb^v*`zij zw4va{;s}}}b$0<`!P7bs!WLc>6~?H*LFZbpYA$QgJ-&4EY29(U9CDCX%JUN}Fy@KUsA~@)(Z~ z(RymNjGUQqW=(-L4AnhI=9BCP^R+KSS^H~8PNna^P)V^#z!$JTHi-Hmlm18FQgSwM zbpEk|=+6ckJ4crPDBA1TAqpV#42r24*dS0gt5Pp&rYUOh;WG$e@nI60E`mwN+*wWk!FiOCS<~59`K)tQtk%R=%|L8`UIzzME>igQl}yLC z@^bm`?zW8jq|GHiYvZzFf zRuN+^#`XLh&_>yu2#%nF2Ky$m?qgIK==n{9#ZG?;Nl9uA19vksM8wUiu-MW0-GCqZ z_qBez^}P^@5jj;=F@cD5z)0OCB(=OJ!dp{!iE^@)4YtIL%Mp1F&~ZsbwzjiPyHml7 z0UNTH%6!oykq?o~`ywPt$uD`c4vi;`bZ|s(cUiE5CvzP;qORbDzv)0t({s*})n%fo z6o@ao5rT>ksYus866fT&suw-I2X;W^&blGm+VLCuLJL`!NIT*WAYae`V`vIRwBtzjo}x$O#Bqnm96;_2xr_E7ll3nAx;yUU z*mQIFbdrox8jN<_$a?gd-N%0_9sYN|@@ER}zi+nu2h(EoZ-m>wV3w90YGax|=R)|8 zPcr{Mo;3a^Ecegfp|y9kvo~>cwlHzBNtCi3q=y!M<^>6`1_A)cG(oj}TP@}fXaSQq z)-)}M4<#mgyp$StohRHpWwQ${R=puca17f?U|9QQabVrcuX$4RfPN1ymQ@EpwvmWe zI7tjm10o#{AJwKQKxE5KAeTm&dJ=P4b3Oxn>y~%qQhMn}k0?_z?#2>Fh><;cLJ~_) zERrVOa-Dz`?THd7TFwT#6^;WKH9{0od`nJ2@_15CV!ecRsFyDzF(~sFREsOvJEe8a z|4y6WI99ui+ugnE+a1&}z2Q44fi%+|y*8}95oCT9_-W)1KMr7c^|FR)v>f#Ug!v@5wQ#sl9!72HknQ$xCskxw0zc|;QYKq!3|t2$=let?c4#Vf`;QR^)Si_5l9%OZBG2$sI)kvTdZ%59zC4zZSuwix+wm zKG`bdUakL&FZ6~uxD1fY@-5Z&oFlQcZ#CN_jY(65%K8Ljo>Fh?Z+gkC^c1C37zBXc zWeGoXYlV#k#^Cq?&U$&Wn)TqUO^fQ-+IGVhSWIG!lqP7ez(l9iP1>H@kMJjqmaj!RgdbLbo5=4gPp>Or9i#1mrt|Hc z8?K(jtWW(%&oczJu}11C)+NRe+7FatRiGtD<{@TMEvh@FnF~&oPxf|WmY$H&I5BNa z23m9;zqSNI<}+QhxK_`<+jV4{ADe zX3SuYB>cFb=CI|5J)$eog|vrFqN`@qxq=8#&fAa$1w;^>IrkKzBCB3Rhh3yA&_^^- zj_C^vgBv1Y&?#AOsezS-osK|;4j zvw*;QK*72SmKdTki?QDHMrKnM^%htfmt0*?m)ITynflZ6%f@H!#oAcl@4LS4aye*H zABVZga7fMB&Px#8%w`5lEQm(STSEx#D?Cdstl=k(G-SORHr4QnGn(W*r?cV@*&iP> z&o|{9x@JU;H0*>9>cDF57zE=UE&R8L z-rK*_#w^rwm&blk2POFbC4~LA<4@SY+2o(aMi~QJgP*zYe~+M2*X^)GkVkr(ak#du z=bL2aSer^93LLW8OG{|d9z?TBi)H4UAi4z{*rrAt?5&OLXaR2l#ku|c#c%@x z&CB@%QGvz7*=+Z4AOc>n;I}V+yDdMp$>^GznoVt?@<9K@au|j$%@tk zAQf_uWJ=6ttFC4%Foam3#O+kObC>OL(+b-wJj7L+_Zt~HOLTc@M=KgSYeYYQn-Yps zg_r)lD0HZgXG3m^qdSp19V21Nl9J_W9E2pS&?cxkHm}<sHn=#l|+>* zt1-0GnvA$vwO)^c=D2SodCo`6wk!+;o35e^Nnl2dXM$lD{~5)%Fr2`iI~P!0|)6d{FvhBIuG|TwC5)X zJnrBeN@#FnV2h>^h}SuwxFrb`Ml(V>Gl+~xw=yd?W<;Z&5|1Z|4f5nq?i#DVWOUP6 zLoUy(^Jm(GNs2__q+&pk!Y0~OWRdGU_AuUlsSahG**RZnP}F*^4nqg?st*-rw4Me~ zXb?LQ!C1IgYA^^rR$q5e09$e9FvXOzQ~fVSZfGbqDl>OLdT0^)Vx5xvab39qxCG2| zzFL1DB`regxYlbs{(KK7?2Jcgr(l5CBLV=gjon1=2V!&0ZG zW*rxGYw#oO`KaNI`74LjoeN)rbDM+ym6h}Z+{9~J=llCvSo~oBau_iH1>7pLkm_6! z!(N0)a)NcP*W|sf0bi>RCvt~FOu#~jNK)cV(y1`M`i<7c%~0@lgYgSt9a=obUb);){Id7dj<4huGa|r3*kCT21_Q8wj-GX^LRu_W7ct&VGxmRi%R80KU^%6{qUHtCJWBB)e6l7Y3QIxQ8 zSA_wUe9;7GImPCo%w(FDwwl8Rn2u9SXG(I>Kt^$|ttr?;1FKE|o7-vl7l4HGaBY;q zDq4xE<})+*2<{2Jon!B1k*uO68d^`Xt#T)A<*{acF;4&)_XI1?F*ji4G%c65&f!+! z0rV#HED)o*)LRtB9?6mA;^^lNHAxgB`H>e+jBWh=EEx354!1^9uk3V*u=)sn0yt`G znVv%+OUHnx4mW8Od2!GO+RrVbnRgif3$G%qX9RM4uY5RS{%5U%j@w`LfK)?o@mqKZ z=lfcQDunl~f{8Vynr(6=t81flDVN@T{g6=Aq;L|=rfH{6n_)<<4g(Jxh7k9?BN5Hp z5hyWqM4WZd&8SCGdgbL}=4>;J3HnTJ z(JT>`DYR$5^zKhV-L7Sh9Xz0* zJ{Rl_3XMnceWj4OtwC^{0)HDu)HF+dWXSc}NAx;I^eQ~N(cZ>|N?lmi3CC55eRObE z;8=I|5w1rKU7)V;U|SD_(@^@uPey@k^KDIz3`8e+QQmI-oVkx#F3cc z-=kZFb;-e>VX^h4kDrC{z zS=$b+R2TRUPhPI}PWojLcq_6eIWGZiI||f=M4^J`0;D<#FSHQY?{jjP(Cb-3RLbkn z?WXQD=#sH?!y2CJ2(u{Hz`@BmGlv3MVm;$v`m)Vqzd+BGB@tMFa7P2znfzSSSpOJItWW`7SGFP7{$!7JvdDki8n#Y>4Zjw6=EWFVa8b$y}+t$x(V(J zIgF51Xl}wCA{&D`5Gw?F-!h?<(s9jk&alyIx(V+CF7gs9s`AQ@G^#Xww)km+FmTKm zD%zW5F9Y=ctM%#x8TlxFMEaMo{s;Az|GV}6X}cUXC~qw@mv6roShoZi%TP`W6>!YpQCX5m1x50e^Z?{8J%Y z2a0Rd@y8sgL7fqwO0q1DYxEhzbUt=Z?5fGrQVmm{qiAL z7F&HtJm?(TnW7%+ka=g1M>KgU%-nvI=Ko!FbUYpOA_CtFO$nR=SqUjvKJI^qf!-$u zUholGsR)n|NT?EJ9Ii~1NTFCG?n1a2wScc!BuT)bBjHk21p&Ej0@>j7Q11y%PVD5(`lT|ilk+?Jju1POY3KGQ&T@yr?Q+Fj{EkO zBVkG-lF&p{GAeDql0&d+_GO366n*v_6X6Q(1ZgT}E?ZKj&Dn6?i(;0X29m^#wiHfNlcd7Vpq>wF#9qZjFo+-Wk2F#omux|X8q_dO#O*$K!m4*`{x z#oK{BYWx7jL}gzRHZrq_+<1CZH1v^i*o-T=Qluvg*;q#l?#B43b&b_t9=2L|TDx4= z(MxwyD)q&&Y%B=FjgiaJNIDEYlQi)X9&|Eq$0=HoVmA@S(XM?{!i+3A4YRODja4b9 z(ZjI6t2H?j8ca?5tvMN;d1S53_7NJ*5Lx}x*))tzq9>YbD=jLHs#iN|((@5db042j zWO8d7T=j{SzBm>m9BExqFDUI6i2IDpW;A8X7QE009GuQYYF_E6z?aV|Fy5%$lhmu~VjOKB(Z zfDMd<@podM)?>rQ5Y_@oVnd)*N3(@p$cFj0Zs+pLZvz(qg>{kCrCA$b%3U4ORZT4o zU(aYywpjXuVhdhAOQu=GhQ$E@O~$3>3?E51vnWJ64ffbU$wmo5$wn=Q(E)6_?+hh2 zE3Q;dqr#X_nyhK;MnXn?^{$(mW||2t%Zgo7(*c?0&|j@5}Xdpfw}Dh2fjJ(~}eZaJA^t_wF3 zG_Ew{DUD`(2heviiYbROSO@%g_+C5n$15@6b|@|1s-~)P1$TEC*D8z}ge}Cd-n0JOr`2vtb`5LyJ2Vcx`10j{%(N+DCT)Q!o z&kHuKGB)D~^n$V*TfBj1Xo=jS88*BlA9ypWe`xqh03c-+Shso`^(b zWc3NdNwYN{7Leg;?%34I5oLM>>dHjg0@`43d}Y+ZoG^1sIr>Yn|L*YxYy1eaF}J&L z!L->vPi*sSz_X=w#!8DpxBbnm%{i`_qm@3@?kFY3todY0UoBkdoTSq@9#iLyaC*gT zQf7A7*x`_Ds=yX&L^k~A5Ver8q`j!?R`vRc^uQzeRq7~-^*uV%_ziiG)$mlbNtdow z_P8@DC&P}FBF3BlZ7`a7Y%x1Qy4{D1CbDYjqbujAW_^jly&bHiW&D^K{L5Vu2;@G) z5IT!*0_Gpm{&JIeY)iKzMNP#qI03kHk(_+*X3=$_t;d7z**tD{oaaW-by4ok$>)MioG;L067DA{ zx?`hx1`X^%7*E*J>hn!wgwra#!Z(cN;Ee*HC6QEl`dUx;xX26b*{KFE%;z1vv~WVv z!k)A!E)-@5YMFhezZtpOtq!^w%ZCo_2RfgLh>tPCSGXs-O2VZ#H5T|RuRT;AQ27Y> z8T>tZB^^fP=)_64(Vx+2`ft71ZRbgBF%rK3mOxx}LHo$3N~0VQ^t4P*h!1I9oOv|E zw;|;f4Nb;o&|3W+cYXHn)|+*09p;YI@7|!!*J6c7SVEAOqx$ilai0_~pJ@F_ zNP3~>sB*9L^-|sD@KD@u4(pie`_>w|dBvKSTcE{c{k)bQ=jq*|D*NyrB@*t z8;~aH%c{2TG`ZHAd#8uXm6Z!GBux_!0JSm8>p9bHpK_gnwThVzktSbr2%Co2$GH4Y zY}SVtiYjq)AporDf}XN*1vZ7n)wVyI&ATz~OwXiw*9Oel<|P$D%GLOv-o@(v#g;@N zE%co@#nZSWJD?-AX%1M#V79w2$oIU1!X_E%O3`~%=vCW?*H$-PLp@=tx-qQ^Twz`o zr*bQAJ*XhAgHrB6Q$y^5h;nR5DDKHtdSmAAb>hKlj>d4hA=}4(B%dDOe*Sz1oiy6- zV#WS=cDn{`VXPn4IM9-{1Y|yQnw%K>1`ns&Y_z*)hNa@KR)%SaUz6s2T095l)Coli zwi6as`5&5Hvh(kcB9ifg)|||nc!E9vSvheu6E`lHS2zz}Imz24GU-!^bH86N`$`^} zvUP^1$4IPG8a-^P8}hQRR?d}pzD&2ZOo-M?Gkv1M!TU8utdjLDnoV|EsU3$oE|}G{VcAsFn7MR;OG(SvYsh8)CQHw-2C|$+}C7LygWa@9MWMQOo^n-Q_q{ zoS^BXPCaAVJklpM^`4$_488fUi(TFb%{#N8r$97ps>$_cKAP-XHDeKyC8f@=4S3CZ z5?7wiiN|Ud#E$;k3y1|*-ast6XkPzZs5?5nHS}H4u0M~JB3hrEHQa-2+dElyju)M| z;LWMrmNXv7d#8wT#4XP|o1B8yJvw}EO|Za31-iFJ9B3+>lzb1#SNae3c zdK|@Owf+xVj^gj*1fK_x;>QyNk7+`0t0?hXYOtrJj^cd1fOGFs;-9pM2)h#ITRnl_ zm{JsQsR{#(lIm#gnK;$cZD|J&t_@-KY)H4f9O_c&>6$}d>Sn>9pit;@1NH!5P4;#E zLYm>I_Ucfr$n=FF>HtNW=u|u5sJhyH?#B&r%L!icz6%wU%;lEVDxjl+>&YrPQ=a33n$aa^%a+) ziy9NrO!q^kW@cTtDn4^Ad)7_-we+6k^N^ZRLoG$RErp`i{9!0BILHzb(GZ?_5yvWs zL3w=C)e`aT8bn%c-8z^3d%Wp>OQW}VME2y7sO00hK->h($ux+7{c>!?%YxkO2v6e< z-vlh-mj49Sox6$Ky>?kj>1lqwr~0osS8)$)c|B*4v*x6eAbfN#f zHT2KCt6BBk=?6LdT1r)2vaIh14iXfHCKgDw4vrE$kB5)O(b=hXXiy4Otn!&nW=M6MCBS?dMx3Z-2z7CQM_>Y_V1+`bcO4M+*sNA4LbFj+;+nI(iwPo zI=flACmtAk>U-noB;dnHs4tnNj<={bj5hB@Z-Kx4ta<+4x>AmziIYMkOcG)0ouspMe`DzW zQJnGnrAYy89^xG)5alMWjvyD%L8s-^Yz!A1%5enAT4fY!#}OtqiBx<;incTBG&tkz(%;MDKX^Ursx6 zHWD9K@nS|PZ7o9~9H|3{B$?S^IE$&e;MtXaD`ShF)F;!OxJeI6cR&ZqsaIH1Wa9AY z^sphdY{5F3X1q;rI#X5Fy2ctJ2fHh^IatMHbE}N!Lb>lGnMqaydWIBU`Mhab8>;5C zw-A$!`YJ8U{Acwh&VH)*=iOtyNP}Y1m?`08yzS{#;gR2ThR@A8zZt#)jfT{+)H4Q0CqG7<3p7Xb3H0@BjCX)* zxlIq}X5$I1dbhrzZA2o2S#>q9`HjqK%MQGqX_)dxY?`t+6c0gH^&U!gV%=3`fIJ8F zVT^v@C1uNQ7A5q73byGj3}gh;vB8pFs&g8L zn58&nL=)2rpO~CJlse);sjM|-(MV0#{VVZp3`E@4sn%x9^0euVvX3ywvCd^jxcy7& zqXTC0xY(E&f1(o-3+Tc=fu=aeTh_nZRbW5#55mv9@=OH7% zB5nteA#O#uK@E;@W|_4m9-v`f55ifA=oAOEfn|7fy=$ei=w1=A4LOZGaogmQV6{%^ z;I)Ues!~@KapJrM(40dc4e`LT0?rdM5gp36C zRz*#UBHYQ!|K_xXj)h)k?LkCzbv5%2`VlPkLVmf9PVL*>y<`Df1@%pKwEaaYW<`{9 zc9qCZm3f@;D|)&Hv#l{uEpplUI$pSnscx|iiTT5Jo9*G-+OF-ao$$TNQW@>a2WOq#B=y=)=Sn9toSC-y!T@4NZ=+1JrJKkM;EI527b zjpl~mmfX_@ly!^xKE9d;u6m%01jvU|WX>bZFw6wuDKmFT+ltJutN{_~L_q-np1D7jTyCdII2rnuYCnIP~vSz zo&xHS2~;t}9V%Q!qU~6n=CE4iU>RmEzE-oByuzbH02BTw7 zI}K4B7vq(oj3|J}cCvTlRaQfAWH3zVN{a!;7F4Ksf%_l$&E_~@AxS1`g=-hB0gpi~ zQi`a|&7&g%H|TF}A78{?&qD;Higo!YADYa)UoY|*JCH|`6ewIO1JqT~3aI>`!adv1bH1|$YHyxUnAZ=6VC;}dW+}DI^I84mJt?v?R2sskidLo`t z<8-XFL(`pJGvG}ui^0(AN_+^BfJiUID=K&YFho`q>)nLlQApHV;eMrUZXuO^R`7OK zlPrqu+lBHI<-mMHW}uKgcZ`T!%p~%%d8)O#w~U+N#<$}yTA9M&iyr8ZGq4V#&>$d zDv~4uYmXI$2~$N8VMPeS%Mn)bO9Yd}<`;h9N1(Q#A>AnUjlKVgSN;>8=EjVXg8Bh= zGk%VI`kC1*zy1DpTDHGiZi73bxVb;@KcunbjbAAf5rOHvI%?ZMF5lrZH~C{xfE zMH^}Y0UHe#M?~W7HQM!@K{1}a0Qg4d<^N7{)wJh~Sg4k(9TEOF5<|u9!r~Ok6r6t0@nem}?U{XvgenA}@oyT~DDlM3sc3Y#0{M zbM-1x@MfaGiv;+1lx^KaceEO>^k9G*!k=W+pQXA<;b&v&Aw=}2h)`pY(yy?@>97lg@;7jW`E$N^ znA&=x(u4Oer9OQ3(YleDl!p33o3lqI zkef1Z4Aqd^TD1jLhiczXGr)L2gJ-`~C5CqHG;`d`flUYkGOm}`o*tfsY8X*{UfNFB zoVyj_z`4_G^mU6{a!@*1_edu4mISz~Ly@HOOMu|2c zC^xGd+x|_qSSj{f^i(Yzx`;i7$+|vG!7PHps}jd*oqklqHBH>ibtY*`G?`_XljV^C z%w2kz?621D829F(M4^sQVH6ofbgOczCgm7iINt|wGjh2?MOxm|E*wh~ueJOs$Moh_ zNvd_laCxezXue@-x%82@zsl?@E7O=Rqh|3l;>MGZn9+XUr{v~$dwb)I>%l)`4Mfv0?olz^rQ znY_5k0;oblv!ejLa%t?!xY48m>q%Vm<`>8zyfSQkico<({{phPWq6Y|AR!@PU}R(< zIc1ppe#mxK#$Q`Ds$pEaulx7ypWPqZ@6Wg28(zO~nRmB+t4C2NdH2O2ev^xF@mB3Q z`6jRBP>E=l>{;UdzTLg&)jl6Y^Ika}q{Ztw8Fb;*rjxS0QQA-spxd38>yQ|loZHk1 z(6X;`e*PoTDsk?L;P$7b_RmUA!&TMXTV_)aZ6nd#npQxkeQTuGL8qLksLx969+ofl zNID+D29=@qFxw|PrdoL0bQsVb&&lBD9Zp&^T)De^58SIm_Ju}tn25L35D_6R%58eM z-TO`3#d|EAT=~myJgb{x@&_ISxrmn@^1G%c-~2rc6h7sA+smjd45AW!2Qfwzt0k~U z@!nZ$Qlp6$mMou%EUv_Q8ByYl$QF%rRm$>}%B)hJR8{%KdKtXAtj3JC)eQtWv$p*4 ze&)if%FG&|x2NA1{Iv;dGsl9Cf);A>JwH3{Iv)UnK2No*xs~LGG6yr1xe1 zS~)P4*sQe3rtsp0C;vbtXt(V1^>`f0jk}YOR&o`&rHXg(VKA1YtT` zJCAZG8A4I+u+mCe6&~4(5mvKzS8`mzs4}eO%9x$ph|d$sa$&NnHZ3dt{TYwM`e4gM zxThya$ssLKHrth4QWCghaIw=v^vA^Pmi}fAJ&|QN7ST<8zDU6>BQPXv-^b)r1Nt<1 zHjQ!av#C{1&Wu&&L6WGnfGgIV3VMcL=ktI+7exZYbA()-Iw^Jcv^t|c)``CI9)7J| zXqtG~!IC&j5<~F1NrEg&<}wTlz|j3i5byNfak&;Ub-5WYHO6p@ieW5(O|tW#2N?oC z1&yI*lwGI4Ae*U_7@8>a>S*Q{nkIutOW9Z^jOhY=DOneVQFLi>29dkyfI}zKT+T%c zT1e8WvM~EmKx35dV3CLf%qF{#fRI8G+u13z3uPNK=2jGJX>zujYMJ62>}_7Cth2>R z_`C-kBu74g6^-Y3$2-O^XGM=P83}uW!SX?LM)cR*-_13U-Zk17Ql+l(ty2(N-ie`% zx5fjZ;;>}Q)`IFns6v#vi#H0wEZ*pNvo{RcwYwZ2;=^$)AHc`v^u|{nAIgIw>_UU| zq0H9sCVr%wdHWzRz45Ej&Ps&75oju1#k*?m8vR{vu@Er5BW27Vpma0cI%dw!z+`(B zjABXZwYw-Es^Z@{q1*c^r9pz3OUCbS!3WDXoJExCWHoH*erGHn0<6kMtj@$p3@~<( zJ9xKbFn%Ldm|ui@wS-@!d)EzQGn;n6M5&?zT>624@2P9qpVb6Rwz>sj-I#f2P1NRw4w^BKvwV+V9q+{{(LJoN{jHXG*Zp;c5 zILd+e*w2W|FOGDK%_q672>kVF=HBs}R+Xx0O6=Dp!jTvTyIiM%;IYn5VnIYWCJ;m^ znOdhX{Nhq}vx+#GI8-G~*vpn8RgBp5Ry5$jAypiA)YytDt6F+x+%l-<{iKS5fiJ)=8k zqvEEMqzO;b9GisaeRma%E~~^k^)d)Ell61Y=O(0b{94E(j%)|+*&PUFH+Rk-^@;*Y z8sfP;VB9{Aj-F*hNd>jMP#I{R+$VtF9k2A7#2aF&I6H=MT&ZFlQF>VMDXs)y!X8z2 z@SVMAwK6}9NZ$);>$-eZFc{HyLJ&roHteKTlx-$F230Vodt4xX2}~T)370p#23ECk zk<6sPYX`@nV7$8DK9{iMHz8i&m9_3Ed7YrOzZ5pj zIPghd4hXx}-2%DOBK^kZME2&_40+`!y^sLGz!EobZ`6z$@Gfq-2m+x9g5il9yypwi z^u%?t{3W?%hoDoYCVLocBW*aGYkpsZ#o z`e>3oZjkjzOxDw>-$mtzX0dFe3*42^s&A0cyWqSarbb|~1MSh5_jTED;n{*z+99gy zqLG3W&zQgWFry$jtgd+f?jQdV;bmE`U4;JT-)qRB)@K1RG02gX1xb+LJAaYpXxYZrY)bjXQWQn9Yc@j{}+ zvKp0FBV3DRo_ZABjIGjyQ9`B{Y)^~c5E0vo;Xt2ID%*5JKTWqly;xIe~^sw?$8CDjlU<1KqZn*yl0F+ zLjkJ8F?osFn&v!8u}Gn$#JvGr-rbAq@qzzBq$F9C+Z3m0DpreTR|D(V@GvCn{b z%TD1Q__`y(%au29=$_gC4*h$$vG{=_>W>L44sF7|YKvm^5(sm1aCz&_zN+l%gtZfa zmhM;gpKcx+*>J0eo3$L(@LH;_2s*{yH1sXH)`EIYB zN958QwYwQh?WQQ5Nm2I}^<`3X92mGegc;X6>}%V<2>{dC4B2M_YV$)PdTpcQ6lcP+ z7{eAYa6e*+!ghl~ja^{Rh$=tIdB0H!?f|;RXP3)|&!K17(4FlJ3H(fgUxvxhbp0+BAh6KR2!a5Y$3S%cMZ=7w1uH0+_~a{D{OJzo0`w= zzW-&iQy^o6IQ9oab^NJf{Etnwe-BH4o?SxqpHT3RYjAV!PJR2q;nEs z#E%tP(!6slcl`O|NU#HsS*>l;l_Mb)278n+LE{&5-{3_T)TIv`xnO4uTv@>E&D>rs zV?66jG*k(=6IE`eRKm4ObppKl=qHFvHJj9@SSeL$Dc+Fy&zL622;|W_Jv||k2E4wd zdvX+fT*t2RH@9-)$CCo;I&u_gXO+}F=Y#QN36$2E50}gQsx6S1Ziomp2ps&jIg`^b z(XMb)k#Nyq4IeFnam4a9jo&)u>L+~~vs29048~Wb_q3=ojDGrCgz7NPRi-*0mG_o| z*kMkMYaO}Eb&98X7)~rQqS@PyvuO8$cbfdLB|WT&!#T679JxZd*E^kl5h{2_{h^D7 zDN||oK{VN*etY25qVw5ik>jd&aCYezUZUV%-O9fe03}_X?@quGIv3yw-T(2A@&8wF z|1D5OYHVuasw2HKK-1aUTL!4Cpv7vGLknxvtNp-OEhOprMxR5~(D0>~+;;iQ*`2c| zPjb_DTCis~{L=4O7WM&;@SOWync#3^T_o))&nu}#O_-uI-~|t_atI{fHG_%5WuJ$(+UnB&g1Q< zIfN31lf=Gea@1_jt-;iXBx|98wZrZ4g(;mzD@v;N#2JDX@SqpdPb(i%P> z)U{KI`Sjosz$hQ#1qDbCosJ zU1WpObPJo#QVZw-E>>>6OdcS+2i^q-w49?J$seOhIUh>2fP{WMWPL+qqlxA3$0jbP zbS(;oIta1eC80Rr4#jI2#S#y$2LjAWiL!v4U3qMYv}u?mLNs-Jx~0&o;g2h63AlCj zCI$o)3V+h0zNeG=5}Q3Mh>K9WQ97!W0HOy5Hsn~Bvein`bfUeMJ8Ri}uF)7_##Z(! zGV_XRQCwU*J%Sys@XzqHcm}(;QFMb`8cqg%O?Ze`F(x2{&c4Btcn&>V&4JQ@vLW_5 z8q#N|+j14GII?Xh#Xb`RR2#g@omv3OQ0pBT7l+cpa*+7yy)Rc0|+{}yh&5-GW=-JaJ)92OF%dH{~gVZfQK)x z!;y{QlV=RA2y1$|mfudvETEnMzdMx^xMw#9sScPFHfs}L#9De*>jQPZkl_|;Tp9*V zx9)wCFxnr{={&_vB#!L-*7<@L%74Xy*L)$KzK0*@LES`ho{U?2-sdA#X3L5u1@$w$ zSO!o{Q)SA!1saD4eTDp)-~N+aDc63~MIMyncZJ3o)4~c%y`ikL zJVaqt${i|IC%TtCO{lR#84c($^~_0thyW$={=CdA|eZIN}u>O@VcyOdy z6bV;k$)-C&dsF~*e-v=%H2RudeasPAjhX8khx|aG(8Tf%IzkBjLdo;u0_uuFC_XJc z&=FMllRGdoOlH&|+agh?!2{C|a=2CG2^{+Oq7e6xx^KCyfbxxMX=8oCD>+`!-?wzl zfD0JF0n<_*P{aH`4tf8@UJe!_&JH$a&j0!M@jux~W!)Y{7>ge?;fEV~KL?FQMHozd zZT(^y4kMXWV9vra0M=pr6Db@6uc`ZIFSHMW-XM+Lf31P&(w@e-TsEEZ?K<>*Huryj zc?Wgk>#mGst1OD`g$L!dv)xLHTy2i0pjvJY_rbW(rP85d&L3K%bqyLSf-6^epP5JW zAxW?Um@dZ)=Zq>@QLO`4*fja{-m7^uU3xnZw3tv+h_t~k_>}_h>>wsEiWWQ;-`0@b zLiZ^+wJdsUgVr}wuUYs`{KK+M&l<(KhfUhS}J~~$jeWPkH(UTQs zY$bNXk^#T0m|H{6Y)-Vv9@z<%%o~jQH(Gkc;@0Y@S|2SK1fbW`aNrUdeQ_2M#Fi5R z(hXFv)k~xun8l~!RYHg@+$A2oQWz~3pO(UBvIfL&Tukv}2#Z)%-(fU1_=L;b{R5wp zi?2|O;$Q+EwaC{}l8xatNlM29m$f9ABp%fFFy|Rb2#3Fl=JJv5VDA)ZF(1H<^i!9! zCgPz45r%w_I{A|%O~vN2T4+%XI@0&L=@rfu>d~Zu{#_l1mH05h1)|Fym>=2yfAlz@ z4)-^7G5tG3CaT#1EgU5O2O)(?n}9*<1!KP+n0n{zb4qzs^0X8@Yn8bw^MKC?RZSDM z1=kj-^VYw&5U-Z7P~R-m+f>*AYAvRh?&cPmUgqY90v}IL(9~-^fbVr$lf4o%J?iDA zPVh_kYu)mYI>-{9M)qhO__6kcJoJxbP%SXcCdcyRmDP;!UMdbdm0< zl(Y}Onh2hYn-yLGyKX3S8K6uvLHhrgo3CNIWaa#GxL@4p95jI z!6{&(voR_R^z=wXZgXi;SKoxBkc7}$zNyVq>T_Ih{Mz!IS&`nVi$RI;+yZ@~>OYGE z5dlY|^WtaCWIY@|yGX9e66oupNF#67qR;)tUZ=-0wvSSoeX&y-Zo^Q?njpbfX%maE z8(~C!c8mNKH{T@H^?MO73AVk3v14#f^DD!MH%UD5cMGDL6M!+9F-bCPt5a&5~ z{+=J;t9uR$aHc}Nw&gm4dW-Wg4pS3FzxIr_vHGpe>&APaa%c$K|-9 zNoU?JRWem=1Qy7h1R;KDc6}TuS56o)y=1T#s|k{Wjn3GiTJO3jcGs0SCsKS#5?4Ey z^SThHIe~y+RVp8<+`XPYY0OgsUt1)mspf$PgIjEJ zyc1r<#g;3oyM5=t-!jMU(NY7VBhV9$ZP#6ppKV-q^;VX4U6V`AsZ6uJd6k;;ba}Eh z5b8&5z+enl#odSf=JT_8mt^{C5|+N1-h0hiG~CtntH_F8i6b4x+VpkvwkD*mQQuBu zT}wiAQU|b^bHtsV#mrB<>HLaHk_ucC_>9Q)5IK^xAYBRIat9$ffwMKKr5>FT!Kylp@L6T#jdQyR2R}T^e-u_Hwx6 z=?z*Vb1a56|8RqBavJLSvgV>yzTE6!(l-bi5J(VYRX{y`g}U&#R|5yJCocW5Jss}d zw!xK;s*;&?msPsQU-F#{!7Y~n8f}%(n4btAV*G~7^gdIlj0ac#T#2YF%T+piFPOOl z58q9yBQYa{UDh9E_(-XAdRWzL1B~v|=SOk8_?2kWG!z>hRcdp<#IMT{W43#L~CZ^y1f(Hb@mH(h(wcLShV1~jt5a@v8Oe_k{7JPvuC1g}&YMoG{AVN4b2^;=n0-$Ik71hHi<* zHV@bYAM9QkB)P20%tUQQCi@b}p)>0Iq->fkH*|pPRg8{G+nhPGK73|x%I*DsoAa7)Ql)eNeZj1 z8(F%m@$Ky>J&}%xvbPH!Z1;c)!0yFHcu4}!Or3N@JgTAP)A$c7o%x5%#>#< zZJ1el-OkK=!#y|RNC8wRL-yWXXOpjKXAr4tXO%mld`J-PUf5EW0^HSp<}>#SpMK+9$Qf!7wGMlUaeELu&%~7Fq}!{-mUKEaoYB29x66DJ ziJJa8(3;P@XhWyPU#{Z-=R?l>7~c^w)@(e_xIu=^bQ3fEoG9l0e3@um2X4H7$ymjxmM0?;#-mQ5qZk{TZ;Hg!de_Z~+ zXGECyN1jhKf?(2O%nKPhpO!^Yh&@mlO*9X8rt<8B6T1Tp`5{MpMH{WUOKyz2w4)wh zVMph?q=;mexmhR2hTd!niT%8ad5wEqAxV!SWzif*kTXN#v5%pO@uDlNnKA&QDZ9UY z$ANJ$f>(#7V8AKXUKU-?J>a0@TIQUtze0+}N+-Xi;4Dd<4u_aLy$DHXv3+AEHcM2E z#b(pp*Ef&|Ga@bPGs2o}s{d*MK6CC7Hl42EowO+gQG=g zs`<>4Se78kR(|xN$V=X%#tdB8el49_C#Vv6Eqc5IVFJO02i$k0>{&Y^eo<-HL>?A@G6{YIs#wt+Gbg%*kyNm~Vj6k8rSWXZ2pnQ(iVA}gU5BiX(Y0{iyCelF zD&cR?-@w0!b|Z3y%2u6fqGT^~;`@HiKStKA@#`#B~P-8_|L+Y*_8pAa<7 z1ty|HcK8@T@cnMC9hi0$n{QedUBY$bMS45W!M}4q3!RGgH090xU_z<#s%I222s;uG zeczI&g4BBH2{?bM0l|he#`F4JQ&p?Ob6%BmMS-Er zZnRY%l@=;LFK=z%7Zgd4FOTZs6y1}_>fjuo0=-u4Ab1KlLfv;lh^nH&jh-r8r*?7g zm5-G)$8!e$*-!SxLnWsCUIiIvx37}c>nB$6rpEmv%f9|d{Wb2#i35ocCC$folW7wM z)pgiKt6$bXFTxZ&Li}C4WlOsWcQHvulsq`9;|3M$$?g{e0&?h1BQ$+O^?Ux@r;jWxt*dO%O_P-;*uK1ueAZpDB zP{^E84~42=k2Q3=bwF`)q0TO(00fhU7D2HcYXQ2#;k!ZYS@O-Hu~J_>}a($LEdM zZ!&yWpijyn_sE|`ps15ILI9sm}>X4;{&sF9KR2SVQ0ur(K(`lgFcA-~7SYtS1WlSIh0 zZTSFuAD&cPACLw5HbsyLHC%6Ip0ik=5^rwO+mZ>j&Z2aLLuf5{065XKr#W0pg&sOM z^K3@xjm{&%XaXfM!#NB`&F?O<0Mn%? zJqblOruHX~4^AO`jS}ana~HlUE7xNQ{=PU0Y_`UgGPf{ z4$-Ot!jI?`Tzvg|ZEA5wkBSPrx#{HU32q2#tuvyFeI@R6si8gZ5S;Gb5gS$*8*nhN zVb2QUTs~XKVsz!-@cRGl1GFxdYW5!hQ2!$UaQ^QA2r5JywU8A(7KKtmh3*F}2BC?G zLC{e?YI9kqKv;6Q<}P{C4#6NJ_}6~=6|rwfBBRm*RYSaWb&XwqA2;a8_PgGJ*m|XT zVPnvhhSWd+lrd|7nXd~a+jxL2s+zp2;FsD8v2eb%iKbp|#+%4XnwnX^D3*K4KK!7r zXMG3|@;mg~hS+l*q(Nlw!v$G?aAo0i2QU3;9u1aO!f>>Ilr8ztaIzmkmrtSkTv@wP zMQONzi}6ip*GoBOeOz4|g>=1yrpoQo1yMec+b+zm_H~e8I51WG+lh;q17MSyxe*j@rW)Hoz=3(bpj z8E5`DG~LIXcB!nSuMUXvDyNf8nhJ`@U2Us)3 zZY6XPL~(fH$4pv;OirMx2?V9j{eILFBV-=Beul0Zv4)yalnja=i)GIZxJs50CJA_|e@G!Wu9TO?|ct`QHpcv~S*74g>(@KLP;PUjVSN zK?SZ`jhAm5!HKL`w6MuL55`(m0EG!una?IFM=ZX3HTC%^w{~%KMmCV84%{1lb-h4H zzJdKcEF|W~uNIesOqVI(fcB=KzetdLIeALo08eRi!WK)CNqK)Wiix`62E1EKCw+Ay z4sXm!;wXU3g|(SG?zxAad&X5vqtN`SJ1yBXD@BCY(O!k6Mgib^myq>76(B$&B?qfqz%>f~S(`YJ}e-pqgau$#P9^`GuRl=fIW>1+D zE0cf5P45J=4Pi1(nanhGyWqc%!q5Fz_*d#WppfG)Qfe8}ff@yaqa@@|5xIT+_OrhG> zR#!h~9*e}+v~BnR1sj&sQy-9f`Z{0&kW0QZ^;{-@)pLWDIADn{Ggj0-Uoxq_fQJ>z zzHX))u}3d04T+r;OVs4`XbCPH&EVKqt%V#UnCCp;0n$bNg zm|@oH++ReF)ZmNCNkL7{WOKX_L(}9Uw*OFvskL3iHlWEgVKT|t;{x)r;F-_0T@{=M zuMe63_BprX0il7D_>k;_A9DtC+}YQC9GC<|?o?H`;0}g#ewtL|zhN{qJcjto7Wk9C zgry#>5;~7Cwt&G#Kub)4PkN;z(D}<75eoh-3Fy3GrTPMkP%4OjV0rvUxG7LOSNKB# zbBmQ+9ZAstR@4p2trjGfy~3FRA< zmouErcO3m@X1LM~C+aKPtgXpxI@$?DyXx}ktn=I88eqSZLCdVGhQ!Wb;Sd{T!H!WY zIlx5qOZ5d?-5i{1@RA+(O@>-)d+~2h6?NY!XkT%vYw+MTalm2AhD{K=2vmIUcUKi%ds5pJFf3KMTsIKwSPKE={F+BA9T)Z@$)GYczS<%OH! z12)*YlcogvWc+p0qsx6&Tw_^BIFbqGZ)ii>Wbot8YrW|KAVYR*%#O*s1Q#yjCOzGt zQQ~}TS5lP8Twzl2HyuuM|jI`n@3gMFq10OP0osP?k-GLPRgsvDRvP*e# z|0ZmX^*l843B@ zmayk$w=HCk(jEB?iGfd%Ljg9Rs#%C*PCLv<4<;w>i{be(0QrWIbo~d05nRNf2huO$ z@<`P^@zoFy6balS-q3#8468mq%by|_m$s%ByB0lJt$2PML ze#Feb|27?COsQb}k84_%zbqD&|DiNfTqry0rKG}oMB*Q<;#Xj$-%6#V#>A}`JS=$S z@fvNec&L3bP%uLw1-^BCdI$YCr5TSrJe{SpTD1R%(gGI1RR5}J|4^Ey@xLgIVTl8r zL&d~Lr9(+O%hcYx34%qim0mJUVR&@@52dA_nW$P?oZ$z&Y@GJqj~qv+Uswa0z#CWM zNA!4+iZ4<`Q7j8vvnl&_8GiXKOkk(V$`{^%nl%VU_mpzdeF_-N%Oz@yFRLY!Xrw4@ zcXx^Ru`C_8QspD{F+F3(hoNhl3&5c+QAp26MpxKCq;C6nPW$~Qr&$0v@`8am?Wye! z@IN^%5u!4e{9lwNR~=iHOPS>knZO-T@Rdi_?Ks3imdN^*qEb;s#&B?Uj5yK$G11-f znm29dHS2);kaw#CL6C+Ib^PgT-wa0<=r5(q+F#3c4(Vwwk>50A_z3*O@%&yzD;{Jk0N{gsufAJ)-L{6;vM`(1f7@}_ z-j=#k1ln8vm+ zbgwlGP4-Z>MT`3?9V)+4OpR`JQMDuN$5IPLomm>5K`jj8e2gO>7T1w2FFHB=<@En5 zX)YNkT+9@+1*(B1jY30C(cE|97EEg`rrNX>Idq@V$@3-u4UhXA#1=|aRhr+9}MH}6_`Q<2*in;t$RHv4l`BV>*z)qT>m;n=bbY-KnqpNjLgY&Z05_+}ZNydd@ACiZ!uPJp2Dt39oJHMgE zE%{8?9MZXkHB@xa&QX>V=5Gy?-aXQ?$e$^yk@tx4C!^7le~#`XiRygIS$ry3?8Y$( z@N3;k?~xhUc~m?9dr^BP3n5kkL;(FiLcm{E1hB3BmsDI=0RN-c(AU1ao1hiJoTCTT z@=sF(B8s!p_H(_EAvF@O2~`jlI;9@c|C1n$6F!X)6ft|;?rFTwBtPfUW@nbaIR2v} zWe-RtJMy-7Ag)$u4bHB41bcwE;Ozd3UqHott6u3N4Q?!*?Ykje__iqbf~%ZDA;;H) zGhXMa@|lfRNsx&*#KGv{(+G6}8-NFRW83YBEgqDZpN|yCIk2bY=f;WgDT4qfl?C>+ zPT9bo78?t^4+P1wgAJh9r35T#ZKu?|{49cfEX&4iY&K$Wbv(p^L2TAt%L`>nO&G0Y z2FHrjM{kid|CF@Pf1bYsB|{!250?IW+nvT%V@&p(NQ6X$F8!K>q|oHAZ{5$M5;<}V zj}RuK?cFDW83nC({aSXaW-Z31&QF;OkqC^nU1VLe`t9fx?_6Pu&f#{PL% z!(KH)kfI0dX<+B0H}-)&4Q2U_5NkVQ^-`w%!C;NhG`k;)e9XtEw961V~) zzw(5;ZHFkzX0JTRuca3xbn6IT2zB^Lht|ARjzIF@>+b)U+0kSlYGR%;8F}pcS925M zIJk)>`P$A9`=_^kkW|}9=C*jgY=Oe4?!JEh)7((yWu<|PX{B28@BOk^;2~6c4mxot z7~T~|HL8C4cW+zvr?-uBK|Ykh=qhvm-wNAsqhy0&AP!9b5f1*+_5b1l(K_=0g&&bs zk?0yq*i5YT`~fhwOwiQdr86Eb%=J&=e#P%L>{t+A6JK{DZb=eX)`dw!#aNGwbWlEK z`b1?A3U>KPqDMP2iokQ8G=KZasufWkq)VJ6S}(F@UfdEuvl5NHh+@LZpdiK*!^in+ zFy>J5r*HnAmQH4h?O595>;+CmdW|CXNeAKze7-7m4WB9)PzU9mn^_Yygle3~F|{O< z8EYyU^0Rsr7o^NjO;Ou}?4`+4?Cyp&|0Mcb!p5q}MHwwF=DviYDa$q{7$B9w;;pzs zY7)Iq+~-V*9TvM~eAbL7ef~67yVnpc+Y%v0_g)o3e3GjAa}<9ceCmVSd*X30Wgr8K zwKz-tEC$7dQ`cuPUFtM}PNclwau;YZ%wqNFQ8Qxl>|VZzrt$y^x@Z*Cw#hO`L>qP| z_|whN`Vx%|2M^;6sDU-xRGA2_y{hEk;G!``A+R&45JDOqWB5pf-c{Z8KE zKIsYndPToQbFJoBan_I*kye4a1OAx97XXh4U9EFK8XOSkQ3$X} zbPi{;7w0C{{Bc;iH=yt(`KL%2otW-Fw~~P#zpp=Tly0%DmUQ69`JG_?1Y_ar zL#Xr;bmLG!wl(v4=jaNtVU)1}1_KNBYz+JmW)hRmUv5C)@6zYh0e_}7u!>{Y{SFS`;CJ zf87?SJ8bv`ufEJ8rSNOJyEA7~{A z>SJ7zRmx|$NqaQt2J{;)j0EkAvYWF}o{5TD@vo$X$Ac zF~Sk>BJykYxK}rMCe>9hQ>U6vxa-RPJX3Ur@$; z;!UONLciAfRP=Kbq-s)Dj$KsF`0{Rv4Jo~k4buOz9U10QZRMI9G;?r2th})y!+4Q9 z_e05|qt%m0-Ik0V&UPWvdqJ}E)(k$L#AUR?|Iq?*G)W?P?Y3g4V$0%wO{?Yf4htbb znZn1f8We!O193hyrG(Wd)@%I8g-zj9Hni|fybGk8KGSdu?7J83SNePSlG;#Ag;%wi{=#6yf^=z%1>e`wmgY!aHFC)eMI)Z$XZv0j(G22Lws@jz-2c|? zy7NOjj)CCa1WwuiUmG_pf9dvWrz&$oSp2XxIm{xTkq2?rX)wyg(8R!%sdC+5xRSOR z>+F&_QYbPeF!ny*Wi?4UNz7aa1Fw~F`~TFq?k%2>i+h{Q1zA=CK)en?STt%>di3{y#4rgD+_$&!7yrVUhPU2_&~!V0P{{rQniImvF6t zN7AUmLx8_jchC}C-@?q%0s(ZPW|~E8S3ZuY-ajJ!$CstDm-^vxIi14mVFJ`fcJx&+ ziCbC|IucE>B7|n81TYGOl0@aRxl!vl4jfkp`7V~5%N8)IElF%lpdaPvR-3DOAXAJS zSIP-QcZjMQb{eUu0j$AE**Jxabwa^M*Bq)7TQ;bsi=rh484bdRV{f+-6=lcP( zT+z_`$=S5oo>%R;I9wr`u1b(PU_+u~Jduj362~YL^G7h*moMwCaXv@qbG-a7r$yg4 z{P8G#zDeAg+VtameB$sw=I7avNJqVkM1~w>g`0g6i~m8K9;Q~FM1ilBZe_(EESyZq z#Qu(ee>wfj;toI5Ps~<)HPtWWr7ODfz}1&IBihz^g6L_!jCBQoL)&QmRMy6|*)>63=B@ZE17^u`MdDc!yF;KUhVs9+ zL7$Wcc~@y5KA%&pcDOu_b01E2tX>Ls`io+kJ5B{ghLS04JELeiE{NbP(S=da>q!=3 z9^R3ZVRGZkr>1Z)n;0kMNUFc-ct;s6Mw$+6x2=`IP=?Ult}0YFY_a*)Q0DJSBto)y zQ}5}Zz0kzT!j0^lDyjdt;WyTPpzi36nR1ngUpHma$g4Fxa(PoKU-FObn6PGBQ@1Uq4PFlb)4Y+_Y-tQb8tF1E-15J zcLkRHZqyGjhz2&(ZH71u6)D|(gj2hIl4xbrs8FCe0%vEvUPd;EC2^ZW$Lky3cG`R0 zche8pt&->A&0I#G9SPp&#_mLRW`^TKAGHE#83`(#ig+>9jC-19nqet&NXF|JF*zGa zGxgu<6D5`Y6emvhnxT}n5O8hj>Mba`2h2=E|A8?wn8<;zehE}<1SdLoY-%pf&YHSD zRy&F_eZtS&{^_i7hb#Pxt1tT@_{db0xWWewcm-orp_y|+a2mwrGMaRrJlmCBqS4j{ zxcI}%%|XqfuN)LiRyzTa!7EQtsuTpPDT5KAlpN*_*CiX7#3n#aN5F0Mf4P-n%{k&JFMX*7ytBt!7SGr8e{5L-M~a)t-WnW5 zwR1~6Dq8hIov9uV9~*xw&F;qr#Xheq^Siq36_gc8Pg2ltYBQtSGP3Ah%~XmulR!7Y8KgT?k@^`MlRIt7=no ziEf5+<4uLEk-P^kSB7=lwL8L1e~cDN`o?M$`9ruiihiZ9=NXoWBAbY-q}O=i*YbYC z*V&Lrp{;L1h8QGnmFm=yobe(xuE9x%TW|igwNj{>r*aHhkC)v5k;jlxmQw+tO3R*J zMOcGa?H_znXviec$I`i#c8%^g$O(tD8O!GX8(F{&Pv8f^oy7JFNtC}{beyr8``z2$ zhDCGn2Yr`-Fkk#9_SApGoC0;bKXtnQ1qU^)xFd_28dz#;WO5)JdhjrZP>*~hDcQ|{ z>wYV`Oxs%GXTcu^TbNxbTT=hN30kxc5bJYY&ObeFIpjO!E}H6iecv79d}5BmWNBqa z2?`7e0&c$A$&`atUJ4rtF;N@D8vJf5Kdi(|Z36R1E+;D`m11<{C?i46GQt$wAg;VH znx?-~YK4iaTl(xTQGw$d4a;tWIoG>!Kw_Z_FbO9UW%_E!O@4vJlQWLJ2V8&^)(DBJ zYXN0?CO`~M`kfy;jf;zg=YF=s6>$r(K`ArsBxsQgKImI$J$oz=6sI3@{ zwX)91TN}pb{?1|6vE53~5nlrjgPA$Obk}5=tG$?xB3esM{l&#|1_RQ!%XTFYFBP!M zPL3Lq-sJIPG8w+<`s$Ki&elp@UKk1y?Jhgn=wYpaj8E+fs*YjB1YCMt+B4UXK#`n| zN{YCG=({+yEKJh1T(1i_trq!0J*NvmKe^u8T0_}SeR-#~56OyO?qp*-u!qoXfMuB{ zC8umS!`ueWZ$|4ubD*6Ru1xAXyyVAS>rqBR`o6k73!LhKc0)T-Ahu1>D^CMnle;Ef zXJ55r)7*nUYQPC%I)W5BP1Lk2WydL3qxcRpjhFpw&~qUt zAByAC7gcasc=U2;h1t<`#eyQ?5c!iXVJQN(+(JspArQZi{W^jEE)pNEe#W;CDl)1( zXYbv7*P&vR%jd;I{nJQ-)o!GWt##MJFZsNC7v|pjfj-Yi2-_?jkFo5Emz9!Hgx?1w z1^XUH!lCCJAP2geLi}rAPnDYkKO>6U8?xvPMM7vKzEl0alk@%Yac&78V4^oX5WPj( zmIqM+m=x7>!Ooa5o}Wi!DqH(lmf78O2EEd>^3d}w~Ij$qr8(JN{zZCr)OcA zWTQ{dJ;^#5@Vz1 zZ6=cXAjRLulxYoT?ikuL9ELtQt#Jj?*{n=|eHE&EBR!{&WVU4BEUGvXEF+3O{t1GY z5R7m9#lB)tnsr0zz|=g#+tOuh7PZHOpfap_R1=G#5a#rv@U&TXcKat^%w)NHs;18u zhCGtVkBLxX9h6l#{uQg$5<4&90k0JFg}4;dRZ~t4aU%7vI0GIddI`i{u@f|5k=5fa znbwV`p1<;FdLojr)C3$ zJ@Eg+MXl=>Fqj|NL}BVHH(D~E4MIddtEzVA2UVHt7M}08FWD9qJQ@5(rcj9_1ma%# zD5Ib=CZ&F2e6j<0t@Ux{qUn~=0C^Bk|LCaC6$}D}Cr-*LWhTc^qc1(mE5%uNI(9I3 zjRkoniH*)iYv$@(j-=YTw{L)vz~wXgoVQJ4>6&Z%=xpq9Lh?l6M0AV8LB}ZIvSa%_ z>Tsp^Hj7CNhO)BQ*(f>0Y=PntN0esaYJ-$vHwQdY&4sx89SaDlLA%dW1Eit3?B{02k~R5a-OZ4h7pqC)XLM^ z5Pk}dZ>SXj52|g8vm95y8p4|L<>8JovSSCC5gHIm`!liWG;r=y$rtEfOGGYp#I{3l zFHfvID%(4`m~efertd6WczHpN!EpX5sO^JHPq>LL;8jxC6;|Bvotow;3cpvM1w(m> z``2vRc7y=n+Ot~bZB|fyN*UpHQ|RD0o&gfaFo!`0S;OGyukB~I-fr=*W9|=LvgNO9 zxnTy$yu{7&AEyE@6$VAIyjdw>SiiRbrszCx^DOl(HK>^ND z$UM<{*-T-$pTjq{O`Ain5te*yZV%*RrkxyaAc(EmPAgM_-gx2$936?ZozS z=aoXNbvJrY9D}zUG*U4vik|{SY!b<>F{FRm;#$LT}Rq zI~ZM`QELRhv1t_s84wz%_nIzMzTqwxKf{J{<&S9W6Z`d?%IW}$@$Fj|!B9fExKSF4 z&q1q7re4Y+D_UQxGS9o%NR)!kJQ5Zyq>mAA!gfyVeBtsiC-z=OL!BcyB(pQVRCZBe zG}wh%HfbtBX*0E8`LTw4)d{J-2gwF{&GG`VOL+h|)9mUjq;$pxt->lg*8M>&|c{ZytA$wIoKn4#GJF=zz?v_fLpRjewyQj?Web zZIrqS!bF!iWg-QHe(0Tq^Qbp6PZH_|Fcu8?bz^)V`dLjs)IlhonY^sC-E!}_K!~(Z zayjfb!PNA$K8D3L)=t>GD!k31J6w)HX+R5?;naW?f9T|S0>)o7>>!ub%`JXuevj+S zO6mBajHs1;i{dv4BQr@0$6dvmY8|{KVxE%qDz`ZVg2>d{CTknLL;RuXj5YQ&$eaRh zs;vDA``?s3bVNC(4K(HYfQJ?SuZQga?y9S zBQ}E(gMr30V}`vt;Fc^0SuQxhx#@d7AZC*rdM%CmHQ{=^Q9ZXY%)XYF)nf8_(u0BZ zb^o*tF(jMt5zdup2H;Kxf0wH$*@XiMCuY=OghUCS-fMM_t%7R-7ni~Ah;X=Y0S=1E zY`cZRaEdkKBtE1L(9m|3tq}$U$PvLLby)L?+j|KcSq|I~WY#Qxc@Ki6MMYB~@$47p zxcY(}VgzVhQ#HV7am5#D*^BcG+BWrdVG892Sn_Bc!11zFPEjrqFgnFHCG*9(nu82I z9N2D`y2)dy2Vr*`Dm)2bT1_z|a!EsQ?sId95!Y8P+D3C^%WJT%LHFM{8VAgab6Ifx zrnCbL1HD7>YU8TaB#T#YTFM`%n3lAy)?*}nj;fte^j^eBie6p|uwc-$>^*GQs3Ebi zi$Q%uUlQXhv+{72?B&k}i$gP(3rNjKBAEfOA7^v@>=D$%PWVgmYeI5EL7_ioJYlg> zwdK-Mdh4TBDa>P7V~5J4xKTZTt5VuS!Rb`8>?&p8&IMJt8tQxTN04kX{bj=T0RSjrbGJ$F3rS7cuA<&-LSyH2P${eFgq8@>8DryiPVQ?9zpcOqVIrZ<@tz6(?VB``{ zdvA)bK@M7uc;|#d|DmFmY`r#rZ`a@yY9KfqBfEni2A_4vFea8zS1nK z=+2b~a-6rI&?2W|q1#q;`vN-DGwjf9FRKiPSdV5fLnQS5EtcUk3cczr>yD-m9HrX6 z6PzAX{9ixSzkJfzF@;qjG{A?`#UTAseu6$Gok%kll6J!=h*E)!0xi4x z1M1hg!Qja6076)h9l*6KqPAf-{y`y~(Ptoh}FCbGMt4Xw~6}3^JDUO8vB$ zr=DMWB)}cOMt?~a{CoxR3E+rjWHjR<5nP;^S&p7sd2h%yF#RngIV6!4e|#clw&IIY zd~Y9TE0zkAdZS&lhRkI-8T{)67ESRk1`GoabC_+e%U%wbtIJPW?Wds=ce`e=tYQ`P|Pv z#x=fyV+CQC>v)7Vo)?9&vJf}?-J`TzF1@PY>0c*bg4k-AFzDH>Jbd?w;GCor{>l~8 z%mNx`=JbwMYo+XID0^f9{xGdBbgjC7sv8FPbV4R?K?`{C^@i;~gRJa#20Nw&2A3u91X!12ge(0go03kM{Q~x(GSUGDgo&dZ8{A?WoXW~#TQBJA{S?OE^h^#5 znubp|vTaFn(|R ztg(HsJ$V{K8x>u@;TJ-eZRc43`km8TaZ#i-G{+4y5DzU7L4xDn{a;9wS1JsZOWIeR ziq7vFWm*%N-Y4i@W2f3-*?*?T`zT^23B+P`#}NBQYqqc$6wHUV3wvKETKP|w{h@zi zK;TFGk)c~o?)!z6OFHKo!mygHc~j$*y+m@1hiO+jeTVD|pzM8cOJnWC5Yx!4JZ*Y- zl~m_3An(>#8)7dYzrlWk8~n4^4a=y}{Z;qCRlKJu;*Et=hQ&unzk&kjRr2fSfusq7 zZgzxJV4mo3U|f~EJG|X4=e9Et11Fuyg2&E142^Y&fx$cZ`JL1WXJX~3he?jbAP9V2 z=VgR^telWYiOFZJb1fz4ip@^@J-{9+MUV(gIF_B#{_K?J)bQuz=V**X65e4wa#adZ zIhPhM6rFt@i6(6U$rp#LK1EK6_)t7haxJ%PpK^t)YAaToY@1m!GqpgaFV5HKlMj_> z7C=#uORT{w@qvB@!-{6sH|2&SWe{t7h`5E-R+FfiY`K;e35ly;PQHu#bt+JOHyEM zMX}W!S|$-;b7@(4x;HnpSqf=BWe!xVW#DS?Sy4wkbHcDKWD`A>XWMY&Ja^hGa@wO( zgJ4-EkN*ia*agF}SHKtcu>NrBaF!FSUt!BIt0STL=dn}tIHraEIdwRf+ zhCjw5-U$*HgG3L*h7S_-dnU3TG%a1R!%H-ldHMh8`}9P;%4GVMn9u)>#QyhUPtE>2 z%k&M`!F8GT;(ku&a4NiH%KZ143+` zX-y}@;gnqPT*)mh25;<4-|~MJKUsi`l*(=Z+`2dkEIDm=An2^*v;+Z{{gyM(hJQu* zXgyXl>$h39A$4)xb4iC71A{Uzr@4?cI{*t}gtn}+R3+0>6ecXT7bW~-+HyA$Dyfp6 zOL;xRn;G~TfIyi?|6Kba@Avu2eH+hTa=7}|x`6>w3ME?hEtVwWuf%jr$UwubJ9cyR6JLOIO zHp`qyyMUXJo9pj@PI{s&n0(NECXPuDwnWE~Z2o($ zL2H`s&#?ypZ#0bjXiUtRoI=(Aw{_VoAAWHW}WO!nM0x%?Z1`0*Qy>gpAf5)@*S|- zl2Q@3Axo7JwbLPt>Tr&bqaI5~+&}%!AJn*4Ffgk$6sAWJ&DmG!{ z4nD{zg3f62EC06y{EzL^+K_AEfg-+EqwgYaDNPjK!31L68pS4FFxcz{onz%@lBcLwtVkXxt;?NBKGhM5N1`vYZ8>@J`@BB&JzgvSpAyFY6FH`3?O^8U@!xfZ zj?VuR_N!H$bXXKd7eIsBgmC~3OV=VIK_CrPZ3@JI{&qzZFDew$S6e&Fl(pxxx}$yv zBhbk)|H~EK&K4D|UMQQiHszP^a?|lt{~h%l7!=s58W@d(oiQF3tk$S877!-;tq|mN zqik6z+XkzB1 z23xhzJJ+|S{Y%`aUVv!FciY1qV!~jXD#*Ktb%T)LI>n3bS#5@%vXg4j;QM56Io`Of zY4pgx?34ERc&KAY*g+>=-xw>;mFA_ml|R*@c_HsCsN>{(6&6M3rj}Q2N8Ip75%Exa z#94KSy{sm(d<|>G!�UQ=6w+?pJ5ARGAc0nnt&)cMd~LoD<2XebCLY4aSq z=jXrFyZnFpi)m4lKR0PNaxF;%aK#EFQ?Z^bLLvW63I?K1XhQkKXrjMB2TsCi;@)=s zp681fXnmaVh@9CrP36rQ{oC6-g%u*9>PDe450fp6}|`P(~Vy@@Qn zfgkTS)jrC8?G^S0Zz7-|f^E(Iu}`JJl%4wjKK8KOC{L z=s!f$dA}`Xkw1R0{vQhGe@TNM$`gNh*)jX6S$DFk^^g|JPG`7B_PR07o*ZwpG0y6k zKCfnwDzBZdLmAcPl;RPq$!`i~n1M577^hv~wCX-y+hK9&*}B>>D(+iu_C%$4Hr_Y`aJrb){01Y$f?} z?{KB55^qcl4Rv)jmQ7?A`LU+GX^tU&G}x<%S9SVdCL|af>hwh>EEsYXYddB-CY4I` zY{SlgK&7SZBE_0tCZ$UF(vP%g5w&GNTX+@60dC+5`o)m98a_ELJfHz4Z68?;pBAw= zC}Ob-0sImgcemUNPk~#8U3K0pG7yGMoK3)vRU!r&cV8NR6@?6)0Ne$xrPU(J-h{6uzO2`@!i`=;Af7Nla_L|0TYPyhT7?@a236L+ z89+AuC5(HSO7T8wQ2`Lnol=%-9^Ev|1OBK_JHs}_WIgao`Hj8%wJ#d%l|;jcnV}4@ zrmQ<)#dYo&AJ~Vbtt%nvV;!y^)_Cyb=;;af1k{q$v5}Dbiw!@jZwYVnRkSBbZkt8t z3^RnUSx4&m?Q^2>4qd5l?V))j4{Vu7cMS`KubB@3NfjliSZuhaw@o8`6u3oParOmG zu0NMvf3&zOKZk^Sj)g8JPVXDvMv{Cl_~iFrv%VLxgys7%wD~3bG-4ksq4$6vpk5ou zvzcS>J6ZeB`#NI$mII~iEn*)*KZP8lv4&zEUZe_MQfPjn29#a*y$l&v`ma;{EPQiR z|JX*Z&vpv&oJOwCaVqv4M0U(}YVr*6{D&FmxfvQUTuNT&QQ?{K_GKLTEZ;8IErN7| zw-1Kq9);w$Po|od;J05OcpF6`$WaIvLA?Brb+~WXGW=yL6iOnDr1x(W6U^n6`o}1` zVN|^}%?|dy9$G&74$Ab7+HDAlKl>hz%3g{vhx0Ygc*U+dw3sZ~&pG`hSUuJdT}TW; zTGmSD$}!fGqm)m1PYB?I-FgA9OQTuc6q}i#0QxSUjBQvv(T$2H=P{*oq_+X(pVR^1Y_$o_P zmY8VTJG|QP8crR=36&X69B*QFT%HK%Ou2+jKj(aslbo8!9}LWgqA3Vv76>BR;=?Ai z>B>MM47u-1IFgJUJ9Y%V--#`hcyiOc1^UJlX?Mbh;rixd%aqmR)`qmJFJ=P9`nF?k zlsWPtt9W+} z0?XKQ?4q_pA$0lA4d)UW!r|WzlLR}~&01K+Lv;NbamND|oACB5IWNapP!D!jT$<{ev*Bj()*WU9PW z%lLKjgK_BtjK|c*hkvQ;FetGdo!!9~@T1wfqTbOL@Nb$Cw0`9sq?|0o-or;BUSX>y z-ycD!{}Qv!z#>8S0+Im2s1mcnWJVbu$0vR7oC~@KsOlfa4POuI{qATNepMrQ#f{HU zzST(-9SZXx{eb>*Q~wB$zNl;m`Apc_OX0%3qf9Z7wQ*}2XIxFEcO*I5lo_rK@18c( zN-{Q}a4g?Pq`fXt@koljDO(W`?3koFAdgop*t$ybf%mE(ci)G-wa1F?;%lPLHoR{9#JGQ1lXdOtK|c9*_7PHk1pB)NQZTh#p^u$j%nl(O~Y-aTE%2rLnbDxP~f>4#X;$HVML&>txw9_sF6!j zpwPc8>VKfRfX?K?a99TtKhz-12MR5$sS>S)FPS@P11rL_<$?>ffAH|Sic#+-jI4mS zf|CYG^jrCi^$E;{E-jlVMfU%F5GRKu4))y-{W+OEBF&A?JGT=)gymsreTOmA!1;^c zgy1`~ASs$O;I|!9j6Pt$wPjF2$3=)^6|1qxn>}a`{NswdW(-4KfqQ9w;~2;8*AjrY z)fW%n7QT%Gipx#>gGFC7uW!093f6UTBdS}1t;oqfS7Fw zSQ^tVXzmvp$V%AOaVT-pnMNp9%_YL00G_tk}zNd(^4R zK_gBjGK&*p?IX#4am`7quWjqmz{Yhy2@^Yo9ml<3%(r3?sw#NlsFFB3L2v`2*d$Gi z^e1>7T_}?$AGnBf>sA+)(n&jvbsMRo*mUuwD9)lTDYCI5n7Y1u3Ijus#)-$9_>lE{ z(ZGYBFk+h3)0(V^dM7qMZ@K!GVL$8H#t5_j+`#|Nu>QkbaUtPOGry3pnK!VSoi2P} z;rayQWcJpoWvV=n)s8LMtXLK^664cUFF105Ka_|X0*7jMnct2s`6#V5h&ni(Y3U$@ z-#mi0Yc8+FGf$|^T8v$c=`i}!HElXm%d7mAnN-T8`kQb%`Coq@u=UG5XR5{i%wzD9|~_G`ghV0C#Ajf{RVrwBVKR3Hl3njH=mGyuLM-f!{A z`p_C4)=x%qh(y*3k~sNTnmC%0y`s5`6$J&36r`^e)Nsn{JjtkiP+1YNMj|Lv2)oL| z@{r5K2IFjfGq?mI-BrmDGUF+^kDlx+GH%bF`doUqBK}9`0Oe*;t@xM8Ny}%h)Mlj0 zh>Da|RJ?x_qNQl>s76hHFQT2UYaZeOz@F=k5oo}q(vKdm0B)W-S_$M#Tgt>jiP*S`*dBAP!h_KI; zVs#_UKo_{OU`R5whd8bbmI_n4@mGVpTWt=0GlU7+->h7x6oyQQ?}Mp=W3U#o+@X8W zSoV`LvxNs%>0wJ07c@Y-ll>1ID_eG`TI3gQ#542t!k;bqi7}hnh57hzLw26zERF={ zf~#UFtpV{{rIU-jSKY0}BRW*>*l9QcmwL6Pe2>#yYEP#+UhhmyOGaI>%wY*jDg|Hn zxU-PBjhgX$G6*`;q66%92_6Bq;#6#y=~v=5<2j45v6M^Gw<|^S-?4BozO!La>zh+m zvD7x~nbs11K06qEzC92I4p+v_HV*_H*{*QSY*VmE>R6apjE<`~Uj^c9)NIZ4Zw~_Z zG6+UF=yQ9c{}VcF3EU@&GbD{^9@p~5310~011I_HGJp&4E0hdDdPB18YFheI4VE7O zX3FnC=jtvnCJ7`)modnAVj^YK%=#FpVk7z*0f3bhvFHerJEE8b)TO4TBY zr|6{cEkUMQzMC*@^D;FPu$LKDjE&FV`yhEgG5YSnB*9WV-M`~zU7VVZj*x?}y-No| ze+(}3bv(PuaeQ+cRuxM*SKz9s1E_KD+e3$Yundqu9(({p`FMRSr3a0)=@g<4= z*=#;8v&=j1Xm80pFi7g7WaHS>Ba=KZ6{UVsPO2+EXdoUhN{+)jh-LJYBGA#%5kx+PlkJ5zjN8nMLn(3MEaz~c9PVu5cT2;2L~=JA300hwfFT$kioL zKf%U5UL-->u41~Csai3G`l~s`!Ouu6?}?uGupwdPPOZ4gLNej>if55PG0Cm|WQFV* z2e_gVU+`qNs*i3pdR4R&KNJVD;mvKy3#O)@;a5`p4dlH-N#>N{o?fp>aw$n%K$Xmh z^k$FLydG3-*5^D*LRe>dj2slibar=*u_-TBcCU<6#GPIHL&_K<;D^U z%eC9x6NoQ8bDM?594`{??e6!7-;Jf^@h$w){s&`@FQ*L}3EpLtd27wZU=Eml#YwaD z{7MjtbYTyqliFlRox{R-?Gu2TYPWn#Bs4oI&4+K5ygV!t=|Rd4(HT{wP)e*vUS=#* z6zYg)C-@+Lv;)y%vV##MTZqaLQ8+ zYh0IlB?9YxOGNgS_icKYd`~^Y->rvIPqo8Au;Gc^Cjm(E7rl*@a@$9%u%bW=7!YiE+4Bu4EGb22=}pnnxny{19Zoo*(xw%| z!SsRRkbHds!8D8yn>c*d^@T9BzSYgQq+V3jnP62Hk~6;to70!w7yzRBopKWjpj}C( z2!x+IR^q4G0-x8R!bMk>t9<1!kherR0{a_!h*Y$@^Xprdgw=61#3g{ZW)=PExS~j6 zURkB#w_^1E$c_z5PQkiGklHq(xYiXa>A1C!IyORr%lj!WlyY$@rb%AgGcEKQvWX+} zHh!@EY1OcD8h5gC&?E>Pe^k+y#7kUmq;yVYy+<&beG*dVdQm>eldm6Od=?Xl&3~wz zuOr((Mu_4CXClPzpxd=BnQ;s&t1)mWC`btA z^b08srkGgNYfI0UVC8Dnp^AL!=B*R)g_fB!n~`=>4!Y_O=M#U5s{{Oq=(9^*GA*!Uu2CT%+oxthe0H=%SvN6wy1<7;DR zsX$e=YI+G+kXA3NLVZX*C!X?_&8*;II^rN5r3LgFrdo=9JyTUEkiK-B0Rel z?Aw;+&oc#0i{+&WVum*H^3l&3+;ZQt3jG}_4=^ZEsj5<_X|Wz~Ce7sGt;?ffO0kE3 zU6u!YwY-3p&?2bAQM zbXWQ>YKEu(xnTM#87?4UW3jU3_WyVh92^-UjX6%={d3fpB?JbR)g(7Pgp4sLUu>3E z=xlk0wshL5O9OX$;M**1eS`DP31B_;%c`T%`_M7Dby5Ea z(x$%>8xtJJ4gCPj(7bb_F%)|uc*pVnYejvpNCeIHXeb82>8(l|gMkwM;jX4qi<0)tYRCcYPV6Kyl?STf>rs>qsb#MFd6x z9D73jM;Xvy&#&T=KWtb6A;Y`S{IcUZBuz?voA3OTWSr^#Pc=`eY6*P^`h)VU|3bZ6 zVYn-lCPk4&PV-bL!*@JYu(;u>vv%B+SMCiy6h1RvR*utwY2Jh4jhhI8dz43TSrOLw zAy0=*?H=xVmqTbCpD4Ca2;&U_e4`&`s5sgzMOqa^%g2v}IksF8tl?ks0e$haxx zaA{X~S_MgI67~5zy!E%{h7^y#;1PYA$Uof9zaoIzp+A2s=$7jf@o2U)%RaL+9oixj&vo6>OY4gFxl*s65a!SyWZ_>Y=W4&5c$Jy*!|JqUYC%jql^4)%eg#3r zKCH4V|P5UF7v8k$2$)!&5Rq3WGoCYfYZ`bZvLCh>Bx5@DSdiY3b@5QEt2Px^c+= zo5FQHA~;{5xhprs&CWw#ZS^4lFTNZKGZvJtU1QKjf1^SOf+HntK|TZKEif=Fugb?Z zb@!_hLyloy5Z?0sib$%y+~-fql;-mRds zpnt8vvr)F%=eH_SmA9OLI10PaGz?w#4A+erDi-)#9o<}^XXjDT)f==CSBbvx4T9C zTy9Jkx|y{@ZPNg*rB?-*57m$=QneIn&9%S$6meIVH}<)ToPZ?W>F6@rS!(%&s#5X? z-J1zZrVYJrx6{?vc6|KRX8RLH*rC7zi}ejs>8o!}%0@Yoa|k#yW*q_<4u`)V8od*` zGw;SE!g2_X-P%do{IwSFoikg|>%pUK<_XArt^Yl0yLYYh?6EbDmZw~ku~!@dR21$I z4J?>D8L<)09gR}n+j0F!91~Z4tj!H$%J7;OQ|PC>oFr=vcW!V`kM_^wTRERoa^X*x zR+bE3@NG0d`~J4JZVq3N`em_C$1!#;bv$>q^ca9|+Ul;s)xihwc{|7_(fTKkbZYha z0-Zz+n^L4`pIGb_&sWu!&^t?ste!kVO&kh*X4~F9H2tg<40l>@L=pcY-hYLYcfAv! z#&TA~zcH%Ra6Ss|wEJzRxG~-&nX!rnwJNyg@z0WxdKk`qB2T<>fHTbYqRUH#b6QH3 z`8H7Cb|qB0@Bh3ZyR1HT>*s9q$@h=&^q0RD)xj zsZC*DPMzKLQ90Om8LB!c+qPjV(gVN$=r6sOCxZ*CqVMY&wFv={H%Qr0L5@AdtD4+V z2zG@4N($1E5|^2?Eq{mS8=|)i%3gO_#`H71{`o+k@h!mwGSaKffsUU(PS>cGJdRfd z&aV$GvsZ<}(FJm2>Tt`Els}Hs%6`jrw_eSn6`s2-1R68r!h&y{SyD~5(8Y9))F#j} zW6A4Zk*Ge@BD^gpWuSF7@uH|F8$9W1cD1ETJzb|KXJq*JlKr$aT`>gkKTlhQb=Gfu z(ZKla0!9uq$`DD2!4`4jd+CC9SLavS=7}1YbsR?_OaCl5?Pxr|2&Uv}M8;R2MC6t5 zdO6@cV3$@F?nu_y!7WAb;p$;J+CH~&tozgCypf6EUyqSV?VwvfRRu7**OnDbd%lfD zFv2>(a6*ud6Q#OQ?XYDB5@N#`8AXya9{Av7JgmQEu#^9BTI+b;KG2lg*Kj-U<=~0% zUrgaPqJloV*+i|oRCpuAy&KQkU`U_C3z+M5%Ux~Kf{H6R1H z)xCVH@qm}(eInYnxcu->#^KF3^b}h^`?$9wM-15@$}vi@UGJ{%tA-jy8|&*v`SPRn z9pcgT)qVoQUHAEi`h4l0^j|C0vbkVoCpEol&NP$yI?^~RqbHpW_hwUS-QybHB8>hF3d%<&CtofOM(OW^6@Prda`kH_RCmR;YgR#Y(4@@yYepkr2cw^Gzng+z-cz0H;N?gjowLVK*nLV3yJpgE+j0166dDu)8B z@=$a?s6QRJR;r{qV@4U*lNcWFJO-!|xVf(a{^7!;XZC|Vfd>k<-| z3DixCe@-vs<^|edg#ew3ET+bv8VykPbx+=nhhgnP@GtWl=AY*+F=%}WXHW5zzj~HJ zsdr=uhhsmjS5l<0lC@$})@3?3N5iZQ*P;sjD3@wCofZ^4iueDp+qj~VB{N+GUxZve z5t>C-1Kx`d>|i)0vD)lmBnK3!acY?KOy07d?4wq<7Gf(}LFm_lbMT|rQ(u^F+aSd@ zt&va^9BAyWSmt`x@sb8yNqRQEj%x8vamV)P=N*1;`Xv(Ft2qzby_bXZuf%J175Dv7 zTEk+z(pzbMzZJ*eqPPO&sNbV}LJ~+(`ARX#@PC?^sx8QEX2`gp+R1&j!H8~3JOK!HgcgZn!@AdyVd8sE|mylP1PqrY+3vvs10F|IgB+ z-le@kU&wuh|7zvG{y&S4@0VZ(0b_y-kE53bonN7TRTlv~f4{D#-lr;sEDcZJLmcKfN*{n|nE9RWx=Hn_^*`8|>QtCg~z>q95IYu+aIr!q_lz_jVP0 z$qIyf%h)@`w>jEhDzrI?L3 zHSnXzHt@re(+AUQ!+SNrM;r0LM_?#JRvVGlgr7A)S`6xH|F|%M!3T#D25UtG5yFQh z;l{Ug3}kQu#|OjP^Rx<8`vo%-NSzDE(vIEQpXS7_ALm#fa;sj><H6Ev0T*P?XsK7nSP!jN~QP-AAgTq}a$tQ?4o*G|S}r(f^< z_kPzOCW2#GeLq+L5s{TgfXsZ^pfu%VBa38VTimZ8tk4QQalJ_{C7(gQ7z!|#O97P;^*Y?XH7q#LbmjcY-uY& z0GR=+Xn2%cmoGh|%-GPnidslvvKP=jrJ-G@0^cei$-!H)PCd`#Gqz`IoC%FIwZ6rRKAUJ!92j3;qW*g}BYZ*U63_GLJPuj_`gsgw8=%L1@~`-B_K zlAhy;#&aUZq-aNgc%9WZeBj0%;!%g+7{U7@9sMPfH~K|G(*$Twl`knEJ(W-@*&!oF zfK0uM!WIHw;22MnjBEO+Vb%YKnmYV-p_V=go=HF0v_+34gIRD1Z346(A8O)tGD^2z%h-TmXb0ONpVq;vQGR0+4F@Lx^cU+^+x=@l{F3(^s zMn~g*-5bK?Ws6;$UI{`iH$BqJ*FSrl*6r?Za|%}bM$Zz8W4x(db0XNjat>`0%UnU4 z_e#n^9aRL=5-o#Q9301)Gc)sQ=>RTLw8Ci^R}8*(jKGuS-~>}Zax#=Gv->X$VxzQu z$2ImTyD~8$PP9AiG$@hY7~&m?h9LxOkO&B}$bgn3rNAhDZ2-?(>rbyDGPIn8i|=)y z9m!!Mh4MhUw{pCbGA;Wn_{66{swG*6S$tY#VIAKDcTKJuXUUcbK?K-AgN?)b9CwW( z(8K*lQN6^2Tcke)yb;uZb}J_B8gD|6R;O94+ZcABphsovGq3`AvVkJ8`RL;Zm+!{L z(rlU0G+~8hBC4}?h*b3(4>kEG?l_1uEou3o`G%1{M=T(hvNrAGSa;KLB}u4uOpnT= z_%p>NFFF9~Dm?s<7m9?}C}NKnDT2fftd8kNsU4cUIYU0YbvE6$wYNa~jRcoUIUBi5 zUy5_&8;Vp)0X%#!s;|it;uv=pa6-U|Ipoawuj^9PciT>w4HEvq9tk(P+UOu-NUUhf zz1c9VMq&5yXd9$bhKYB$05h4J(a1~+o3?Q{;aCcOH7I#}mOgCAM?CACSGMI|$$tA2>+Ko>wzU#QL{XoUsVMVNdGN+(>_;Og0$ zQmuqH39N-p2TbgB%B#0sVb+||IDQdQKMVP-e#xq#R(=G!J-t*iXBlsBbz)+5Qljk~ zf8Aq+Y+Ve02GJCf$RVuh5~-91qT5x|#5f59thd@t&i5}6;5>RcXeW%u{&6#;8~4uck2g#y3zHs9Ey7H_cx!tX4N1U=!&)<*ZW*3Qrz4bl zI@Vi-AqHK!Atr9vo$eSzs#sk}jVRAHwWbCR)w_0~<0*$wulCPelnA53B=iF_a*#EH zF@dcLAUAKCB765XbM{rx?d4B&bF3-T=fZqo2#ga|sb1Gk$s}Jn(mb0F|Zc%a`Q7QG(Z(ch}{A0#iW&Se|k}WmJuDP#* zB9!bnf`K?BjXi)_8BkrVFiFD!W*HL^fd9{FUMg)}uTnZW+-|}Bi7IxTi3B0wiCQbE zTHijuw%A_tcvsC`%oR#Hc8%9i_|Iskh%bcJBiDmTy_emDtCrba!!hAGsN;#0bxt&S z#mPyrs~_|M{MNDu`=R|=Xl>U6t5r%XgQE{acyDpi=;-(F86?cT(a%myf(joiqF{LM zB=v58=axDc4VRX0Z-_Q3QL*TFyo=d$H`b2NB2N?p2G&;2$hhd&{@)nZY?&LUJ4SA3 zJ)R5^5Q#kQ+zp6w<3wHoL`&EHtTo=4OK1uoccAFo42|YfyGsnl_3D!42;KXfU7|;%WVi0}LxCtSK_7ZC%b|6MZ z0S>8i(lHD=>}D0vKH)Xsp><-gc=fu`eR0Zz*w^28fpUU? zV9p8Vei=+6|I!(e^4K4#=TDMYBcefns}#1m^17K!2KTm(pSP&lXgdCnbL%Y5@M@#dCY%7o0=%&M?81r7yOcFZkr1 zDN8BC@RTb)-r%G*MZMAD3%O>9W<#`+vH#THgnc$0sDk0v`;JRjK||Y38$BOP*y@*{TIG?JMo<#IQmlwBfapN@K+z$mu$*H z2}h%)4z8WMBjJsT?Uk+kS@O0@)3#17{=(UDij?thIR84_@kj5`wt5=pAd`z-mKoc# ze*IC^0!VqV9aS?U=^?Cd-LTL)dfT7auOlL|R-r9|SNRxGO}wmdZ>6Ieda^Ba(AfXt zjiP!&cAMFUBcP}&&3$(N=psY(C~N$l&u*s)InjB4_+fV{9+z8jehg3m$nNqb<6K2N z`VEGnyAGU?T0PDVLbwG>UX%$X`K3fac7oR*fP}te2EN0Ly=t%4h`lbkR}Y?4SNbYh zt5G;7Z?f=kU8`EhSMx|>mk~aXU>3#W9OvqgI9CUwVgcwDBtj_Re^Zbz#+l;__GRiu zyF_tkl{}mqZ$IF#CjFQphuz8)>t>z3fVBO`jHjfSTUv6Aq=?UCLy4D}y{w|6)y{v?wTk+oY-qTwO3CpxP1B=#!AEOAg@H3Jn_-m_0qO0B^|)6waD zKAjZT3)BQ4{~5XD8T12}{8Sg-WVK)U3lDw#G4dD^DPW`{Gi9JvD6w$%o^2a4ln)w%(qT3AdgZikE$urwPk=tuMIGs(jC@nRewD2}6L7%XJ!Jm!*u%UBmji>6 z17nDa_LUM3LqrDgPaIZIgwnSKiE?W7Ox2=ebdQoY=zqzB_@x9QKoag-XI<=p((g zi=Wa19-u2e1NCLX&|{dWci` zXt*Ie@mGPyt~y@{2#)!L&p^BS(_kXJ30hh{9O45XWn<&A4J4ZJaFHURvZ1hiZna}o zm1AY&LSbom{4<;Z$3ekpwzlFy;295Afpr^8oi7AM$ZKrcD9+Bbcv=a9zla0`B~YFc zF)LG+#|0%MFs6Sj6&0IWa)6lyRtEQAeI(XJ2KVF?tR<5BuEF#rZ;eX19P-z{E! z!Y;$Mqm4&bO)foWmeqc7yGS7;Yg<0UeArlrH(-)}w5idbCcgz<0b&S#43#ZuMu%Bg zUF6%`=3G-A-NCFj6#`)*NRI`_-@MA(Y}pSwnu8d4#(!<)Tkdmxx%^T@h&$VO;TqtG z+lT#V2LtO7u=G+|aXaZV@A;m)QGMHG0IM20_U02d_C^(!DJD9lKsAIxJp`7-Q>`3X ztrCgQ13gbUNH-*aU1Z04?HUg}b^~^YE2b;GF8vay2?T+4DxvGeFwZ<-AUjHE8ki(* z>SmpRY+vvlCTnA9_Q8k4~@;5i@KxcS3HJZ2RAxI@Gb@@D_} zY^ywZr{0_spMWQc3E82QvOsApSymx)2NLbGqZTco-NkuQiTqx^J_Z8Q!z$cj*j(U+XwPp~RZf7lT($(W$l zqczr}Eta8uFHM=?kREE02B#d@AMuku0{%&i117nxjg6o-F1U_e3!8b6Hg+NFoCqcg zT$9?mCB`)+eLpG=>iM%1?rPFi!p&)+?!F$)t)#9b8}G_epS6*}C9A zK$+pj7zIkya^xu2r~8$+6bL-s+us~Q*BxvU9R3kD@ARE5C&W@8Abz9w$`n6^-8@k= zqx*jIUTzZqynTr$({~dL7An;kjPQDJWZ5|yd*k){qH#(Q60cA49cAkocdnZLW8X^u zop4-S9KX{rJGUKMT2)EExfDz9bGfpPX#x;9ZZ5`}<;%IVvKcEip~h9APXe2wpHZHn zBHzWDa}(yA1;b%)qawm@84-$KZV2SOTH7GBJY3S7tovOS7+%=K-*`wrL9srr1TjDK z9mkHn?=3kK5~r0SE~Ul>Xth|eY2*Be-^CoqFxSR(?akm|bQEySSmBa%B5R09CwHJ4 zPqx`2&+@Ao#P;n}CICtFpkm%aJXCdU(qE#E%$Vf^*ul)FQ}3DLcK5&UirOCzF{HNJh&C<&JFYv%Z{W(l4L~`VMPqH@Fv{s#OKSI7(~s$f-yYUIsHu$!1D5y9R06<&aOrbcRor~h$sttzZ8;JZ zX|qKD%xcvd+G1@1koAYqlY_f{?q?0H3zXvR@cL{u>#(Z})I&Y>3_Uy5==v>HPR$(s z%n<%z3hdhiMg;N3I}G^65I0{XYe8OYaRcvgoxibG`Np!fyIZG0p0Sptssz!bds7p# zzBv|O&hNaC-H9`No`Sqhn1pjvllO*p)eL}p{udqRX_DsCBsbqqB~wL3WE0%MWzmFe z*Aw(LNM>O0CXApLop;3M9J6CY(jB7ubk`j7O}O3^- zM4^NrsPQYeU7Aw=_+5fi=LcObm0>vD;m)4!EAJNdP9Pt!SE&~vVccU6>2Bw*-sQeQPyI@+;GP^i6G%V{6^Bwp-jC3$`RfQsm>&OL4Z%~Gg) z;?!W+(Ss)LCT9mCRC=LUAtcg#J1KKkM_fvGQ^@M=QdbtNq!8k7!<)69EHN`PGs|MB#LUdhWHCP7>7I${`!n6IA}ZpXpHmf? zdG=nJYwxur$Ne2t;F#wGQ;IFPYpwj+II{bFimFL(h3ZhmLilFbtYxgGo|qW&UZIAF z4MuEpM%DM7BG-9HfkzI;RGaq@QnVrlNkUniUjQYV6bjDf7k&z(ypeJK`tW@}RvcbQ zWa~)Py?P|^b|kV=-~{d9L}z>g&g8u!93!nNyc`?gIqu8R_R${r;nwl36^X3q@+|Y0 zBIPjR!GSAXh9Nvu6w7E=&_8G84JEA6xmu%?*{2IvSK6dUm@=4-PG=QyN}5gY^M zjCK?UdcAw+vX97n5o7z|I#5ToM;;~?YJa3AT@0DBxzwevRWx)GXRljr`cpZ?Pyfs? zO0a2iuFZr)%RE!QAltjJF>Yt^X6F{1#m`qOoK^|` z>A((~|G}WB9d6kMPhPUwt?bMb_6J-&$HlF}EVmvXrikOkh|)oe)0B&#XPl|P4r3>x z*i%x4EkLn3CwTRkvAnMXjnW~=5d|PK@2c~qX&ahTA)-wp!b3IZ=pqtWLKUiCM?G;- zPMy?38!Iz=tT;3!h-UhrRO6GA%bp+4BaXol6B3MkiQiPnTO@h6)We;oj6D+oI}@;7 z1AVegvO({3LRau%Go<>ELwDxCZNZjM<}oeg+N0%6a02`$UyL89a-u&MDyCQNE?8Zk z>IS!}Ww`;EnOGDvK~l(ZCc^R0lZTyRi;6=0b{Ev9i1|J2cD#p@K^hh2#?g^T7Z$yx zJiwVj5Ec!1b*?IA$`lg-)Ydq=93o!i{q?It`W`X#+|xUJ;gzMVhq(m2>rV*TBAQev z%&pMjpAnN_d#90f4~~c)r*r#f-{?CO*|!2EK9M{4p}_;&%&Owj3De0rGH>g+N$+C% z+`O`ha(OH(wwJfH+~jXim&>HT9jAZ!y2A%d{F&12@I`h*BD)fE;`i|%KADs+d+t1fTo_atkLZFiZc%}RlyrbGCzoKx_1Co6T5iLZ2wzIuVLfEZV8f?v9~iq>O-df z#S!Pg?4C!yBDzuO!nIs(*5dZ40TH|~=<1gyAO zm?x#lAXGtxhae;MZss~7u6({d)4eTXhg=F0gaac~cXXyn?IG@SU#J;eQ=;Vy!Laq9 zF?)<&5iBT~g!-K0{ryr4JMKyGU8DdZo?%xweef(NaE_6CaMdWZAcT zZAM_JV@B&xDFoM@Suy_U96X*?osyj6$+9fZWGM!xbB7Ya#T-s1=hhsptXG6m_ST#! z*WJF$o6o<>89l-tFSmUP39rNcTV1ZA`i4%n4nKs=^{s48|Iy`|sQToJKNvfiy)5Mh%MGCaaQ=Un{YL8nQT}sVTPNOv)jtIg!NLFoh1Cke@)p zKMP|vqe=H8dN7*%9rPV@i@B{F2(eAX6M4YJy!qSI<>R_K`aKN)Y*3el^x7Csw}%Xl zBn3^+EJa91=xdSh6J!{Lc})%Bl5x)n2o1gWbPe$e4{b8|+8^Nc zSQU0z>Zahw8=J`)&&BF!esf!D4%YD-Y_}|y75nbCz;KZnT2PE;wTwU|M!Kcl@>mmC z7k)fQUM|`{=5}KokWlKL7%|o#>j(|9E8BzWoMfG)SvHnBZ*Ev6ElG2@7kR^xZ!x_5 z9sGo>yl9Jmq7;30ATO3a^|(%nyCsHhl0Z_oaSWg#bC|JH5L?YPFNBgLQ1#fvKrc(N z^gGoOdM-?(97|;J44e-Qlv=ijf?A$#CP;JGoZ?6#Ub6d8x- z!VKHg8n&qEgcEtVIm&X(Ina!}`m;lYQ=t)hFp`+e;*QGrLyN%N zuDoRPI6(PR#aVg)kpjh(YIGo@1@ByI3@Qj?N2H!te*#Bp-#wWJ%mbO^1DIR+Wb@Ps zjZ<5voLZN~(g82ekZ=UwTz9lYqeY&6SHFX@U|dKx5K?;6u2ParA#!)`$CT4MO3k?)V2{_;eah)gxn-X*e@z|X=(K`wdY-0H9h$0p`Uq!J_E;IU zx%~kB%vK#2#^$uvo6fn>y9%Hu^p|+^fV3;ogSp*-;-|?>^?pVCx5go0x@~1Ixdyo1`T)9`aXVJ1g z($uR~nk4myTjYC}y2Z21fb@%qwkl%RRh%Hf7owJnPoLLQGG*5DJXBvfG|_6-wUyzW zY_sf^_aBrhFjmgum7qBu-d1vhw5ttZ7pC>c8vs^0VP+4QK2GEhN&cbD z*yoAGmS(LbOFaW_<_D3x$8m$lQA4`W+>?mArQ9GGa{V~}v~{;YK5Z=qHsi<4AD@1F zKOgRx35NWUn}z%KWm_2q>3v<8W}d@B#%f>Uk6iEVzUb=M!nk0KXMBS?d*6V}H-PHY2xuFFF>YmP_WdEfninH=K`I$v{v4VusN(JHFpXcFfd1S2k-L3eo|gf ze0{U;Vw$Kibo-BV&!Eo7L#FIf{1FNFq%U2K1f2n-oF2Wd4M8^<>t{>Pq53O#yul9R z*e+>6NB6^&1`T2xY;c{Lg8i(+0!(RU5@1y_EIdXiL$%HT7u?X*0eY!`yjbRJI+@(~QsGY@d0H zi{VN?l|rySl|nfFZ^4Iura}=12U~}Ko#q{9DYSkt_2LOhl5(Rf4YPwD3~K3YquRv)J0f zIV5!pQm-G%ikTb|LL-@;7!)47@JV1e8jl1LguD#Jtc70ZGLxHbuTu2#A`$LrNFzvD zDzy=uno z3|F}J8bLnL-1<_klDnr_FTc&af=zqAe+#npbBs34hH0?NJ{-(%$1W!lPEG?sxUwr~ z1eTj7rf(`dhVC>f;$AsVEI*1>dKRh?D-Z2h^!jN1ZT<}#O0lRv=U(~~ z4zd0J%>O^|P^OBt5{d+(H#qBZO_f7c9(c!}eNPEu`+Y=is9-?`{0&KE)P4k2nO;nE zHm(*f#5WCZD3ziU@9wwaw$>~ee#O0jG-YS^=ks5!#g;ddKDzG%3}Nb%TSY;RDGUl@ zTS+3Ki+$EG=F%E10p=*o=%RLueV6D_+f_jxDf4+o1{1v{O&LG}^aFdo0Em_Pn4Ub= zBpI4ix1pGn;1ia1ZumJ2DEARyN(kb!Eg32{)Foq8c`k0EJ0} z{t?-F@;r=o^qBr@qf7`(?wh;crYv(s1kBREm@Ha6(-+x-aE1mlY1!P^&M%(x$cPu? zBcZFQv1Irnh_Ps&G6W_2Y)>=Ed+pp2dBE!_cT(7p&q%be0DB&Q+V{DByh5WA%SBT2 zagxUD8+p(@wzM?_tO}LiDDxuyi{lXpr0!CO%mv8tku+4W#o)fkxhEdyKEi(#@ zP2mOcMcxO9ZJqM1xChHZF<5o{>G-tKbCF{weu>b|+RYV3E@B(rwEZ+ld2GsfyXs}D zI>zZJHvHZ5!WIAGr#%YGRmaf@Qc%j6ury?2KEqP{$wTVDn_+SEpQ59V3vAzEs01!=_VjTxCQO{ z{6f9#a}NnI$-g<&o^bWV#m5TzG>x8R+l-8j7`!xqzxAyrLUT^h6ld!gPc7~f$ zlO2}n@%0RW=qAm8L{{-^7sHVXC@-oF=hzZZ9s+m@Pg$C10C9ZRi$BK7gcnh9*^~C8 zP84ELym6I1>qnS%hFjyMl(7P+(?Wers8`xSmQ&l`mi6|1sjN;zpcW&s%NN?H^>F>^0eE+%?;fzrBZu^YC z9RE@Lm9VjMcKUn#owh;#)UN+FG}3CFt72JeQCP#?#13+5QOGrz8pzsWX{h@uCOCMZZ* z7*8rOm{!8@cUulH9#@LPgZGK=evGQ&J2GE_h>hyD__35say%-uI~!uK+f{T; zjZ>fshNI3A-=paMR8eNJt3!fS5L>^$my+sZ% ze{aV9dEN3u|M}!g%==EHohFfN7sS|e|a-eWQq!H*?*jo|M!ac zr*QjcMz%ruDZ7?n_qYS zSZk-U7!^Sbjn&7sJURp($MmOrwMkP~rGu@u=^$?8n^a}WjdD)Y%k<;dUzzoD%+?K? zsBSZy!3*m=ej`cevHT>n0G()rw!Mu~o1P(06GxRZ%3`25w5q@JSI9Zn2%=_{lIal4 z+x)rn_()s1fY={-S!R2{f!boNl9}-UzVYo$0 zaqFfZ{7{Eu&GF(>svyr zx-wSunp#Mhbk>Vpvt3?%8ol`eA?`Z)x~rvL6hOsAX^XP)k}I%ev|rwhXZWq=rG4^E zHZnRfV<@CeznO>|PqY!J$3A15K$x5i8$LeicOg;9o#$Q%Qiy=5lW@4T!mB?t2W&DL z`b`x>AR3Sq5hXJEo%9lrbtNZUFy;+z65#~Sz#c3>nBPjjqmHcD_Iy|91x+qi106tu z<=ksVxC+}}w~Ard(=Y7Ek>qz!jgs7Kk|}ONYP9Pk3+uv+E0SeJLE`>4bNT@57eHpk zQDeU@xZK0qM5By*wpALW4dJn+T*yIes4j8)M0|7;UD;(?+wDC^ZsKmT~&+ zSWSsV)=?}Snx(A)u`l436;ZleHfM8rcoIuGUCf}X?=$_z| ziN`!g==oW_zZm8$$nhS;W*5G;s3t3;O)BJfJc!)cGjcA)Zy{F80rV@uQfXlun2xA%?i~O#Hp=%RT^}K6*EM%upoujAdK?VGN=w5!-qGQdHRX8t?;X(j`+@Mg9_KGAW9TkWa7i0VK+0rK@LR z=|N_*&)2nOl7drc;_mQ*_jGXrWAx0 zombe%o#9ei1Vmjf+ zPh?ZrOlhM&W;P=;*vdN)6G$kb$1FAx$@rqIZF1l+?Ir8J_2Lhk_;9-c^j0q! z`}lUS@K$|BmL)crW>R+26WBOnOmXDwhWU$Sk zuA~ClGuK6dq5l4pES~VW+c2J`+ti3aT}wAOA?VKOD_Q`HXD|dTME1%Lq0RV8jURH{ z+al>ni&Tio)(!5$B{fj30vRXT`J+KTnwT!nDOsV_pRPzelX%srjs2&|CB9jsD!ZlK z7^c?YkL6lnaFVTE_Lofrt1~>SHSy3?LMZ+AS@cD4YIe4kZI*&Njz;knsrPoAmXx?7 zExklO<)-#r+i=D~`admWJlF)Pny=&+3C`yOe<)zZwa*g&vOS*ZU#wLchOC`cN*=+! z8DwJSrsmciR~e-SB-S67L4?Y*3TrNKb(OCyU`y*B^3mG}Ok7k&s(0FYBb5*}8ylYN z8}4E%=K;x^Z}PVA>QL{efEzOO#@`IwkmwbVLOk;EpOt7yIK*3dpAq%g`ST?L#lMw= zZgjrUYD<|t_Sefv;@x$Z-x4u|c*h}klELpFZb<~&2ig@lp$>9eqS42rUU}j^c-25O zRK*^s4vE=8`5A*2Cn0hog#{%ckt$LGstY<|(T*X@(d4U~td5vH+)he*k&0Gv7VwHbt5Xz-!=8}f zt72u=+BunGwQ)0|dQD)oACa+yC@di}_sW&%GgX8P$oK%Bs_9V~o1{%vl zQf+et20n2g{vB`G1^Y>+FIS))#`$fOll*Yy z^ld(SUrK`XdcKdqn7e*dL{U0~Yj|($x91_3>BL#}=B5v!AMrw*o0UGKoV2uNK`PVr zoFIJ>4Y$yO@Pwcu0U)NCA@b8z)jCz8cVR>WWm0C0@wU?4uULn9uTD0A;F{j0{2Z+6 ztrPdAh(d&O^{`-Bg$PUXHxIa>&;lsXcNfgyPmKoBwwTVfM7)bp;)@6O?d_AYc}eS{ zfx45?(aNi@+G+27VcS&A+ndPC5Q;U@N|e)Rdzq2AO}l95hI>YaWM55fbtyxHmPkyG zRhVjco5DR^6RJ+E3&@jBijuft7L%)x zJPIHi|* zO5_e%Nkwiu5|I57oyCM&h2eaV)pcOzxlkWFbi(7Mvjl)ebyg3AeWT6Y0l^wD7#kv6 z@Y?#iZh#55B+s=6!FZyI*!ahjpWfK1byoNqnEaSEZ$FAA`J%w~gS?S1y$#wgY^!la zWMFB9JLap%yY_=>AyFBXH*#gGl_5yLZOiSTSs|nJ3uLBuZ%#AR*CpoYaeoSdTES6C=hO{<2;Yo1dsC&fKj>ND)32$xAfYFOO3A_`@48dkLD_G=( zrsK0HiZPmz#vrc93SFupsWu9YokebyMI?XkHzG)ifvx} zsYzpGFmBRe!k2uC-9CbU#jjosgh?=;xB~4HSBU@LM@q{223E$TpQ6M6bs=r;=%i$9 zWo+nVZfo<`jj@gKKShTNRW)pJR8Ze-+9P;US$f828q9Gd#WO3FTE9yC6wgd*Wj8mU zNuWa{zmH@#;YQ)!B{im&T7H3e793S_tDGyM67N>Rk8uOR=LdmOMu!4L=JwZ|=x9R8 z5GF!S^1S%{;CZ-KKc4z@dk;a-6HKS2Y|mz(&yp_}6F>#Ojf57Aq-IxuEWlkxm`fa( zvUD5Fkh4P(rLx0_i%}M!54#=s1vc1Du_79V3A2}yh=XaRN`{vXkp35Yi3W0yZC#ClLQI3+r<6AZ&PxK&#v6`4R3(g^n5A(q3|k00N+8u z(C|s1`5!+|mxMzAw2c_D>`VA)_S^b>5;UVr((XegBZO(slifQYF> zU17;dlzBfdKOd`3fY^Cz_%QA@hB8h;Wn_ibZw@i2bX%vvq6LB$nh84#P)Jzb0|3^T z@9VKhcN>)G@*=}c`j)|fRe>Y?0*l8kVyN84%~H9_033eOmKgR~AZO@fQhk9x+9UAc zsv&R62r)o^!J$fuuuDU#08br0EsJp6lzM(*Zwzq3LcD+0F3-_S5CIoH%>2NNb(L>r zMlCb}`qpV4z`PRsX12uPHvFE#&{zv9=DdMOiFyFoz-%5*eH*^@OrZr3-Gqps)&sch_2jC zPY&)If=S@igtnt5poMBJylU?1f6uE~zG~~+=&B_q;&JHwSS6_kG5tgFm8193|B-%L zqV2#Rx}&UFDt^8n2Go^6o3d)jFEfams)>-_R=1`zO5>5f$0u>2`#a>l>qcO&9aIn2 z!aI>*u?-ftk*T+?Xpy~nc{;_55c>jx+r@pI{P@_0Auf(8t(S<=ei8ReYOl= zLpff9Ca>639?;F#OjKHcn&yG73TC50xusZahDFA~#JN;QoPBZ9RH<8) z#<%_U{x|f%SI1cF0`=t!JnEM(RR3nc{bw12nujOqJlZ>XTe=LZP#qK$@*WmaoJ21% zSV24JH$Odm5OWrTNGX>(jn?JD`gBmMa80vHk#LoA+LDAOK{Nu?^`N2rlFCL^YpKe6 zW9#F#6$r0)wU^A)Wf|7xtH<+8*Nd@^!>m7zne@n(|9}0UrYf zLWG;BS`K}SlAD$)82Snh_g)V_E4J8_N1TvyCj>%_ajVCXot!HwoPB#hLSdb5C*3B) zVfU{fli#EIF;KIC8P>mes^7tkA11md5`6>!X(Z~cr8|r6zfA#=3r0HEtqk^Gw+E99 z@Xw3##eWFyt$a>;bP#%=ZYi*j@0#rD$2dh0@$dXm8YBXJ!%5u1<2=o99&sEJuGD#Z zFZ{^sEHpspIK9YOQYWtEDhgZ-0=c$1Ikd{T^h`Cse}Jr6fs0fiIr?LJ@9J{eX~)9u z8c)CWV{#E==EWJ99L8i#D|cUYHR!x*XUWD0j*2=W6^|eO6yWY?8+~4&a5)QvUMm8k zIZKCg&)a)2SXimZGZ-azEMcDCN>M?ai@iK4&LC}7J(o=HMzcMU%$den)*D_%2KRQN z0q3E3UF|85!{}8Qavc(k)EX)67DT=YE6rhsiBsS>1Es$*LN?i@Z$b{Y@f=6E2B!>S zVI+teP~hsgx|)`ypns!zq}Fg)XJGD;krej}aEC6+Xx^YBxAH@isor7dxi;~p9lk2|AwbNp| z<)KWAfuk>OVe|bsq7Z>BpW4Y5ZliA44oTGhWgT z{4Ud_2*(q{J6b4|fW4#mTC(R-(T~7UJxcO5Jf^o_V4rn`Q3XuYi=~&ks1LAx8U123 zK+H&n5hH*`cMy*h7 zkcg>Hnhubw6Oip{F*Nx&z6EtH{pP12sbGx(YD<}nP6pE=Uw3+`#zyz_R7 zA5+6@0+nC2{NKSgRIjDl^LNyUy(4FBG8C?HURC=mTgD?dOCNc3)UF|375cNU060FX z)8V{mmpeRc?|D1bkLfr*YWCWX>gZ~~#Fj!;0eAS?7l2yJw<6Uyq(N5CSTRZlC8L-5B0I%}o7(XMMuH}(- zYtOEMcgR(5iB(Kto{dihrNvQ`&uLbd-%m^xlV$@>z&@>|*iRbmeWHhj9dw_(qTp6jwQ)ROf^)tkyqtI<~L`0JJnS=;$&1_ zL7eL^#)~dmA_V6|JXpm@$WdTYl9Wl1g;X?Nl&(W0PW#}Fm7q!jh?x>us9ki zF^kAKS8mxoNKVlcBlG=qYUz#!`m85wJ8Nk30F0D7OvA0SF0b}m_Hn#Q;Tu5gkLiS zb6@TxfjTti+kKBI=0F}=G#kzTjZ87+fFl2cE@JuynPRTplYXW>LaX=p^*0K&sXcY~FZGt-3<5or>=>M*nS*wejpXEvrE3ybzvE5F z7*i4GI;%Ig^?4>VmM+fmY+D<5hdv z(_m(XV0;llOCchVbz%Akcli|t1gDRTs@E>6SMUp0HVclONOfY3R1h{D?696pRa6B)6>uI`*TiIVw0+ZW=}RU2(o?@yxqnIX50a%)rFX*X z234wFQ@Oz9kMt+CsC3)&O3Daf2KJ@~fs8;v*{}hZfp#v;8NmucV&X*|u;v8xxg7-$ z`LG5bg!&RQ%5SR@v*Upmc}butz%PqwUpdVN2LlWl2nn(cLzJXqFD1F=f?IZwaW(Id z9x(^biqewh6_hgj(8e1j#!@fmMly^i)~?1KbQw8!KDr6tp;htSB3SXizXwqCp-}Y4 zr}!4zab$_oW-&5OHntZqP7-G~BL)PMErtCwt3=)BULp8?0EHPYhu9I{Wo^z%n;*qc z$p9wkNXqDnC_&^3G8l5mKCsn?XoJ3@lX+8U{WJWJ%&jRdkXy(2kBmFI8Vu1N@(GC@ z$@I)$-wQ_q#t2LYuDLtf`RVBmxCf74O^G*(G|{bXf2CL*{4~fgi<6dpI4>%ci}O|W zh%sqIeEb^&OtOKdSp2zNriJv|cuXl_~w6H%5?hKJx zpmue{TL?+U8A*f=*@<@ZK!M@&L+-=8gFG@9sSi8IG+1C&6AqEI`9t=K1E_Rp{+aQOxNrBB|?LhhURUS-Zv+z_^&b)(p zWzld<6Za3{K1@Eu)VW5=@vy$J+Z;{{GoB)au>(#l?f@^-y!8&)#ipL!rRt8<^4X~^4#)4tkRWcs;l--V>YS+KOgdy7&?QKm?Vn2*a)5S&XKQ zRw~mZ1k_({3F2luVLKrOQb8b9R+sodCPjq05O49<`U36U>Npl9dqjbM@l`{hD_VQ7 z4%lRlQtu12&CWN#)JW)5B9&>jzT;e-^eA5<5wZ7bS`lrR_4A)Hm8sXSU<5lPRFYHG zhgM1gAS~XzT_?JtDce&c%eZWn6&8~inYy?6kFNh8s%w?#Lwk(J36>8+H z{$NolEqyR_a)^|F^K5jf9F?%M8_4g?qO+ToTr1OjBmfurEj{y0gD zXiyDcBKIQiP(c$<49&}ojRgiB+9$fq)?6jX^!Rt0x2zv;m{VN4Y;L&fow21;ICG0r zglz89{`g5>M97aVc(33xu0Pw{f*cgR6vp4aOT*>)L%Mc~1>YD3tJB=#um+lJacT=X zAMviKJc4DZKe{?i2uMx{Uf4Q<>W;&%`*wC}x{vYa9@?ebq6KqQ$Tr1Vpj&#w)7L;D zIrA6JQ!q;9q8pm=V~-EzfN?UW=alP`c53u2>6!$g5SOYHT#{TwSUt$Q%f=owh;!yQ zF!oJdk_r{$T`cc$BEO?$(bq(|Ed(8tgX;EZdlfw0bCA}J|PmWM;K zjGJ~seG8c-QZYgTItE5`QD+!(Wnd4rgEOmpcxYf%(NYDR^%=ctH^pJ=RI398GMqD- z!|?d2dR!4sFG7}JF4%_MAc0Z#^@dt91EaLINX-~AG(YR;Vs*AIIo#qp@9LNAFzy65 zDE7dKY>^%EW6}fHX!gbhH;DHt1@B>grN=bG{0ffw8Q88gRO$SwYC57K=tV4nii0fS z3KbbzP#kz59B0!)7Mmb-^*zqHU`3X{6&*yeiTt9MEm(Ul&#$e-#o0UZAg;yC5JE+F z%L`N+v-9hM_$Y+#`@>}KD_%dg`$dj$v%KX+fhqNmRl2l|FF$l+kn!_;O7$^W#y909 zOw7@J3OHWlujp?))C*qre!(A#*yy58>puVOjI;s7?-}Z|$fN%A%l97zeNkHnYkemX zH$!8)zm7=%$-&C=$N?D;z2J%bMdMz#_r6! zd+_d0-{2XOWh&cvHK456w6JX3Mlk?=~;N&3VH5b zRwGGoHjT}BUUAoCy8AbKX=>N@8ma#Q5w))4YM#jj<^)g@%W=ACx z5mS`7UFBSZAXh>}LPRhM$RtTi&)H2WVHqblm1E)j5&Cs)w9|vI70kp-4dZa7hv232 ze0llNpu0(s9pm?HiOOJ!L4P)o)9*F)O2kbzXTz;-&}yW_s8h=J#qc7~x_p@==Dg(V zclp|&$+pQjf;qPL0&HX|>kVw9WOe3K(tfmg@LCNu(j>-#)$5rxc7*f}y8PGG3 zyOaFk{C?2*?Br)MW)5CK6mV3LHe=DM`F8>=zT?kX>}LraA;gz2KmN^`QnYndG`2A^ zcKC0CAW`|l0YwFqr}?S&xQ^DED6x!oKe%T33pGd>9I>?p;SVqg%b;G^dKvoR1?#5z zWftCW`mL@LGb+yAt7f?^lt;{{!wYh82}+=}$Dj4fERTzaOplBAyT3{h{KDNT3_;WY zj8Wy-RmWpq73A3^w|DxoeDjRK{s0_Kz;$X=`lHtOtt61Ka(w|Yq;Rn-FiC71%N7#5 zTM1w#8~1xK*>@-IueEeB-im*C_z*G6tvK4E&Yc9?N|?Z^*6q@5+>{9Q4;Db0oN-=z@aj67`?*#9gmy-=NtQB`4>JA{d_3yXN`_xE4YYkB&{)DY1 z>M(Xrj2>7vi_{3(Ty-jCX(F*d0V)&p`fVY846jhmgnqNRjw5Eff|tc)2ke66zsM;` z8GqA|##Zl52B%7ytFhXmyQqC^Mjz`|YpKq)&;u(6&z>Utrc1qnl`&UivW3Gvbv4z^ zi4V18do1zw)Hq#uqZVUdsrVcYJ5kLv$(*}0B{m5bBV(ocuG^OFSK{E9nuuD7a`84` z#413wpv$dsv^LsgT+6s7!m9}Dduz2^<6$;4IYAE&EsG;NF7Z zF`JKOBc0tND_cWUAv0c>{k*oe>mX_fUet#%a zoTf=cQgBL3L=c(QIEfF*L%<}uj)2?dK>onM34bM|vS0%5q_6;G<=x}#fQW!_*7M4HD@4tnkQJg;uD9nZtEnz2| zAW-`_tBa~@xs2CIdEt5ml6x1BKY!s(xSkLsBo{&PIZO4pT;p=QNNwZu@p|!NXtHOE zVqY)_(dUUmt&%bPW)8JTW+mA|M3hflPF!pdF5qE&o#ooMnXcV6+Fb^#^ipK)P6n_e z|7j{uC9A|hYFR{^^|TJKi~a@78`2tQY*9I^qI}brzg{tk-qsnn|HibKoMyg2l?z2!H9A zneEnkG~2{m#TWCQRWKUT_uPeC+6?ZBg+34(fVvENP7b^2Ole;*stmm54vu()8FYoS zHybfoBxkE5L0E|4R}27Pq5X=~F%t`_+9tO#Z=v0e3iJ=uM#T#I_>K*AS&}h9XCds(#R+0Hvke4D~USn3kc!#%1LhePuB#Y82XN?BUCa{W*l?qzE2pYvN1lI4JL+~O_dV!4w@sc=U z?`aWAPgR2ylscqONEk+OTgOEH(ke(C00{@icPgm_E)@UNMdTgH7SN}FOIrIL$ji?` zM&HZN-hb6vLPKFxW;F5^Eq(y8Y#IWH`S}zuLXH$;MB>K(Nz@MrX^CQKDBBT4+xZG{ z_w4!_=<^$jD`-l!2$PZ|G)k-FZUs`4il&?>wMZrjzEJmAmv{XSq4MR6FCyJv3Fv=5 zw4YbD4yN?_cKU{9#`K>Zpez>jRwh5_UCfPLjUDI>^_`4OZ5@6YyV+UUex@S&eJ%c6{rIwzS}*mAzof+>cey5F0yNw`Jmv zc3!P_ic~_7xlkF0D(((~CH4K~o8e$#u1%u?$>g_V31}-=g*0uw9Dawn8tL8P3T>(u zq5GV2E>sjR5K7=ocz#+Ovd5 zJSII(572YYE_g^GCg-?3W*2NQ4mm6wh04aO<3TTt)8i@cA|yG|;zqs}sVa z*)x&tW9s*P7rR)NuLoldl%@soj81B@OA}BWT*k}r2z5O@owa$VM}W33KY#HMQNu?) zeziV6gN8A$!|YvM`JJNj3mqnIHZKqzf^}v2&>rg~K?@~U3l+3eYHALTd$Jj`?)!mi6b5f+ul%ETLlk?F-AM&nhM+zZ~sy~yDkX{ ziI>2@9hP8<+El(|6fsD-;4LKSSRR33YQ7Mx>bG!N`n@^BxwvQcfTJa5kW)1A#5PNz zQg)!;J#7#ZI;yBt3NdS@{?Ec;5NfwIC!?4FfddaoBI^tSKC4QV=peLChF?lVX?K!> z!wWClrmbnz6H7y)xSs7lnW1QXpntnbX&*3JqIhG!JT+RLcM=Dae9cZ|W99wHTK_<{<>T#&gA0guI?uaLH3C$jLF{BJ}#pYVDDPLak{{{NoCetcKq;?MPN0+vAJVs)N3_ zwLq^0uKNYSsySmwdBL2I*44RRUR^+Mt7|-(tRX{QlDP`o7tbW;(DF;T6~9ozl zJAz@)U8n*Cu{z1P@{M`(2yJLcw_1FN_&MGMOzJOnc|U1|qP-{p(hDM7Zkzli^Q zR%6K=EW4#QO9MI-o-p^F(1~K8l4DtI33wOs2C8yL{9xDetF4Tvg>z+0f}ZWHOEvUM zjZ$`pA3v=9f2_R&lO^DmEZSAoW!tuGn_afK%eHNG*|u$V*|u$)U9ZlWnfLCT8!v9e z+!L{Xz>dAwxAM#N<;o=c#8y>Zc|)l?8En_o>ZeITB)g+nW7IULD6sneoZ}gTXmtd- zEtDM9<^%WOYXzn|q6(JLgPZuaA=pxhJHb&~CM1*qGqaR;aUf7|^hrH!exgO|5x;V$ zCscF`kKeFM`1pHdGr&|erPI319U$4@87ol8dw)$0ooQk#o%xQcSZ##9gJ8Q?+ZPEg zu#H!i?CX9tR}%Mma35@ncjm{sbpY`QR9ZX}xGLB_Be*i!J~KdTp5hpPO`}5}Ym_dc z^Hg|#u0vIXVn!ELQ9*Yvinl5;pUpay_v|I?d5DPG$K>>$<`}kd_Xyawd#jnr^AA57 z|GEi4wzy;vSHUh(YUh0$sMh0Xb9>}n61QWzGkp*4@zI9(LR(_8i+Ere-a5zevqkuu z;dF!x%=-&`%5BQ}ZujRD>rAx4(+@plnNOo2e8QcAFZz!s(%l^5&)+xvL?5w`H$1y~ z1RwB_UkR2$+qryftyC`{g0SRD+k#%JzM#(iG;1d&13qvb)JL!}!B8u@3LTPg!Q`FT zuv|l9wy1x|)LI>V|Al=kR(|%leY5YW?>nE+{}lQ}txW!L`}+^PD~jWk>lZ)>-Ub_% zm62%eQD?xl_!ykWCPfiBVcUxW`kT^vMzmt**+xU$39d|4}*sp)wL9uhRN<$)D3k1VJ$92f7f1pymA5a zP=oxsH3Np2e(Cz9bgJK`?8`csO``0$a5}rLB87XNODs-uu$Y+u40mmqp!I|e_^wU9 z=bERNs(4qXy={~`pPf)d)|iH&aQYgPT*&;bmq@gE6lW>jyTU0v#%*=n=cqXb*OjUp zGKa%5sSDz9w*6HonnWs!K4Xp#c&`2j_;L3ZdYx$0H*l~YZ(O%vieToN5~gW3+{&1X zdu!Ay$l<_NT-N2iWNDmak}8VGi)ADeLafjnq^1{5`+iN2=qNsl<&8Ki`H9wdS0s|q zW!%ycD$%uuVdfLYX*{7GV!Mp7%n3(-)pJ*IMn?T65K|u{;U;lDff*eUn8DMe0Y^Rm za*x+(>=v>3=IRO%KYl3wkN?;Iye@s~{uE7&Y#ofn%&naMi^x~0t}D(9VEk=HAu>l0 zsn`P&l$TP-4-iKQ2BvEEL%Frv52|l85Sm-HLcI2d((A>xO`YXBi`s9R-gPYfA_KY| zkuhNUL*G2!xF!*7dwp2=Qr8RD~TBekrMEw%bd!B@7NfI*_WBX}hK) z1TzdqhKML3?0E(oec%>YC+ZXK)(V5UUS4C?0~i^Dc2%mwB7aOL^Hy7ZGIFt*Ws|Jc9Y12G3`yM{LI4X zxa(JDa}TQ{F{pWsVjavf2WJ47Ja0=5PsSrp8><=&`$&Hlic>7qK>8_v0Y<8#olVRw zX~o`%wkX(rs0g8wLtKi9c^_K$#+(+6H8$g4>2=btw}ASCJ66uCo1|P)-$_Mv#6mBg zlRG;$S$Y#5HBA<3^nMwo7T3SyP9~0tQ9^q_ypN0+SOr64xYV?2Ih=%+&eu_mNzQo27lbM9w{%h*jJQo&xNC z;CD$6Xl!%q0)8F&$cGZguaD5tHoQXM6c3Pr2l)R^R;06~A!fci_Rja|mioUv+5a4* z{+ByIRs6Kgya2*bPm}Nl2c0=_u6%AGsRZE%ql8^vSmeBvgn69V;``7h8MgKE;*jh* zwQbNsz<@vaP98!7b|l`;PmR(2G&$y;&9qH?{vPkpSW`EY{D?)Y>fLJAXQ7Q@O+RoT zO`s)Av|{ZhXBP?#w)Zs5p^u;vV#Ero7Ym$*jg(JwF?@Ie%O{JtxW!lF_FY-wlMW&3JdNwO1jl>HtohZ zR6>Ncd5i9+<>WnM&K*RgdbqqeiUCm54{Sud{9o*BvBHcrtG^5f9~u5KU_`Q%oN7zr zLsyy3YqacX@Ng!P9E*julE=8^-Fe^PM(5e&m@?%H*^ksNoqj18C5)d7M(VmJ731~_ z&p(OzKy;)xZ*IqlZxdB3Z4lUo8s_|szEZ2bN|1KjEJ?ZH?-(GhM}th(Py1M+N%CXI zEmsJrGG%`l=?P9k`WzY*Sm+`+1O1>c)wUP*L|78evgUk>LQb-RZ^`Nk#HLG8aJ2aZ z{_k~jZgv8n`TczDj`e?5eE)BJ`M*f6=zk)@|1yAYQirueImGno-q^Z4tS9_!*J}X$ zQ$7az_9v?puo(n_84|-!#uwof;{+T$*IOIpUcJH?e?{I&a?Yh_u=DoHa9Rn)om!k zl$adfkwHVJ)odMW*tyV*U6)t4;BYkIMo@+@grQa#b<4>36T;A5+CgzmNG-A}%8u*?sh$^YP=~!7gr4iwRTBMGfTCma;?_d z8ZkZm*tqcBAba6R|DC-pM67;JCl3{V52YSY@%}Bs(T*1A$sjUUH?9!QyRaM5_Tnus zt{f!BIkRf{r#YEEZxYcFj-l)?sC-(m6ljA-wq-8@=cuRWo zV%(HfQ?nE4JSN>j8+7z3TLs|B1XvUI`e(!$GG#@b=R6qoyp@fFLs2W=rUe;2Gc)At z1)YV9DG_z8v9VZ6J2WgyS|Pfo)M_R}UO+o(_GYGp^T1`4$zX=NJ?<@O6^bJOv|!x?po|t4 zBp?}T!d^7*QoRlgUCe9^py7U>|gRG*^0s>&wLY*M3oZXCq0)~Pa=+u~xHIY56DqEZgw z5HyT z$+0YeI#qBHZVK6;VmK~)@0Pu^HcHjBR+xN^&4GUpdKAlX?)1^yJI_JU^oYq&H`H5n z=Kx_2GQFb#GQE2vK`U_rmOTs&79)}3OL46`APwddgn#a~DgdoJYroLT*!DsNcjh+P zdw%x}3u3!R3&J0V@vXQA^P#%-A-nd8afLNjFd_g#nx&)f>7@qSN&sV$IDaYf*V|nN z+e%4EQa9NFDFh`Vhp98(VdwI(+!6K~K;(LZpN{+quZD%}Mj3!pvjb z=oY+Hs{;E4^l4kupza#KOJMylSA*@vjG4lc>~cwX`_zP@{vWfCJ>!PzOSXhn!tmXC z%0RsZa{zYh@}{69ZAR;qV%r~K4T?CO%kQH^K~-vD3=t(+Sg$&i+*m2GdI2&XI+{uN zv6!i87(9_=m$7K#N+)ex|D;cr#tIT9)rF_m(X7$*1QtRwYvJ(QZt6Al5%^q=l~#^b zM(z`6KT5-&iB&y|J|gMT`ShD0Ko?9(UqjAPhd_dC(sGwUhKwphS5(S)ay3Y{^F995 z<;0g(Jbprqx%`7qQ}8jDo{4?6c-J1X7*~sYx1LK7cP6Q4w3tDqiR`GBevT_SeYT3G>X@WOxnHA@~%zlGD^VC>U*gu z`w(;^uHpR<&B_miUkF05b)4Q5>eMx2Mke@BMsmcq?8*0!shg$I_GP7-k!IrMADT&9 zk#k{aOUGSdb&LKI0_Xj$>LfFvd${co=LS7X&DSr(N!oOA*pcA5^hD}AL>THZhLyb} z+EI$y0T^eeG9YOdL<5WJA%N=2T_xn|A$cQh#WBaRJt+%aS?PpY zskY04se7|SL)1X`MkTqqWCJc*TC(eVL~-I}r>i5NKhYyRqUZ=wj|M!vUSq=e^5<%l zC?UlA`3O8rtZnb~MLPJtktkiC8(1I~LR4a8cXfhg=|^FnaHw&90IKm4!C}HOpJ?nZ z4?cAH^5NiRhLTyeqQ||n2nI-awfE7Npff)?u`((oH#B5WFN zPH53P;yk|0W^AwmEJ(Jee0dv6)D_1MGxcqd9yg0nvOcW)T&wNdt|Sm$mVA*o`~fkK zL}N``qFbHRzIipySOBxZK8+LeB0KYav%C*=S8I0mX0IRM^otE|-NryYA+b}1arV&d zh;g>y;}}5*DuvP5eM~VB%9_x6e8-$>!!nJ)XRSN+c+~lzDwDfL|Mhf$L7G(fx5QW~ z(d2q zp$1gMc7OzhV(v>;t_mpeYkht3g;+QlJNnpU#OZPWn$6FC!MV%zo__j1pU^ArzBQlN zYv)Sq9k@4pa{F!3uj^v;=N*;}aocP1ZTOjaUYa8Cv-GZnzFGSn!=JLT@3?r+>%3RCL+B&bL*L&we}_B!ZXvy}AM}jKdH^^)Qjp=3_lk+G%prGG`u*09>l$m;rY42@Qm4c-aEb9#>Y#y)1?aDJPFsk+=8 zF(d^%6;NiS-tEL>_|Vnb|9I!DGF$#w#2f(r2yFi=Y5bKx{zaDmWrySyLa}@VjV-hz>~R$c)`&;;Aot1A!blH(Y((-?83(~ApoUTcg)69>WOI$h|8_Av_*}XTEUEX zuwJOs1Y=5LKO|Te21GCn6{iFXXFwE2hP?4qk{o3+ipW(cIdJEy$1*60 zk!hr$UY{S{bY)6UrqjTtcA+?7<#m5cs09-1+pq93q=#rC+Rfy=yILMAq3?|GKAnhSIt&O9UDfeauG+=Hz zam1y0#HBZWSlscmX&<6f8VRT?x}q2z!hhKpW~POL2ro>B(v>sn(u{Dn2kAVff7qhX z6Tt2D^@p{LfShVf>tD_I(EtSKxC8}oGTp669pu=%3tS+{65sCi{yPKc|7jLf_01g1 zznP=t|1EP=b}%vde~F{wrYy1`2JigR-%4r-2w*CxKZVJ?LIG+}aV(^SW!ezCJ}W+r z!b@oY7m6F;v-96K33j_6FY-gSORydWLNHcL{M%{wS(y#Y{64zA-?EHU*qa{-tceV$ z`dHIcZn}S<{p-)moP0ELSJ|4eN4ujuzx9*fna8BywgvwAM)e9bxX#hMMF~EJG$4~W zW{17iq#oq*>zs?#;R;>PInS>WSL9Jq&A(_8 zc+Hb)9BU5>AO#3E=F+X0MpN`IuOX^KYT0h zML_20?r`zbQX0L|L=mm*u3X9mYK>y7WHQFY)8A53NNbStL(&jTl&Rb>_fP>ZQrCpV zy=%T@8!y`@Bi+Q*@|EwM*sf1R3EyKIF zOf`uI455k`?E(ikL?Pd41K@5zW8Jb}Ci@V?n34#VAI^;0mcVs+E7mx~caaA9r36EK z4`XbW@2wuQ4w@f)8rLn0$1%Tu=sjRO>cKKNQ z3iGcxS~$pZmhk8DmzOZxE+Ig@5h_f(H*j;`PcWxsY5aYCuIZVLNO%$L|55C+|FilI zarq<_uo@L%DL7$a*3V6K#BwpjGmh-lS+VDVa1Clt999^Tp)P;h9fAOOIR*FfD&0#C z!SgEYTd?~PNh5O`2LSmKldNov;ieH7jQZ`)I|M>p@r^uVIrmu>2exUZyHFqi%vWZkJ_(}RNQjWMiTKBoIsah9xDy_Y|$RR z9kNzSHTN+)nj@+bXp^j-(%>A&R8tOdOY=aS`K-t+f z#h^4pBn91cZmv_5I^Z22o$deO`omOOUJIciB=XN{`n@1T%dbM(X~NdqpP03L%A`~7zV3h0S&O=B3qwY(kK{Jr8|cA(E}0{TuZ4p8l9qX*YcL2 zxyuexU}p2A;Q1k)g}44qj(UdN zk#kqfxKyv|W6cWg_Uh(Ivj46QY&j^i(18Ly z=y-Z2n|2~!mhJk$Oc(LcYc_HXO=r4YR=0JlJ;2{XXcq&)?8xKqKGdy$8BWF@Xza)^Gg|_x;W>TMF(Ff8*T6sIOgi_5K^vDhY!;n} z_#(W9?ewINo@IK96A+@{w1d-bhgUOVI)_(sOGQwlOY9r*z_jN{8Rxo$6{B1$&9y3^ z#Z;(@5GBr5%Pl#@`h@k0TxD{xde)V~0iw`{k$-)F;ocp^C!^@4CW%yI#CXwgl5cy- z?50!i24ee01LF>FD4>hCxU*hpr`va;0*WuT8-0pRF42+X!z!Ej*Nki7uf$pN>{l0G zJeeekWIe%bj54i7+3rFXF?G_xF(X-|V_tIM_Grvw2~l2*yeZ~88-kST3~KDpG3^|t zcJ`SB<2%$&hF|X7zoTBb`cZLc_7N=cVuIGj-QpBq<^WK{2iWRD2-GJ7)=vFHga@UP zcPIw_>L`?TmWd0GTt`ZL_p)RC>lozOLfa(-=tT+ zRL@t{hT@=NhB!k~*d=lE{rtHTW2VDabforq%g?qwl{eKCjGyObmE{5+lvbi%p47tplhj!8%Zol&9W|Gxjrpg2a(JEZ!% zwFiD1sQ-@##gf+6CdTI95|{r~((?WEqlB!6@kJ}ihM*?eyHYy17D)!QscDP4pb8?v z;wLHMvo|-zggif*q%Y(Tmml ztZVM==lAN>p0CeO_#nF<`~$Vv$LqDw=m+tU20sfJzb&M+b>qj~utn)a>?OO&4bA$; z9nzw9QDp}0Fy|FIvHC6Dbf7v3W4EJrp1_D@fMGN)e&g(+PdYRv@Q=C4mwcOm|}q!$O=ZW zCq7WGkU$lit_@mk)uB2a97VYsDbNTiseD9EKZpJu7vI69!de*{sBd=U%W?ofe2 zZrQ&pB|!CI&OtRF$!J9_jWPFSF#u=?y&djCSj}6D3$a5DYK&D;VR%zdt=cAP z-=PdHSNv*n2eV2b1~tbL*HK3>p|j}CbsRX6nVm{7WnmbJMv8jn$JbqNaMC8Duh zh-&oX@#O8=JBb@u+R2CSrGufP!m6~nl~PDpVW`1M7P2fb)EEHWE6`Z9#=yXyzE177`2F#OtRGy7z` z4_@?Jza(o#TW(dngOv#F8b%6i@hkzmDYlWZcs-EMBnjvJjIRd_QMAbwro^qW#b;b0 z7i@S;lT}PIXafOAadMCbO;x-_zUs_TTZm2*Lm*`BBtE?Wv@Z_RM)2XlE;n%S26-Ew=$UwS=Q(D?$5oGf>WP#u5eR3Ec4D@_Lry0 zn<<~(ZF@h&pbbes+P`#@AV30V+_=VPiY7FfGPsR!ji{fvc_DUdc5#o@< z`u1q&kS_LVdEVl{Ay45o?nA`P<)PT(8vQVq;e5jS{goHh$U!RjgkUW9!=dn*UPP$H z10=T~&&YtX*HjA^*BjAB$l2+s46^M~slK8qk* z(&@H=bt-n%X5>PT&?j&N>Y+iR`qYyXXUD>WQ?#sKWK%Zgp)|PV-78jT!G7bJM<$I# z?)~)8{>=xeAb|3th;ok53C%!A~w(5qa_HWniv!Oh&k3~C;=jJHL=YZ*siLw92Y3~lho zrr&kj2CM`6t*dY)ev)g5H}&ej3Vib>8iNbJQQ`I*75-04E&spIK(gQa7yoh5&r(@e zL{UT0nS6j@U?CV04RB-c^OIGUQI3kUyNw4zMJNatVxEVIo@9Aq5gIF`f^SnfB!sV{ zVx;dLR30oh6D3dLDV$I$zaxH)B(Z#MycpKR zp*P4!!y+4$32!3-Xik`Dcxz20S!gHSW^r{!S}wNY9p6QzYTTYMWgsWS6rf=;hNQaR znher}F@hQ?0NBe7C`+?Ov6JImqN9Kh%L8K4Hpb>McQbSF>m93Yj-n=l;+nH$vd>LX ztzehDpG%GCVQEuUhZr58(gA1>AEj4ks-rEGH=q)A$bcy)IV!VDS=zIfhr*)c`ccVc zM#okEY;(}F-&u?(EX5M~8`2y_(;5#fB^Ql0zs_SQd%R1|=u$;+C01qG%IMEeL5a;* zSN{$cvig#^kF%)4lBX@{5LEDCcuE&jFq;z5f{or`y(`KP&_IjDj!EWMuo#Hp?Fx}N{^fvPomqNe`p z`-h72M(dn`Mtb$2gyPd#w@YWPY zcS~>_O6NAjl-7M02{5V*zs?mq)8;m5un_jh4ziRy(3tM{u-csj472cc3!s!cB{Hj| zpGB{K+J|0mpGJQRef>5YJzuC}sr~|WAoB}KmdeQ|h4BcAL{X7ZktLtd=Ds1es2I>+ z(k;y3ksk2*z_!o&;aQ0RYpwjD!`Xkc@0`H37B#y%1MAd)cfI}gHG2OE=icL=E&{|V zr|`}&f^`2;!b4KkIxMaz!t3+F`Sk-fD}1=LT|843FMpuPUr$6owT`%S_>@T(7N`b{ zL<4L077FgIRWe6SSs!2dHm!H zD6`xOg+J`RUmAPuu#1i8keq_u31&kmYxd#MSp*j*^rtaIwK*(fWY7B$3G5BXHFIjg z%bm=W4n==Kvn1lCijU{ohDeqrO+zRFlH%l9=Rv=|#JPq8l2fF#1e8pAj)kSipL^lE z`!^M0!nd|_HwUwIIfH+o&hTuh;lx(FbE_Xsx+1FJi{L5an8iJPZz*;{NiS4PMvYG- zJTpC`&w^N!*a6otw}=I!z%TUmBs_>?Xoa$KD78%uQ;EzP&nr@9FUpJdjM|{?gNM^t zMu$_!A}W|3a-q#=Ql74d?R!u0Qv_PV?1TVw9SX%LJG?S9uJr?@+;7lYR-Nkwr#`bJ zVl=snzK1;-)xQPt@R`K%QG?jR_KFMDs8`0X9_LMn2?rJ={m}~o%Ynm-PWW4Zm@rJF z$|b&W?=zapZ2~V!gCGoJ`VqQk#i81WbWUyP{V7C~R5RM3`}lqs)39s(VVhIMv)Wak zFz8LA!WU++ry$B>k?PiMa^pSK1C1C+AVDJd6?E^sm&`G!dkE$&Eg1 z-i_J*sBoC8^w!XKvielk-^>iAJ3zuhtRjgT#uSMr>Mfha=d7)l<8OD_m)F%R)_>sL z%si|2oH6n4Wam=|fn?EF5?OW2AxZmrgzFtJO2O3n3VJPx5G=9`h`H?!R%t^JLybe6 zG=6$DH0d4gg14L@GpQzLpWC+O%{ZXr%r;{5>UY5b<8gIki)JF2&P*C7hncNCCjS28 ziFY+-m$Qsf+;GU-a=CWpU+H`^NkiXDlTd^6KWOoOdncY{#@maYCB2mp46wp1&1h?~mRZ`SF)4SV*~afbJd z(!Y@AHAbYEDVt@$QBl@|!N4hOQDXX(ET7X}-ousLE`TG7?huM4d`i>VjLELv{RKA5 zt{=M5IW4-H2Rt-*wKD6Ui|o1Yglf!cuc=TfMpfuT)tnd)#OfbLwNWy^Xf1l&GAWOf zNv$)Y+8~BiKJ){fsi*4vwVeJ7Pa*W(r>6Q;ViW+MJD)pDB^is+5BfIjlrWze@HgZ{ z&M5Ifx>1u{gBWmyt!{Hg9nw9(X2e1^0!FdJ6s;y#X$QJ*kJ5mhu!~jgYUG{2tfXb) zAdbP+cQeZ3z?8);wucdd7GwW+f18H#4mhF}2%LF^BZ>B&Tnh}j&@@PP$VbW8KUI%u zX`lVSPqb??rS`?YYZ?9DRLe~NDPjFjgU;eAosQ~U4Eiu4sx!sLNQfjwO#Aj-5EH3|d&gv^n1J9FIiC^PFHQYdk}mYbQN z@JP}`2Ae%3GO5-mYO-oWMY&}eq?(LYp!MEFe?`a`$y`z&EK~6r!U!iw1h3Mp(IH0ejfPhNI-fpLZrq?d5!hB6>MsGaxwV9_N8bT*=r!4 z*_tL43z7f~n;=HLGplO**D85C-dA3>px2S}NB;KO+OM7T5{R*1(8hPTtA=YJX3(t9>99mz}8akDk_LV0r~@ zrUUD&gA+Y2n@lI=WPBa<$ckc!zQ^C=EX;P8c<>TY?Yq2-D(2zf(i*;j8$tAw-`y<*ZcjRd74?+Cc)JUT@OC>&}bLo zGUCFUv(V15{JbbeIA34l8pqD((`V)m&dKW{PjCSdy+;QVeX)0P{wYCh4B0yHLfT~j z>rtKVE7J6wzlJgB9+BLy4)6pjVWv~g`rjw**<69Lm*1~1KHr;l|Bk-C_*m`NOn|I<#R-Y!HQ+2&(RIP*f_S#x_+I6Z~s%Yhu<43 zG+|TV@WZ}0xicGcny2C3<8%MG<@)9ZWAX=TrLsL_g-aW*KCCmotJlV3-4p}+t~s$1 z@1NRLg?9XVMmaDdS(UF>2H9BM0c6TzpwMgC=e-v0(eNcxJa>x&JA=VV(8oW+#$yqsvxw8mqi(weTso-N1UhVRE z-}EIg(zJdS@thA|w+qK%ge>;hv=KWJOQ?g@n3s5})N=M4^2yJ8R}BeaQ{Lf@hWFR1 z>>R{hmCom=XoBlnOYrxWXB5mHc3i*gEY2ER9h*j0-SB08VG~s3adA~qH zH*1pE0jZwTU5j@$ z1#EY&rp-=0KhTp;@F&-Fve=N>hvOAt(2~|TJC4}zLvpQ7_gA|tFlLk zS8t?jrEU;lRmpAWKj(2jp8hsmPKXdw@Dj0o4x|7GdjeJf$H@ZSt|;Ym+k2R&SgO6HP6$BHO} z$2J*$$0Yv(4ya-M;{Pp>hmJdd$9wM#<>))CJHG`N(R$tcM-<#0#cBbUWu~$2;(Pgd z<7EL8Dshq*1T$tMB@ohGN`E&;?fNa8h^|(kxVphBo~c#fcG7kQO$)?-vZ1MxnHd9( z?rQ#l26!=Ofs7O{SQxV$57fB4*S*AzplUgqZ#onw76uQhR(>|x+nC zMV&6dJn|9dy66Z!?C1`%@@Nc_DF@~TsfH5__&V(;PM?51ri!piI-;c{c%yoD|03q2 zqu9Cr;Spn{k+J)@G5`Js{#5|ySML@+tnVZG-^89M%ho9?G#iW@cWp*p9<>QhpMQ~) zIwPR$qy8IG2>@OP}BP1E5U?Gp@7_mS+--Lg5fB-2hFeR;oAg7%mwrM(t z!{yjk@xy?vkW|Eg|3BLqT^^1Aj)nAAR@&!LMi%C!*VpYMHjR~j!w+m~_X9gE`U>}r zKbyc;yWP?0(co-&P}-SexoBd-NM_CjZUnt4ye>A72cG14SP6H${+U?sl9zS8Pp_2R!g`{N$j8}lc{SOPUgaeK={SP| z`rpHHR1rcL$I9e|VVgsVv1HsbSmT)SK0uB@>{!+Csn`(x95lL01XsnrR?sYAE0MBY?5YKDp^uJm8sku!u zBBU}xas>JBQI&_3Hxewx!=)OyLoTB))L>KvCS@=i14ixu8YQhap&j~D#~0ofFBLsE zrXMC7y}!PFbdzs2hFJFp9S1Y_$^U!XyY4)ez4!)F&wmq;vi)b}DgCnjPU7*N3bAUi zT4f7Jj!gzj7lOba2Wmw@RWXnIEflG|(9v*C7Sp^ncK*-Gvk=_#^CRYm`qr0z1F1f3 zl`DYfe&~Aj@9q6Px|>^=iys!+S*xEY_a;njP;smlpUt~EAQkJrvgl5kq4LRrH|!Ni zE`(_6?oWb3<|S|Rup$m5F8M~7V0G+ZMn2>!@}GGDpKtJs7TxclY=Nh62sZ@(>^4k3I?|v5(zTbL z{kfvqY!H0GIU$$JKGHJTHwBrO-TNMPX1mc_f@Ew z#=z`SOs9>M+y_}98VTHoU!Uzi!kxZbnY#3OR$7)j^YyCd-TgWHPq!#lSX3HSdpK#E z4vl^$EJB;$R@^P{ej7gUj>X^K&P(`Ww?FQn8 zI1EFhx)vd6y?gQ+Y~AaM#d)Ze@T~8Oart7=aHC@MB6KN8rOFQd<7TFmD1Hxmigdpq zRka1#P%)W(!c5cBPRzFp$zL0u3SpAKnp3}PCFeJ*9{D9@SZaOloe;4+r=b4Q@Qkd6 zYk)Qhaf~RMD#$vp3Gr-~1J}vG9Ky-3H?&CLzK$Kfz(n)ud{8}6MPPs#kZkl^uJ0Hk zT{gwUH#OKkqLlZht-)2Z2#g+UEFS3738fQ=K)R5nYrMRpx+&>)lys6d2zqB!&o&Bw zg4@#L*MyH(u;AkqwUZ#1S+FSxOx`NtxzCdHqsFb&4eEksxmM(f2d#MK{GbD%@E#@~ zi{K^p%5F31`z{N?&-3(Qeue20RM9FXL8|@C%5Jx+#+ZM){4b6I0xhVDL*FHp@-4Oc zcU<;4{ zJG_>P;To*nYzuKkBI;7wxpWR_bmHL}&cww|PL>5XE~(66f&D2p8y_&lG?NC*T`Zo# zdl}_TAiv2wwdt2BoA#17)ue^)wvnFpI@B#t)ZZ;YJj;0*C9YHNS)RdIpPH&{@;+v9 zE%zrPh4hF2noD-VrExh$Slm?QB+GTfOo&t#+pAJN_)ttKdF`51h(&%OmqR>RB6l02 zB3l>kPY4^!S6@ls+iJ}9#OB77+K1=O7H?-*#wCj|JEFdS>>F{x+X57TON1@c#@_EF zT_wtp)n83p!s&2s`B5oaI%~z5b?IvL&5g+(XzlFGE^y%OvzPNzCQMQP zQr||{&%viwIX{8S`GC)Mzk(I15gwylccZ-oaa|vmIKu*jYkeG`GXJbnE~Dk}Rs2Od ze6md3%KzAVU*7hz5Ay-MkK<=P>U|ri8BI9S1gAr*L#TXE2;=bo%cdq#R^#pE_g+o{ z{*ND`|5F9l|2L2Ok3wnEfb_yKLH+U_C2L5NNhdRpFIHpY)o+mO;LT$pwN5W2Wi_{? zmk`)@a*elIy{K$x_@yN(qJVhVED$FhkU3wRp2 zDt=f_JbKQ!_PYMsdf$59dTx%z?>^>3G3-{S+?T=mZPyS5j6)%a-#yV)V|R`A*Gr{u z*|^odBFc6r1IZ>qVJvXnJ~YVoHpce;Shkppg4kae>B?c>22-U~ystD0YlC_|=31gv zP7D{W)t(tXJnA6iId%P4N`VOT};Qcw430N2b(CcFZE#L3wOgC__OZb7Qabn zl$zV43g%azCC{@h=GUKdq`%|yUkP=%wl@t4=d7=U7d6>XDo9&DzY6TYh z68E8xe~P$2cl}NN>JVCsFn<6oE`T{3#Wr(eEt&Ux@64^_f;Ua+k1Rw_!d0O8-~Fw{ zVs_Vrz60}5Hagzwb3oGAxnO;>@n5^jI-_%L;b%jNfO%VP;f8LsRP>FPgO3Xa<%)rA zoKLH5McB^wnV*peEw3BVGLKh{R0|;@Y*5k9dUoq&wL!OQ(qf~&h7)asz1_u4uT$AX zEKVD<;mr+csSpbro+=#2fg1d|M&{vDd0K1TY95$Ade&sQTidl#4KMx}hQVCiS zC;cu|C4HsUs058c>+S8W9qZEEdElW0qp@}%nK#m&I>QPC@9;iprG!F&Vf zSTvb?^c4>K=!OX`Yq_CG`IT(|###22eAKZt&EkU@4^^!PQK^njWn3-?!P9SWQR`%- z;k5-|!+s=(F7F*J8r!oOL!byni-8G_=Lq$ubb-KMO|w66fv+6I^j4 zJob@%hWmeM*5B&=w2sSnh#=)4baE)jRsL#ic}F5M{xNguRVs9g?tCtSa?uS z56Zw7aZLMJlpDyk@U?0{pNQG{6BXZH9W8vvwx3}_rU~P*hKlLSS|Hp95#h<+WfyAj zBw`X_K{MmNYouTT-w$2M8IhFX44NAD^u`l2!ixg$y8X6FrKCuhGOYF3wV%kswnd#K z08ksoq*m-OX-_q$mxLkPssA~?Q2<51Jx2PgJ(d$YBc4go35>_h=egErAjgI0zNQq9 z5ALf$#gO6F^DHnffzSQ7r-Xq#j&IcKE*m(DhGBC`4o&9RZehdG3o)5GU*UyhwlEBE zp<;(Sr8MBBP_iSIN&X#O=2It+7%7rPf<|o^u3o<5u|W`S62T$)+sk>s7)q1|y~M6i zJueJxtKA}?56=?Ld>xS)mi70oViVK33%6-=$yr9`M2^C)lMF!)SF9IUX7VUM<#Kwf zxdT;=eBhtvA0^H)-kL#yCswv^gf*A>$AP{VaFLcKS6X`dO!nuqr;KrcrQiKl6JU|c zQBlAoX%5V-)qHPAg|?Yk2Lm{o-;i=3fB@#Z;bxpzmjuI;e3G>jhb#D*-=(>*~iuXTctogUX z>3FZanl#057NdJ6MeI4Rj; z6gY*)bf651vvfu5a2)RH(8VLgo*gmz*&3LQaHE>S__EA3Chw;~DNT{t>%}&_#Ok3# z%=aoXiZaYCK~D~x7fq2FNPEqaP57tGUHhE@S@>dT9>ZlwLp69POs8nH<#Y2{!oMTo zqYGra9qU2M;Vcv!&8$bl(z4QG{~8yLshKJt>*T7V&$?t}8Cb6<#=_Tzdab4r1XiWJ z$Wc6m5kuP)Q<2^WKx9ho$sUN8?#WlKza8cobk6(%-w$ILtS(4R^d@!BzVB=sPD8b; z%+QWQ-a0|FSXOs2VWoyIP<9@`AsLUnsERp`J{Do!;>jN6Ni>cgjGFP|%Y@8@pri9C zJ>H}0wJ7^puUQ^YnG6MDL0y)N*-PLZYUV^Zi7vl>#{F{_TU79x5Ct!2{I~riw0upSb`0iDaH7VpsCs%|b9u;KbrXUU!LjE<4#Dg_qHMK&F5+iI?>97S&FBg{e zfUIU!9ily3pWh-j86@bZXfC&d&d-*?vaRKhA7r>9oYIVG1{vw5svYH#<&lz|5$j65 z3Gx!#%wd)2CdNo$T$6w};BxUq8G_2KPy=q*Oa(=3~gEGUM`Alh?JisGhNbmwTp7!rOA0m^C&iDqTrRaCz+|?kKEX-NnMC zr0Z;^)TjY6G?t@m6Dvl@C5h$zoCEPZaTlMAnbL`LUO2~``lg)6+$lj>7nV}`XB1~A zQ6(y}-(fV-riux@l>r^{Ieen4`QZj|Wm$Z6ZIlyjaK(}5Jm9C!@sXtK>`?GP{|{;J z0Ax!OrHi)B)3$Bfwr$(CZ5yZiboXi7wr$(CyKn#R&CI*^&jZ8Z_ znh|x$o;=plxMbj*kSyhNA+Y;|QPhOi)FjGsdtRLqxgGUQjH9hIMW4LFwk+)j zqlUc6Pl|%tm>brZ6+2PU+V}yDhCY?!vYr%_y*UunBy}lV0h634Vy(=cy7}{w5V-;Z znr!R1)^={I)8vP_$ciFVvxure7{=?d2goY?Z9rO4NEKHld(h&2=yb8ZcYBo7UCXwF z_t^-m8c4lA}!r=cBiFH4D0yk+6^h?RAk_r6(&QlMaA zqeM}cY>R1AN+eTRRK>gMx-=A6W2z;mg+GoHk5LW0sQfxK`E}T6gm7rt7Su!zKL@ql zeASoYoK^&~wJoGj?$uAD&do=G9F_>edM(D&9J8FCx=sSGWJ&z%%8o-X{55t)PWp$C z?4VPikgfC?HRofUc-UZKfJ>beL{kKC&D^$=e5&PrGZqz8UCzO<`H;zqT=QWb#_Y*T zB2RG7;25aueYr?_U4rTY+GMn%o+ZFW<5Xm1Cy#7CRwlM8}Tp8~opIk4Xm5R)GF&%%1!#J^z1`+5OM;#J^{6tyHwK`X|aizsZeN z*%ZNIsddg&8uwX%FOy(d^9vHC;Xw$&xUO~6I{PYk@@RMaCQTUu%J&5RMl8aO)j~MS z7ZL4fDuc;wYQxFR_v6DC2s+N5FABsqvnF@fo+@OWVgpg!_B8;H2kj>U?gQ9frbS#M z{|vl#iN{K@kt8!XVW`utcsV}9b`EJFX46e3Uw%I0WUSU^x}Jkvw-o!{Ab3& zL^v0YZ~kw&^N6sE;KiLvwWjZ%emCTX@McONHtxtL!2(JO7fH2812u4DVW9OQPcgWI zkyF^u9;dDJ1xaZRNygizRRXp$X3QAPLhhqOddFfY6eZ?7MDvgLq-eFzA-_ew_^@_s_hqxSl9K)wjxo*ArPDy1ae# z^P1O;%;`XSU-n{;!y9UMS!-+|Zxi}3m|OZjz%^9@CamAV%xdCP^(Ut1g{Vx;3)A^v!~ZX+>)9YFNvNUrWC#)R+8GdH~5{E`}oF87#GjU82`P4rWGDdIwiP9tF@WNNA|r z)ip6T#BycxPMJ=LPTv!Xs~aM4qL>#f-q=fyAL7nV+1h_W2;2$Xjc;YNIvr1WGr3)D zet%t0HY4;Yd}#GMpi};!j{{}{;E75ItAEqzPe4FnMv`09)Q~3@L0H3%+cUSQD>!Hf zv5hh6DC}B<7nJQnsUFso4pomG-`~9kM$(PFkj(l@_XFTA-+<&Um_Jb@@X*v*)r~Xt z`D(0GJMZv%s|+qPV-GE>cnkG+(ip_*5ZRARU{>uk9&6mZ`x_Yhsy#YE6Vq-5_4Gb(H9A&y zh@51m^ayF$I9-h%Ye99gS>>qvCmViR4W@dL-*c5b^ECTBJYYW6$OBIaArfAvz;|pi z3#yGN)ksz~4Q=8sx>jH5*JKMvf0uDG&F*<$janTglp;p6wlpRc7?13l?d^-<9PLJ4 zhhav!DMtnqcl}9fb*2?nbabGy4*h6lu?(4=qPQHPN&TMcIENn-9^86fmR3qcST0{o(QU4p4b4aG<=k3TS(4&mm3LoXA79;4b;b ziw|j|OXUwAc7_Hk!iPSfr}Jpq$GG44>L9G*0(GwPwf9MDf>LwaW(>-E8lq zw#>?vI3L) zX6mverUTr|Oc&`|;iv9c-v}{&b%I71&FnTu8;)I!1v~uKYm})Sg%#-=iWNJlM&r?> zrW~Md!o%J6Q8Y$gUM9b`-G&tr>|`^U!w)d(^=s<1ycDE->58W@;FP32gyBqgW;bth zE{)8O8)v#ZyPDfJbaT%t*Gzf`w9usdt}QkTuYzopDeH<~d)@?XS2qb2XGTfpvo_!4 zy^ksIEH7u@_tr`Fq``G^H5q87?qP=O2`%GF<}C;cWTxI1@$E+g^B*!Ei(h~=a8$OP zM@Eo>guR>L^qFxGYr< z`%LeTAIF~fR;-<@fA6KlWV7i$c7&Ezg6bTc$+(BwSj-n*(o0DmuF<RdfMU?iX zg5UmbFlP9qEhoyw61R`PuGt6Z^VY51e?iu2dzz>uaz-*pv>{%%6O`$IW5M(Q#$hpEo_)oG5q*>{2<;TJJmG8(xN6;XdD!4L zBUJ9^wG2BiTtjC=$bk+KJa4HC)kO?fg!QTCy+mTx7V@LNfDc{QE7bG4LFhJnRRk@B zBI*UdK!jmz@uu8MSi<`fM>2oU8ld$EDZjwFtS*w6}m0m)q^LOG*$LCG6K zNa5jSks<9ht#m>ov zjdS~IK8I)dGP5Kb)HNM9KTa0Dmec|*huB#1ise#S3KnZa=rj=*VHU~qWZ@mEO88>E zpM4|U_^RoH)naFhXZxsasy%GGli$~uCaCfu)9zguHY=p>$w4Wd!T!+t{U2x>x54!n z*MGuQ1W^AMD1LbZXY+rFE2!!?{gCqevP!gPnf$i!hiVuJgR+@pjr8Xi`W;*l(%_9u zaVWGwT5_6d!)nV~lph@>Cd+;M%+dp+E>&iDQP$R^C-PlEIApgRbPgP0v>gm;HIO_XD5P# z?bq9zJ2?=!$hmH9hP@idL`^wbX$OBasH+kv(NBF^FMGXCTHDs@}e~IPf2E_Pv$extb zKePnQqcg-Od4!)hEHP!}w6HU9PDnU>6m7e5dLrHqW_T#vs79!Ain@plvO-gPsM*mj z*LlG;rDIkei+50`a(9nFu})_!I?UbSmETo1hm7`>dpq41W8;<=EAY>XMWhD%aV<4} z8g-g>B zy+IqwQAFjZougU;gqiyx;8-{E@?r$QDvH0aTnr;z)15Us>57LV|1RPVjZovddXtI9?@|bkZ@Ob$ z(_a|8aR_TfKYI^jQW$MJE-Ud7sfvj;y$^#iZFaX#5X-%7wE<1eWE~aa6?FzakI?qC zBkz$EtRmbptQk)Jm0$!YJ_yS$?e0z7uocv!5DLEAXWuP^XMw_YFT4iex^;$C>-9r6 z&5A5zi5z?VWf(25bT&jH+7>(2h|fBSnn^y0bsEDIQQ{5deJa#4PmoQp+jcJg6)VHX zg0Sv`xk$=f7+^~OD!`wOOR&~WoqRE~#$=r%i=0+VlP7CiU1&v_<4v>T3bH<>zfRJu zjI+5-gu?R*(mq$3%lXpG)#9gP8%HP^xA40Ax-FMqlH?WGuF~Ri;UnOco&!P6KmflY zl~;$x*N^Kx#p&G(=QVQmnz;B1b$kP{&%HgcoZib;b3-Hc?B?6z6~y0X@8YX0T3Sti z@OiOS`0!^3czb{4``<5)>8iI~Tz}%S!as{+q5rSJwtpxu{vYBy0b>LEf8#+dQW%v4 z7C@+!Wu8T!G~A#Kj6?vv3=)lR!50ufCrXd^GEG@3<@XOu=}(fuAJ9(5dC6 zgLhb|6{X{_@Ij@LF&4*@b`@9PyTRr9dLM5Ojc2k|@sZ9<3Mr-t$sK2rj}ehy%_E~A zA{T4AZ(#q`tpB?f0O@~aRy$i$3o{o-lm8I1_ZZ`o8bb#Fz+(ph;Qw#eA@nb`8T_O3 zBx7J}VD@kPxSEje%8Mwx$0nrLCU-!i!2kxZzItPXDw{_TUX=zdpP4I(IczOLSyj6#sc+2;aIn$2`z2(Lg z0+FH_GsKOHidLzbQE^o}EQ(yyV#^NY3rms?UC1_q`8t+3iWNzQoyce-J&bs6cVIc~ zFk9r8GQ63iSuR_IOigd*aCS+C?QwJmQGeW{;@oZq8GllUv?BA7c@)(-uP1hOw@mCu zb~bsp`VH`&9R_yHX`k=6v|}B((~!9JXY`B*d4rzc-Q(fI+0)RyOMBBK-t#9qw2zxH zA6)P%fv|e^p@Pa`x)j|z#&((|mI?5>bE;WSPylx`wSB?$%I{rxyK<}NUcrLwm`_yj zwg;}6PxQb(wT|6h&563TOuL8mQ+4c?UQzLEfKmCcRW&@dXuH$wmS5psw@&w;Z{Ler zsM4;F;31yzl69^V_H^<5!uhht@pj`R9n_ECoxjrKo*?YoUwtWXD{S=+#2Y`HzS-yWQ+5B!hVj$=At!&4 z2+B)*LWA*L+o6N1k30P!NjM!RjLQ6o?$u*>DF^eL+^NR;fDP)lxTy#88{e_R`pA}k zjfJ?=QTToaSzCws>gwe~$o3`A;Y(bLD|(5T;#++6DE=sR!J(oD;V8n#riu{^QVt*>&TQZkUTIu5PE8HF<=v(vgSK4K-+n{R7!$&u|Z#{^5GH*tZ& zxXzq9I)b}cTxmj#s$=M?#kuT=U0iXLLQ}uCyc%%jdMikfC&V-=vy2+@EC>D!*r6@w z#J<#NYv=56(s=BOZ`_VlX%_LqGMeR4t=P={>8ozUK$`|5jW^0v?Z&wkf1wR-C5tDE zs_p9M*Y#&fAvTaN0i}@E1rf`Q@~hV)T~?*v)(d+1e*~CN6PxBwB`%-_GtP#J@S;Us zLp{L_Rb7&lpos-%#l7%S z!HXT5nLYTS9mly81a0>)oHY-$@RlC>vjj+qpUAQT9$Oq+w>A`z!<8bvm5$O}BjZbG zs&Nh+p`)YV1*YUus>!O3vmNK!DE;@!(R7h^>;NLy7luIw&kQFC_1bg~Vkg@5x+xIy zq{zNKYK?O-DgwJtkLqt|VF0eTYbeMaI}bpt+SJrf|q%n<+oVH(Cmvat&NQ;Fe+jN4KS0^_O zH=c?~ea2l&I{HZ~f#%X?bRR~aLQMBWZgi}kb9 zZVikvZ)V?tXVH`h<7neT*#y9Py`>BWyp1Foa}*t%Zw-u3a$7J&{F(RBh|-k3Ah!9k z0@)``q=oIqCLC@cF!geEFhjAIlE7}R@F7`3$a&$9k@Lo%>p3OP?}>xFduYz@z5~6x zYUi)U(eB;tz9~j05W^l)AA<+ociTI*b}N$k@svs5Q*>D$@U()?u4cNV za(z=fcwF6m-wUrQN#BFttgn0@dO3PbuYW{IKeKh|Pemwn6ZcFgbPLhq!AwSConvHV z=Ihc?t)s&oC9$umA=?_|2_y6+@B^geeN`l!s8M558jMhtm8z|9mF^uAs!Xynr$`qt znt^I}Xh)r#C+QopCrhkaNk3JXTxg~jNX?OCo@&w}oN2ZfpqRT$QN|>RAY--r6eAK! zW#%HKZR%JLV+5&mO)Zrg4O5I@)r(nWvSKgk84yluJ*90zS(TPeGuEst2NsUZom^~k zODC66d$@*Ve4K3v>in0J-uanP6jU?|t<2IjOPe6T?b?I{CN(okQ>;*mRY(2AE#*MB zL)EG6`3Y<6HBBrRYd|lhm9#2ecFl8zuzB3N!Kdr?wFPik*m5jA)EGKJ>DnoJ|E1h$` zikn1R*yYIO@Q$;=9c2QBLX^%We)q>XEJyoq8-Y@;nJgF!PLb#ZDx6F zWz)7~Yl*YQsiS3QiDn*CQ{W&ou)s-DoXphFDL|Z?uB3KZ3>6*PtZ-ELw8!MZ0LQv~ zu#kQxTHVIFepXsNR%nv`Y_N?*f905qEQiDwS-en)~BpwZJKsL$kFb)N&$KlH92c>I4QYj4e;m6@WyTx zo^ddmUH#c}k6(92x8VZBBqc(?QODVizxskPdr##vzp@+6E67OF_U+ga)UNS0RIMLq zP~|lNJ%AlZ)OFeoXFs2Uir{BBTjxfY=5!%DpQNa;6SyS7bgh+~f6^591FHD#!rJCi zO_cA@uT_#5AEQVbV|5AV;x3HFfYD$ft><~-<4XcCiilK;`J4~q4rHvYuKD?K^X7D+ zvCmPgs3NJ@uwB?Dn$en`M0fgS0$$YN;qViPbj?IO2W9m8Dr?61<>ZtoYq7n9(%6q- zpC$(~wZ)qWTpsU|ZI#?S96A@I>`OcYw(d-6GoyxDEezWmoR{D}dAZ=5gvKizw)1;y zy5zRyh(X zOCin0A$v5P3pC?KvOPbN=|A4fg*AD8N>?=f0t6Y#l|cuAd{}AhQ-J3`^D(S|@ENL<{Ji~h1#+rI*xZqP&Iyn<#7A7ux)vE#+YhZjX z3C+3ay)e@#I6F+Jc+_HE2R`y^w(~Br)OR&ryI|7Sd@g`L>@1sF!M1^lzA^9aS+aSx zWVlJ1Pq>FBGe_&Q)Nqy6gJFYJRyCO>mCU(#oPfjju3_kFR)DcVRGnt>x7VqVurmMr zN&f?);TyRorcU6Kf!e!u!?jZ**34IWc_-%OyUrzxIp2=u^6$_5a-F!RVV%oHbHBbt z-MA+*oy)Kp-aSh_|EK<{C$I)QhsO4qujKMh&`Y`YHM3p2@Yu392F}=Pm}nkJGI`!m zRqRiVmnmv4$rc{JOlFF@v9Tgmf<}TnY=v>YAV<_w^5%H(=tFrjnfyv+@pW@b8}MD| zQ-|o(6_C^V2M$7&cW!ij6)zxa^S^u&avU%pFb&)#04|ljPz`N27^HqgT4S38!eHVjJ(XTcdnMHC z#BQ|U1P<5CMcEbhxFi=hJ8+3lo!tE7NEE-Oh~$#w6=qzD;7*5)s$J!=2-mZvslg~j zD8qTQj3~Xn@R0d|^pNo-?-fLQlhXl$rxmzj$ovUX7ETlLu`BX$1|6yn)WHGa4?}j7 zvVl7}e}MIdE&FXJXy3wHnQw-Ij>Pb-^0Q>ay%YTMuT zY8tg6@~zH>722f!z;D-Nd^pc-!mzP2AGeJSo_INk*p`;_cKNqqo^Sq;-w(o#+B)IBK*!;#f+EUFz_*qTxU4@@Q7 zjlb-oym1=c`FeqtfX=VfpHLlBfx_Lz+x(%5l*QYGU+xNi3>5I!fHbS0h{K~IzgKY% zzc@*>V@g(xqRhq*X@ZCe)4F}bRks87x=hE%rxGhke@#f~){u%k>=C1zvB%lC{7a!S`!`&g8Iy zQ1Ih90I=l8Z_i%WO5yq^u_uDAT`S>x)%3$cY0^DmrYBi?3n#d3F>rBdtY7)JpdVtrG`ZKd0TL^hSuO?^S~(f1aGDs5EB$10W1N908;9C$F|oC z1*k!$t;3wEg^aDmF(P2^r&n!PQooeN*dCO!;=Mu%h%J!4R(3T{41+v=Gj8WX79O4$qu$b1~GXL)3a|&mT3w@*vaN*F2 z2+s<3p&1~c&jaSa!*?bC$%V|zf;P$oSNiLZK@HCTh~P&9vJErqh3||_2>&B6d#=)k zd2ajrn{vcX@yN#t>P|~3UhkSeS8Q27hd&pd*LuWE(1i5>g`L=DB#o%NmY^E^q# zHo(^lb}#6ezO%Am#Oj=)on7mcVtpw|SG8i@6KH7oq%RY@#dECAXOI`eP0O{`E}XUv zm|>CVeyd7|V$dYi_Zi9KQ51P;@`!mNN*)w4$0iN&X-c4H zbEWW!K+ zMO{x&HF$u}v;D^5$X;>euoD2ppK$f_#3(zSlm{vLciNe~<>stxbKbVDrw#&=anS5? zIs#AzXGrdZf0Olx?&-|{>+wO4F7+jol#QI%%yy81rfJNbOq?LqSlQxJhY&&Xs%V+| zKbjIpt$OcYcUp0JT;+N6b`)R7l*>%}Mu}Cj0+0?o*s&a8UM>6vP)g^zuhB2{sS#x@mQ1nSBcPYkhSYE$j;eg`+ zxJL&q!)&U6v7VRQTfhYDLP1D|cZglek_WCkA`6{MVaWU6S8H}BLn4s6K||db0_FWl z9oRMq#P3_c0sm%Mwk)T7Efza#M)lm2gg95WEt}I1SdwW`o< zUZNMm(ZfBUM^ZUKYSlejjn$qu5WeciN%?Ayi zU1XFPebg@c&Xjh%4AKsonFl;M{dIE6cyfxr_o-*rabD9GNe_7^2;z*rO%om+f6~_ew=g3q_0NT};9>*uQ6_>K@D_8jIY!wn<gL9-}`utr(y(zs@EdmD4Qyni`d5}A$es?1?!T=j8kPPLOPECA)hm?Om$uN-7mf+@?mC2GV?^p?ITq?9EN* zg+b-|L*;sJQtBUg+Yhqp0#D9%%CKA|yF#7S76M z7`|7=jBFURt1A-x`P4}geezAIjYYu?7G#i#03nw9B&`x)q)z=4I1uuUs`eH-=Ci7b zXgy0U`dHM&Gb@sdmX%(MOPXt%&HJto*yXu}xP!-?&qqh3#JRYB6VIE6UTN1JKUD8m z-0ykAdBSjIH(B&m{R!R`!(M&ZTU7n;${l(~?foNzJe0iodqD;V`$7f>yZv=ff3-KM z`h6I&m2MO0c_ZKZ)dRo>9spb4(zS8Yev1tTG5TqT%Kd%$p9i;3 zz?~g7{r3dc2sd`*W|iAp_6W)F-UFj6f3G2uuFRb{8fug>Qmj8cl-I#YRM1-@bXYkX z)~K{YE7FPb&4d?q2w+OC2b7z(KOaU9wVlYrUGRuZ#am=h1XKhI>&(j1&bq2J#?G>8 zTfSLBK*GDZOD>M&QQ50vR+3Ed(h6C6!@QU=HMg$mbhJXC{Y-`ht7#}J^PF{KZ9~01 z$yL$@&L11pV=~9n&1erl&0;d=)LMqnVgLz4s#kf~Wl56Q=vLS=ZkBTTl(&I3K~nu3 znF7L=S<6CaghkY+$tf+tcFv6ic68EuHfjCAS@3EzOrV@7L7|4xws_shGi__m zU?9=-{cf|?cs+8ZE4X%Bd{}crS*w62i`CFYt4UJS#Z%IbZ4L%EdO=ctahx-K_IY$6 z72z3Fb`Fw>)KojqC=*8Qh{txNaoxNYvrbiQiBLauYg7b^rsO4lV`0&x62#z_#>$YBSjH3eG<{3(QoWjzSN%XXo*MCfFjRXwbyrqUrm@?|2j$yi-;&Ym#xHH5SPn^{B@XiaY{VOE4opZ` zg>lNtvd5i?d^%4r_$_<8F*llg?MLCCNbMU>M`~c#ruDzDi7#VQ7Ro}yT|S_gLKRvzp5dA zKwxTh0fd$w_4@oi&5#AV%X{Xp--Yc&l)Hb}mCY>j!0?#sKeDRXDlwU|EFU}ZW|e6t zi%Lyln%^NDQr(cAko=6uZEdv}vrcz55}BEXAi7vw{!D&OaVV{bEISu8Usy<<(-87p z7G#HDvt5j(k5-siFVVb>)=QJYYe@;uwy4^fgvrG$#8v|M>f(;5iY@z8%p5I4KP65_-z=SOmn@H$t0~7Xj2QIT3E|w^`{~@*Eu%3BbX{A(CKyMmxkk^ z(wN=YNpa`eZ?m(@@*1VamfTwUG(C;w+i}wHj22w1{2j0@(3;d|EQQNWyS+F@3q7R) zcC>q(#iV_jj`Dq{ko!L;0LkW493TasBN3r*h}=e4gB-GlX?Qh>y{R`^517&ejpV(Q zn82Avv7XHKsLNS8%j*_6EpslX=vB)tRm*daoNc;x?YU>^?Nx_olTTB~*0*Ad5HR#7N0;35ZyicYR}!d2BF-G|*^=-q(=qmE#PR`9e^T^q$N+tr8FuE(_kS zZexT^y?tir!Ik+cn~k?eoqAYx@1a;u;gTXp@XSu6qAP66SNt?O*x)Pu9F{%$5g;2X z&Cn4+k^H_YZiHCp`oa-wMCaX#)dj$G!&;1~Ulu3;Kx2OB1Z;B^yWGwNCqnhcV3f{o z@P3Lz{k`sk1>=DzXe%M{Z*1aCZld($6lM0d3Ewyg~H+rruRJ zain{9#;YA-WW4x!(OqbL1@6OL;mSla#7L|Gnv2qsnew-InK5|{;`pZY^wE^&(l~Cg zFAqCSxc-g7i2Bykul9ko6`y5-W6tt z($<~#cb;CIzYrg4okkHN+GBpWk}(%neb<=HMA62H<*&i*^tc-2xH_J-^WASkRN|tql)x&+YjPXxWH8DvrM3W|z0-O}! zzh&hYSRo_x!Uq_5rBd9&lGB` zD`>~c=(@vEj`MFVi-;nZ7oH7m7eTel^{@d z;0!@W8$)G16?WQ@P-RT+ub&P&Ln}ai$7w#{LSA^bzYw8s$ymqpD31JgSMNFH=DY8* zKd_44uPav08@|DLK9W#A(Ez{M;HYW>H0*%g20)ABrGGTWHg1gH$?x%T+qVi2OHz` zA3!%HTQrC8KUgfNpYy+(O#Vv+M&<^#wkFml|Dr^yXZxe3XJ%mv2nGE3AtoWp&S8KK zfDUl<{quJKzQ4bFdU~eDZze{smKR>vmOn;^&xZ$3rzUPD$FC>GuGUvS*H%7Omfkwr zcKdpcx;ys=`%kAQ@24j2MuvXwJR2G~o%|_2c0E3NH8yg&IR7#~`?R|JQ{;Vl@vW(G zqoaMVt#zlhWqY9iys!79vtxg7;Jl~%aBTEubmV$u_;R5CbZYW`aNu-y=4oR5=i)h+4}*f6{*b z&j-OP$PdyE2!Q&ZpZ~E50Qk2*P+(ASNN8AiM7SG3bZks~WFP>bOG;X5j7y@Mi=C|l zpNXDDvWr_{vW}C!pnd2YWU{?6zlemiBspPSPDGB7xs8=P zff^aougQpHGiysZS!zTrI%eo-z$h0*aZ(v73QbgAXimtfuw*f1VoC&h)0>{2ouM$z zFwPWoL|~~fU@l~Oc>o{*UZLa)`H?=8pfC^^#sl;}v<5h6zu3*q>HPr-0Q!KmM+EZ4 z0>RipdXRUl&3?<`Gj1^97Y-5U^s=H95Z?~PLTT!fvT)1>fMTgQ7Z)O1SO9>6YPPu3 zi^v!MN%39tI5;7f&I?7RH<+W?Ss-mm1ly!3Wv>3+1q1{LK=36eWM}W;XkljVjL%3< zPmgctfv@CZi!WngZcF@{s^=z*-_TIH~*O7#~}PaA9jvrbO!bYM&>4T)^=vh zmUPypEOf3GCT=ER@OJvTpIcD>#0_j0p4 z7=`wHwb}0Zc$UFr7K_W%X1Co%qt#TQ)9$)jXToGQl}&FTXk%mJ;NYOCscCF%EH59Q zmX`L@kBWyiQ*RRw<24bD|`yNhB%%cUubX&I`Q zgpCmp%nwOO0fDkFlH%~vlk|s_&*rSosLSV1kB1}(k%&#oFi_Mz{4LWOyG8+xZj#Q9 zQVkxtaU$_jmENI8M%b@LKH9BNGBGnaHas;mfmSg*+BrJj+1=f7Ryo|?**ns05XP4= zJ1kR)gjxCzj4dNcIlK`+1J>>j0H5W**P1`=tLJ26U~R2uVPt3fKbuflUta%Z3IM3Q zKjoqk^lH1i+wc2pZ7tsR&!Ued~uu$6b=sV$KM_wAGOjzwm9>g z$`>Dm@*0~`2QubqevF{UI@v!hcRz2-=gN9S^jU7)8nF?Vm&A(`@zS_LFsDO+kH0hFJ&e&6X=Mou3c{|p zHRAF8^*PzPlw$H!x2LVQ-KbMKt!Yzl;&jw5p&Ezh z{Iz!GelFNstp{Bq7jt6$_}#E-2@KsD^J|tRhI?JbGV3{t;XV##O zS7d%z*j+0})+^(&nuB$Ij~VE*kypCeuY2M25P3aGtp1CEks&%T063CQLtPmCi|NFl zJ)gU`=Qb}OL1@URKQL$#yHAq=)fSqQ-FEuqB$@G$p?v5rr?ozhMq1Ah@&}E&5i#NHtyHge2KB=}$z$j(rltd*tv_YA%Afdj z=PF%LVK`X7;A;=;*mu2qX#%ni5zj?oCe^ghJa#y^92}J(&7n@POdg3-UPQcmo$qKpc_qYUA+hu2ZF_90 zWSR5R;X$M0sOVC&Q@is%;78$?i0pyBwm=OJKos)et$?T(Rbd<5>k#ZH zj(j%u#7y3c15gDa>p>y~DNF&Y8JL9xMPVc1K*c&ruzI`qe5W-Z=*P_lLyHY;s)BGb zzR`(Gn>?q_j8Lo2IPS_j9iV`t4&R_q0%{L30!bCsEqz!Y-0={Okh?wnA=F|zu1}f9 zLC3(T0Q}dH5&$6ZXQcdb=YKm;e!l&0Bc-j0^Zzo3`KJiDA85Y7&%jFilXOk>pA``{ zF*R_pb{26puy!$UwsZV{^KL>E#$|yRka^OUd*~@&c8UmTnez$i9l{(6k=TgQ4Yga! z)vZR2!K5+<{2U9RrL|uGeUobuB%<}L=Qdc6v)7&E_;|Os5XF#Kuqdck)rTa(I1X%n z_}}~5LSUgm1<%yM6!Q@F9*0l}95A;W1$E)*Qji0wFd*pm0!S~G*MI+_#j4rjar>0V ze%##UZ@ZKa$0%QHag7%p5}Xx)G=W9|&swRgxy+Bm>D$td^S64A-mXok?hJn=Di#tM zdDIxt&I9ec+<5SqMmMMR{z{w1qjCLiloE%oTIb&5{jF#>0na|D8Qf)zTA%Dz9E>{K}D_IVl7KmN-uwqA0*gj%MJ?{AG6!W~Bgge{(^Fq>x z7ZE$fu203AFD@^_AZ7O6szt7kd|z0>k2Fk&qimlCBpP9Qg1sFw+O2`^XL#^?K?@$d z@U4P&m^A+lZ{ z39G9_Uz)}P)y2M=$E(%j3uhPNAlq#vc~{J}_=_#bcGS*0P?QXf3O(b}f`7tj5u*po zdbO-MQ0;+%i=vG2qBbXkIU-%Bfc|f?4I^_R&8e}!8cO;aq-nbrak=#kg-fO^CZ|Km zM#aDNjlqZJfkRm{Im#03ne9%JG7u+M>bWRtdgksk7K){9gIVoaDi+K~1C{An`g4v{ z=D7>7h=3ebqSZKJzJt*DNntLlO{GdOvT$U~*m(PL~T zkbaj~!EvO*b!H)4qWwWa4{gM8mSq7?Nu9v-B-QJTM{`OPEVI4R4{(U(7w)NLVym2l z;!q)*qqnP+<<-$j^bRGOE^@<&(dF~XDQcSpXO~WOKH~9 zBV;&)U~g%E9W6&QrPw1j5)q{ADb5}Uqe8x`>3O!4c8(SYg258Al@t$qJEt&-rHC_M zyWJ~mZIMD*FZt+Cpg?MGBy_~fmw6_mqiXSWe>(I}TA)htWtU8OQNR?q-Dy)6*)9pK z8|%k!39f_rEwZPX!O4*dC8FkWq$gX;NZK)$g`}jZVNdbLG$7itS2h$}D%4vSn2%ve zsMwGkPx-QC92FzA66}HxQ_oR2Bu6#>{#ZJt!qBntEFRWPWb@qb;kPbV1-feoJ6A{dHs&Wv&GdHN^KV;#3Z5p#3NhB(Rg2!u5i=@zNn^ z66F*f?=y_d+RSM@+9yEVR?32+=vP$11yXL&-c^Txw#;5)Jx;gNbAvz(KV3kW$!0I2 zOV=x7*hJd31~BW^C1u%BEvJ>d#4Q)Y$C$~6d|I#^XuC<*yO0&nzn0C~4QSc+UnbnL z04&2ltYDn7H_ygnOXYCDXdCAl4hU`zyP_y?I<=%>lB8ebGw321k<*0cAo4y@M9)%+ zJ$94GlN^E0zboz*EL4nKl9b3O&Nhuj(eK8Ea4`LZutte+dI!^@@m)B!1$8@zh~uw~ z0<*3%^XJOTl3APxdrknxiQWkY}#HcWg!&Pk(p72$GU?OU=r-RGQ_=)(}Cf z=esQ|PpY^0c>cLx%RFs&6>FsD!G+Ae;o$#O9NQsUuwBT&wkUw zh5yw)7pbov1>TswgZxRlRV{PrMAEKcqBwzL3=|l9VNphT7Yl`HXm_AL7$VUdHn`;o zxbQ|0;YcDeNv|qtmmuF0R&V zXS)p79={K8iFi5_4`iUXGE#->iDUr?;2L& zYd}J-D$I@&P=P(x2mKRM^9YImX#8brwdX@4G@wdW6CFi~Bq|PCVvtvBF;Y@gvY`y^ z5%jiw_6}e&4&Gi>!WJqWA=hs?^q96#6|4}hTZw$@5wz%?F;s3zHN$04(Lb1$ zQhdK~7?t+9FvVAZfHnV<|B}S5@;5+>+LeWm;SNG(H?(EEROm>0_l?L$l6JpuQT0%=D`uB$djpu zck-gxovX05o!J(lMK{qR-ya61;2f{?|B){QYw4beSy{q2D@~@21~6 znb*8`zrWX9c1M|rs0nY*8c@qZBd$+o%^Fy`Gzn`g;q_M= zTV(^RR9ej8+n>OE)TH+{6J?2AupW zQ^jmhHtKVJqaIU`ETzl1ktkKbXm5-iA6Pq7>@>Cn(7GgXw%6bLb#|eCY)Z1)Z=klt zh!;W!8U@?HUtvf+Ju{yhD@e+laD@#Ja*%PUS=3!K|29#OZJ8-pzyi0Rcq$qfG@sQA znw7#*t9*GpzIJboTHBB^S%3*v@CJEM)!xGooiRpxV}?r~gSRUwjK_EFq3Z3kW*DCO=?YDvEe>+E-kss?S3=%*DuE7!;7?Si$uSZ5J5GS@3Gv_bxjEh z08zmJT+GF+>iN6zaTahM#rtRhUdeE`Xpf{C>v`@DUODpp2C|~|Y4O{F(zCAe$1U$4 zuEGab-?=sK@Z(|Ld{}{oAXD&<~#LdV_E*h`JTe>F&1GJ_Pzs z@K=YVNZOhj5EFiQFpEDvH;ny&CVN0lQ9SKihifIZfVvsEN@5 z>2uA}w_14Xx#^Uf5y-pB)Ps?d^tsk}kYc&t&V2T}ufh5G`V5vj7wz}1B92OhA}gvb z4ynQ%?+UZP%b=+w^Z8^WfR;#X5}=CITJp4$)Bg#{#lX_&a_XDUlzG z+3l$i^V1bj=8;*OGf$!-OQ)%mmmD=8qDP@P&bZL-H9WzdN}IE7T$2abDdcTnoU*4a z_+E^zrrBj-)=@E4XD=CRO^pshw)5KB5M;7sQ5~O3f%IgR;DOe_;LU(2+lup@#9=@Sgl%+bjLUwJ!F;P_7 z!?w9?GRH*!Mt4e_RGw<8&`K8u-~b5J9H3HxViwL?D7i`wI7qOkH8Lc|BcXukxQ%(Q z5<@G1mE%z&Yz^?E^PC;Od6Ks=tNok+v}I*X>EDp_*$4(eg>kF#%=}W2DBB!UhQLI7 zeCnFnWOWn^|BiOS>8HY=2rPfpj3YwsiGYD3P>fgh2{3b%zCL8`S}Nlz`zR~qzL?Nn z7S2HR!hEd?gr<*2YD)^Nb%5G*iaSPcEA!HvF;|oRqc(BU=%sw{sqxq(?WIiKs5aoD z+M^_gf!!K6uL&T{q7qJRCALX_XlR zmHIg>F&n6!@$s3T0U7tw;k*xM5CTIp;5OB1z{mnsGgv=>0raXCmIhC4XLlH)FOar4 zBhX+!A>4rKh0U*UxAjGjYhKNDUo5NNEt)LdFQs@~Qg!Rt^8#o|{lfS8Yd;qDb8w)g zP$7HHCQ>M;GkU%Yl922r*OTBKA~xmHGb~RWIs-6cYq$SDB%1tF1hkh;sD%5}tz1=2+?%8U@uOw;I-KbI@!cG{9>J z^)U0DVSGl^O3#q=U1!5it;uQ6qN<7V9BQ(CS_MW60t#I#=^W0Y{erJR71}0CAgNh1n-P%fbJB#1PP-;$?Qojd3czm~1ASK9 zcza@&rn?%i3y&}4$n(ztrOo@Hjm+=0%TJ#i>3FRcyrIf%v~3+}XAYRtPU+3cS_I~{ z^63rzue_WwLQqu+fR-I{56%?xGFw=J`<55kjS9rP`HV;pkdb2L$DO_tp7#%)vn@Yt zP*lsn!CD=E@!!{?oe1v=qBH=b=$8>Iwph%4uxBxPnP(B$7Fv;LRwPp5o`Cr9KZdOH z%*fATg8^*%t;U~RRuB2v5qTOm8WT^R~JaHDRovp7=00H zF7mX-_oywjdl?=R#4V7m7%19;&Sk~n)(6It@cJ5qPp@C^QTIP(y5Q(%H_k3dR#E=V zv&8su?K(gF(e@v9F@@n#cjVJj=W5$FyX*?A@sKGCiLTvsoZ79>5WG2vTa``H6O9-C z?7_ISE8sXhIH)F~TI>jPK-+hc1XSgf!oXR^zG2PbUBbOao%RZ<`Aa;67jI=GLveIk@|d%fl^|;?d}i? zD1wQ*DrcqP9w^@Jj)WY3Dx(_Ah>^#XPjja|o6<_15z!nAt7vDg3eJ8-(r*iGZZ$7w zW7wev09TE23LcR^pS&MPYkkU-bn|aI!k0h`{A3 zB4XUa+nuE}6vx@)4Cud*e(F;0ZOK_?TEdH`5M?P;6?g_BD@VTY8T$Qm__Qs~#wC}@ z>!&AJ-JX4Cw(AbppZWRu--7A>LrSpCC%c<`&*gHz=Wgir$3g$|lwpjr z?Kf44?5938apBd-?5)tq9m5%tha~>X4;CI=$-VodGO(ZW6zZX{V2y^7 zaW*7-E#3DxJv;2<#m83yJ#6$mZO{i4Hvt#Zh1OUqJxRWG0(TyF8GB!7PQuebG#_B1#bv3k9ITahvj~p0Iz(b{)#jc@(I!`TMsc0Nf>XQnD=+0W5Qs zxvn}o06vE2Zm1m<3_F^IDn#Q7r4fiT|EJ^QY~KrBNo6VxM`|+fUR~ye)H^;{;HONt zB6{UWu`L_uOuXA`YDtmh)0EMu1Njaq0_#7l-%UlRaqsAhk+bZKa<}l=%IKBR`q=&$ zh&d>p@JdXR#@A4Z#o<(!cm=5;6r%dbZ*FK{gM`Ao0~N+ZwINJB|81f2A7AQJJ-}q= z`yO!$!H*vl|9`&Je=5IZY#0ypqsQ(k@o7I&AC4aKG96nxq*lo1d$jTbH(uS4AtG0HXViYv+CHf#J^GW^cUE^ z4bn2>tyR-77ibQ>FcuE_$v$t(=7rBTPS?Y&1^+}{UXnSSr`ANSm}r12C_SbTl*&Ix z7#wgg(B&v(^OLSX1Y&mMM1LV9dJIP#dJ6ab^hs}sbg-GbU1{|b8&@ss5kv@jKePV%-3I!J5$lJ|nIuXKaVmPFgC{0kEu?L`HqeeAQ9 zk0nF@eq2g4Kaywd`>m1=mEpFQR#keLF8zQI((EniJb};HS|}&6+eb6GiO)@EpjRWC5<_ z%;n{yj%y-SO32OT#)=NXrTmkWJHairo>u{OD$%o zY8J?$LwHlP{!ZgjFD?r|ju*X`EJ&0T<-#W)S)$kLK;N?o1DZ0heBzP>mwRz`ESWb( zuO+3C{V-DMOPic>fvJJi3-rzV<`08U2AIHi(2L~d3`&a+;%)vBO=b$7Ey5S67te@F zlQ$RnV@Y}t@zVAY0I?(X%dnM3&sKv8abD#=H|hG=9IC-r`W{g)!>qHhIhWK+e1!w? zcEw@rLUl+z7`l-5;7b?J6rs>7n~*VT;&;h8fAw`c?;Hc}IG9_R!QbUI`sM{_UgcI!k{3!g!^fz6dj=c)DY|BMR%iy?t#FNNN&GU-aHZ& zPw-Bd@K2S|gw73UcPYe_BuWRY5mn9?ZUVgN#oxu!oNzveHF3d!?`#9zgl#2aRnB5hcU(6e zv_jK+k_+i#=!0{R{o6^_1$Dy~q0rq-w9#dv%(=H(SEDB_JE!##NmZO$qa9f(e{eU- zr0M=gd4uG6xQf3>@W%96&3!PBLUG0NJ5URv7UP+d?j-|5_ef znJXD)OM{8*=h5B%L~5N|BdR(Yb$W+4rO;i9oK|NChcYgAQ&b{M<`g1nC&!#wcG7Qe zB060!FgQ-w74NH}HERB?^Me6Xkwe4{l0<8!gUG z-Su;np;NCsGIy<6nY-`wCenXRGi|Qt)(@!k0AW&Tt`LK{rW_sIqj_1?+70c3QP)H_ znsiEj39`0xa&RhxR8E7k@Yn0yIyzOlmbO-Ns3I;fvQ}>iU=3QvnDHX8S}iE zi@z(%sjU7~Fu-`xN{auhNE3S$CtYgvJKB zN~~)}N#oC>cl5bYXgAvfsHEnAx|c(k-23Z{c%9`-?{w5uN0|w@iI`% zN9O!(RAh%uCQ-yFBLu0PI>@<{!V8x`xra41^a{5$e^`taeuSQcN4}bbpDZwXax|8p z$uZ9}#~wty$qHrS{D5{W5A?DOT!5cCMG!}2+R>p~t0B*5AL-MXxjZ&E)Q6nLhRo*& z<6lqvgD-zV1P1q$Jgd~m=&$awxgpBbxvYmCW)G(!Jzd*Q@LS`zx^flza_e@dnqjW9p>dmqpF-0c$?w?i z-1H^~8#WR{YTvB_cr}cT%Y({58EKQm;&67}GG?CzGM5F554=1NfTf^cSmnkvWkmm( z7TM(&Hs^Au@m0SqO~+0m1V@t7_;xj8$W0f{>HI;TcAukB{nY>`OSkp@tFcYr1VSND z&kdB?s%^IOn6k=MXpX2vK*+qH+tHFpPN&-zM^oY=$`V*pssOo85yv4b)YJB>;Vq76 z%;!ary{)T=Kt>tWAy#lS3H{~OrcbAOSBD#s0N*V;jK^taUG)9J8S!@+Ef;KR919Yj zuFP5M+^%G-ZPWp7l!-~VH#~bUjT_m+h9&3e0I+VTCQ>{U!&&ubOTr0>mQ1RSVQO(_ zCSe!mrCdT`((uY~eiYyaQOmea5|7!z%HqJ0($D%Y=;=VZ)Pmx9_(?4Dg-AzSl1g zyE3YBE4J&SXl(y3tMCGE6#4iG1E<7a@B{CcBgXFS594*`w>w)}VqY8P}DgTUs>=rSBV@qH=`^y1fca8l; z$%B?+TUWeGsXo&ht8*lKuhI5}k=LkCp>g*pfQuwFOU;?NZerMbK3!op^iRLiWFFly zMfTXq#$nhl71UjW2Pry@|D%i^_k%f&YUuiP4DqgQkZ08CsHk#wkOlR?$E1FZSjyN>kO@!khJ=Y;2EljZg4EwOag|M5kBgfcji2?K}Vpw5+^aJC)>%Jm&o3xR8mXUaww!;|1- zH!qaO^k!@*5dXD->YOupfSTN;$yj-y*6a%pp?ArV;yMAfcLC^);a=G$F+vEGAfR!q z1z@x(us>IN2oiJ7M?>Al0m5#>LnVqMM_763g?NeT`OEhdxXC`N4j4S7hZb;i=73e9 zCoa6PSgKuRg%W``eKOSg%k@g~?E7Q{wYzE+x;yW`%56@;8`i^-c#ctN2v2OHU@Qhpwp6_0UU+6F@xk@cSx znz^FPmWEEcnUwo+<3Yk!I9P7$d^GtkOaLpH#Tp>+h`_tjzu0HSjkz1-$HWA_@~pOn zPJj}04NR@-Eao_PM+H0Os%lv{Z6#{@hHCixd&Na z#@Y#_@WzlP<)LRy={_Bp3g_=#T=+3^BSY*~$~MbY=j`Y+@T|1!v@u1hY-p=6@0wJa%8!62m?-CCcTlQ!%WESVID|!lPLUd>s>y4wcDNmBp^{xo}Gu3 z{Ue%31gTc{&NXaK^ABbBY6jM3FBOHN*hl!kruj1-wsiZ1FZ~ zqrj1lzC(5wakTz|5&bZF7LWbxY#T+D5_N5^Ltnj6jxv);UbF(~a$-X|8;}ZhvXa}# zewT$*HH#U@)uVV@9MEeVKIYaa8zL7VBDJWlJGEP~ty#u_c^ac+U&T%dzZvNZ`59Um zOsLF9xDWXWFrof5+Rc55Y{??qOh!#QpMm}(h~7VP)&-dMLQ+gjo`DOStG}j= z6?WAIZbkw=30IeVICPETmRGateBvFu$95m_oUyty^V|0tt5YLh+|b9n!?h4-;p&f<$tXG2w{m*v3lf zN4&^*Z(N!i^&njxLTe>!-07Dw=_fi!EwspUq*1@`0fxh9ZKh0FpIVSZ%366&&_K)2 zD6+j_fmRMC3`^3%Z+yPs$Y1SQNOvT7HUP8s4#Jg737RQE`{y-A43cN4tBx%;$^CcI zGOFVv9LV0XE{Q?6M4 zIr@5NS{3Vpt^B;;UV4Gm?!fixAm%eGQ<*K$#+e$)pV`lf$HAVu1=M1v4~@sWn!UR~V$B$; z!5lAs$&-5yWLWiE51@S3)}%GU$gJ7@+KdU`r@nr=BWa0!w;^ZIv0PP$cQ8#XwZU|@m5lA{89g&|&GV_-@iIe~`f>kH3|@|E|b= zo@d{T-U^s_jZp$&no69P;prULbO)tVX*2aNs!10?EhI0e!$ne?ciftrkZIf38goW6 ztHHmfHyJ?JHm{Fg$Q?UVTL=)w;Qn(SJiDw&XW1!@%x%ZcDgDSo{YdUXdx zw}We9jnCV-tz6K`>*LM_!vmEvG}HUWWbV;si@}np2`<*Ik+Kp#1^y@D`JXI2a@PI1 z%Qv}w`@Lmm`9BuY|GR|#*I@WN<<-v2eu0@T&G8pZx0Ve9WyF(N@w z4ErW^D_B??)kH{rC<4CDc5pz_ZA{mIN4Ua;qe#H=f`Ay1T_`k)(6A=}B=l~&g#Il100 zp&Okdy*ciD0x5EE*+CYmi_N9nW2G6|HiR6LBi-qqLzLEZpOw#LtLZbYGwx&|Ka(LE zQFN7MH+=yhdd4tT43&^iY%#mdsw0486O*B^IFg|9C-ei<(qf4LH2))I|!vL0liDwiKDEZPz)&b}9P1BjsmKGatps z2tvB~MbzGKab)CA`0~?XHjLW6ioh8)p8y6mABgPyLfqvl2lz^d4IRy0aD|gHWS@vG zO$fS^FcCyHBWvo0(elwC8cjtdL8Xv@f!mseczBeM_!!LoROdvhv;q zhcI`Ok7O9^(#kekAz&II{v(V@Roo{vc}}=?@h1oCs~JjoSyz??lIC}gp%Y)RY$DA7 zZ8?gOX4VyrBDsYY8Pn4H!9c~gNg$byL$zh6u!-dYe$Q?@uK^gQmL*?_rRqe{Rl4U? z!%#reV6uOrmRb?(03AtpKchp*v?-^7+@BhFn1Lmgw7g?i54P``ytq>CsRI94Gv*l~ zuk@hbzV_GvDe{Nax6Rk?;V026fmn6L>1)@39=8p_lDfhiAj&ImE7#nogn9f8h^R-~LVCvmy;%s;+CZ500DGEDAdC~VZ?QE_M9$q z4~x2wal3@`0w~{}bVDrfoOa0e4~hB5`+vh^{=?Ao?Z{=D|0bO~(Eq=7TmQ?S*#Fp> zX!yF|t6_Y}HH_J@CpN*@T1itbD6e0&$bn*(qet0xG?xt9BnOopR z=9cY3GH={VV(qp+ z?tZ)e*xKoQ?ip*W6?kQ>sE6#W7!Z3=M89wd;`P-Wlo0h%9gHEii`+MPY2)=JmcErj z;aG7Tp}TXbq}{|E;@$i?On~A;9jS1@;%YgPZM2CoyrncbB82iBKJS73EIt>ANBmM1 zog1}#&%BM*hc&qQVf+#R-9vehO8nx)*ArMP?g(v=cx8Zfn-?BN?4ildPyG2aW|s*E zDa?^ndSxekKhr~ZFgQF=)PXhH1ceu6IME1yMRDb9wI%rhUn6LHNTQX+2f>kbemH$ z#wRSa%sPfUr+I126E~ytIpb~WDcY)Z{f&>qwshGVI#WcXCb@70;a(WXOEBoMx6N-#FBk5~yi1v2S5M1_@1cOepDcUmHLi zSR30-{3bQrdF(2-CNsuRD)|nImao;Y|79QY7mS+Id5=1!VyvM~N>SK*V?Ixx$vjX% zy4jz}=+^ViEl?SWEGT+Qt;>7kg>$tyL4lpRgwj&Gm)cfR2y~1%K~3`E$Y2vSOd>AG zO?Wfn+=)x1#=9qszK-t#i`ePl<=gOnqFecG(nd3;T)N_f0`%t`CDWTNuC0}p06`<)FvzentHlQT>!V?qD!ujy^24q!rcR*Ga_y? zUyrA8jx8=dvQXffe7PCue!dz)b6O}oo;WH`k&DA@Gs2=;jD0C>YviLd;tq@k+!*7@ zI6Yww71ERx5C;7skG|P^yL$jzw(%^n8An2rY1C5LUoV{i;t$-^g&Hr9YF+zHu*uG> z77q-<+k@iGi2dDGnsd|3Vg+pPf@-rK0PXJh5D4 z2_;xbn{GF1+zgE_=FS-+|EDF5nS+MOY{Xl8FybLJqTnDs5@q~GX5?~aK0)&Pdb|VC zdy8_t$n$7W?VBz zx<=YoT7)l312(!SDf3u65^jj`L~rLU)W&4TKn^E=M=4s~R8311Qlu|+!- zDw*`%oFPqvd4qlpPp16Y)Ib5Pb=!5>S?RE6JuJfXjzF;-@1u!b#!A(1Xfv!ZfwP^^ zfpj0cU=pP5yK%|P#mwxc*|f9uinE)s#J1HlHWx=;cWw5%wpE`9!^San!Kg;KK;ydv}((1)gY8^RWZbK|fCugZ6FOMI(+HFaR3R)R}39|-G#S5^d49tMYzKTU@{{6@V<&t;Js6aewA7V34q6BvU( zq#^eU-#|^!6x8)rT}f+6ThIko5MOCLljcWTNY-{_avOqe8-cZB7^vxs{C6xJDedob zDUT}UUpoZ;T^v8!uMvd)wE^<=12BqiM^I{l?`vQ=Z^);E20f7+0W5IWbbakL;m!n* zp63}}8H4SO9=|Wj>8ugPS-vzBoPQocZ_X@ueG)g5NW zQNu$6;}oK$XuqRv_W@kYs2o6)oKmISMs;l(?6(e2tcGc*x>);e4zZ4*FL0q1jluTF z3@+ho?BbFug-)f0`l1d9 zry@5ave(d|E(Nhr8kqg6WqLPAEZfNg>phD90%Y`B^uB`yeUK!+DlC4nhosd`?xoDM)q4U`60dpo%b^@eHHs;zkG#-uv!2acGA>C+~`!5WeGq^!hNiu zJ|zN;wJ`-ko5MOOxO^({)ufoEwXDLDlW{*g8G&1r^}k)q=FaO?7i7jw)6ba=<7v$o zNjA%gV!8uXmd>+LR0VXS3)Rh=UdcQvBZqoprA}`)F?VgVmdQ(3fhct1qC8Lt8A^d= z^&Z4ALQsp0Hp{wSvd zEmun>1Js%kPl7WCWy8^cj`dZ77nR_TLV~utVE%F%h&u4Ojg}5rOahZq1#jqOCdqgD zxpoq zVXxMuE9QrcRSC^X+yQM5_KEbrcDLA9IR>rYW8#l*oaTQUsPG>axc?jwOS&5WSA+YX z!(usmJFEX{aIjGgL<42Qvv%(qszqC<+_KZ+;+kFR zS0p>fuVF`{$Y;rY52f@E*U0HG9z@JH%Mnz}GZfCk{Kmp2O_|38W_t^++B+NQdYNVE z-nN}*?%ij&ywyKf{(OESz05`Qih6ifK@wo6PEfV;(x)!K=7j$Wra0P*F3L%W!W(QXjE zi^GdI?CkW1KN^elJ|WOR@(7E>azF+}cQ~2RkLu$?x{n6duX>jwSa7ZhAG8=I(rO)N z>sW=Ar8;{hflOkCVnlSAsrqMshqExcLJGVH2l?7Ax{+@ms|zMTUQ2j_F71fTg!$}t zmG)5f%x!{SnAb!*QL4JktW=cQUfxZC0%4C-V)Bw}4?c+;5i6>H6b7fl{19g#9Tkvc z_6FsO=oId7T0>Bz(Z9nptikvD7~DuioMTY2oRO$X$(ERb)Q+X{XoOWJ^#qpXm*YKw zM6j#AX3(}A%0ihCu`aCXZnmpO;DD<&`ynmM-*Rtjy$~q_LWn z93G&qN_h^Y{Q#@6;PkYlZ~I++%+RIuCPNP*DyMe}! zgMQ^)>u*`+67<5r($ixUwam)}of0E~BWG%3@D$Zn!zuriOb7$RSUNE)eH%_r+VMVO zYL@XBj$_*vY!x~VlZ?9h!&yV9j{0K03~r@lzQWK4XBlyXFZK11FZEMlrebSXQ1P|B z+B-Ou>N{d>g$IIfFrR*jNix*0&D~f*BS!} ztFNNOwGs(WsxHo|%rK3q`TIv;`IT;|{1kvg`_!MmsMag@S){%be?C-w00QGq?^1oP z7=OMm?DRmhO>o;OE;L81)hNlToAK{(%$Dww=f8cWQ_FO$h>SGa#*I zT6ykU9Yv=V>XS4uwF0_Cj4=+1Z!qrrK{w+xq^=WRw$)1JL(OP~uZkQhN?5D z(dIW<(YVz+XJAuS^lVx^+5Yfub3OQ5@rY;#$kcK5%!|Z^DNxgCh7c^E-PvlYZ`rBs zn(@$Q2O-=pkuh7lP8h`UvN!8qd+4JF@6lG~u1MDCF=leu4sW};Z$)7Lxjh5VhZA}^ zEQ0VjF}k?swcpB?pt(`v0%$#hj1mf{P(1+u{mQK&`b(I{;|P~znH$0|#|ihRz!@_@ z)DW|8kRW(it89`u>jkerfNOEo7cm}(V_2l?S{yr1uPmQ@Q5in73}?fVL)#LGyA0y3 z93xDVVQ)y70nnz|K{HC~nsl@4TyEk6Cy?QY?~9S7p-F7^>~OdXwMwApj`zEtVXs|r zITdA;G@MABqs}yRirpB`Ew2T%4uK864h_~-sF;*}z8fCMf0_4TSrlYh0yQhnM?XrZ zUj{oW{&_L-!<)3|1mx8V=a=^&Qc`M5i!LOz2E?12>nNgC{qs(D)p|DrQ4M}BfA-B`rg(fR|6#C5FdbZI>Sch6t= zo9dTHfxjy+kUMv4GM{Qq4tKGCB}UqK0EIdKIA6gm3s~Jp2P}(?t`pEC=cVxTP>L+! zk>(0diyiR`RZdGsm;@DeQMiMYykHNC_E^n`EK#}77%g#EM*q5c;Tpt+;5a#C`ua#= z-D2>C)t-6!h%oHxbOhg=iuov{ZV3y(sio8@TN3sR4EWIa^`!5_!aF|^^)LQX>3+ZZ z13e&%0DS)P%i4v+K9rTT`k^3fbZ+rZi~B+)Zya2_(k>)^>zwkL{Dl{(3QgD=4Qs^F(8#28m5Fq=+*5h+JNCc6uU{jfO6~@5%C;*=&QU5`Jh(d`14PFr!*CY~NWs?wbv zx~&696lF-bzAKKH;NnUIvoK^8y7k@JNCd^xqX)CZap-BZ`S9_26n%M^yS%RgeG74$ zSjiwS1257c>?bEvMX@b=Du|Su2o!?sHtdF-UKbP6nNFru#~Sa-nc|DD^&>kfV+cl9 z<>}2Zr!Jc$kFGX9(^Z8$%29ZDXu3LO&_0F=C}m+!j@3xZM@Kib78);wI~dIpm!%Nu zd1$wvtf1Z9V&Z50`KVY~&8h;isi)+iEf%vz;iRGqUcaLP4!vI)_vLgRTAX8iMt{wx zrPP!B}+fBFXFr zorAd~x^czUK_$IBfU@e8$z4(D<2|9-uHhYGG|BbOT$OQnSy&LY8gpoON&`=9yKGg? z7*Qadq-F{HQC(W2#s3IKcr!~bEF|4M&XG|P?Z}!R0i0?L_ zP~XC8i1mXgt{WE3<2P3BlUYvpDMZlm2F zb{uiSt)U1@u2#G1mux_}OO`sqRvb?HdVzjh)mBsx^6+?W)r^b;ar?OM--UNfw;PxQ zuq}YXVf!yc*2-;B!1v8*$bXJJm9^^r^;R0q{evy-IeN6zL*smew!5Xu?2H*xI z`(22xQF<+FJ!}sc20Rb3;ro;EH>t4eh%wl6+@~)A7D4j|ESuowvEQdq^4bQE(|Bm1;!KUG5tE>kk>R9+K!rm~$S zkXKrdU$bjIxLsrNgA6w0e<=CUxaZ^H3LFbUd%w)A<>zqGEKWP-yUD{}L)POn>Glq_ zI{F2&T@#FvS&khaSEiy!>kGXMq7tW~$o)=5kqKoG=`B@~Nt;0^pi$k-kI7hiAjC&$#O0w~ zXh(~&l4I59Y!GK`kA#vESno>RGZ&aa%sJ`(&>?apajBVc@&)|t6>MZMrU+9(WjL^# zF2yiD`_=yeQjb&~BH-+xAXCZe2U9QBRNmHNbJz#k;em<3u#ZQ$|8KHJq0VZBn4RvI zW0RTl^V_O&&ldHw*yhWGb*@3tF+Ju=^JKOej zkapw_H=-h2stdpSb$f>S|BJ78jIu0R(zUD7wr$(aO53*W%$>Gv+qP}H(zea2bmo_* zZ=e27-|lnQ9{cC~vBnxPB4)%J&wI$`GN-F}MHuf1)OsUCt!4@*Wj+87c!7exeH!}k zNAfM25=(kb8~#Jy@nI&ZSA5}{@2Mw0t5<$zhcUe40QA)-l$6=euOj}c%smYT%00GyoU80}Vx0BKxVLz>%M49}=*9 zc~D;UnP%C2p7Wew@mx{RZTNFT{d@S&p}L$5wSIvlxFr0kQ`*epmAY3gBwS182&(|K zOwKfLM+O@UwpT_{poTbS=o}Vw2w%}~`zzfZn|v__S>h~`CXw{gm|f*=9&4_mx>kM_ zjRHsM;^R^;{OB8)(+Qpb^)HN+e@qU9v!gZDzB8i2cSa=re`iElJ7bgolM18N&eV|A zP`-Fmq%p+UL_{b>MPLz;5Ups{D@O8`F(@b^q^=O~3>c<{#zFGm3aVY~u1ue@TU-#U z^(Q%PdjDkkT#tUzHa|@xKuE|>-`Ti+ZM|*detzDx?kI$bYNtA&bR)$`aL^rq$W8#> z!=lKtsQOKLsK8VNbA!sFeC#oqz>Jghf5{snfelwlU?eE`D}C>sI%&fU8vZuH5Qp$* zMv}%{5~m9YPEwDCSl7TT#6YebCE>XqK{osrx|eRcX$~;k@?4BK+49gUXE_~o5%dyR z_neM^rXNQ#=?+XH>Biqy1g&6bOAvcxXu+WF5jqRQo^C<`HpHr7NCUChRhYRrM(P-? z)9U>)6N5ZDd1LcdKt(IBwvG1xoZ2E;8>3}WJy^YckDRXJZ-h=0$q4;3!^@WwZE z&?Z(64jn{nIKnKoTjC}UHSuAoC603$mN{XZTZeGn*U#KB8a_T~tQ=I}L4yQ`*>`(N zw}Q17i;SCbf7=X#k8=_VrznX^nFr^JRsI6RV>q9HkFJD285HK zCciPNF(3d37_!Z!WUV))Q<45u! zHH8d}Rig+|$dYZ*sb*sNnDLpt)}Bc40~gZCJaHJ*-}x9TBc{U%-nA@HbP zK~hM3s<)7QDz}(?r9j9p@E2Yz0$STQdloLeBCcvvjajWIzu2g?FE(iM#BG=G*)I#*R*azb*NnmP3_B_%exIvaVa6-cag57hUj zr4T%HECa58@e2*&ZWm2)FJ=s1?*h18T1_~}0Uu6G2+Fj0g&~A^R(D|r}O6@6|QiNKYmkdH?id6M09!^W8pqdx43h#?n2j2@LPKlDv zLU{gJF6K{mGWZM)6HM8*b2?X@63wkYU^IgFSz3Yx2C-f@ErABnP=E`}e!UmA7|cE% zE}Wv>bn-3$|LTHYZ6eZa-V?xboxg_C1^|J0E7`xWZTTHqwf$_h!y@foi1TEZF`Pq5 zqNM5ZpLbXkt;zSoLhV*6tI}o)FBY!N7-|@ipvfgjE-o7sP0Ih#DQ-bag4G)5Z~AJy zDYMOHD(DA&u|;wiw5VOlH90eWjlDrjCBYY@`CdcrXyyP#{{%Mv5F zLr;-C6v2Py8Jl8zZ*f$suHqNiRAG@e#G6>w?RBvOwqAqR`zJOm-*K8`Ifi&uk%Z0p zuc?-lgD3!-qT}3>$iC;?8W8F zkL8Uxrm!!O_BF9byGhyBbh)H$?(K0RI2&I=@5{?nps0+Sinj+#( z&^|N>cU|^~NT+{p(|Q0)L_~!D?(sX8+>xoP+_ON5Afn6=yu)`{k2q6fKu(?HyIb?2 zbt<}LaHpVv>Tob`q1xielBF%~?c=L#4+-g&S6y>M{@lJW#{mDiV~^~AL6J+qHCb1m zK7yA4ZGZTG-PMjgPX35M|M)TWP4D{mTY&#D)Baa&YqA=o7s?Xur>;w4It{SDNKBAb zdm<@G7zF}CKLP<3(6m4pipi=p8+2wiz$K+H)TTM5rDc7&Qd8MuwQLaz(pquBL#v{> z)Ta5#;O4ET@?$$wra=NNf86fG?Z(&V>)_+0T@BA2g^vam8>kI^l*LPUPz?APgAZ@_ z-uq|O2sr>S`Suaq#gn(!{{x7l<{ZCInlb@=Ab`7EJiUle}$2SG8Zz|W9A6$fTqK6Kr$!H3Vq+V9DS&&?=L*zPaY zAv+e&-h`ii{Fcv3Kb)VPeyHu!EAHyCzRPGjXe)l|@O=o4@)!I0j!*VFzmxlY?W5w> zo&)_P6wV>@0$M-Lc+Ch|xAfQF;(PGZz+^|Bn-E zVS{`oDxsFwHshX?Y@Cb&s3$vccNprKWaCC_!ns2wq&W3Cf*i+^N~+tM6ymPgwMR#U z9e&bnjQ>pMgc^)p{*G@KuSE3incVm?ZeV8ZO7YfA~E3#)CQdOV<`fb{=-Hp zq@9MCnOIeH+?Y-_Ck*M{HjEi;{m8hD)a=7aQ^WCX>C$w0NuW7Nppp|nSX~4g`u-9c z94b;|j_7Q7vTe92*pa_;WtmeD(lk4)X!1kJZOXuJB6A zaCOPkPj_drA|e`!j^&5W9gSQ9-d@U!Fq7Yk+duv~lNCOar-aSLEOCa-n2A8m8xP!O zTj10qU)7hv5PBQyFP(4Fu)*)jv@BS3tc{>mCA(A+6BH9O3y6$eg&~FuLNyUF*lF}yD~vlATk;@?i6&T8@+@y#kW;Gej#ki;&&&Zsi#pBaW-(={AO}* zm)GAu-SXJjGA>23S;IKDBEEx(=ur&U%A1qrM4W^kExN2IkK1S2V;APTMu5nc>gc7tv4(`s5Y*{J5e;<%9K8Y*?RI z*_}Ds^Sy@dl#D|#;TwlIGW`h54$8=lFpOGLb0Ax3kr%7Y8775giV_G+aemVo#XV4R zdcpH*0^X==l*YR*n+9R-0i$Z+=xKZB@UY1hgvXKL8S46B!G?$*9AeaY$ClivcEl*Q z6e;$!rIUmVl3rx-F7;$C%!-l8S8LM)2*m|a&7u*MokI0RNQQ75ihD1A*2(jxIlKAT5Zbsi|1&hY*hDFKBW*q{%IU-PnQ~I=UV$ zMy?~|ofIW)8rP?lH(_CMdjKxw6ijvStyl$u%2*8bVql)>gmg)Gsaf4}N0PYdDX=Y9 z9_8iXMbi7{Lz4AWY6W(#mvoa3@M`cs4Y@|8X7Erb7<;y(`HglS%@f{Ec4peLmqaos{s)zDG* zztZrFNzGncA7(0OzF~ECSb0)gBOB$_u<1}&%>2UJy82u8u;sME&0200%A)Xx(}VML zAk3i9d=W{E@l_|2*I#15v9Wz&?3-vLT7?+C;Ffj*=jk`=n3Yc$8Ex7*I@q$=Zpz>+N;erU z-ZP9$C89$={=Q7eX)c4cEI;`dEg8A0CId)smZ{1Ci5@4z_0TJAlYg z@yEDv(#UHgoXr8xKEF8^OFcvSdghe1EN%64eA=VaXIVYX6N&mS{6t$OwRI%?jqr9B z4qv0`qv=cyU?U?=@ggdcQS|6bQOUU}?au9|7%ZDk#UV$P7#{A~DQd%2wo94yyCf?c zb{*OEgZ0bvJ%p-hR=QkY%b78gcU5MC3P76lQQ=zJjG05)Pn-gLmAGx3bR+TUU%~C~ zNZnY!2mxz8FGZ7uB3qo9<=mk-&L?f4FQe{aTWgI=-wd<$lhq&obj>A7``Ej;ypUnp z6uNIYRVTTX`<^@MiS3V*_kY1*-8q;Gw_~%&!L9^5RFH@ubBIDWbzIq_KY0 zCEs|bX|KTILk6PTJ4;|GwWO3XHuFU~V`-$8Fm4%L3fxg9-FlB4q-h+{|IPL9XQi8} zxR>H=On&6728L)(L4SK=XoY{6Puux8pW~X)b4&P}x-0NW{|iss!yYuCOY~F@y96N~ z$>7gGb7`J6-hm4t=Eg@acfV*KT-2ymXRrT__#t-3y5AQD1>0dbkUA zU$KIKmOHROzYSkX(^FwN8mOj70Adsza@;L=&Cr*hN>(xK#5Rsd02HfcRCDte@J{&@ z8;^+gAI0DWpOLUsi?YM|veE{0}K5ZHc z`gZ6>@Nu;SNsTtkFs~n#TB(2YE6|6@lQFS?)KeHarpyp*U~i5VWGDuvwciM+?5S1v z+4jA;HSY*TZ)A_gppsM3w$=;pmj@8}Apbnl@f{i993xz~E>tJ0S2%8sddr4khH9PK z;@vC^c&j7pI$~K30=G3e@3-+)aYrZ2sc%nT@Y2M1GNO(qK`QaOU|CZlm+W~f6UpqF z36}W5{g#fVrZ+iyH4!!*m#=xS_*lN*4Pl|vW2e5sKr>NLHKPc`1|QTOM6l*kxXw%- zIi~6b;rD{FVtyRv0hz;C?PbyxUxkxE5C z&%5bN{=lLrP?%>QPd?rcK-NgP%#&_s_hxtxEP=^yiXjBP7Gk^}wdU~)rb%T$_JPJ5 zP)(6xmSvjr#7NK$c|c*5b}G)5i`@lvdO`sz1=}$QRpelnN|M=O$jDMsv z`?xw-hGTrdEqM4q=?VvZg{G2`)yC}a6Mw^`D0XT)iK)#E)r@zE1Da_~2x6nbfo@sK z7=~J&Q6wI)6g{t?UtZS?XS5VsIYv1iN|-qc1d@}tAXfk*SC5uM1~RM9K2sOSGkNdL zM?Du~tWRl#yIF!Hle*)unJBxAj3hz25yYXu{zH#iM&E48SGw4k@9Tld1A0+XDCLrX z+A4OPQC-i~BpVEWWDX`ujY3ji!CsBt1x#-zl9rQOiQna^Kt3gQj4GGx+|Jabl_5xG zvt29Se)j8McpU%e5h0fL0Ly&~2rR#u{r{ev;_md#j{m2E;GgPJNH^srR6bXx#P)O^ zf-VGOR|qNtAV?B~Um%c#abs~oBzb<6xC2s5OzGjw$P~>gRZ^5T)ys5-mHYDn&J}?P zeu@r4_5u#*Pu^Drs@2sh8(&?tu?$|t&9@cf=m46g7>PxrIlFgGWy@C=)yi-DX?xo~c0g!r&|ya{;6C&cd$WkrGS zUQ=SR3xpDK;vS0gN(nhBk5NTtq`c&3?h>J--2`VM67&)t8uQc%y2+0jMJuG;gl94m zb`l<1^W1#j4p)hfeEj@zkNHLXQm>Iky^^n)MX@B_G-t>XzNwGpMYAN{bZ7VpJ#mk6 z5?=|A#YMhSuM=W=3+!D>U;4}eMF{TziTGsd%>iPO7P)U1q;Q;-G)JGQ9&vC9|J0p71$Rb;hF-# z6^3)dOeivR&>|hpGy}QgjZNhp@%1cs`xEN~2Rs6NBM;P-=qoFCQw)iPjuuX^M!n;6 zO3bdC+}c{Q(7WFyQp$x@YA7_+PnDuwxZqH%_l=H^v8BTld-W1!Qo z360X({jU`hyT&$_)41c=Dz1Y`B(4j~OWfr60D=+K)RGN9Sf!#W3RayKbLq6|BA*QM|<^GeW zcU;dbX?AfoaTV0h)i28%Yf#{sTFZ7M;_e0ICB`n}FC~;*Pt?%Sc8IF+bex)x=$i{w zadTFtB%6r=2+W@uUqF)aw8rLqmWDkviR(eCXm_*OaQ95NS_3zli;M(aZ3Psrf}{;5 zoNt*{=6H}1Jcc7wb;^(<8ihLGL9!G2{|c+Mv0zx)jjo?NYqD@kv1=G9{%$+i4SiqQ zva!K(Awr0HPfov_i7;2_f+uduUp98rp(tN+B^@jS6Yp+wv32FBAq^;bi-#Jk{s}q# zm=aHk$quar-h@BSUPRG&f+Rb8#4WEU*%_%?C#(k3a@=aRf6F@DaZtS;z)-698IP$t zpo#j*`3>}sEf>kpoi~BfnY^`ph3#D}kk4?TFhuEn#?-0#?cAi2pZnXi7Na_habH+K z=xu{<*3mX!kR6i$D+*Ov;S`?yJ-@7%yMql&3;z#x=!Bg}&k(x<7|2dDC-wT=br9<#4?nyWHL!CX^V$IxAsy;?^FVGdZ^(EGy1$ zy5k7T3*@en&SvP?WsXKk)2oQk75_@wwc(S9*=ys-G($uaGzD8kC0fG_5oPruKrM#` zV(D+(--ECshzFoh-I-6p;7`zXST;auk?eH}C~Z?TkpYFMMEsH(Z(>5^P& zm?}C%r0c_&A}LzK%F!67iKu9Rj%DSAf1ywt7Nix0At_LmRneIamjky?APVEXZWucF z>QPnCC640{&*>b{D-Rj3M*aHt?Qa%JSz>IZ7Knc>g6lQeStUjk3x0>^BdL(s{J+%t|`TilW5aaZhH4^Z%;5< z4cM$YN>|0Y33toF^4`^tdLl-~-VxaZg>mZy)sHh;H8d#VyPDS#xXQ6bCVmM`KqM05j4 zhsXx-4##0)1Bg+c+0kktMOK74v`5WJmf%V>v}GTClHGxq#2_9|??JQeqfDbt57eDQ zeo6D!)TEZ1!SEmBMStp(n6P%NbjS-oQEQ^V)=IB#JELQ|`u*`TMHs2W`{iO{-R<7! zPk=4xT(~@3pB+~pdrZ=yMm{x_rfY0g>)u+y3rF9``pvYlbmqW{q|ZohBaJE81F$vk zYJSoZpjQKZwg89vsd3v=-(rC;`)%N~;kFI>5B8mK+-mNI0lNZ;;c|d&9`&67jpB0r z%mVD%?mEMD;XQN1b^Uzqg!96?eZqNu>pS7T1?|JeeHPrs=eQN=L+8FFz1=Mqd$vRQ z`0dX=$MA}1)8fGEmIRI&p?%Nd7<`<>Vp|(1zE`jsq!V# zK-zb0nD-De%Frz+h4FCMu2V<~{17W1FB+net(S0aaRlXBxC7Ma@uL#}?PH~B&(^kO zZItKsNH+l|eMxGU+vDF+g<(R>>==(o!>@n4agVCivz=X+K)IY0tlc~E_rQALTOaER zKkj#$pY<6r6No%JIzngPM!TYXxc`<-dCq13(3$c}pS;~Au@+p>Rq^^KRd03@FN^*Q z9ab6Kc`=XAj#QuuDuDjzi6|l@bqT0yO|($vxDSd3JeF%we`xYkw-=&BTae1J2B)1B zxt$fhlLwn~(abv1!WvGG9o9$$Jm>v-5V7_2(?f0+^dQ!ZWTe_-8L@uG0E7Dv2h!EP zopn^_^8wa@?Pu9YTPlAEBi?STdDO@IUeq0fFQXC8&}x_igc0(H5=PeEtYMvZC}WFZ zS5Q6ffl3t12sTD1y`E3&yQFV-TW#Rn!X%iP&bxxYGOt)~A^PdlBa=SO3~sO+E$#Rnfjv!rE`gZC-}lhl1BwBTk)a>TN_Vtj%i?} z;<+`pwM@B_bscYUj%^@7GTSO}i&AYOW~5rV>Ld=^XI22N{PqK(13&rTr|||~#xMAJ z;lp{BAww`;;pDN>m#}d|50o`$1lAMA!?%M|o=|z$oL{_dNT`>T%J-%5HnY3JJdqQx zH~`*Qb$n44-CyszLEEVaFR6%kYNvRI>q22i0v@=Vc76vk@4X^7^Ba$dhHsQ*wWqv6 z*MU6{(CGIDjk?@+0m8%sjF-fjPCW9PQpw#cHrvIGIs^WtHxvY$8S=VVu< z!HIuW+n_gB=5dbGlT^UyT!YQ9qs^?>l;Fz~p?FNLbuH^E6mJb067se!c$DZTlBZfAl8e;3=&nZ}ExLbB^n@&Ka8O0a`d z|L(oC$ph487&lGOuZ1|&H+H8GYJfKW40uyUj8Aju#s%IxLc=9vhcJ1+*V=Ba{-H?{{&I-6bchIT;a8Rqq#$)Zy!e#NZQ}=AOxyf})sQdVpbJvu1%|E`a_i^p~KqJ3@hAotKt%Y{&)FJh( z!*zpmAKP@G=8~QNAbF%-=Ht_J23IRyMKzRyhCjRzmWh z(k=sAW9xsiFp^c@oRC#eK3ilm>$Vgrf)#&3$dkz6|8$qEhiVolwV6w~m+vQSw`tkB z9+@torGTLN{y|VZW8Ep}6$T0gPDC9%7xuo%J&T3yZ1IRoIoB<;pKN>LJ-yAepO}6< zzoqIaM3{QC^vxsn-jJ2Y+`Ht;tP3KT)n4_{qsl5h~=vQ!5xq7dkl4 zN(Q?>FE`fxvz?tn2HDZ{nX$<5X9zGuF;09SsvoV1B3BoJAM!8B;K-&3gplH!GJK7c&WDdZ6eUEijI~m?#1net*yE3m9>Sf$wn^Jq)td;m0r>Q zin1#h(Z?b@sjx5$_!|8CfJewgLoFuCshgQcE~*}Mo|BsgYz;66b`8&Sg#TV zTQN=wsH`+|*?62ZS$rRLlq87UC7B-`Mq|#l3*@t^^69~CO0D}P_G4vXD^ z7uVqGA4wQN@#6-#S;3D~4!(cGD-`M7$LVa5W#(NWrS+rLBE(0-_g{7?vn}xhZ2`%YH(vfu; zA@wQ?3CAcOE!au>4HTB3>q^CJUEYM2!5^0Xx)ZTR+E42i z(1BcUrph3Znq~Ql)yk}0kxwjL^n;6k*Iev{TVqhPnw2Y{G`XtMvRlHmh5`p1tjRf2 z^pOHXP_rC=2A0^6YrVHs>|yc!zC~E3Ok?g&4R;$cO$P8i9uR|CeLXGB;vXE9(eFX< z>L$I+ghaq|@OI!78OP{IKjFLbjP3CeH4_AN% zZzQ@TTBN25pAuJjZpUy^EH_D>Gh222l{ngA>q)A>i$y=339Hg0dZ;MKvnW|P$f>^k zLmDxhKlAk)Oq;utnRhl=t<<_tx)cd2Wy{F`X+ZkEl?167{6$VGUdGW4%x{iTZ4@tY z7Qlu`c*CjTj=zF9`9h5jBp-vc_MVkI_W5M&BztdiOTwMmp!pXZr7HCO!J*|RHmB|W zxs_(JqAkQuP=bI20O$eBSF}7}XLmBs8mNb^<^!r`>m`!SAI5aNyUq^j9F|Kh4=oa+ zB!@tgM?MqN78D34R>?EqHBo)aomY15m?b}(Fsack4b5O+Z*Mg~i~=}lCqxX=hEXln z0J~5GiWzicE+_DVeB~&~)3L6Tf|{a}{P%iNXz%b!R;H!a#Q6jkb6FMjr2b!(MafpK z`^t4{+#}ni?PHwj9Xq%7jmv%|&K%;phqTdAM@l+|6LiRPBm-@-D(Y1c9eh1DiBei< zDlxGcJTY)WaD-tvBk_q#6YCX*2EVc%wQF4Y1nfI(y z8}l~_qib4aSCjPF!m{?5YDbZ2FNxCdhBG#_%iiGi^I*)yBWY%JO9Z`jy&UJTe}1>0R(!6e~8h zrp>EwKY;(cXc(U&>vR0u-!B^c|Iz;X?}_F=+h58$|KLLS$Tp0J0HB*N5b9Bj7USke z&_HNuTMRV?fs18|md`mR9o1WCIvpB!N1J^Iq-s45WN@X-03`>>=%4UkA+K4}Y_KFV zyT%PCyf>o{d^e-lxxQboKoZ(Rg*37T9pE2nb9cHa9U9K*ll$IYc?Xtg4{arjE1suq zal@f)`8Djxj|ym!&uyWK5~H-Zt)Q~1-d18EQYEct6TkW>Jab^sbQ3^ zVd4cdFqepCloYs@u(Z%xA9HYOzSxHA8l$XC znEJdvqLXVGW^>RRSY;8$D?kDF0t|0g2^hXVKMFrEs!u(1MM}$Atb^%sEp(jj>ZSp2 z?($VHzSahO{_s&T`nU1|E{E}budS`VUN$d$WxmDLBG5tsS>usg$%R)bTVM2(bz7o< z6DVg@{ucwI*Cf1)43yKTW}aVn)cNJnvc-ELH;c?(riAjP=w<7k2CVBzXLy+}!%NMq)ERz$g%3cT@dhWeouT+ehcI2T*2i*(GU0@;Yp zFa#tlk*FMcmIBti_BXBC=eHSWJ1Gng1NLL^WOqjosymSRkT`+ZY*xgCB8g@b>u zB$Sk&>ZHE{2bZHmk84~(iY8qs%XZEKq&}kfBzLTcO0!??a(i{_DdNEE{Q1-myT&&Y zt~L#cZM6H?Ubt}@rx7njY0NUDHCgEwq-e)9a?l;Z%aCz|;=RQippD#86GX3$C=O6z zgp(gKC+BiP{{EN2-;e)rPyMbn|LghYE&MM_1pjIY_>WSRuX(HHA6t0(aQ|-Y06;IR zEaGBf3y}W5d+5=sR!-PUm_9Ldx)K`J`@0z2aU5}E4Ror8^FIiSTyR3$6mTr5B?z0w zHFYO5$2uo0k9Hq{nov%0*XL7Onu^(b9)%9r*py74A(%hFKM=Fe=*{1<8ZShemoaC} zXWU(9-E*JZYuA0>Pj2uDV~9SJ`U$nC2_mg5Btx{14;5t$bOY1<$>bW;W3udx7bo{K*^URI7k@@*+nU{?da*{=?p@6PmQwW4 zkgOFy!&ZDPNzzT8Z!LPvNYa(ti-!4ji8Ft$3AuqZS3`&O?6HLkqx7#SS#YfMI;GWP zPl;CCsFJBw7vx>Kb5N`_Y_)rY0t*ba_<#1h> zl4%&~j#&NUDXg9ZaW~MqJp~~~Dr;rT?uRSZZfQoza*dm>Sxi==E6ixIbKC{88JcuL zBC`AXAzCwGD~E2E&9#Cx*Ca9&QQQF7PwD-~+ExO){cvWo&1h)KBOn@=9Y`t`cO4cF zn@Fn$o@$jvI!>FY{)+)7*v=PhxRUHLc5G$KfGedJ|4Vxm!&a+pYmJ&U8gL0?1wOfl z8jZ$`oHMFrY>W*WOtvYw6>E+f_A~Gje(oiA8_AHGSXL|(%6OI0a^xkC-!zzCr%|Mx zdA*JEVnsi3V-2L~#GGM>ONnCxW(1V=6DF7lfjqe!mCL22pSLgEu*jXY2TVi>3T#=t z^hV+BmG#XBES63}tw*ufclnDd^v7~hh_QUi4rIDW>$tgQv3!aSMxVoDB)X~(O54iz zzI8@1u7G!--o;yL+?)LsE}uXRT)iPDuAEWSZ{*({o+<0Q>?ni}J$i>mf}(_EXfZ%t zQmhCdELo_CB@#ni%xsJGnRgJ&G2^kbEsnUl${WnB|op=Ol%{+XD;6 zkNpC32^)1KE_{2%zu9~lyJREDW-#}XZpGQ0)%9i{y1Fdoa>tOat{WZ4bv*C(xn-TZ z!VF3Q+4;hyXQyHfj=PE$E*o*vI=$WSA%rR@ixJx~4PFc`1cg3T!_V1YfX$=y=|1WS zj7v7hnRc|92QI$oM0)KLL?67AXH={dI1_fFmvBYX&_)b9VZlZU>dKtj8fW0LjC;gu zEyD@c74+@JH48LOQ2H-JahkPJGx`!AMWpUku|7Y}rC5Ns@)bAXA;s>i1|P0a0Fr}~ zV3>0lH`E=*3XJP*&WLBM()@>~8<3o1D#j>q6r{MIsGA7Cbg?xR@@;m%dxPP!DMa}G+@hOzwCavOz-aha`V|kM z5zR}(+1f!Ty~Y&xUui~xHhq!U$3L`faqG3;>GnAt&>`DNpmXyoTQ9uskT0jaA+Fk; zi>`@2_&8D8PaG4(L$GcNPuvU%>cMn=ZW2BshCGqDfS|+{W?nF}B#UH-%*jZ0+M|7> z8K!3q>Ly7zWN0!kW)_`2dO}ezH>M1lyfj z+!dm8qn~DnmqzCkmA@}GigafrkwA^|mhe3iuauZey_D*D+VOo*-NACnP0AU9wmS87 z!-e<3N>vaARySas2utstt5H>!l#{wQaaOU@II>C9k7>dy~2nPiNqn^^x;ZxlD3u1wbPiR?=4`Gywip7uE zYD0MBcQu}-h|uIZSJby8hNg%QNjGEESgO5WH)ec&{oD~*MRjV$_2Rx_zop=x?5ptg z&Cp)lnI=?rr6QJ7zy6C)^gnHM|JRgh=lEYq_Wxkn{ICurxWC;xNdBE$$M=cA{EeacTdx`vJj}6ZO|w?Ep-y%vr(9N`B-pZcj#S0G zl^WDgDd^7GaUtPE?D5mJqUNvgZ&cCYKW!Ewz<++Nx-{S6I?#9d1AwmZVR3D;oZP8J z1pu^zJuKg()ZiXj>H*mW+z7Ef5TeKI%58ZMh0Z^fOW{#a-pg?@u3vjd5xBfeIbHJg z@#{kkf$H*tcrK9C>ZB~6dvWsVn?kD@WYYA$fMD^`kTnUX3Ff+SetrKq;JCfPkv1v@ zu0!c8r_S2ElS7XXBgXvdM)N>Mc}a;h6Oa+7G<()Z}>6t08yfv(x7?{ zQ4{5aZfMBfSJ40e+T;CQw3J0rKt_F+H{IWVivO+5`ThcOhL+zPy#M|Ixc}I#@PV0v z>43?)fVsGU!HI&!B)#V?b|ozmiGs1h=2i_g2!CV^bpgD;imDb5k*s7$@^=#orn&%D zqF^<<@ACzR%B@pb%A#NfVUl5lo85!#v>l^;~DT*eVC#3O<227P;e5eoXUvv!rcq24M_m!dVGVJra4EtYqUB2Jw zpYI}LVE>=HE~=2O|L70uX0n|D>R5|KPzalfLjaIOL_n(f0eLp^5&9yF7ECf=Lf@oZ zh_;(I$t_e@>T?BqN)?`SPLD$z-@x8J{CuCAX%?9Uh^zZ$&)%o4x9e`Z&-atjT!lzo zoE3ZWC<4(yaZB<3#WtQ2!VmxgCagdab{&!`!W*l(c&L5qWg{UD1R;57O9;<(il8h6 zXmodFepsNuCh`DbySw@z;^s!!o4qdt{8%#h(NB1ZwNUK25V1qf*oiZvgqZ`ROGr)+ zMOz-y%+f$N(LvILrA7fBa(U0bG3X|^Yj!xSy8BJV0|4(j{gtfe6X5?Yu!jeX*1XKw4 zbqV6m4SO2SCv;%j5h@6p+6j-0!MOO7^k`8k)s%V^$erqtAL~R83X^C7lQ@%nARl47zqsUq--a+-2(D4iFD&J%JfEkv^c+A7ti7Y z>c}CV0fo;#qp`yCy-t5dnUmFum zfXIoQzu7$Wi(xT(SKu))F>u8QnPhjWDG+sm%0Nv7B5SDX_^~3`=!o&M9F5H?9hZbt zB`I@BI}Ph67rCZPV%CXBt!5vcWrbOT znJz0P@zr8U^h}=F0 zt@%tz2H1?61YC}o0pTu<&4h26oRmdJg-l`tPP)xjC1bnA)k0)Zg4m){k^y zGC_k9Pmd3nFBQyb(neuk{t@Mq69nQt346F_Ak-ae?oPH;HJ!5F20+~ja8L7>m`>o( zHpG6`9>Sp>0lQr1owdz7+nB6$zSwJ=ZRrM|Y%23xkU79BQxfWy`Kn7bY1Ts)U%v2RlNzBTBpphVpAk;FyL+4NDpSua zMVF^S-Sv^J=!w*W%^S5IjL{{WC4?g~ZK2u~#a@5S%G1`swzLai z97yd*+MW|TMH;{5YvwX!a>F9eJCYQaFFzAj4u!o>0V?>rTigiI%+k|Ny_lALt^ug! z`76G6SU#@>>u1SbEeIaLZ{LGH8PeSnrritgU85w(Iz8Hu4rJuh2=CC4Z3$sF6CqyT zyqXi?sD-1?v_Y5c!(LzSz?k$#-d_A8>#Uvo+WcU-HKH#6VK?Z>XK}zTuIMJmhnw_W zggbePTXl&$Q-RegoT4Ptd10U`WhN47jo!;#n{2{mjz~h|jPTWZABd(=ceVc#a}qvu z*z&KNS^W36)-vOF#zW$zsT0bm*|BF1yT4Ay!|0n|37oE3*1f7xD{dz#7_~~5Ab&i) zMk3A6;5NlW&O$_?@g~p!dS9C5eLW;H$)fp3~ zGdc{8Ien-GA(9zfjACOMg-z!(qbFRYdun)-8G7r#bozyP<`UYYKS9UmXeTz~-rx0m zMRnw>=ix_72xMV$M6V!fiS41BdnvNHK9{GM+$=QQLNKd7EX77`q$|$`&<1)EfVq-L z_0h9$Dgkse-PHpM-s4A%#$6IL^Ctv zR6$!o>|BYVTTuZJ+mvy1psqo`X$!?}x3wSh_4;+#?}Lwc`@umlQI3TIU?NWknM94F zCNPY~&X!=euFb~&vQ06I3msRC$YU(R(xSxHm@nh#t&tRQn1{R^^Rxm8@%|er9Podl z!ZXaoT|5ZC$WF~e!Ws&e2`cXxp(dv3Q@pa*Mo>ymrYSH+a)$84jvi3Fri@RQ?&m`= z#eyQ9#Yc$57k%=Vx{>8FLx*HY&&1p>(ua;3k}y1XojJ+ke~hCXg_(wyk;4>kM`0`e z0z>vPo0yl8YRx5YO%GAKg3Ur^jSaQ&*1~2w0Mj8*W8PPo-e)tRd@@~yM64saN)h%q~dMF!MxJU7}O0!Z}5LfLWq0-?hRUBr+1zC}oz-Jf~@#}FT zTaGz3Nw7sU8`6me*MF1vgIcg}@FSZ6 zyD?oJKbE;iU=2dOdTReHP(3Fg$9wrIoXK{`Hi;QzrtovuLszM36-6LW=r!CL9qG58 zyx$H~k_}YlQ%fm*py1T9!;)G0W_9x*6EVnLfO;miWWe*@teGCrk*5r#@@2NR3*?dT z27wYg)Le|>W(k~g9$L1!AUdJz??77^WLz=&lCyqoVg8&wx`H-vY+yHkfvy1r-NYsC zhP7b|KEgO_-QI<~!sBoyT3h)ys5?C8vQjF^J1||AuvD}Q^P(ywK{p`$?n}A`Yl-Fa zum7?m{GV5%Z(Z&G>>_?gp{0$}zg&y{VU1Vlj)Nlh9lOfkW$gcI`|zKqWK5i#49raa zd+d5AX(%BJAdG$uCNqNghf(Y!-u$S%@E*o40F(HIBy!gm3}bMRu(e(Vg+DB}8%X~e zpq5-*>qA^gGkLvb9p-0UJipPK^C>s$vhx1^aD<)V0Fz7+v+oAt0YY9N93z!w>{)>; z!$IpHx?eTK8U6r6C$4Sm8J=21Lf7aNoLz~uvf57P5O^gMGKfTcS+v$p>X4bujfB}! zh~&B!BNCT9Cc+p4sp}d`-GSb34Dtd21!R*t9dV|EYAy@MgJ6!?5-Ir$?Mgz0l1gn? z+_B2KiwQ7Umh^bH){ya_2nNXzMX)b(oc56CX?g*r#X{he1 zV}glip~hHL{1CB(Qco(XtinvyOZJg5r|wf}U0JFq6=wmKc$Q%>{sf4TR-tkYok_h+ zM@qV_}E zmZ0VGwp?br)b&qiwCTfHG3SxJHxPH|RjMkZLVb6TQJV^Cinx+W%pPbJ2Aalh*;NW) zkntET$#$)n*<{NFdjp{BSPCn*9wW$eu2 zs+I3L6VOJ$Z+=>oQwduJJr>P;+3s2(@8;tER4a($<)oLL{_4~<)Un!`5WT~)U%rlj z#HJa7YCaAYte=phA)ri|5Q{NO3^Jc13t8;l61rk(C$XB{aj$uE1j`W7>3u!Uw7T*s zg_{+8rm3gozbmv?O8DSye{X{+s@q?!j8qjXdg+PJ!lmf*$NXL*iUT>_M)bn{{e|GZ zWemEu+#id8-v{p;S|i3!12^BiDB0q43ZAhY)>3Qk^N2{hmVaYDVR5&N+9ZSf78TaV z&9C;v?nl3-=gD6+Oj_$1iAUQ*>K18vN6~9>=du$gDosFuOSm>slqjwy-jO~OZVfFV zm)6Wn(k<8IhuFD@#Q%Hc9umA66~}|WDPZvC z%#Zguc<0gN?B!qL_#eIf@6i3P=ikM#lY!g6#PL5)Rh7))cz?GxoW9BP4BzMf2Z-o9 zj{k8=003~bFmwi(IQ{ofj#iTSM;hj>&7MhOq9PJOK@sk^;5PYHr}-j|z=}XE${2R7 zJ9)uioJP1%z6btHuHIo7nTf>0*x|4jt9X-1Xl{-{v-j{kA@uz*gYFysYx z!dSD{0!Az}<;IRQRve!yDu7iYED}ye(qQaYY@j%p6v7R2o^`;v2P8Bv5Q*UG4!bVj^(=IzAOF~q&z@d+OMzr-q-R>S8D?~`R6L#W)i*%Y^M=z zkiouUTAoE0%1#M{D9uFN?zMiH!B)BDh1<6M|KsZ#qbuFAZB=X=728(Dwr$&HRcza~ z?Nn^5Vy9x;?^NH{-M9PQ`^Lx_$&Z{L-`;DlZ|*tgT5GMo@?gPQ9@^CLo4h5;`7%nM z7e($FjkuXox^s|kQ%>-N2lq41?ko-J`B{spQY_aIRP>ih`hsJbX$Z(4h1q>E>Nn~9 z(qHY3N|RS5Q)9B{XZ*uq-ZF3E^XqAG=Th{=QiwRu^9pvqoJ%S#Uh(Crk2CCj{HTQC zHcjuNU!mY}c@I6Q6IMga!nG0R;`5e!I;U+luM&A7UnzE6Ib=5Ws2z1J(Ns4q+{FNo zEc`~Sc3=~aR3OOf!gz~`tFR3=IYT;E1k|u9CF47(Q&)6k;#7Pss)tAPK*Gu71l%V_ z@5dwH@d}}SJ0}f1$d~bbdXV@8bcP^E18OOQFfc;lUpWl*uR__;&iqf& z|C@-BQ7hm00Q~C=fZ+Sfx7hEm{L{1rI0E{HX8HzJ|J!^dFt%2vj~*fDTXUgrLXtuN z0yNdgC!HlmxTRlJaUe3?sU!U&YeR%BJ_!8nX4!%6=q@BdOGGY(G$fsLdqFEhuu{pd(ngHBcv*n9#ojLz_-7mTlQcR zp?;%ILp9eoQWtV*$$#i`uK`UYXY8WaKvPF~uZ`|WcD9NrFZ^ijWE^L%9A$Z%KLMBV ztfM;9rv2tvoAZMlJ99c-so!qlN)xhH$?2jE!vS<2_l%)Tf4Pikgu$w?ADGQyMrl9GB1et=lX4*|GD@OpMI~TPzG7u31B7p04w>I zMe@H_5-_g9#N5=`LH}RPJgsAX{9eQ0Z{WF*fdXTL!(hN}`h24h!b)Lb3A5*-f6?s=K1G)t|?G$V*H10T|}=B5CaW%1V_1_`?xWgWaC= z9pNJia}=m116p0d_wCU73@rib2IrjbI^=GR9D0Qn|zacR2sv zo*E#b-1|Eh)5zq*)B(Dh9keRzxK)b~2Ax|s(Kcxo z(JT871UW*Gjj|24GOKLak~#FD+#^mX>IapTV8Qf_;geoaX45+SK7U~#{awIRyxj=! zO>Q{72Z}A{BrF~3tMfo;{#{y1)IB~3x~U0 z1e-EWLyP=b*NHI7_Nir;dXo=ji1?-`)Ut84$F!4%+*kCk0I z@jMfD%K?*I-9BL$7~F@pPkCPi;k~=f16pP>MZo!kF+kVvj$61NTx&jH{~e0IGpl09 z-0=ip{eIuJ2>vb?)lagv&xw2_5@R5LdHwuOem7|o3syGSm+5J9&hfC8ipM+kBR{0rO)JR% z&U}(h%c{+7&meru>}do+<&7PZdj`EH^fr%u?abX=*PTw;$f!<~9BG+~yCRVPrrVz0D>p<`pEB1wkE&MCtBZ36@9l&5VMrd%WWo~>AIbcyap>fwj z1?ku|TgUOZ6e}+2L|8@rY>%JUB$hCcpJyneG`dbmZ!v5V^(<2RS>HAo@76N}4L(L8PW9MC8&BB_~n{W8zJQsZS)5qHR+I3{9wQcA~X5m`{a2MCRd zyoaRXRnVW_cC}ONaGLA*)~MT&jST7fO&4-K(rCx(a+C9QOHqA~1IKoWx0_okf7~qS z28c4kbm&rg(9zH>3w1bc-z}W#%Vz(>{5{*W`JzL*Aq7=eH*Qp7$7ji}^Y2gVynC52 zyPQ{j7_km{f@&soXq!W$VtU!?pkpf=Phq`<5*+2EUzsNolCG;_LDTo?_}soPSf*#> zUhaqGP9d|or#M%>f&FJJK*JO3*8^ez91sr-e-{g4=Ee^C4u)p#fB1OJ9i5DA{uvwA z(F{-kQBv5{P>MNG?+6rS#@dQFF~k6|2H|vQqDDNVUB4d8fdv|VE4N>$hC${=|H}o_ zjn_Kfv_B{a4~!QEBZfYXZJ3{ul!zA)`LCZ>~iw>bU_My*&5s=+OXQgm=Oa`eqVo35iwIEd2J^$vqN zvY411g{JmlS62{E6mxE0e0c4*i{E!IaOCNSYD6Nu_?g%Wjw;tGbDD-~U`#vx#9I8O z?q@Q*<-*gSSH{F?@#MG88slN)c(;ygwL64SxO#3_^0qpxZaMQsbb45TU1-+}jT`$* zHjGz}5)HMVDrQKyaPm-vhb8T`ChK#^&7{tnn+iQx;vZtpQQeQGY%39e&IJvKM-*eW zB`W0*Z&umRlI^7)+lLH?>oOvU=aAAvtql)` zLTr7|Z;z2Ybns(WrjHy2LtQ^qMeKn>{h6ycz>lL~kCCpl77hN&p0~sQb#JJTGHNFU zFS^7HMN;W&(2(+1-$+Uo1JqhGnRd77N8&7nS{zBYR~pKs&>Q)$G!smeNu#$K=Dj-% zKQvY-QdCJcK@RJosw9?DOAx1opurjChngn58f2rTD@L97Sc> z-5PmX?Jl~o?XNhWe2=ZKjIiO5=hacVLWW(t%Gwu|wA9R9Ok$>vP^F>nQ2BX?*1VU}1j>rKKp}6umy$zCW7nBYRaZaYYrI7B z>?FA(6HfdiY`u4C$T$|63CW${DnLcCOKdZ=Y1S$l`R=kr8{?vf&)Q->by-9J>a(km z@{3a607^^_&{Qzz5uI~ zGO+%UF)qI?bw7S^O!kJzm`weFjxq95`(mpaq8@>tln42X-j9YgI;w|lgKDwH8h8m* zG*2|b7Zo9M)#(9ySga>(du|)M12#hZ!XbMa>vgq>ds47fSi0ASE-Vgk;{lY8Vluh< z!PVn8qXCew@s|#qkehn7<%K<)$8SzJj*E{=&CfjN9X3e5HoC*AH>3|PGC8z+=|aE<5_CJw&%&DC#^CFIOns z**y$j$AS+zCUv$B*>!rx)cO<`6=^K|8xKE+8-?ZH`@$^U4p>N zcg;&Cl5dMXKu;VLCcLjkYxc>WxqNIVS=+FQ&Mw&KzmzJ@dsn zz5n&g6z8Zj5Uj9bdrF7r&xuQ$kl~fQraUWYq^ATbb+%u1+#^cvkqVtrtQ|eyC~OtV znp03N9NxH*yzm&L^bkzR=hUG*yU6)HA)VCySf3$S#B;$R{T?L)oN*~Dc|Byc)BC8-7KoYMvtI&8L(>mDPhdB~FJLTtjQyNJ`OL$*(# z`rl}GLc&`%guPxq@NK#R+*)OrmOzGod> z0nfaO!SKG3?a)^_A=89XE#Dlnp4OT(4ShAK_QpQ5N5y zQXg<#(3Is{b6*BG|;NeQme|G8r#%l%-Uh3I^ck?vh^Ots&-#1}^yVlg$K}7%e z>_+!LUQvHxSD9JsKUMlM?~wg^dpl1!)v*)T-?0a` z2&K1-SEqPt?-15M`&e*tOb9}1Gz}cYedG(j4C9M{k-$t0fTli^|MspRBt4TE7m_B| zFfh_H(ldPjLm?h4bw+H5Q*lu4!AkX3qW? z^u_Cr7Kk8&L+tGb=QaN|k$&L*{&eyJuNEliw&?Hw~<@qJ;`>QnVlHmH@^hlr=Ux*ll`awqmT)aeHdo_#oP8|bnq z4JG6ZgB~DHdB#{pO!V23M?!Y%`HHBYoE^duqEUyiHK zUS=M@oq$##v(-v0;C)*%DKJhrVt%O&-1O;M9!`}4_SDL275AB}eA_jjxA2)f-(d^u zg;u+9M`iRh1gQ|YgLM%*C~&Bf311e%ibKP$@}u2RRMb{1;nx(D@CW_TS}1~rsbwBK zq|OTOyNiBlp$_uV^lL6-k``33y`putEbXi~`>aR`1eaVCrrpbmGVxy8cp zO3ww0-C2#sqD71P;XHeBi}aGp%JtK##+MzHv#zBq$IbL15U@BO-J8IdbBA+|kL8Q6 zALqNW1eiA^Bf*hw5`A-6Q7`n6WL_O_#&{Z6Qdk<7sF+=ped3rhPnXnL@yj=iUeZC; zmTo=4)Lw#Uo44D-UXmu8N!wglUFF-Jy^ol9q&pWh z5+sd=DP=TcbQ6wb^G*=qQ7?KCD~3@wVPqaP$VxaX#NilAJcA^>;E24Qm6JvmK5xg8 zo;9lzc?xJKL8Y%;)QjfNxeHjE)ZT{8WcfUH7?$#4A>eD4z=rJt;sRbK;A^L<9BvHO zr#%K)nk%N7tdCU0Dl}eI#%G(;xmvO_F~C)3@Q^yLYI&O`!e#4(aO-lALxB&(O<>rJ zC^4*`j~S7|FUd|E%(VikAuH-BUEqqRpBGs)1r=1b2%5L9qUSlR*M?JM86xCzf5(d5 z{_Ix-Q4pTG(aLcxb;6K0!b0x7(*&^2MEVju!*FEozNWs%au zXBMw7;(n9&tRbR=3|Y_Cw^+niGIiN;b8lE*ar?dya2siv_LJF0b8fApC^Dv*L}vAw z{-uvTHMiNhuPF%N#euDGw`!Btw$cY4*p%n*VVm`YDd(D%C*p$)JgehQubpbDol;pc zWm}@16z|5bG}c`@X05<)XLA;&$7xVO9G{)(VU_tFiOi9oiPgOOZ0x>FDj*?U;O{(a z0TC2g)RlD>v`lG=glTm@UG!-+?dPOP*aB`u)NV-?Etq!mDum|f9D}&cUeqVPkat_o z>W>d{?$WWEo&3>Incj@qy81BwYWkXWE|M8k=Rqe-i5L`UF6ZkMc7FaVhSYS+;<*;_ z)KO;XMwa^mc~TNctK>_IYZ?D=@YJZB6|D9&;^Z)zVFTS8mz$Cdw#W@JX0zILNXMc3 z7Jb(C0BY)yy-yV4Qs=|;n$I4dL`8ga>JDRexF%vJ*5!?Zs2L;o9!e|(`}zL~$63L%9Zu_4H+?gJpV4 zZSwHJav4r@hcH(IWg^P@k8#1F4;QAri0Vqs&FhEG^VhB6B_g1s&c1NipV7;?Grove zu^1K*Vn0{JrU|LV_g)RF`57EzkS)-DkK@@DHL7?eIm@K$0}{9zo+}DzWSvDn4^f?J z&*R>k7t@t2n6hG91S>4r>qpO!&@Y%nfk6tJ>`%bul$u467ittKmNrU5R2*_{Q5iC3 zP6S^o%g4p#gu&bhXT?P~3>OLHltwOl7@JhFnwtrw6j`K+!mF}q=2Rs!MvTBrwL{*C?deojw9i?YlgOF3r8SIs zhlMa#Icv_6>6&J~yJHf&qdKp@R2{SBvmcQ+`AO7BR5*5|xM-k=ypB+69`g`dJrS#N z=E$pTrc_1XNN25h*JkDc4AZ8k5^Le8L1psUUML^hNn_~Qp;V9hcSXVf71zDKc>iTNt5JC zzmW2GXvv-w?@U`sSH-YI$(VaO+D1-{z*yzSR;Si+v$ z9BUI72HNTP9e#Pk&b8`D${N3fJRqgtRu9sIIvK7_$AY=rR3}qW)WcOu3Z?OysHD-_5Z5FRv=Uz{AoNn44(Jln{Nc4zf|Dn^6aJb`RHLiCO~K2Ca_cg~E$B zlz-=sfS+qS^Y1z&KdGesr|6VRuH9TPdAfJO-S2=DVn#PPKkyaaDBh-xE}zFfZlK8!)*`Gw#JT ztJW#C76$o9EZ7Ds+=ADMk?MZb2*KCK(*rkb(8zMxKF_aa4pd|K#o{Jc~| zMumw%Hww!O0uM~I!WmJN1>IF>@{dMSrONJnCrQ+GW>vO{8EX@ui7t%d<-Uq#qKf5Y zwR%DF9(|=P2(&G7OQ!EwFq9LE{K(W*CXIjmjBbxukaBv=OF2m?GtJ2Fa^VduL`79f znC2{fkYCH>evg&4;tCSC_D>ntH1{9A5Y58*;=nSjgp_3Kq(!+G6Mrx$LOEA3DAWXDH` zU*drTH!L*-*1b$_f+Q7ffLo_laXq z{yI&Lx?DgI-H{@6Bq0<#F$kMjs^v+nR2LhS&VeBW>O;wC(C$vtqu77l0j|bbzK1Iy zFZd*G^o-d(zDs^S)Ub_^MYt{GPVGtPG-~<;O8pJWd)N?t zaysN3Y>v{5@$;E7W_7?-O{WC=G9Oc{_`vW19w`Ykcp@{piQ| z=Ob0?^xEWpklX};{dZ^?q?@+*@Tf}h+*vd+4xo>|(Lx)qS%ohbF3vg!AXCIaDn4OU zg9t5tcG}d*k%$E1W6NDsF@jXPy(V$ktl5L6NW@~3At1STkjMewph(1GG88YT2~uHl z9Ej7y_c9TP}+;^AfQ`hz6k9iQfCbL zdgFwbDMBg8=nr-fP*>ffxH%-_^vr(FP|PGG2BiRIcfCQRmgEUKZtCTyw%rC3=wSGc zswII^zgD!S?B(qo@una2YdZ~nuS<`rCJY#%Au+KXU^&!_w-F_9&Pjk7&zGUj`%+Ov ze_V>5ZidcD5r(gRSjcl)$Zfyinw_rjV#muxG>=-`9U zWl3<2lY1?Osr47{cyToOCb4~Easw9%6AoF3DCn$H)3W>fHGf5|q(c+sh>#1(7a4)} zPg-FpZ4v7Z9Aw+5DI%(aBwJ4CXHMW}M|JRy$+gDmGLYoIX5HRRN~0O)hvmk;Ij3XJ zY4kYt)VvxTMLMx)-eEl+f*H+Br0}if9=SA~YEQCpfHfWxUCh_Kw;p=%u z?#s<$fO|7LK=%F1%8%dVfQ+-1m8ygJzXhF`PJl>`5*WQ&;H#iP{v-2yB?>FZI=LcW+mrgp)Jm z@uytuc6P&ZZD_S(HW*9Zn~Ude4d!HY{U7p2K?X3)2t{f*CV~3mofvx0u1Lr^c%8gUyHK zFd9lRQR9riaA5Ys>~ker@V21-S`?w1wXos5+>twilnn@@8+?sb)$1`~*O-A5TsU+;92uhU3zGd3eQV_9d-sssFM%j|1HXb0WkguR-)x$Mb2#VBwq#mn<;raNy zOsA#}+w}@Tp)`^YF@Zw*kV1GCks=q9j zgaN3Fod1ufk+u7+Bm9Rr`4>FRd;ebCcwK*-(uZH%_-luO2$%`%1pR;25D|nFh#Kff z$XLYcs2Hdd68S6m$hY|z@EbUYl=;Z`w23GA*z*_hgh_~ieU8!ib6pav2$%>MDHwvD z(PxdpZXg4O8X$2}FxLN~WQeU4V}5HxD1h*y1pNL#POjgf^-uGbqO+Zyt%K7a*K+IV z9w<6CMNYBi93Y6)Dic!6jheW?079=`JoyJ4baJ&c%i3ZyJA^iLqgW`+TU*affS z>Vr2am5e$l@4AEcF=2<9H=W!)aK?p1wK9zS7(Ybx3lrw|J93eVcq;@*PRArM8ri<0 zr-BH8OFP4qeXxFSd(c~i>alRT#rscLECZoRFAng?^MKFa+IarWL;a_V;xG1d`*t4b zADmlW&b;62&UoBw9$;6bVgE13_O|0E5vO7- z{b^r+r;Npg++IRJx;O+-ZGWqHDcIUN3FEW4eMI^MH1)#^X zXb!oJF>Zt<5U8kMr~}NDDWX@6jN2KP&2~ZV!ree2$$>&uiFu$HPSnJOH1svwvu08q zCr?i=csIWhMsuGg*68>2T0=XwFa@_SQTMRa8uxT_L$59|)LQQF_+K#}i;R5k6In>6 zymX6h7Tg|Sbn`lYG9ceEIZMd3Bj@tdpNVeUx!YP#l_PtlE{fP4V~v(=4RgvMffmQO z!)!9eeCZtaq%w9GMn)8Ko-raH)Ckl+`9Em_2_ay7Xvt;qI767Y|A=-ejYU zqm-bxO-j zYY7b#8j>!MWTbU%_h)yRb8(VMzF?v@x1jsA-pvJ>=v5spR=+4UZ_Rueqkr<_pudK5 zwF(9(7bB_sU1%qT+S%X9Br!D%QnRZJF`X$yuAe*iIW3(BD@slxPUH;=_9JXi3?uq* zR()FbGxO)AhK-yhS8rerPbk?sBB_Ol1i9;dhEk^^%`jPeFTqy zCGG~%QApo$j=|gnEaSg^?Ze8Fb+3rvRvG-FI>ZRBelW<(t!aKAQqh^Q!#JoVGMGrj zqOI7|CiC&9D$CztmRq2@at%lw&VVrc+c(qiF#Chm{UdV(Drj5I^PzCp>xvtmwv|@4 zSFX%Yt@pD+c$cFY@q0n=EGaAv9i7J%^p7*9YhR&1mF1|Qc%i<^?_^pXLaiDgo!i+? zavzLmKD`~h$ST!BZwd|h1xiCxEot;vuQAyF>~0DK(}Lz|G2QC&1&4_=6;Ij=hS6M? zDa?H(<0%d3vc`? zLkhz+77=fc)Dg=FZ;S%z+$|^D2qySK>5LR9v=Plg5#7t-R=?VgWg{b`vr|FDp)7dC zI8&4cz23>hvumU%KQPGhwW0R&YBv!!+#<%SZ$=wKHYA&BC`N0mQ|SD@4XdcAQpHBL56=XrFd zS;BUF_zkB%lSoVA883gum#3Mz`qpEA%sY*d(f0^;11vT5;kVM8?T+v)i<%pqTMOjK-SP=npq)_VBXUA}V)U?VD_I7M^>N1xmd%S4L%NRWdWG<3 z0v`ALfAs1Ke682EmbSPxHkmZ;a_q95^x}Q;iXca;$>=p7CyDJfuGeBP*$@~MAP5Bc zr9hr%By)p?Mx8*z4wG-4`*ouNdf~p{!)liY*t46yf%L8ES69`IiD-XxJsIytc`O-> zcxU0>mrX0EASvVY3y0#7w;;ureI5M}${7O;&t>!~i~T3qFcKB+%{f=hx+mXeXy>4% zG%w*xBGf5#crLDVfrU2EIn*PC>I_a&E~mlUq@O0_$^{ne9Ruq$fZ?=;=Bwt-9bc}4 zJ~Ya3t3pW{_1OZd?oyY|U)GIEX9cd;XK-nJ;sqLPIcE-fuP zC0DKREP9>Kp&cvw9to+{7(18}X>Vku)ki3Jo{dVa)m$5Z&1z#1lzX|kGA(o)!o9La zDiw6qy)Ryj1rz>IRj$Eot3!3pS}42th==7;jWkpHxovi}NsLi@Va;1naSgT8J%=({ znp$a831ha7>WaJYQFBj^G<_qch$ox?X3iai4|dS61KckI4Rw5PoMj(U*_DR6u~P0zOQC z8>kNEzg4+^Y8JvS`c}^WwyORGPUsomiOCxWXmh`7#(&n$cOdrCxOHW*LgWJ;qSNUQI5 z8Mc9`mZiIn`%z7&-M-Y^_DVgQxFqF)wKUXF(WuzU8#p)w03SQJuje}Cj>I}AFeFbi z@f1F?3EMylbzZCZvWKrBRU)v(Zx_^Xb4!xgRbuEeGJ=^bVoE2vJls4#{rri9Qe<&w|ykVvmNVOZsIhD+iukMrwsoYXH$ zM%f=*UvfW3m)l8z7VE*^d$d%+jx371GzFbj!H!MFTh#;p_(&V~mn{`9 z7KwkU(N)09&uZc85IB>n$Yc1fnOEMqWv}QX5{R9wm4(YU8y=OPZlYhUBC+TZ!bvx$ zI6b$V>ZTBcCTAXsLanM?rn2?YTi+;ATPE>g{l--H?hbq6IZb6>T?%VMJkY|J2FBIJ z*ZSp)M|jc(NHxjm(k<-hQhAM-Q^(U?{)2Ymh6^Kx8~>e79we2~I2EI1poWh&2?NOq zo1Al!;16Uc$rrmA@(HJ#IfWg9XwS$0r(yy9ud#`LdG`k{8m4=!ORLSVUJ>B; zfdLcEZAq)M}iq*#KI zOE1XVTEgZ16M^{?OYgT`c7>l3f+z+Mp7rDK1iW{{IZ*B0huRD1ph|TOgXYEZLSeQ3 zuH9@B7{q3gFM6MUnMs4g#sr`U2e=EQ$nwC9z~~O8B=Sn3F`~cjBBBu>U(+3`Ca1AK z&KF;R48&B`QByxTr=b~J5w`-B=Vl{^NtMuj1puZv{yrLn-2lXpjlPwYyMnEim9Y_EhmHSPqVfl<%2WctDtUx=8QayW zF=3^c@MJ=Z(q6ysD@!pcez9sapRMxbM{>E%ld0R&&zfe)z6F2upd-f$A>(;piej2J zH8v1D^5L0Gj;B6NvL&DWNR?pBCOJfiwn7CY#24r0jAjJ z$7fNlM17t#dZGzLG~m4)S45MU){6U>r07XZFK3r2f}fc~eO4r4Adj!$k3pqwM;~ zx-!>qBF2WgzNgx<@f)0hAS%p=gkGajj)ab${0Pu<)9Ni%m@mleM_=|q7beC)iZ7zp zwA~b6T4Z=jf&NH0;~)sBj4j+j6-G-mIM^45(^tliJBt6k*<3W3`X-qt?>lxJ#;FmI=gVSFEafC%9S@oMw z-kTTg=l4H<{P_61&K?lmw-j99=h}NHpfCVhTh!YUf{9wc^GgBa!hklQGexxqL4+=D z$ALpCP8e0S|4JG4XTW8fA2y{8)TIL51~RKnshe&ffsnaAYd&GQU-(&_+(_wgIX!9x zc}r!t0Yp*c_?bkgzUZin14F)%(e+o8YK%$ml^OLYF5{s0 z`LJ4xe#$EI0W|l)Mo@aU73#Ee%%Jn%rGngwE=f#QQmMi`iWCK{^?C&~vm$@#gDxmbN)@n(YY}@QjjvM4AG)Gz`#o#)K5Z2|#qokvP@G zW$KZ>Gd+Bw)==U|9wUb0L8-~4Hqqr;jK)?4@oM|Rs-%S714;Uul3OF7@jml3z_@D& ziyoywjW+sA>$zZeI!KojAlV7tKjomNR#D0Nilt{D1T!hU)#NNg@JH#Fjt7m5-PKc; z8M!&ChU(Rkj&v&Tu(6=XDQj2~?1FPGk7~fcT~QKPT2f}|!~9{=HQLn$LCdjZzPGto z)3?VQJl9#P-)rk@tBAR}jko~b_&)MF0~l4S zTXH%S5(FQUGs?0*a2ZdVvl4f{!eWTUBP7r#=+#eu`n1(1(3kxlM0ylcw-Ismg}5^2 z@B?FC1J+30bdE|1^g7@08&5Ubtr+GY=bdT#@CmBLNiOTEBJ&-GCeMMxS|$V3e1xXx zs&q`<@ybS)zHEBt*Jg>^7!=e(x=78WVycFqNGn$TE5D4+gQAge)hN-ufxfO7*VFbL zUy2@r^VD!j{}KN)Qm%pJly;tA^i$;xgxk3A$o8zdr|)CM?nr&N8q458sz=6PGnxq5 z!0!@*LaK?A<^o5YBCew5#tmSEvfW>1io!SizPru&x^S~gef$2)7opFxfw3cssLMB4 zh@_@CEB9mt+3Ddy2{A+kv7k^lR}%GDF@SKB@D=)*aB5nT{EVSjK%fN{c9x&;(?+*V z2JxmW;sVH-j3hW1H`3nU|oIq{$f|GZ7`s#*V=tQX2bBV zK~_J;y5;0blxy<=^@!y=Rip!?nP5dR>w&5`z<0sz*REpj@k~=(Bejc0amKS?Z$hI$a1~!+<5k11% z1NuC_v!xUSL5}80JvsBzz8z1~yQXdi-b5IJ z$U32Cn2plOP$JCVPKZLwP}zwHs^?^mXxPs1$o^^n8GYd}4k_7LtEVKW9INW+u-_Tf zSuivmYtU(}wtGlNFef#;s7>9v&p2Z3->zGq#(|RIrqjh+P)RURD zlWZNEbM(wM)Y3I`9v7*#1CKa;j#TLU$WP)+gOG zl3P&1qHRypddI*VI9H!*U!zjgZh{aPdKfM`cq?lNq>S9YbV1El`ULh&ucyZghp`my z9nfwrGHTu1t-WTrbi-!HlMtoarR;qraHe(9a^c;%Z+R-!L^K4Vok_vL=p+ zv+7D=PhSCL5^9|j3`J#G#c--d=9K|j>#*w|x4|DKXSb=J3z2^b+Wg2!S|gp1DUQ1% zPpbf%512{y3?kOnA^ncQJ-;o-Yw-|N1P{)?E|O0;v3tup=Uj6;ZQ4KUosFm)it{4w zGBW_~M(o`{#0Rc}3}_FQv`rr+v}FP^l@|+zk$)u*!`$m7N_b62P1GEgWbll<IwU72g_waZ?W_Qid#+}UVcaoHy5Uc+kSjlmh1WS6Fz+LuE28X z=IZAtlyK-AKJ_rb$5&FK)+MThXh-fB;&v1hR z(n-}8XS2;9_&!CII(SYW|Ev&V8+oQ4ltCTtgaDQi0b~4;zo#zT#YRV?N*5p>CY^QH zR>mgEfn}Yw;r%|+H~CRibg1F8V`JY(Y0v@v-RYnrNL(&obV)r;LDPcXI#A4}*t0Uo z=_W?-EvH%&`k8ztT}%^Evn+dy>~xHK*2dNwQ`3Q}++md~Ks= zh=+} z`@zPmG}d#aCSD~EP2EShI?C{J&0QbM;{26NEuHA>xeI*EvWL}aB3{(TmgKei_V9ZOU+?RLf=4N@MguZ6>9XRt^7=6uB5?v zibiCo!(`oGFps=s#=Y~px<7RZ(IJkMDOPzSHui)xgt&y60A~>q4rFJGNX*Sw&b|e+ zNjQ=|Q8hrVFkan@9){rIH$SSfi<dw~&idc!BVf;>@+W`<7zf;< z{!+^RBYj920|wAZ>pK~m{RhFLWGOo*hv751*hoJrY(tpiN8V0fiq5yc1Ix@%ItfB- zPipZq(~6`pQ@gpJciYv+SNEPDnSU4jN7`e4#KqC*cWX*X7Y~`u;;EaCHT{EhCBtC}`$ zmQt>rc_s<4_5CcXG_Jqt`ay|J0q(Rg*1$%5)C2IdiJ2#L&)WI2HFvo&QS(KhRt*SE>j+$2NeGfm6UXk_=NM-IcSl` zqum#T*eHa`x92+%pCLq_6N!67kQ6*5Zb{+65}VKi0WQOU|1e=KH7Ip{ZZ%l=Qsw~0 zl^g}bm+MMUQ$6xG&{Kh@r zUmdO&%M|>eg7%TJsLe#ms0kcGhOqHJL839GIntAF&wrUl>1f;+vUdX1c)ivIQF{7= z#Nj^`2CvTAfVCpdr=LE$e0{yQ%Iy3;KVRXnlG3G!1L{Dz80hdbNb84xG6rN7=AbSp z<9gz@V79@|?YDnsHW)seMg-U}IVXFhq^Vhl8I&J;rrMrkn?{_OEM>0DMD3b%MKI|y zmftlSy}`gblC}3BdL7$3h2|DsTrYHDXsvr0TBlf))f{JvdGuXd&xB<${xw#^tiO;| z0sj5Q%Z3|8zhaW-Wn5+JG>49El;Nssva}dgZL$*Eq<#>aH-(OgO7|;thIt!{i}n&D ztE@deBE2f17fHE)L24r?DL|1F)xzxHk0F)ed0T$?6(o*?>ME&GhD?A|b-PzCrD6do zxTaC&Dq}@xDE_^rM4?hpXf;PE>$(_KEH}2Py_zt48_W1Ee%~|JUfBr=iFJp}7yI{$ zpO|UP(6#M2p0x+-FIK#bY8tO~!WCA#n}b}z>xA%q?BEVa&6|zD+Wci0i8&WJp!+ia zVW3@cMo=raT37#w@MDkIHV+A9B(^6M8uBaQSJ|B4E+BekQzYSB7PA=wb1?JlA)qSQ zpg)LIKE$b{s80NZ1ciRPK#U6b0xv&AD-^2m4dtx~2j(?;=pvU}WPzygBZ1H14tKB>Q&u^pt15i*M_^ZD<>L z-^5n!MlspMIJG@Oy2Jwo*5{aCKYT=q;1)tqdAyU$zniiDDTXv8H>XT0oKVHw2+ox7 z3MJg|w|-!oM@_h}3?w5wX16bPc=I+Vov9%J+M`27b9#deuanxT;;=o z6bI^~E%U(D&!pF4ok5ioX;VI?0k-8;e1#{)H@{GVY$hr};@*?9jr!L}EsG%U#YEND ziL^J3G1;xZpJE6bfngRIW^mmHQ;v*^ae+JKSc=&xO3lR$(p68NG6HQQ;0e@iJ3Ue=~12o_1Om>h^DnxV%6?RR zx;~|+qO}OVMcS|lydFAx5DTVyWpYxDr3=^aYU%sVp_#1h>+^DH1BX?Qc*C{eB&%=goOr*`{Ci;&)VoD%vS6(8S8kn6vm@fA(1?F@{+53}VR?d(k)ojv}e z`%;eL$S)8(T%8dYKO2~Y=yDkl3$E~!E9!BPOf_R4GD5LFDJ>9j`D!0l$et%` z8Yb#n`o6{v9mm}A4n=<|8A4D8XM%X%^i9VN_=ngFFnnY>ZTQgT z2!5Pk@?fBp=_Sb&`aBpBPNIM_qO!B&GK=f}liaUU|I1nEdv<(+0|FxX|NOiEIQwz@ zHx-r|l-BwolJCGzqRM66y!7Q%yz}lrjlJo{I!dU)(vm~_AP1q@L9}*5q|FpIO!<-DaL!1b;ucujBV>ZWSsePd1xHq`A=-ob8w{G=qn}O(6t3x zUP9K?srld$i?=Smub^#L`3@GIUT?#XTNAjclV|9ziXAKL+_VcgG`*#3IJhm;sjb;- z8;@5!JecR|$Sc5eSKw(e8ihIT{kwDTsKy8-cf!rA&Rm2beNOX-6SQS%2ak$j(A;8l z%CNdE7bEs_Y!SfO3KaciA+y-xIzaye)XWS*Jom6T)^t{zk zq&Ypn#9PQvz!Sm)<7*pI_o$Y)ZkHE}g<4YcausUJ0@Vd=i0n#EZ1ki|_D-$&WFSX` zdw9{3sj>hOhaN^um&Pw&6cw6mpFTf1+xM~2KyN$IbC)~xk#jaB23 ziuH-l17tn+59LW6I{Lw=YsH`is}UI>*G5CBg!J}os6cF6#ZsoQFSOJ!F)8B;=}v*b z$f+2W3a(Y0$_{1$+s~#awHWtaVC*WfH7?}L1DDg{oq>6cZ+Mh%vE|ixKMHmszB*K z+szuUq1HF!>~q6Lhfk0gHkj)}@hjXYfsFkbZ(ft0eCgdU#)UVM<~p;+Y_-q_s|5FS z(Csl`a~7YU#xoFh3x?Z3`f1zU8yt|g1GXsEcARNtVx!b{tcjWxkVYEA`o7+cGhMWc z0dBiv0)ntDn48AUk{+m2D<}fIF3cVS1dgQXAK_>pSvhCK|cSH zh`#2M8=$wdRCtdA2GM-N3-Wj1O62J297NK~SZvl)RN^y;RF~CJa)1D?Ba$DBBg_^o zr_j`Mp7~C8wTY=TrQ_1G0gF4OS?RF9<77>PzE*}htziRISnb9P#IHvWYcSnv>fqd1 zKy(Wpy32};Ga~&-*J<{t{-=`T4(Q$Q$E|)#xe%wGp5-GnCO~{8&qunWsuYq(H6<8{ zt&Vz4?Wvy`8yVwQfM3OPT7cgkzXFUk|D1YZ3~{WqH1n+@9-Ax>`B?E0LIeA+g3x+u zr7m_HIC)+h2w_*gOgk?vP3oAxds;s@?GAE`^NwV>P6F+~@QVO)=yn%t#5g%q5U!~~ zgO4A#oQ@gGIKrlKAwx`P2Xw+hXN7^3=70OLDfxB!RWfvvJJH<}qKoEolQ?zem=T+AULh+Wz1gRxQ??;yCEN{CzJf@abcHV@zd76Gu;QL&mn^T1?laS|BjL z?1tdzJHL0lr`^ z-FAxw;cST7xE?%1^DwOW&@vLtUVBU~Jw;KuhG;S4&M1c6F?YB$R+i`*eKYGNCRcjm zN9YzW)jBtCs5-Fun-Qi*1=O{vF(&xwa#J)2_P_`vWamnzI$N>_!nsw*LJT{~+hI2g z#&B{Ajfp1OuHeCD6Z5FG4gn2Xg4?H zhCgHfjs5Xz^tQuKXWDkgOLy6s;L3S`AxB*DXqhvju;QP((4xI4b8V41=y5444mR1y z*qZIj9#)pI&wglG_@-~FTTJSWNi)poMrq943mq=XJkDXQ&L3qx^;Ux6T`6(s1lc90 zsn`}+CvCLx63)X8wX@oOtucCO@G?sJ_};}(2~UwOxRf!5SrmSf$?7B*yd&np50~5l z?!uj$>jhwsjxx>=LTbGlzJQv$^T26*&GU7El-o9J05bUUX1=T<>>h0n?cf>l%+cw* z%V+o)KXrD#TiKtgcq<&tM0vpQbM~O_nJO7$MCpNpTCE{)H7#mGSIPs`M(26o_}IhG zc;MJmD56K=;$g4E!12T0B_y+32hGa~twv9%oux?euqb57c{yL{|1Jso*OfnI%0?6E z-z~T7cNwPpuS>Afwo>K zlto8!k1zs3VM1Vt+#QA_J9Mf8M>T2O4O@3rJTn&MJ#j}a%Nev;^2Lwn`prcaakD@F(dWc zaZC!2_!p%1g!_h&T@FWNcbjFsl3Hp9(!pW)45`hs)j|_VFAQjMyu0?)x|2+@f|{og z6dH`mVxi&hEu%FFaw@scWD{b27ap{Np)j1LMYMltnvT;2b;aTBkT(<@SV&3GrQt_r zZqOE;vj>txv$&}Klo;p?+0Y#S34#mlJ&OhDTUXZ+Z=c(>h+FeraMqSn{zETov3dC? z6VJdc1>sNAn?V8Pn4lvj*l6Q1EFoGV+8)>@KCn>`uI=eGwXQ|EU9jddH`UILA zm0z(U^cWfYIpx{{;C8isvUipK*wP1Xsyz;YWTKYpg6Zl4b?D_$Up?GdOP9ike&xAVw=EH^GiYL46~ zLVVcs`#+;K5KzGP5cLh~|MU4z&4S%+tpDk3m2{Z)H2Ztz()%W!Xuco*4;QTd@ra0= z%)g(rNE!dNMUPRo`Igrr`aWuU9&lLD(ibX#0+v(LKzh^=Lx`cE!X@DXF!^bgY&ab| ztuCv>zkZ#VQZO&x%4D&%V(x|p=BaTW=8L$ztuB&KEL7HelC3B!ieaN)1C5~^ zrYz&V@{DDIqI?k^lmujTga?I@;#ByR?xXnxPTX2`);rgk`oq?EH%7M0>j3PM?uP7B zWMR9LBoy4pZYC_`o`M6jBTTXu?HbE#E_Q?vgZ701lD%S6oHOn<(ItTTLg*04QqggL z{kI+qx=*pXJ-+hiz8luAXp1yhX)}#@hs8X6@KY?ovcX98$c4_O#w|Y9UcEH9d{9;_ zNk`#?k6wI9J9hn@vb$W4R~O`2Dq2o(Y{A4`jLVYsd@#yyR+@I2juP+iH-{dUQQN8q zsx>qufsLc(?o(BtG*Ovg-))_oj_9pu$k{C^ zmOSPLzqrXQIU{2r--n((I_a{R`kc$G)ud%gDe2bWC^3ujy!mN8prM%@Ym3bY`LQ_9 z7HP${zJ>E2;1+B9w6uU;PIZG*)L#a#sCD$liVQ+#fw%?dJ7gzDGHUC+Ifztfz)~_~ z$`S+vI*G`hIiFsri6;P<{wEkcByRC3EabekS~ubIol-j(Zkd(AlMmhFGW{PKZ8Nc= zA$Gwl{%aWWPg4ow_ql>ek`l(R#~eYMxfcB6#q4{9($M(9X0bGhR3YXf^BX8UQs)0` zObi!hbs6^^-;tZ6VH7q5Bw-iiVRTHqudnMe&I3GUH(xWg`Zk z3!L4GimlR`h2PaOhyRUqI%*yZj&P81of_jk;ymIzIzOth<45e%`Av-(ni?G0!2u0z zs-S#qC>vT$2u~Z}L3H)Ame5#XurT^376RrzN#A4>PnJQkw>d6WTOY{BM5SW{k;cnD zC?|SV+)kcoY5P*B?i$NE|$ z+}6?lNsX^fjI>Cbg!xvBdO z6Is&o;qAIemOW>ma^9@uU2H2biGEo2Fn~3qz*EKo=SR(_`v4s}5DR-mHWrBxu zF~;@xD+WyH)h**MuSv0nksK=Fo8I41CnX)){N998Uk3)Ohe#4EBAJ9IX@p&kn3hYC zGxR}Y#&Jo_!ZW=|RM~-OrgDU6k>ue%L}|g)&V!VQif|~!W<~Pa0}qH)3&7}^6ch=3 z5jdn^_t=sV#avp?k?J@gHn6^zJyoH9_7t=+)CN!&3Za4>kZlbzX*36A=hh5<>YsA& zUda-bq1ceNizZrx#Il8YMlJLiS|+bjk{OWkTy1L(CyPAIum`@W$5Q`$&#HgWW`tEl z6?fl(jr%Q)`ERFh=Kr0(Vg3==pSJ9aHp=*WtllE=5o?&#kX=9uxm7{}O|i4R41Fm3`1oa7i4+cfUh6RoU% zr4-cssXV8ww;c&#c26ZzN_sy9JQq|mG| zw5DjDe1c;br#1l!Qf82u&}Bj$nt`;aik?SZ*i==r4l|r6{V0U@7AI)H^H@>rtT1hh z%C${q^DbrMOcU>idUQjSCJk3&6 z0(OQRkfqxK3fg9FKYR)D_4ApA)s3hv5wrM1rhaiaizH_SrS^Q8G1&SNv)~F8>W`>Z zFfNhzfK7ea54Ck7m@YKXLv%Tcc;09)=c9tZ@hy4hs5=wq2*I+`&8bo%r-(z2E+TQ6 zoLqnMY7rzk1cW$v(x_L)Q~Dtl->rnc-Y|b2g8bzIwlIb)1K8jKwwHj{c}1=7KyO66 z@Q|nUhT!Uv@fzo6Je+sJx855S1#F7Z;_sFmgtn>Iz*tyvhQ=iR*|*>o>nG&RH+X*h zPr$?SAHY+k9B_lpM?BomI0zkxfM3Yt!qw05Z{VqKl3F8rhhTk`V@ODl*hTo3qEFcz zbpt!tcwV*YO}S0B9{FC>Z1MXN`zsj#bSC^3Dx>m6M_{HQ_UAB=J@ZiR&|OCSp(hG- z#zc7L8Q`2V7{4B94A($H5alt9cU>@CU;MVIWNtKbo7Yicq&Y|l8)p!4d@F6QY7ZSm zbZmhm=Nn{5ZaNPvOjWVbQj1hIa1>vmMoTGaS`ZyuXM#r4a-p4spTI8NnPimynOVew z&d@Q5sNHzWC9Ji`@PLsrTWb4Pl|3q0q#?BweMx0)`wSa%UzEvTa5BBrmL6SYXa>rn zI`Ek^WkXTb<{LVs9iERo;s_0RCL^;{KR28)sKjQdXQJK=gp_Vo0iUUMn`R8KY)Bym z3k+ju>}D#~F^W$f3Y>jJric4z9>2!CGId?y#+*gQqtx{w+f^r<;2OH8Q!pRf)s-g# zcZ;(3=hR>~i>pI*$~XnZV568kr>TojbYMF%lDqNJFu8716fOKTZ?ZBb+dZ(x)RAsP z27z*!?padn>+U~~LZGBmhDz>&2Jaw6`W*G`XZZMPgA6v?Khb2z-H)~&Yx zuIgjTX_tpaEtI8>wMj-O9sT43c@Y=xaA)Qf;s0>wI>w0-$`6|ta%F!;JNQvi^W(mM zTKtUKxGIrdd^J&AeKEvMp)uWKO*O? zUPMMauLURx{d9X|Ya1!78u;x&Mq(WC_`)icVIIHllj%s^((ev5FDyZCMqL<2zxJV&oh~1sr^tF@hfhoCKHl0^BLq_VQ{6hQ~;_jYyEQkoM&o$ za{S}v?T+0rz3&bcynw7Azq`c{nmIj%F-?en9`x`9;E<>I14f&2#GTMcVUS7qRleme zbq+cx6UQ@jghAJ(Gt_mykyVd>mdZ?x8g^uroP3!bWK2IC;w?3go>3ace{(j*N2y_B za5g}|&ekqP$85?nI2Zp9e!Zaldz0&6g?Z#b%m1q_Iaac048!Fq> z5}OW*b*5}BlBVm%y()Cz(_Uf0!iMQlsv40HgY-jpZ@j02aeCFiv{ocoaaiB26%5aq z1%vTIp#F^YhJ|@TN>CwJXXEo+gN|Ls5fGRLk3xJ;cpyut36BZ`aA2(KoK3Ko7taO} z<4;aKhNDet^?}Slo=e7B1QxK)lmvrkn(oKT01HqibJAbDJ$iRcRX82kupk(Xb$1Pl zT7GMkIDO&a=B=70Z`rJ+x0G#nTlfq#l})1h@{OA%UmAhkUw~g`4f8kQPEpCNfd3$}&vjomWDZicGsQK+PHcjms*O zM&1y&f|PQ{l>7H)xBqCWNZlou{;?+`V-<%ZwkcBjFBsX9M>I;)gacEBB9Je?Gb7-N@NG zT6%+MwvQE#BpSf)$=_X+4BU6txK`V&Z&v=j_uI&cBvbM9wRB`bb9LX^!g_GC8dNLG zky!?EcTIJ;Vlu`R^$pcXu1eY{q+={ajX$^SiMc56?sr`W+as~N0xqI9xTvnf4RHq3 zipvbxa|53TWI!n~CL*j~!HkfVg;^vwIbIJ31@nN*;B1*tWac)hI;hIg-(;wiEG&yC0OFue0u{5JqUw3x#CzuWroj~8ob zjWYxGtskA1`!8C@zrM^SZzyl&g@-TBCmGYtah~P?pgyj8b4bZ?_IBXU=*d9YM$rC`T4U2{WjFVB}iZg*WkSRMQVIDdwQ zoy`ZgJR-^&h1a!eqd$e=VV;| z0Adj-z)CZTltM}~Eh>nW(6TB-*t+a0H0r&Z0kJF#3Z-1DWwDG4xJgqCoF__7AgAiA zQ~RDtQ%nmErBtj7-jJ%a3=212CyGUv4(usHT)!G{JnePI~{z?NAc{bK~Y@LN;5X-2uKkm>6d zAOpNwBg?LWJFA>!(j~)(%(sA_{}$5Cj0(Snln-$sOC{l_mLu=lBr36DSz%*{K9ynF zem|8QSCbA+^I8FzL@z%|w+sVJvMzX(zJBMe(dC!Y*ERqh!$L^uYbbz@X&LcM>1*?dUgDwK{$6`&n{pRD3Y0FLcx!K2HOqp^k2A}>HnBmsj8iYZ2cNvQRLVa* zndjjttfiVLHqxplT3R$3_;Iez{aoo{$xDkg0PVKI>fZ(R&89xWD~hG^3#G@Y$G_bh zt4vgVs8&`Nner?oJPNBw&}^itq6fK+q+gm;qLz-9trt}0X{yUB%bnUx#?sD!+qrq> zsw&kD5nj^L7E)B!E(BCoDpt|pT!(1rt;*FkwOS%av{c%iEktu@rr}m5Sg1PnKN9P2 z!C#tz7n4=ge$!i-$3GmXm^?h3Opex9pq*efR5!E5NU*a?_^AwxMpA{{AGoA6xun3s zFLx)7R)pSjiYd=8EG$;>1Ad!2sCbSildN=yrO@hXugJG5vaOK_;3&>I1^bixja0ItzS-AdCJN)dT4GkG5c^i7wwGM`Ddy8Z=ok={GybXyNygpqj8xj zlSupEPpv9Y#Htnx;k)`}SMy(uoxF>Ss8V#1%>uoTvy;kJ-iwkmu`z(-PbJiOmm5$TrHCvmhtC&(vY(GLek=#pH+)FKZ=KRexMVT@r za#3xpB8L*C!|)6b5*OWnEu!KY#>hM*niu)7T?H;SFU|{*73mNDB9rqdgi2-nUC~6V zI@jtUOtV5rgA(+MMQo3{XhijdJ1BR4P}TnC`tyCInUl}T!G;yKy0xi<84HXln`3@` zbx}DLeflx;*c1prF}>D;zrj&SS?961D`IqXsIFz{>j#rNLm-EZ>5n55A(mh+tIrV9 zXt=CC;hbjiPSo>ic$4mrXyO=DT^m-{i(+>n@i3qb!l!D0dlxNP-QUJGu_pi5MdXPX) zGYzj+f@!c`Wm?~m>V+bXQKygXMW{@j7^k-YO%-2i{X;!JR*a_b>|o1=E@hd``ZBg% zFCf40MqNwFvWS5z0VpjnCPz}b*jg9X#S`n)dqllKCM!}b!x2{}n%$?XUKyG>R_mIy zQEk`_uh>w_=(kQUe5ttk77q`Ym~G*QWPlr{#oa>N#LQepyx>*6v9kAH%3NwqQ}q|ix`TyQbXERvuHel5&K#q zHVq8}7BMBZ9&k;411TDn6LV=7nkL2>Qq4RQc4LgN-SPS(5x+tinJT~{Z51Wq;R58( z&hU}vx`GK;>L5-a?+lHeMxi#oykf*Sqc2;3Q zYDN{2wsOve>|WEMmRCU3p@S|~K7&Lad+@c|T=AO+V5`T6v5lx_jmVMnVPq~Su__Rx zG_??hGP3;oD7b6LQ84Mo)ZdD=5@b&bT3!$o`3PLpVJe3Xyt;YE0;1BCi~b%*mKL*V z!CxGNpUTv#o9NtGckEm};5L;rXzuwg8G!ocQl&zGn7W>?U@TCB;(LTH%t74BwfK>` zd;RZmt4Kkh>Cq&?vF1|H-uLA7gzNcJsu(n@{tdRDqYcG$!@$1rFQJGAY-W%TVma^6 z<$?p>d#|#wl_#8z&7(?8tI8{1iCHjnB+ZAXH{UX3?FpO7OjVkj+)C~Ls5{?b0OMLu zT#o%Y;M>kG!y8 zTeWoxFxJc>QTNS7{Tn_W&%lg!>SR0T-_%6T&BQrZDEr(mT}r|Et6^F@+bF7mObR1> z#z4BBAVOPW0@oh-kq@J+iYLek1tiyAgdk**tP+X1%wYhCn+Gh*5Qj@E9*$ItoukXR zF1kCdn2pQ`4+rIj?BeT|i;G>N&CQ+eE1~i<`w;tg^pMfF^hTpzlwc`G+x;Rt$Kv$} zNHz_@a?SdML$O0PZzWU2QnIk2Y6Naedm7VC@x#B$cy||3?u|k@qPu?H#T!Ry|8AQ} zW|R&fc`O=bH1SBR0F>9ZsmNZwfiAa;cgu*Sq8FPvzKa;wI3IILras``nk4tpt;ny; ze+!_K+W75zuGFG_s_K#@_tCG&uhODr8Mk_&iU{9UKqvI-HRiD4n_JeWm{W0+vdX%JEJ2-AfxwLwxwec+MGm46um zAdIV<_jxypvKtI*)8o~@apqf>?Q*VN=$OU)WdjRA>wIR!mryj=VE_KXYMtGEPl6|N> zqR11R+o?5C)*H*Ke;8+z!vnG+l#5-Q+G$T9Dd_7c>1UGD{BILKlZ7Msrz%XYit{XF zThUtuY(<PsE?V(9=xD2Z(Vxg5lTT_u_jg!-#yP%VhmL1`IxfDFa^5pl@67?IfbH?r^zFAC?Hc43q zSi3oa5*;vdr~z^#l-IgXf~l`%=|Y+v9~U<1%|`4&p=l3V##Lvc-n!aUz){@$=VYTH zB8qBGd!#N%EUs82&^zJo(6gbGoF#{-JVW;lqw|C6{keGZx{w2$DO@_p3vSJ0e0i^F zC7UW&lIRq{;?6$66eEy@&c#h6g(|g8HYAbc`gQYfr(23K&VvbH1hfOXB6*nBmMG9j zbWBlF#3{5kP*5BRWZ^ItYv>LFUkU{3r^1_-0LKSCdoo(-EdR~XD<^0M(7JV2jEXwn z^E#;B%K}*x(F}=MMFPN=#;FmMVqUqNQyqo)?1@sI1~``W4OsNFFMM8@_Rbv@L0$n( z9|I2`$rMvZq3K7ERyF981SoqSd3iO~d1{ey6zB4S_?YFFz8V2ZB?uphIaVrY4U$Yw z7P}pNj)@(m#V=NkLBvf)b$ch!b@^h0hc#}+x`_l=^6IGE6ehG|?N(53sch|5Qa4{) ztiI?SJ|oauaFTwOc6`}p%1rCXeO>q$@g&GByquVrIx$()1n=$V@T5_hQCXOy+pH#k8E$*bqJ=n!-%rFV%P_kCa9#f9|GE zy2XTWJHcs&L99L6u90+oER+~Y^BXF4uT*UxA>2$Ukqf%yIH`C-^Zb&S%RAzPv$?zt zAi2i;rS0BuClizv%nN_+@Fvkr!;9L_a(B?NbedDe`og|PLm0>W5g|m`Leh|qLxGg~ zKD-1&8PEIaH>vxkkZLQTS8g2pSd5m+QvclWSBU!S-$kdL)grd~toCIBRLLlE4sbFK zqKt@#T-1T`ujxveue1}m6M2-ah|<`z7sEG7GBqen|7@>FT6{fUr2vXBtY#pA=j=W(T+dd2>7T_6jeUu023 zzs?t0B_m+dit~aU%RCM`>8efrW~hOJA*RjK8moiRd8DnI=I((U%TCqB#T!K<{|09N ztPEiFq0&AQ@)N7({#0nq)nn%s<|HG;?t68e#d5141!?}8W>Ox_GDy?f^AxS}J)DEBJ7 ziRE)kvY4!Kz12Np?59Xqpmg))dNZWLo_7h>IT*DOph_6zYR!wai5^%R=;?D&9jP+S zoh;g~P;;#D;0(tpE>yQA@&`L!w6%%)*}%oz9H*|0;Jyblir|nhoYUJicQ-U+U)>yJ zQ&*Le5mvdW8ehOxhN{}z%VjuOl0cE-%Z1qLdSA9#GAtm0I@{uvBXv})}}KzN4k}06IljMKSYHSH*|A}zrHj>t8#<11F5&7 z8dkhr=%euBU?r?~RG6gEt_d6Q#aHenRJsdX#r_nPnVP7? zb(oykDbF7w_)8JCI4zEz19jT~X#LIP<{EeVtrNi#5Q)C($y-mjBx5jh#Bs}4x*w)k z0`oBpB*I}A6u4Of68VAYYzXiA_|+PUL;Y|{PdkjXJtsh?@7Wyt z`KuYfbQHwH?}Kxk=bLHkk!`%RIp1s-5*!;0zKhYcCnD2UGiCs5@~VVRghN9 zxvyIoS4}*dC`)1dj8-27DB)~;n=<9pO&_Mx3lZI*fy zk9Y~uBuMN#h$nrP?u57xq4o_sDwx01lYBL9KeqqSLw9>5C3PBsy9+dcRO=|Iv8`mr zU(jOH3pqf$&5`fna^SLB0jp*D`eiLPjIPa8l~HqIY(aS^zm$E#R63tdm6vhL`d2!y4MD7JA<3N#m8c7rSZ2KQ_XTK`EG;%s0PWY z90pHJZ4TV<6-TD5?w;Ng_S!e|HNKE1W|X1*QByQk{rPfCt@an* zr*DBD#V4-P5B=4n`V;rQv--2{_)Ys`_J4Wn ziZ0D8Wb#k2A>e*WoI%n}^Rx$;3A7p7r8yBzfwtV97}D(;Ub`{njQ!+^x;2N+nP_;C zxc%XUL@*$pguo(wVB`*;k#9^hHIPn_&7XS2naG1z%kzw{$HC0f8b%Cl&HdZc6hX$I zf|3SYuJrPRWPXDs*tS@~If<-odNY^ElZODJ9udL3T=<^i_9O@>p~G=4d?9L?9klQ- zRCt*QV%Y)XM#9jw%ZBrx)FC9%H$Z-t={%}1`!8OIa(k8KhB(vI!w_B|Mjp7rut?N^ zPebz%_Vb0=+%x9GOdTH9^9gpFft#q<73= zf%oM?0Pe9XAidxfEdVK|quvapxTv%`gtT%9c=Ve1@U+s@7f1$DbFM-NITVd4#Vx6D zjV=meTW*=zc871Seylw}?d}-P!>Yk|63$1ekk@Qf`FTQH zwq>o2VWZm~*vE9{uN$aEKGW47jUn*eaT_pM?m%t6h!uAX7bW7yf}YvAW#q@~_oSUN zazv9nAX{%V9g9vpxw&DEAK8^BqPpVrcOi{&^d)L9RGx6k@40Ss1WmU-FjP=zzo-c` z?`#hCs67HyyH+|P;*LV(yIR+aZH9zRIwIw^Q4AQZJc!bITsu(rI6EMl_lja_vmG0y zSAP(+scVggNNWQR1IsUsNC9y|zTdf1=82&DA#~Lz$}K{7MOWg25rlP7xOZ1=yG_py zS*RZue<-(}%4)8P>PBDta=j4JqJ%wpIw&BhP$ECjp9fZ0@$eJyz(6>Rj*be4bxfU2kTbcmSO#p);F}WN(=Wg?LERa`f zIPj0tj?TY#8F+5ej2%Fu&hB?->I=h81L)Ohs2Tsx4ZU=EUtLZuLeAb6?&4d@C&$2N zNfeH5N#Kew8ZI)%e+n6+OU28~6C0@q(Cn}ngO`!uNDzZOLl=I&gx_xkFt3M%e;SG0 za3i%|g$?qAKz_i89IzusYzf}`AiVJ#M4=%V@E01X%KgCNg)-k7Y5U1lATWZXJ;55k zA|!x%aqXWO*5tY$Q0mp_>b~>MrCwYIbd5E-rsrR4SK;|ix5ijGlmcxa7|>$y2AF2O z|EvzW@`b4KYz&-E3T@22w&}JAC_mcpR8;bYs6v#{u&^41uA-#2mf*PF12?ovHbKSS0KuRScRml9D<-LI;ARJgO7eOPmj)IS`# zhU#AFgOZvTT1e6@D$6d0$t{~$cyGD(B`zfe7y=%I-QEGNQFZeun$)l;%urPzPW`Hp zjf@M<3R0Ohdalo>@NNbOyE*AT<{x;@n(U&Yf6iOu*nTrbp0)#S2w8y#=Vv=ulGVAw zESgP_CWG!awP+ade<;ve6au;LY1?_KQKOTzu8`u$4T*QPWbM*9ppSJQ_GS!-u{VX> z;a>{fKkRUyd+F12YyfR$gT-!2e06W>t{_c?^h@>h?OAZ~*c0Ue#kGcGyE9hpKwIvV z#NSIgqpQt6xnubdq&ko+&FRE1R(ex)yi<8bsm(!jh)Ma-lK#*&EB+*^aYc@4@rZeR za3XwY@;97z7eM^FDqv-aP$P_+5T?W5b$K@#KDUmJ_&X_FoY{Bw!V>MVk2alfHXzIP zDo`^|+Sn`smC6>N2iY z)?nCG%DA*8T4JErwZ*1qv)ufGkNz0>a_S#Hp{C#FvD$NW@6^S=wf?bEyx$X*>aIRnj@K}bhqcGpiV%h&NjOD|8G_;8& z^Fb5T99KwOC~ed?#~~d48^o}zuP5&c{zO?Td*(Wu8(yGjOk}1UKl?E8Q2(S4E+QfDS-f~$0G!%J}NTjG{ zWV|<(TmGlgq`-%BtbonXKJ6oHe}wf#uwt>3pqeQMsWoq^%qiD^4J=aMhN0C~>1OVq zD6+CN+X5!lGjk@AS3-}h3HBN9Phi?zf?1}^K(h5{<@2HW{uX(Ntw=&oob|_xX+Y;a z=$0h?wT{I5Whr}W*5-lFJ>!)b!dAENi!T1iQ>)N>xpX+e08S1f|1WN^60Ir*S4?(f z5G?|65|vuvcVo{js2inYJ=yR)8G244UnK1)yxlZ~IF#L`UftqFC`A-em+d&26M zdq@^jl;2~n6iZx0pNrW|lWKFmZ|A?w>zgJyJ1uj*{yOL$y>r)d@^`$(WMpr-632B% z@I+c}J3!t*?a%WE74V6sytBZ6(nP;;awHuAV*FxxUclyy=!xBYp*+?a!gv3cp1q(w zKQG1q?W_)IR$?-4V>NPbaa?yGUMjhBbC)LfE90;WZ4ml|cU?>9K)$3dAo0MXbt8U( z{)57u$ZksPVMdmimlLti-dg|o7#;Nzs)RrQrI2$Ldvau=$n3y}FuPP;U@*%ip+_D1 z$My1J&*BqQ>?33FCW|HJ>xXIQUPWr$IPS9qxeL}0Kkrb!YYz2aie+^8FEd4ZPTm~E z@3eBL)btP19iiR@cTy$SAD)Ap#>fFMvnL|QLKX)PkI)5n!^5KO<`Tz-8*QP3K)MXh zP`#QMI(ncaZ>AVJ3)FEp#Bn#PqQVLsSMaZkzOT)?i@9R2c!CEPNqz1=!vvLKe3nKG zwn1`m$+FGJ8PiT-aNw*o0rYSe^{_i9#)IS|(abgkmyT<;)dEbGMJQ!oD4rp@W5?%~ zkU`Hnx3^vluTMMSeECrCM7UGpjfr34l`lrC-FdTQ1C272Tyj|VIw|7(zg;qBm&wk$E8TF;jGkh0~pb=Tuq-#Wc6!4>KbCSjZP=1{7+o;w!5j! z#$N*5q+uP3Wd))Gy$zMG6aeTs#Cd?xynALL*)%MxLf$DRj-{9+%!@SnU%Gi$@|OqD z&q&o-#@e!md%*kqLNuC+5x7|y62!43CdgGS!HoC)Q= zUrq_4fuY7tL}aO=O|Fac$7?nD-1l{5o9Fv$!pQ!1dWk^7LW&kxyshS&g7itKwAZB9 zD^^kwbd&UR=AS)o0~crkK4t^nI04CjBl9~$Jnn*1_nF@KJ@erX&@4r;q1MM`mNu^0jd+#Ns zv~Igw+9|YYZwgVm5tTxrsih>eDAAyyJrx@GpAW*P?!EH+{_pFRc)i^B`#H~fp65L0 zoadZ#As6YbC&H)jjI%1Lu=9ncM=nEh=!JyUwC-yW5BW|Jh!8%wRy2ydsa4)mIlww2 zd*ir$!_>_6awmD;>_m$WSGrTV!=Fm`HMDu$Z`G2{@y`lC1sx2sEu+W#WIc9rpKs7~ z<43}>vCLvt#g#1N3BPO9U*aFroXi?}82==v+QwYeJc*8}cTjfAWoh=5FHh&jSmwqg zuf?BhZ<2g{pe*FpbcTDbH0p&#(Tw&3UVPecQPrvIIXBN}8-LQRJRqC*va(p48AU$M z{yLW>E9FFrPj2HF$0ELY)+yz~dDll-7Gv_x9!#)W!hL4ZDR6N(>f?vKUs>qQ2y#Bl zct}vb+~s%lI%z|!D&H*?+KH@a-dwkm4-Rxn3;EaMZ%zBS%xeVk?cJ5DWJtt)u=B9S zG1S4u?V^i_^Jj?d&XUk^3R_Oz6l|5iT@b7cit5j_xaVnbfS9a=>yRP)@Q|?%4pkA&{Q)gx97~NrW zV1(h!2i@!-6$TN%J9>}98#HCwc?a~f!|0gqeztuoM&CH=WJA#yQ`&>v*=!c;Us1<9 z+#I_USa3V2JZ8{8{&vEQu=d+flNFTSWdW7XH#84?O0n^iIYs~SrtL`MoUh(p^?|#| z=V#-+20H3?>DH+q_=H=T8%-*BQn6(sq)z2ZtB4PIlfQekzVos_Z*N|7Do%VglFv9K zkc9u3;}N0si+ZGQss=?HeZ%bJQ@<8p`C4)Pzye(gliRbNY;p=U!pbopE@iHzScGU# zu19H-ZbRy;rVBkTX|qS}j=Oykw;~KN9`KJN0HqCX%hAlsg zCz2fQqaC<1n(|nK_8axffRF6{I`7~4v2=gCe*|Bt`b}Pp)F^W)`%2zPg^zJn>;c!m zY9G*Ah%)!P5cIOML~8WPXBm>g(<=F&&qxHxKmYn+*T{<9$O`SqiqFc#w{<0m@p9Sb zQ=kN~5|kjKJ#Y8DM-6D%~ClWhuG;Z)zpeysVKBGiMjTv z1W!v$RHP7DdJp+Nxg;s=yu6}!v4VH+p447}JQw@@N@VArFetR#8c|FYyNvRU+j*WY zyo$@&p|O#ymu^x&;=QD8C+Z?uWtIH>oBNMmbXL-jSar!Ob0~kPZBP7;C!20tgt*(* z$V(TKXAK*+&>{}jZLcdb_0^?&dLDtAy~OTO8b3VW$8w)RS>L$(G2gXe{(!P{1DOn| z8Sa!%6g-hJH2F_V>PTw}M98N2kF=qzO-$q7L?QW+!MiECCSBOs2e~ZNRGa-`$s?+^ zhSFBL?o<3m=M-`4w6u%eNB>R)eFgn0Nx(z<5b(I;Na!>zQTl-y&X0+j^F51fwxf{^ z<8NR4t10>nakNL>JGYb7Cc>l=pZu~yo-x0kBiWAF45#W{591y_x+cv@ztu_OqfwK_ z?JvX@G*Y9cryG5wO`TO}>%?BsJkT4sw`(>#{wpQ&&ADF7SH&#L+1`ZP-!!;}IkM|H z;baocfk$e;Lf3QIx758n zlS2o;5QTWfWs&Q7waUb@X*V?rYg`mj6DzcQvfK5w&M^Tk_xnPVspVV4A8^lK&YD)q zZ6#WY)z`pn?_b>4yRz=CskuJ7o%O(RJ^;r-d)GeXI0kYi8!xhsHFP$34PHhfRddr?nXUXpF$eI< z19YbMf4VKP^x@Np+vnRc(lm8v@wXXmlizdJk4l5&oDn`%VsjJ;GqL{(#(ELQgXbG= zM$!4*7@)Ce9*!05=U3%7F_?{GFS0X&39J zJ3et2ReFR`y*L3qA$oQuPhV?WjBs7vP1IZbAkBN5?gFchz{euqJp<~BLp8iJhoQhC@1^iTdMRVFTK8R zF8y&S*J3?P;uMo8VPx|B zf%z*mUQ=b1z4EAJwM*%7*QmpeY}Y>0^4fp7O@nRbj1|i4q>5{0;xm`dOnsTdyKW}7 z&AUvR9w@+Loe*!<8Y+7GYQ*Ce?*Y3pGhs4*3R%G^(Zu4o#GH=joQ&l-D{_Ra4UXh~ zZ|PauZ@y#}3RZi~a80O}tuXn1ybsq<^s(B0R36JgwS5Mc>m7Ov*x7aBg$9)KP21{(zb!?kxL7IF zu|~YYbld&0XWU}lu@|*)k10L+v{Eq0V}I#gG^^LvE!iT0L!sXyzMVPoeA@1aD&dso zr@jwT@d4BOA9{Wm>3`U-NTl#tCQ9_$fjObL*^x1#%aI&0WTYxfANE8a`Kq})?cJgY zb>rNnkZx_$5&9-R$(pxnwAy@<&uSS6K9JD*tprlr&xM3|?y1O?H7I)grXqxkKwmDH z%Un)4YWunFWiA2)Ek6mFg%*L4#W7<`zT7!EAN)lkWBeCQH+Bv3+$r_+Okd)|P24tm zSt#~G0mDbNf}`izgDkx=Bu@o8eLN~IlF_scMMZ6zPlqpVf4+o9z`T=8TH4->OX1K_ zL28tk=Iv%Xi@O@v5`{^)3DW6C>G>GA0%9&Dhw>2A?s%U>J$ge;D&UN(NlU_4wa|sS@%6A-dEVwxwz0X{H@k{fVX-UfS3uW3(S_P_g zEG#Z+7uwB_wUc)wl^ku`*Ww(FxG_K#VRSI0lK-PkVRb`E;S-+`qn*`qH1UJPG~oT2 zN4q5jTMrG`x~tCLKK^>5olz^-kET#*wk%4bNS#2Zeo9|S|JiOMV~g60E_3H(?Kv#C zyY^+f4eraHAyRCra!_-PeCNAgUQ)P|Img29x?cW;Yt6S4gTo`6=6XJdM13k^tXbig zsXmkPviq*ht}!Xs@@#&Y0h5y!3F%FdZ*cKX;K}4$uf)$qRvWkUA^^e?HjpaG7 z5wYuZvqu2OR0?;eX7w1pT;Qs&%kAv&y>$G;3u9w0#^ny3k$M+R$u3-Q-&eQCXg*({ zn~wQJJHGe6D>+$jlsK*#7pU8)S?b(L^(r{HaK`@ap(C30#~VWTi)9-*#4RT|Z!b^o z7Hgcm%6<^2hNZHxhJ+B&uIJ2WF)@5ZBCzXZoWS1ZRa4L5Gs8zcDV%$c+Hkh$TcNnl zUo)p5;WX9W{lvq_w8ZOqdkkaCgX*pKuNsK)OJ%&()w0Yjsp#u=PRY2?DL1kszE^QI zktg(s8e&|BVsF0DlUQGA)z$Z{#+Dcbvs3ZDB63iqf-UqD{G#j|zPcQ<*fn_|o{nG++Q5?@59 zsP(ZXux6h=F?UH?`b4o$LL7_ca$G`jJO`1fZ_X_R)Cq!HSpqNfTDPlz37%z;zm@%k z@qm7o^V!v{Uw43qGe%gmAGq!mD-p;%yhVJV!oe8g z!(6v??WT&qs$OO$=S_LhGFmQjWA~`FYi_W%g-zSmGVM8}FP@Vp>%_;lJd-Zj_~=`d zuRe-XdA5<`7PrK=&di8!UATy}yo-mlN(d_G2tcw=%f7kb6A;)nb@}B<5rz9g{r zog{PeArPY^5L07iA*dQaM%FO}i zAI3nUz>Vn)1PF|Wq3c?0-Rys!dC)i4V3MPjPL4fdet&V-sW+W&s?@#btN1uj3yua^ z_io6XjcJmUy3wT`^kzwCw2=KYJ}c&XB!Nr!SS;KdAq!_t&GkBOb%*-$2U3>$gNZeAPKF%!o5dmml_c=% zRCBk_6?7b=c~5vKmTw=+_{z^_Ka?~$L=vIw@h);u-`}LF5$9L?`?0dl@4y2fWi;P4%NI`@*BX(0^V?ne;rO04v&#vdwJYR7IITfJ^@0(YdY zt7(C2NPo|(JGag%3+rlY@E4~WX*v>k;Ci?!hAAj1$?Z1vzG%e1Yoa70R0wZ>n-|}1 zWg05Ix5w@rQ=j^@)g}32)6~!xvIj@Mu8vvLY4u<6OA04E`qA3$CXueZnQN+Mu@K~7e%rr*&tcwj@0Lq4`o(1L#0ZQ=cDL@n z8tjfNv`VEHa^TTrjK6JLy`v+qDE+I!F2Xw@`-kU=X)>Q(lGks`y=EEpbiaW9;7ODz z)63Uy_l#CpFg_G&o_tYeUHhcXbYtJ>P`&XCEBTiCO>txzn*s9X2GtPD9pji26;`o!!V z&-qd`kE?6$*{^iGB}8vk@gvdlXH$N=p6ne)SzGYvz1gVo$+y-X&WdE?_?Cb4Lo7m( zop3;6Ve7~z^6ciR0m3$OWZOKyEVYpcM!N61B2KmzgHPNE~e;N4kgA!%aoclmck zZZ(|0tKsJ@{l$4-M4$S^;-l_vo_Se*tq5DKc^c*?PX2cHFE8SFKQfz&m5F%Sx!is( zGQ3A7QQgJSsL83E?ZRxq(LMJfKFZa}@O$3s+P7SGlW%%3N<3hdd!|OFF>I$@?dz?) z;im5nzLqLXJ;$}u^@!*qJ8DJ+jouM_)s9i7%|)%&c#&jXG#;y+uxad|qrm@PinFssE+iwtmJl=vEaCz`*&5`a*uyh9F@YCB9u(*>hQOS$LqP-7+IA`ICh!y z67Lmut*z8dZjR3QyV#YQic`;)T^g);u=ka~>-kL7^@@O^^r*R%=JquG2BfQ5+>rP%DbgOcSK7PSoE{|}! zaDP(RmZ*%LguX!`B~<&!J}n{bv%@opE16VUwn+&6AuW@OH%4p14kgBJS?-ph)Ox91 zHh2Q5HdlDQcjr!x>a0(!DShu7+#c4Qz3<3+{#{nEWy149hxRIod%Y?};lXY)WMQ9I z*l?1%1VZE$ z^VIp*ulc76B1^`LXszx)NK%T%2{=sRDkZtYHN>~~&own0Fc>Vkf0*#0#KExxcS%rz z!9YvNP)#nm^V@2y?w z_rB>N-$e0P{rwMz!#_t)DmzjRyg6K072wf^q+ga0JU0Dlr4;4*z5#hmydpJVX$xH+ z*vhS-jec3;7f@bi(I@D3*m-XHqjuoYe(Hhg_jSEfi;ed`d&}vV3wC|-ZDu_*Ai??e zV(A0plIaDUC#6fIh0mT|ap3OJ7LRpEovg>8*`B^Z5=WbLHZ7q2#E!@&R*hcH1@8$ZP9R< z*Z9I$%S9gvqPsIGG@0A?yr`3VeEbzd-Z!lk|NSGzWK#QyUU@ll?U}r{kZ@n&TF~n! z$~_6AJGdGsC{f2x4Y`%hG!!@=boFiXS2Gxu~{b>W!Htq+gUt`i5sX7uNum+D|Eq~zWbKT zP~LZSMxIPLW&5SL7Jt6g9Y?C8jD0-vTKyjsGBsx$&Zk<*xH=g6$?=%l9na=TG36bq zrLCF7rHxZw@kvhRp<)3D4eFC~U-J4b+I_Y@t&5-xX{aH$^j^Sy(8N#28S*%GyqYLy z>tSt_{R!^#->e(b9|VY%}4nAVw z!7Ux;e9>8CM$AVv_L4=#)Xk_MKYVz>S&Q~tj9Kxuc6U*=BQ!hn%kMBWQ74356$y3l z$~*2mn=P_f)Hv%=%r2R;W#UZFE;$RbL%LzBg^NDL3sMhq^cVtrkY5S1+;5gmQmisR zuyNr%e}7ES-7&xR<8tMGG5w2L0!( zo}`I5_CbX_gwNYZwU?_$r*tVska_$9kK9K;*qq+?@dGjM=PQVo{FYW7iqeA6P90EUZsx5(|(z}AXtBUsbW#+ zLgkEVMIobciGJg%VP!Ejp99?i<-B|+iUh)5`+YrIuM!NRk_*bnw7YN=@15hKiR8#j zY|G_Q&+<;Wk=)hKk+Q;gx^u8`Kb3*_8$rfao};-rdX&`SbHtC_htpLPY+s2NlbkxO zzQmysg{#+J-KiDiDuDzCWBl;@aoANmx5IQ>h34>dw^QN{8b!owmcf(R z)oEgB1CI0a-Y+el4y4;z&~~j5H5aLhB?NWi(9?~E$GY&weWdO3R+MRYZg$L)c1Zbf zldi+{njBm9mGXgZed^o0`|-YVXW(q}4vl8YOkoq)eI${jG?dA3!h`6{1u6bL>|8HZ zzu}j&?q;%$o&Uy&KKKg_>DOZ@yJ&gUU*?6RJ)MR&hn1; zR@bnDGGWsj^%aJ!7H%JE-t!(O-fa7*z%4{T5P*^D{(|_ zn=W~^;5Ry|N3VjJcO0+YfoLHiwySMw#h=VB%9~u-`bMiGxTERGS#yh$JBf^w&syxx z;O$OI=qcMKA@$f|1obi{ql93Am^rpR>*H|b>34gx$i*|}X|}zkq*t?DES~g}lce%} zQ1v=wS#$o{lO=(VqfxpO@2!tyf3p!B!nq-IE!$vgC4y$ic%TK}qw4rWRf63f&d!(0 zIYQqFtBY`)9%y;%&&OEmo6Rzt8~fU08%{LA@D3hH`9~u-aZX!yPY32@45c*fKjWVN zHvU{1|5+=3@z{FVba|0+5iU_izQ({N()_4AylcEC1nZ-`f{To15kyrE<_Qretsm*m z_8#rI5x7tEdV!h0>SLc6`Jm7P?iYz!r0eD%bEz^}-Q6Y|H$cQdzS>_ObK!wTUm~MT7};u~sxRK9y1<(!+gvS&J!e6^`h|r-x`~i0uwZ zs^9O%-4M#ij>j4nryCe+E+RZ45ZHN(+J!A!uiZ*2RcGu=Qc8hrjAe&}oEC$Z<~?oN z3yP@$#%EYPgs$Kpx!l!(o6_oC%djW?jUleiFq7FO(<57No!2T2baQV|U(~xs6&ys7 zkU_A;)jRymLB)PA$t$4|43XhUtzmsL4@ebO4~TibcjKV!QEy~tU7)(*uN1M*sBwgr zz0+#n#dw5*G0oRE)(?|aY`M8|rv(%aYQa@abGZ&YpFk29oIP57~wzOH;^Bxe^{HyL>GyeQW@VIOG-0O zs9$P$m!@P_m+um@I5f&He6nZGFQLxREm`Nvw~L)mJND>{kkZrEyeJ{LA760_vGpjm zn_F&`3z-BW?Vg#_Oi@gN6Ee)>tzph*4x$b=&&d9>-2{}XHBq;@Ud!vK1fK@$YRu^; z3=v!B@GIKbj9qhv19ArY>iP**aWjResLm9n&5b^x@}STxz01TdTJccVW_kN9VcTfW zyN?~*$8#p}o-ce+X>Dp0IEblDd_K^cMRY1+J%;b*2jeZyVz_h;&@7o$He@`qhlI7dH^77e*W2`2A46L-iZ;Rq*=zIt28p|o~PcYrO7ijkC?XxYT z{dLzaAel$)BFbwW9|Vo$j}<7N&?daaUN*Ze>S5S}?uwM_vCnaNY6rJI=!{F~P1kP} zPnYZMzuPV<{?I|%)o%aCucBvKYETbGE6*|Ywhk|C-(85a+(C{aYz``9Wb_G%Yjw2G zKIfiHfGaw*D^%N+iF`88@VrvR)L!oF9?7L8>xyGSde!NtvLzHpRZ9h)?;5C7dgW0q zLAA3NJl8_0+@iKrou%o1B-_#E&^ETNC&tL@B7sMlEr?YG2_IOz>pkJKLPktbf39$Q zLiMaBo#0SKYf!7CCtl_8qpnNOcjo!!zw~ns>={iGYdkBw>vXo%%u}+%A0lfW-Sr)i z+kMc-M$+>#G7+S7~;275Qp5yp|2>F z_Olsga~GmW%w(k;sECo&JpVHEnnwHUhgG-?Z)2$}kh25(@hn;%U9Gv_^Z2gQvQQS*2~(kqon(mlmJ40Q&&7reChzHxj{Qc++W#)IRH%9>PvbY|3_Y`kqo z_W1SJ6vqVA@Px&kcX-j+b$sTdo;!D*Na}Im(oKTrp-TfRyP2s(#pw^FOZ&+8s4Isi zN{iHt1uiISblKi#PxM@I-o`kvT)0hjM@&*xy;r+{y8MDD-;>(vmayCQ?P7x>+y_Ub zy069EyJ1K^MN)`kcQk_`L*vc%?F1go1!?X6#p1o^mYReu_jwJ!%Acnyk<4InqqyvX z!eegT(sV8H>C9b+rw%qR!tp-adB=J$_BgvQtPIo<`q?ghk{Ff0K#OygWp#pdDKFqN z(~UdvzG|~0Uw6|{e-(=w6J>98!aHJ~7O z-m>Mq@F8VNFALu)X0Ed_i8MFjRC^zGx4zKSR`zAj9Hy%Ms!@2kijd-=Y5&pSC&fd~ zY0CyX>zODX*=Cn?NMy{;vz>m+$NlwC`>bqrlZ$f>H-DHV&k4NScq$Y3cHy(=;_*`U z&M}=j<&@-CE+yTy`snl@buZ8yeFf!~WeVoz2=D`@>c8jc+B$|{mM->0m?DUc45zyH zu-6L$9|=0}a*(WPc$n@MrGXhSZteS*=Cb7X#yleq8?siosk@YbB*kr4N)%zA{A78s zCaEBx`)iShh69&-NL%#Kk%_+YJI4%;YD?dE2ksii-9n8=0w{5CLVzIO|MK$>VjQrE z`u#(NGbIQ8<=4`|*C*hbuwP##`hHPy?T4|zo8Uiv0zcHy|Ni+w1@8ub`}I{VIc+s% zB?H5~TFSo>aBxnpBVVJ2)-0yv2*Iuebc->zZ-AG)e}15E@csOTmAjRV0|NHN_3hlY z_Py^^`tUD)UnT$J>qOrrwY>ezK@CKh8)!X2A1i(}KiFd^1aN{df-$nq5V%8|Oly@}>%osr46058 zs~n{Lv4y{ej|#Tj{x@*+;)++`pXLU=MFtFucMT5wMg=D@qd}Cn@^rNM^L}jfs5B#` zM5tqVMQ1-FA$@XrleRav{F!1;ELb!s0A@F8l_RF?4}}!L4_z3>r*DD@PZ9 zeejYIct-)e()UYA=)n&%=ujL1ali^F26`HE?Sl&LP(uffu(R@Z@mezuWh)ymj5b2u zf@~H9{n-Xyd|+S01;0_jz8dJD9X+x7Sx8BG=v^WloEYF$yI^p`I%wej-t-Rhz1xa` zUWpmj%hzp!22j-yUWT(i4mfiK#;1b;ae?i}E8%M*qJp2=qJwipcvyMZIACyy_Io*^ zqM%QpaSb^AuMa9X+Y1fapY=iO1>;PmC!YkN)df6$weuGc)DPQz(Lq74prSXHfMaCR zF`zfEfG`5@QOQ&2klesS9!M*DOp$Zc?fh3~&^|)oEbunsMWBbn2$dRo)@TY0Ay0vH zjIcJ|h(ZIUrKo_ug_Z3$0-?tNxd0Y)pY_@Y75qF74UV>=0vLd-?2&GsUf*M|7sBsn zmDc)R@H`vDmja{{0wX6}!jS~@$mk`!ur)aHAW)h!a0Sja@xX6X@ZB^tIJ#C|UI-5) zHv6y(&HP#q5OYB{zy}8540MPdj&2^Ho*BJ(ok-L<2ar;Q1MTgGiMQ`6S};t{=&jeE zcvm+uR1gAPn9KtM9=wMI7+xQ;9<+<8RFD~f7K0zSGM_y_59;IS32xZ@{mS@y#HaoG z)g!=orhvo22Y@|gXb^wKX$3161k%>(=hJiRFVb!LFhhey=+kI>*6IJ&yKAh21|m*rVX4*>QEP#VGogVTM62JSGhN`%K+PO#oQH>T~sy%0*m{W{S=+BjG_B0a5qHzd`)O0^}2 zfa+2~YoX%*wGS$|2rCXq)4V*~Ty(9F2$!{IOxAbziMj@T8-T3|@(4J#R5vymVc0(( zk64dw-pQPA0kGvZV2{7qH1^N?``2Sj1w^o!0qlbtuv7Xrjs5d_^Yz%82+tEo0k-T0 zY^isf#{PN#^Lp%(iw{O0g8*mU&9$B5L;n)B`Rsw+>9>gEbV?$O%c!A{eyK$oj*7GDu zr~qmv2H6Qvq^0iCFVL>E4Jc(LstNYI1xS%$S00?*+FiiZz& zsdU)DwLnzG6#a}eJ{&h7!@=1K!ZRmKD`y%0hKXKEjYKt`7eGoXASK+tnYpnd`WsqV zyCAgOY%#~`H*#7h*gzk$gFY08Nh{5}X>9P8unoe~(+xuxwv^W&m(chsBzUv1)vhsBM(R`rwB`|vZxzvgZCbixyvXY+-!u|J+^naQN zRO9_ef8u~S_|FeyA|$qGC>#(jAk2Ag$i>R0+1^wEA7lk8{u2`wEQbw7&KfKsd3zxY z9bFNMV6jWt&BN6S!{qI$MRY46h@xg-iUg<7cf=y;S}rQ*lJHz1)dw5Czm1Edjl8#=9VXKbQ~7p;2l%5uShnDU z32qjE1sLi|Op^-8=mzV1PU~}6G3!si501sEk zDe#;FMtCTkVxOumtdIq>f_{7pWQPY4t|)B4->n+zNj0RM+r}=0R3Z{d&Tj>*8`@g| ztGB;CsNnb*EYNBOI+Ef-!q|KVLTBX@e5MMtkqzQ1*Dq|y0A-S}phF21I@5q4YuH;I z%z%;^fUm$Io6@mD+Jp1h=yg#1j5!-hWr#K;3HFzDyBg zH2Jguw+C1=e1F3_6AQKu(#2l~X@l5!4)%8-{XyV$RfK;Q3@!~o8SrtuDH|KX_t*@k zjUbD}IKud(*WLIGghzocgeQ;$_pxCATzC2l_&oExT^2BEL12CIFxyZs|2z2iCr>;$ zzwdu+jxQ~ylp7!LB?9A7g7IloZJKXw@q2TWQ*;xvJb;o2G*KBwd8c~wlrC1Dp4wKf zh|O^x+;Nik8Q|;&oN_Qu>AFpGLVmqDy37T9f;r$j0zj*ZFgnMEP19*Yi#Jwa^7wtd z@-KEXNUDi@4m7XnKPstPpvEb?>TtKJ${Bap#YnaU?={s4G1{WpdkxJgbQG14$l;HM*oVADIqkPa+>wPLtr%NQ}#73CGyQuK|I ztuMWxfk~GB6`f?RelWoxi2aO_2xynw9CR~${CtWD0?bUjJiyMXqCe8g)zL;v9%1$K zO|L%(ehA!+xU=*k=#Ng&A8fzmgK{f5FwAX;gHAv`IeV~_w!XDQ-wSGvP+xD=0YP8| zK*2?2B*KK|?hZCC5FURQ)uFVMwjQMNj_m85=^iZxaMiUf(!Zm#wpcGj0S)g0t445} zf6R#i{l_HX@6cZlkhaT$DYgpOJB34M2w{SDvj;nse~12(+As0~bejn9R&H4L@k(QW z)>Rt za$&eWpDJR22e@mpZ*&R>vx>GyyB|c-NZ`ZpY3MmEOqk%bvO1V)fE8Ld4_oxG@3fB; z?F8{E1Bki{*7X&-m|->1@6AJUKA}oX11sG)$>0Y*&u1|G3*e8H4~&a7Kjs+pnS2%s zpxbyr2^uF%U`Md&vmw+#cJ&t(+)b7gj{!*K;0K-=Ok4jA5zLp-&R8H#u%vxS+z+&H z1oRqwhF=S|)zC_+3({*aMgAo)Hu$(?{7DJ`9S!UlF19)X1H6Hkm4_Dq|4}ZpVH;|r z1vr%*Zh{s}&jKk$VO{n5FG#jOob3nhUiTj>kd6pXY(WOT zjT+&IK~`@sN0$weM*on{Cx4J#83Rv%XINEOapY{R+(G~U>M!&@=6LvWR}*ks1F&}k zH-vB`HYtCvXkaW~fz%unVW@f>sQLQ@7N+J5FKqCTA%NwcpR*8Q^s*Pp?>oc?hRaT- z^`nlN&!)lAL!+uF&c*>x<_4h$u9lY2zd&obAss>V{i%NR@ByzW%-n(H#RJX5GqL<= zZ1B+ic-|g12=u7U>W0Dk0M#6z!bf52xXqv%0rNw%bqMw2LB?1OQsB(#02-c%e@nmy z{i6;LE%4tw+8_l3u#Y3c7vZtNPvqRfjpf1WTmjgSg>Mzc{srkrBtw9_-v0M)7J3!S zr8jWK0ekiUYKGed=N0VYf_F&o;Om~i*WuYEF7P0WH5uani7y$)T1PiB#zWJ{d7{ZFvr49yiK%udL;&cALQlKd@f%;jYB%&Ei7jTF- zP?!|{D+QWL6Nn-p)z%kUQ^Y8sD1)A~`s1;`P2AL2A-v)|;2meZerV0h3U>mlpg7yh{Hc;Fu`&SA{ z^nM{B+jjpBpy1y?QBd)(6#LOrn0}#84+P!K3ntR=_;IJ|A1N@ng*A`1HTvETs`*z2 z4Dq9)JbeJ#!`QPyPr-HnN`WDMOloXZEC3YHaSgc5hCcdN3Ji+sJH@oM1W<@>q-gwC z3Jmch+Uoo0c=@#E;rUpDd^^HhSK*=6|KY5I<($OJ8;ZHVbWL!22Q> zEdFC1P}h%n`!K|hYE)z;bOT#INR8kWh}M6lzz{!VJI|4VjP`qFADkkq<6kK-#1CT! zF)5HH;XK^X3a8G0rN9tBt}-_Sb^!`#Ar2lt^t%6%0)x#?G$k#g00Y~GMx5yRR|X96 zBYBj`ycSUG*g$a{tbqKJL5X099|imi2Q>hN-v*nF82DET4Dq9Jl&AR!aO^rT#esJP z=kPyLVDRmo+AqB$fNujwUdPZf`i~44TzmYWmn5{=4<$J8He4V7M+OX@t?Us!z6~&_ zZD63E`bP!~j_tR7DoqeD1Z-dknE6Kr41WFIfT%|pEyF4}CGb!7iovbZ?!Qa|yL&iK zfj#NMrue59{*eJpz+m%?!;VN>H{b6wX-vzR>eM*$=MI4Adv^Vj-h+?-#*RMe`Ajy} zT@C_PFIe4%FBx7I#`~N8ey(MK(=RTVYAR%|Unjo-w8sFnw;!gx8S;y-H_@t0 zO7?%D!4M*#X3Qsx+0K!Iw$OmKsKShSRr9Yj- z70tFJG$$%G0-l`;AvOoD@8+xjeTx)R7vtYi5(is8IGn(K55km1?TDSi5Nr}V1GAO0 zb@KM~as~Ukn2c%TdgSjlRA`5x${9NoD3tkr7#!i}?&9WwW`S}5MLn4S;%_x2xIO{a z2x6CigkCGJTH6IzK!6fETWHxCeHZEHe|hK!`u{o5p*)Nl-}8T@R&qf=+CG=TC&iFtT|N-1 zJq1kn6bS6_mLfC%J1K^gOFOiSk{+}as;GsNR$u+^q!=c|-c;0sG-yesbN)LihB@*~ z#fbJKP%kvUgtzqm_5V(aVcNX7mr8CLkU}RO;G{$#LSdV7ZWuz>#yQAUep)YvnY8SE z8hubmi*p{tKsc#c{(mRMFuCT)D4v@F;XWBuget)zV8pHeOo~4KsR!@PCje$N3fc)z zB09_dGbQ#U%ze);4Jtw$9H>GKu43iN|3HnMw4c!O|ja(kGtjd|05}=_H{t7 zT*1PAZ*U+72TZ(h6kz@Nq3IvVpn>yys(_&mU}Lt){fiLFHlH;Ah45#g*PmBm{n#?| ze{x9U2{`J;D!IN0n*uD+V0FJ=n7_-&!0ZcafrpN6_qbs;w1%4t98e^~b2@FFu*CgNvE_mqX0Ks83B)Fkq zE!{tcMELHtceMLm2K1vlE=9Xo%t8VKyORASI8=T*KEEl!*YkLSOa)wAesX~#TW!6DFNj-bK`POLX7{!91o1OxrkqwHLxn!NW)2UVv%fh(vRS7Qz#2PxZ9{jR*B2>xw1& zNipCVXc_9R35hO!gJ4IEgKhdja(WKj62t=&Gm?B0u;>G#RMCsqU%`}h4upIG7-#__ zCeZIUpcuH>I3vIUj>oUZJlFdL)uj*PUcgG{fNJ3fzCN;Jg8mNrOA#PQA;J0(raAA& z=hR~Dz!u8DvJf9k_Hyn`5ujHI{nX`S_kl{j0A0i5#tR{=u&UnHzeN9`n4i@&=y|mH zhut0no)Dn=JuvYHB{s{09$7IX*7Pty)&s~~FyuuUtjL%rEbmW@EGmIS=qd0!xbej+ zVTHtIA=|E3;pqS^JAuIr-hm8ym_WZDD_K)B`sTA-3=O9S%@+ak!WUc%%`w0lB3wWi zTZ85NVcZx__Wy|bth|@Lf|LO#7UWBC+39UJMY3M@jiVqi>z^Me_VPNQgN27)XxNh} z>AeM+uO*nY!_CSR1A?~U_nSq)y33jZHp&JCpfzcr-*DN?+|bD8wy}aQh;dL2+^K*A zP9v;SS}X>HpQ8fi6cRdJl^erL90P=^1V6lxbU#0+U`kMHw_(5ng6UX0fxvCUBkn8a%h6(@~{*znrSdEg-6>_uosL@&>!cKR6N|g-Ph3n-Z{XX zetsasK?b6Sc5;R1Oi&kR`|qSy0RkF=cEbfkVL{OX_jZ6346}fcU9O1){e}xD9)w;% zPb>IAA_yh_THDT(zgcfo=Jt{(7kvrZI8sVZtGfUOx(FFwN6Z+50q)mHuOHzUw)n>ldON-)O3ZDD6D2Kcp; zzUZ$&fIzK31s=HqWNrmN@HkqPj1d$%(klE5F}QU6Ug22kkw158Iz zA+;8=bmm5ZhG%Y2t6dHTNS*JO5@5AgP8Wj&$iS$9u>9cn+6Tx&69l7k!6i zp$@;E2RiTupzsd!zKI1CWIGt|Q5|_k!U)~72a@G=o2fVRF+hTG+RgX--8SHY5$FmX zG)EJOzMu0|S@~9%4s;7{8eBImGAP6Z?%@atyJomprpS;5-}bexw+G7TCtR;(=^_jS z#@}aI=xumoUP=cf|M7v+i?O?CKz*z{9IaquBP3bs>u8EZ&{f1hI=IQQ6k`NYL?Hd; zTwE~4S_qedE7rvY^p_9lFL)uxrxJ{~N`Bz%6ga2(7ar2f9$=(V{(0Tj-|sIGirwW7txJl5u+FxoVelIjELDXOUe!n!y|D3lX1-ql znme!p_^4Z1gAEPy6fkVasQ{|(d^pc|!G^;>|=K`{qDPa}Sc5gLl<*li)Lax@jHe*6NYhA$GZKF0_Pu3h+1 zV)N@Rw!a?ct+f2+B@epr6Z!fRvR_&-^MHHLF%?=|H?(<{26UkfK=;C|ET{`3AUNa& zf)AE%#QFZ9#2;`t@buXhtnhD0q5NDoo`vLmEHHiv==2z{1o-UrJSGT59j!mpTy)E4 zP>>)$<2)S?kR>)CpX|dR+^DCEWavo^YVwzZn|Jx z4xQ_x+gT5=KLBj_;1>l-&CxoCft(5UVFP+PymeY+7w}x12;%jD{v0g^TyS$Gw#(tx zzdFC>)~Mh@Cd`PKFK$Ek!1-^?G-eE#E^E)7|GBV??tR?fSUI~0e!pAu^R?Xd-(LT6 j&+l)miTv^HAMg0+Y7hX|1LH9+8!plw7##R7I5__Y8XkiI literal 0 HcmV?d00001 diff --git a/log4j.properties b/log4j.properties new file mode 100644 index 0000000..56ac12a --- /dev/null +++ b/log4j.properties @@ -0,0 +1,17 @@ +log4j.rootLogger=debug, stdout, R + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + +# Pattern to output the caller's file name and line number. +log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-5p %t %C{1}.%M - %m%n + +log4j.appender.R=org.apache.log4j.RollingFileAppender +log4j.appender.R.File=ttcn3.log + +log4j.appender.R.MaxFileSize=1000KB +# Keep one backup file +log4j.appender.R.MaxBackupIndex=1 + +log4j.appender.R.layout=org.apache.log4j.PatternLayout +log4j.appender.R.layout.ConversionPattern=%d %-5p %t %C{1}.%M - %m%n diff --git a/tracefiles/TC_VxLTE_INT_REG_01.pcapng b/tracefiles/TC_VxLTE_INT_REG_01.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..a027d17479d3734d694b4519a118ed53510c72d1 GIT binary patch literal 17020 zcmeHOYiu0V6`oxu1l(9Om{ct!(y$4R^O)V4eZRAg?Kn$fV|newyfZsz&bgFirskkXX)2NYTfh0=3ocJ1Bu z`muh{fIQOOxp!vn^L*#rbIv{6+Sb;3k)o*n@c!E@aQ~!yS*Zv`m#?_2lWgbEUbCRJZhCsQsz@AdhdZjr@~;KDiJ_(#ik3R<(m69&pR!TkofZ*6isP{n8u>t;7&iK67E zH&d_g>L|sbjA>|?`t`Yw;5W48k7ubC`bMgk+U&aqZ_aFcaOZQ||L`oNSK2SMzrK0b zGv6BO?TaUddxvOE$_J&KX3xn2%X0RdVBB2kd|oE{DMcN(D{7if#0MQtJKNTJT;hY3 zl4GQ2kmh_&yOXnX0hgWg`hyojfXeifQLK$2$Ef&E<2uRn5=Z zxwh7BKAUCYJkEj469nEXh$8W)0)!QOVv^^)0k@ZB1kvLZ#+^_( zK_-HCJ&&Zi@D0~?0% z4l6-pwVH0Mt+lJ5XB1UB&FhjP2We4C6HTWJ8c}6FMQAk%E4& z*Aob^ZpQC-1-veXjoL!{({==|T@o~jQAsLdgF1J*y5N`b!5v>Ru;|G4c3e38(4NbI zP?@W&<)GgXUl1iFRFp)b%r?sl0?{;mDi5O(NH$x@@~RW&-Oo=lhZXe{uZjr2KwE2~ zkjHrtF-YfmJ=4}Y$aEQ%nE{ijn7Et*IJx=;2bq!Kp{@bua8C~%D&P_@*ft}H3=X%9 z4FI%(U=Pcc7n;aAbBxGoJrkq>>_bXHC*_rgSqUkao*U-~Kias;!xZf~ejNDI&xW#U z6o+(N(j*w;+?aqDmxL2m>;`F=mgF>Z9DtyxP)mT}7Wr&}L^vro&a!T=oDno<-t8p; zK^n^|o=iqekBw)=v9S!}2^kgAL?$>gk>T}7Eg(X`Eonwlq{wmx1WR0=x=z%bBm7^lNuEP+SD1hLoP^zsJWGl*8l(n~7QPP^S_R5})()%FTF@cmF-s&(VF38!8<(-}P z#HiQ}-+A%5Tb}5G6y{&LdB^B<=*24^dJdfV^5)E=Q?M&oZft$)gYO+@ragNsl;y=4 z%5ngA3d+)!Kk(jtImm2@Q52&sOurDv213q&&mX{glw}iqPs6ka> zS+<+caYM4)2>D%$v`xV`o$$?9=Aj1Oz`Hx)-L8zLaX{im*urmahi?|BZylY1x#1X> zBq_8+QC0=M|Dri3qkIpPyRf_>iH=Rc0AmytXj~ae+lt0IvqI)n0P$?XBZG*f|*tdhzn@s)!6!DVlS)# z4Lw(5W*HHLK#IZvU9W3_w~ISK1_ z&ETVHbIoAA?!|QjK6-VAvN)h4c+oZid?Z6=xqK90vEFBjk5+?W>l*NoRh*%y-6mgJ zPeT4nmDc9ix(8B;x< zS$CYjikSKD-F19+ZFKq|i+q;)2qmN(uwTQ-7dH_Oo@GL8gwdLpj5DYG7y%WCYPv4T_410FR~SW^S=#EBCO zT1KGCN&@JC!LkIYGHq(LSKEQICF3D(H*p0-kC*rHJ~tYToZp!W1UP|Xlf)D7@c}0< zxNHX|6i}g&RE^bU(Do1;h>??!@IrZW>E4b~4Dy&}%DJsJ%`?5!IkTV9n zp-V2?J7BEWYUFT5mpo>uEhgq3A+X0m8PhE0D!Sy3^M6N7d@@kG$NAnFosM0?J?^oO zXZN_Xu*V6|2<~we`(nK?u}*tjGx`FqA@bKK@G)Mg83oTI|x55B(Pn{(9M5OIXJg@Yh-3uMcJ@3j-a&i#84TD-W5^v5vVGdg5yMqZ#^J zQ!{fq2aw2`uPOt0$sqcjay@ePKJ4F0iIWM6|7gREhC-~SLfQ{2QI|b1K;c@ zC83O|o=4k<&%cYf`semq9`#=woj&weE;R(*N)Q*>Wcx3aW1deMI3vZPCV_OO%%=T|qlXo)KE#^Qi>3d84&xtjU#Fu2vy zL>*MXpBoK>!&ZdKiaZQH&F+E2`0c!B;l$u@)u#g_jV`+=TlHz>S-4MC3VD2GX2Sgh zbYw9aA2=Q#?hQN2#c=PWPGlr_H0-F(8$GSQyZ+upqO0%I>n|~KDA7F>KlJJKSUL4* zxTHfQEotCLt`HXKG4EM;-VcfWc4r110Hx& zL+A#Rbu1ue7I+NO)s#5y4e3)Y;i~g1lXi`v4NpIHb^?L1{606>sYZ6Jl$~JBXIX1w zGp`X^D`O`RxwX2=#@4#Ha@Sb?G_|!h*6^U=S>3Zvp#;>IiB#UoMuy_iJM8;HiDCP` zN8sKcIh3g628L#H$L#y=K&{5u{;*E@TPQ@b?_c7rI&Xo#56ixD$;vH94yN<^fqDkAcF zJ4VzeCX|#{c1DPqKtLTnudAxcIh8SL^93Rdr^Gs4~G zebu}pE`%YQk$gsx2{c(|R;D`k4y;~?j57n!7Kw9!IJ^KGnhSUY3{;}>Rux>Qu5oZ( z2m|VjI6NEr2x*Rv-yO#w!McN4hzeXu5Z>&xF?6&pqR}`_1-?iA&jPRGh5Y~I^BtwT zpo|Ilf9ugM(-U7gzi;thID-8D{k}5)zt(=a{oR(`Z@ynq?TskjW$12|IOi%!LDCxM zVkU`G4aDGajSN_d+;dFs0ttlIEYot0xpt8j0e%>dY^!!8+ZqCYUc~kyt(vf`4c}(u zoD%Re`YBnQTy^kgllU}2=UNzaE01Aa%Xr+{0AL@|wGPi5=bn3roD`(_Igg^l2uud9 z+7E{z7)MZZDiWzZ6N${8h_r^GiV-DTIY5C=ZP75uD2#AsB=i~9YAQ9a!j4M)XsgL% z^}O~r@Y+$}GfWM6EpQ=j@LF#Tuig3Pzt(`)#H}tO!{R{tRv$+1%*2*xTBQr^*Ad9>@ z#fW~Q8T2NL0xtrDXEA&~;I$%$pZdq1QV`0RObHCXU}aS73v1^MCsF4)9s@c28p`7K zciS&pZ~gJF7W6NC=Bx(e-;ZJ;?<%?jV$suJyI9hQSSCkbx5h=i<-4#EQm^ZS`j56N zVhZJBHMair?>(guJjc`!TYGOv8rX`|U~Bsi9SdUXv!^8+;5t>D;(4Dqrl-~sT-U8K zy;^Wpu=T7Fl4|OYo-LiFuR|HrEVe+4tjH~k_V6=^t+$^9Y+W_v*6-RcTORsl--6hh z@c459MxU5+y4KJFb9>$EW`P;l@=dYcF+Q6ahkxQW@BLV&;PP_(7+9ws52w#r_Emq# zHQZN7ACv( Date: Tue, 24 Nov 2020 13:44:56 +0100 Subject: [PATCH 116/176] ttcn 3 updates --- ttcn/LibIot/LibIot_PIXITS.ttcn | 1572 +++++++++++++------------- ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn | 611 +++++----- 2 files changed, 1093 insertions(+), 1090 deletions(-) diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index 73c1751..53fd922 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -29,6 +29,7 @@ module LibIot_PIXITS { * * @desc Example of module parameter based entry of EUT interface information for all products particpating in an interoperability event */ +// remove at end of validation phase modulepar ProductList PX_PRODUCTS := { { // productIndex = 0 @@ -372,791 +373,792 @@ module LibIot_PIXITS { }; } // group adapterGlobalConfiguration - - group VxLTEMonitorInterfaces_As_structure{ - group EPC{ - group Diameter{ - - modulepar MonitorInterfaceInfo PX_MonIntf_S6a := - { - interfaceName := "S6a", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "mme.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_S9 := - { - interfaceName := "S9", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "hpcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "vpcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Gx := - { - interfaceName := "Gx", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pgw.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - }//end group Diameter - } // end group EPC - group IMS{ - group Sip{ - modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := - { - interfaceName := "Gm A", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := - { - interfaceName := "Gm B", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Ic := - { - interfaceName := "Ic", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "ibcfa.imsa.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcfb.imsb.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := - { - interfaceName := "Mw PI", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := - { - interfaceName := "Mw PS", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := - { - interfaceName := "Mw SI", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Isc := - { - interfaceName := "Isc", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "as.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := - { - interfaceName := "Mw PB", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := - { - interfaceName := "Mw IB", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - - }//end group Sip - group Diameter{ - modulepar MonitorInterfaceInfo PX_MonIntf_Rx := - { - interfaceName := "Rx", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := - { - interfaceName := "Cx IH", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := - { - interfaceName := "Cx SH", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Sh := - { - interfaceName := "Sh", - //available := true, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - - - }//end group Diameter - } - - }// end VxLTEMonitorInterfaces_As_structure - - group VxLTEMonitorInterfaces_As_pixits{ - - group Sip{ - //A.8.2 PIXIT items for the Gm Interface - //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group GmA{ - modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE - modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE - modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF - modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; // Gm Port number of P-CSCF - modulepar boolean PX_SIP_GMA_MONITORENABLED := true; - }//end group GmA - - //A.8.2 PIXIT items for the Gm Interface - //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group GmB{ - modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE - modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE - modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF - modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; // Gm Port number of P-CSCF - modulepar boolean PX_SIP_GMB_MONITORENABLED := true; - }//end group GmB - - //A.8.3 PIXIT items for the Ic Interface - //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. - group Ic{ - modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network A - modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A - modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network B - modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; // Ic Port number of IBCF of network B - modulepar boolean PX_SIP_IC_MONITORENABLED := true; - }//end group Ic - - //A.8.4 PIXIT items for the Mw Interface - //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group Mw{ - modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of P-CSCF - modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060;// Mw Port number of P-CSCF - modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of I-CSCF - modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080;// Mw Port number of I-CSCF - modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of S-CSCF - modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090;// Mw Port number of S-CSCF - modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of IBCF - modulepar integer PX_SIP_MW_IBCF_PORT := 5050;// Mw Port number of IBCF - modulepar boolean PX_SIP_MW_MONITORENABLED := true; - }//end group Mw - - //A.8.* PIXIT items for the Isc Interface - //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group Isc{ - modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF - modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF - modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS - modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS - modulepar boolean PX_SIP_ISC_MONITORENABLED := true; - }//end group Isc - }//end group SIp - - group Diameter{ - //A.8.5 PIXIT items for the Cx Interface - //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. - group Cx{ - modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Charstring Cx IP address of I-CSCF - modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868;// Cx Port number of I-CSCF - modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of S-CSCF - modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868;// Cx Port number of S-CSCF - modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of HSS - modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868;// Cx Port number of HSS - modulepar boolean PX_DIAMETER_CX_MONITORENABLED := true; - }//end group Cx - - //A.8.6 PIXIT items for the Gx Interface - //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. - group Gx{ - modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PCRF - modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868;// Gx Port number of PCRF - modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PGW - modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868;// Gx Port number of PGW - modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; - }//end group Gx - - //A.8.7 PIXIT items for the Rx Interface - //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. - group Rx{ - modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of P-CSCF - modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868;// Rx Port number of P-CSCF - modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of PCRF - modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868;// Rx Port number of PCRF - modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; - }//end group Rx - - //A.8.8 PIXIT items for the S6a Interface - //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. - group S6a{ - modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of MME - modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868;// S6a Port number of MME - modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of HSS - modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868;// S6a Port number of HSS - modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; - }//end group S6a - - //A.8.9 PIXIT items for the S9 Interface - //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. - group S9{ - modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of H-PCRF - modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868;// S9 Port number of H-PCRF - modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of V-PCRF - modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868;// S9 Port number of V-PCRF - modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; - }//end group S9 - - //A.8.10 PIXIT items for the Sh Interface - //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. - group Sh{ - modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of AS - modulepar integer PX_DIAMETER_SH_AS_PORT := 3868;// Sh Port number of AS - modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of HSS - modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868;// Sh Port number of HSS - modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; - }//end group Sh - }//end group Diameter - - //A.8.11 PIXIT items for the RTP Interface - //In the context of the present document RTP is only considered end-to-end between two UEs. - }//end group VxLTEMonitorInterfaces_As_pixits - - group VxLTEMonitorInterfaces_Templates{ - group EPC{ - group Diameter{ - template MonitorInterfaceInfo m_MonIntf_Diameter_S6a := - { - interfaceName := "S6a", - //available := PX_DIAMETER_S6A_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "mme.epc.domain",//TODO: define as PIXIT - IpAddress := PX_DIAMETER_S6A_MME_IPADDR, - portNumbers := {PX_DIAMETER_S6A_MME_PORT} - }, - { - domainName := "hss.epc.domain", - IpAddress := PX_DIAMETER_S6A_HSS_IPADDR, - portNumbers := {PX_DIAMETER_S6A_HSS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_S9 := - { - interfaceName := "S9", - //available := PX_DIAMETER_S9_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "hpcrf.epc.domain", - IpAddress := PX_DIAMETER_S9_H_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_S9_H_PCRF_PORT} - }, - { - domainName := "vpcrf.epc.domain", - IpAddress := PX_DIAMETER_S9_V_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_S9_V_PCRF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Gx := - { - interfaceName := "Gx", - //available := PX_DIAMETER_GX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcrf.epc.domain", - IpAddress := PX_DIAMETER_GX_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_GX_PCRF_PORT} - }, - { - domainName := "pgw.epc.domain", - IpAddress := PX_DIAMETER_GX_PGW_IPADDR, - portNumbers := {PX_DIAMETER_GX_PGW_PORT} - } - } - } - }; - }//end group Diameter - - }//end group EPC - - group IMS{ - - group Sip{ - template MonitorInterfaceInfo m_MonIntf_Sip_Gm_A := - { - interfaceName := "Gm A", - //available := PX_SIP_GMA_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_GMA_PCSCF_IPADDR, - portNumbers := {PX_SIP_GMA_PCSCF_PORT} - }, - { - domainName := omit, - IpAddress := PX_SIP_GMA_UE_IPADDR, - portNumbers := {PX_SIP_GMA_UE_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Gm_B := - { - interfaceName := "Gm B", - //available := PX_SIP_GMB_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_GMB_PCSCF_IPADDR, - portNumbers := {PX_SIP_GMB_PCSCF_PORT} - }, - { - domainName := omit, - IpAddress := PX_SIP_GMB_UE_IPADDR, - portNumbers := {PX_SIP_GMB_UE_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Ic := - { - interfaceName := "Ic", - //available := PX_SIP_IC_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "ibcfa.ims.domain", - IpAddress := PX_SIP_IC_IBCF_A_IPADDR, - portNumbers := {PX_SIP_IC_IBCF_A_PORT} - }, - { - domainName := "ibcfb.ims.domain", - IpAddress := PX_SIP_IC_IBCF_B_IPADDR, - portNumbers := {PX_SIP_IC_IBCF_B_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PI:= - { - interfaceName := "Mw PI", - //available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_MW_P_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_P_CSCF_PORT} - }, - { - domainName := "icscf.ims.domain", - IpAddress := PX_SIP_MW_I_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_I_CSCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PS:= - { - interfaceName := "Mw PS", - //available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_MW_P_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_P_CSCF_PORT} - }, - { - domainName := "scscf.ims.domain", - IpAddress := PX_SIP_MW_S_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_S_CSCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_SI:= - { - interfaceName := "Mw SI", - //available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := PX_SIP_MW_S_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_S_CSCF_PORT} - }, - { - domainName := "icscf.ims.domain", - IpAddress := PX_SIP_MW_I_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_I_CSCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_ISC:= - { - interfaceName := "Isc", - //available := PX_SIP_ISC_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := PX_SIP_ISC_S_CSCF_IPADDR, - portNumbers := {PX_SIP_ISC_S_CSCF_PORT} - }, - { - domainName := "as.ims.domain", - IpAddress := PX_SIP_ISC_AS_IPADDR, - portNumbers := {PX_SIP_ISC_AS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PB:= - { - interfaceName := "Mw PB", - //available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_SIP_MW_P_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_P_CSCF_PORT} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := PX_SIP_MW_IBCF_IPADDR, - portNumbers := {PX_SIP_MW_IBCF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IB:= - { - interfaceName := "Mw IB", - //available := PX_SIP_MW_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := PX_SIP_MW_I_CSCF_IPADDR, - portNumbers := {PX_SIP_MW_I_CSCF_PORT} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := PX_SIP_MW_IBCF_IPADDR, - portNumbers := {PX_SIP_MW_IBCF_PORT} - } - } - } - }; - }//end group Sip - - group Diameter{ - template MonitorInterfaceInfo m_MonIntf_Diameter_Rx := - { - interfaceName := "Rx", - //available := PX_DIAMETER_RX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := PX_DIAMETER_RX_P_CSCF_IPADDR, - portNumbers := {PX_DIAMETER_RX_P_CSCF_PORT} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := PX_DIAMETER_RX_PCRF_IPADDR, - portNumbers := {PX_DIAMETER_RX_PCRF_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_IH := - { - interfaceName := "Cx IH", - //available := PX_DIAMETER_CX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := PX_DIAMETER_CX_I_CSCF_IPADDR, - portNumbers := {PX_DIAMETER_CX_I_CSCF_PORT} - }, - { - domainName := "hss.ims.domain", - IpAddress := PX_DIAMETER_CX_HSS_IPADDR, - portNumbers := {PX_DIAMETER_CX_HSS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_SH := - { - interfaceName := "Cx SH", - //available := PX_DIAMETER_CX_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := PX_DIAMETER_CX_S_CSCF_IPADDR, - portNumbers := {PX_DIAMETER_CX_S_CSCF_PORT} - }, - { - domainName := "hss.ims.domain", - IpAddress := PX_DIAMETER_CX_HSS_IPADDR, - portNumbers := {PX_DIAMETER_CX_HSS_PORT} - } - } - } - }; - - template MonitorInterfaceInfo m_MonIntf_Diameter_Sh := - { - interfaceName := "Sh", - //available := PX_DIAMETER_SH_MONITORENABLED, - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "as.ims.domain", - IpAddress := PX_DIAMETER_SH_AS_IPADDR, - portNumbers := {PX_DIAMETER_SH_AS_PORT} - }, - { - domainName := "hss.ims.domain", - IpAddress := PX_DIAMETER_SH_HSS_IPADDR, - portNumbers := {PX_DIAMETER_SH_HSS_PORT} - } - } - } - }; - - }//end group Diameter - - }//end group IMS - - }//end group VxLTEMonitorInterfaces_Templates +//TODO: remove at end of validation phase +// group VxLTEMonitorInterfaces_As_structure{ +// group EPC{ +// group Diameter{ +// +// modulepar MonitorInterfaceInfo PX_MonIntf_S6a := +// { +// interfaceName := "S6a", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "mme.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_S9 := +// { +// interfaceName := "S9", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "hpcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "vpcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Gx := +// { +// interfaceName := "Gx", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pgw.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "pcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// }//end group Diameter +// } // end group EPC +// group IMS{ +// group Sip{ +// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := +// { +// interfaceName := "Gm A", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := omit, +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := +// { +// interfaceName := "Gm B", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := omit, +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Ic := +// { +// interfaceName := "Ic", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "ibcfa.imsa.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "ibcfb.imsb.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := +// { +// interfaceName := "Mw PI", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := +// { +// interfaceName := "Mw PS", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := +// { +// interfaceName := "Mw SI", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Isc := +// { +// interfaceName := "Isc", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "as.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := +// { +// interfaceName := "Mw PB", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "ibcf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := +// { +// interfaceName := "Mw IB", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "ibcf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// +// }//end group Sip +// group Diameter{ +// modulepar MonitorInterfaceInfo PX_MonIntf_Rx := +// { +// interfaceName := "Rx", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "pcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := +// { +// interfaceName := "Cx IH", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := +// { +// interfaceName := "Cx SH", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Sh := +// { +// interfaceName := "Sh", +// //available := true, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// +// +// }//end group Diameter +// } +// +// }// end VxLTEMonitorInterfaces_As_structure +//remove at end of validation phase +// group VxLTEMonitorInterfaces_As_pixits{ +// +// group Sip{ +// //A.8.2 PIXIT items for the Gm Interface +// //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. +// group GmA{ +// modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE +// modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE +// modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF +// modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; // Gm Port number of P-CSCF +// modulepar boolean PX_SIP_GMA_MONITORENABLED := true; +// }//end group GmA +// +// //A.8.2 PIXIT items for the Gm Interface +// //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. +// group GmB{ +// modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE +// modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE +// modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF +// modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; // Gm Port number of P-CSCF +// modulepar boolean PX_SIP_GMB_MONITORENABLED := true; +// }//end group GmB +// +// //A.8.3 PIXIT items for the Ic Interface +// //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. +// group Ic{ +// modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network A +// modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A +// modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network B +// modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; // Ic Port number of IBCF of network B +// modulepar boolean PX_SIP_IC_MONITORENABLED := true; +// }//end group Ic +// +// //A.8.4 PIXIT items for the Mw Interface +// //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. +// group Mw{ +// modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of P-CSCF +// modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060;// Mw Port number of P-CSCF +// modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of I-CSCF +// modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080;// Mw Port number of I-CSCF +// modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of S-CSCF +// modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090;// Mw Port number of S-CSCF +// modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of IBCF +// modulepar integer PX_SIP_MW_IBCF_PORT := 5050;// Mw Port number of IBCF +// modulepar boolean PX_SIP_MW_MONITORENABLED := true; +// }//end group Mw +// +// //A.8.* PIXIT items for the Isc Interface +// //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. +// group Isc{ +// modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF +// modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF +// modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS +// modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS +// modulepar boolean PX_SIP_ISC_MONITORENABLED := true; +// }//end group Isc +// }//end group SIp +// +// group Diameter{ +// //A.8.5 PIXIT items for the Cx Interface +// //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. +// group Cx{ +// modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Charstring Cx IP address of I-CSCF +// modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868;// Cx Port number of I-CSCF +// modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of S-CSCF +// modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868;// Cx Port number of S-CSCF +// modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of HSS +// modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868;// Cx Port number of HSS +// modulepar boolean PX_DIAMETER_CX_MONITORENABLED := true; +// }//end group Cx +// +// //A.8.6 PIXIT items for the Gx Interface +// //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. +// group Gx{ +// modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PCRF +// modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868;// Gx Port number of PCRF +// modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PGW +// modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868;// Gx Port number of PGW +// modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; +// }//end group Gx +// +// //A.8.7 PIXIT items for the Rx Interface +// //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. +// group Rx{ +// modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of P-CSCF +// modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868;// Rx Port number of P-CSCF +// modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of PCRF +// modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868;// Rx Port number of PCRF +// modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; +// }//end group Rx +// +// //A.8.8 PIXIT items for the S6a Interface +// //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. +// group S6a{ +// modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of MME +// modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868;// S6a Port number of MME +// modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of HSS +// modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868;// S6a Port number of HSS +// modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; +// }//end group S6a +// +// //A.8.9 PIXIT items for the S9 Interface +// //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. +// group S9{ +// modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of H-PCRF +// modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868;// S9 Port number of H-PCRF +// modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of V-PCRF +// modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868;// S9 Port number of V-PCRF +// modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; +// }//end group S9 +// +// //A.8.10 PIXIT items for the Sh Interface +// //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. +// group Sh{ +// modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of AS +// modulepar integer PX_DIAMETER_SH_AS_PORT := 3868;// Sh Port number of AS +// modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of HSS +// modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868;// Sh Port number of HSS +// modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; +// }//end group Sh +// }//end group Diameter +// +// //A.8.11 PIXIT items for the RTP Interface +// //In the context of the present document RTP is only considered end-to-end between two UEs. +// +// }//end group VxLTEMonitorInterfaces_As_pixits +// remove at end of validation phase +// group VxLTEMonitorInterfaces_Templates{ +// group EPC{ +// group Diameter{ +// template MonitorInterfaceInfo m_MonIntf_Diameter_S6a := +// { +// interfaceName := "S6a", +// //available := PX_DIAMETER_S6A_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "mme.epc.domain",//TODO: define as PIXIT +// IpAddress := PX_DIAMETER_S6A_MME_IPADDR, +// portNumbers := {PX_DIAMETER_S6A_MME_PORT} +// }, +// { +// domainName := "hss.epc.domain", +// IpAddress := PX_DIAMETER_S6A_HSS_IPADDR, +// portNumbers := {PX_DIAMETER_S6A_HSS_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Diameter_S9 := +// { +// interfaceName := "S9", +// //available := PX_DIAMETER_S9_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "hpcrf.epc.domain", +// IpAddress := PX_DIAMETER_S9_H_PCRF_IPADDR, +// portNumbers := {PX_DIAMETER_S9_H_PCRF_PORT} +// }, +// { +// domainName := "vpcrf.epc.domain", +// IpAddress := PX_DIAMETER_S9_V_PCRF_IPADDR, +// portNumbers := {PX_DIAMETER_S9_V_PCRF_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Diameter_Gx := +// { +// interfaceName := "Gx", +// //available := PX_DIAMETER_GX_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcrf.epc.domain", +// IpAddress := PX_DIAMETER_GX_PCRF_IPADDR, +// portNumbers := {PX_DIAMETER_GX_PCRF_PORT} +// }, +// { +// domainName := "pgw.epc.domain", +// IpAddress := PX_DIAMETER_GX_PGW_IPADDR, +// portNumbers := {PX_DIAMETER_GX_PGW_PORT} +// } +// } +// } +// }; +// }//end group Diameter +// +// }//end group EPC +// +// group IMS{ +// +// group Sip{ +// template MonitorInterfaceInfo m_MonIntf_Sip_Gm_A := +// { +// interfaceName := "Gm A", +// //available := PX_SIP_GMA_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := PX_SIP_GMA_PCSCF_IPADDR, +// portNumbers := {PX_SIP_GMA_PCSCF_PORT} +// }, +// { +// domainName := omit, +// IpAddress := PX_SIP_GMA_UE_IPADDR, +// portNumbers := {PX_SIP_GMA_UE_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_Gm_B := +// { +// interfaceName := "Gm B", +// //available := PX_SIP_GMB_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := PX_SIP_GMB_PCSCF_IPADDR, +// portNumbers := {PX_SIP_GMB_PCSCF_PORT} +// }, +// { +// domainName := omit, +// IpAddress := PX_SIP_GMB_UE_IPADDR, +// portNumbers := {PX_SIP_GMB_UE_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_Ic := +// { +// interfaceName := "Ic", +// //available := PX_SIP_IC_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "ibcfa.ims.domain", +// IpAddress := PX_SIP_IC_IBCF_A_IPADDR, +// portNumbers := {PX_SIP_IC_IBCF_A_PORT} +// }, +// { +// domainName := "ibcfb.ims.domain", +// IpAddress := PX_SIP_IC_IBCF_B_IPADDR, +// portNumbers := {PX_SIP_IC_IBCF_B_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PI:= +// { +// interfaceName := "Mw PI", +// //available := PX_SIP_MW_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := PX_SIP_MW_P_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_P_CSCF_PORT} +// }, +// { +// domainName := "icscf.ims.domain", +// IpAddress := PX_SIP_MW_I_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_I_CSCF_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PS:= +// { +// interfaceName := "Mw PS", +// //available := PX_SIP_MW_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := PX_SIP_MW_P_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_P_CSCF_PORT} +// }, +// { +// domainName := "scscf.ims.domain", +// IpAddress := PX_SIP_MW_S_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_S_CSCF_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_SI:= +// { +// interfaceName := "Mw SI", +// //available := PX_SIP_MW_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := PX_SIP_MW_S_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_S_CSCF_PORT} +// }, +// { +// domainName := "icscf.ims.domain", +// IpAddress := PX_SIP_MW_I_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_I_CSCF_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_ISC:= +// { +// interfaceName := "Isc", +// //available := PX_SIP_ISC_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := PX_SIP_ISC_S_CSCF_IPADDR, +// portNumbers := {PX_SIP_ISC_S_CSCF_PORT} +// }, +// { +// domainName := "as.ims.domain", +// IpAddress := PX_SIP_ISC_AS_IPADDR, +// portNumbers := {PX_SIP_ISC_AS_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PB:= +// { +// interfaceName := "Mw PB", +// //available := PX_SIP_MW_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := PX_SIP_MW_P_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_P_CSCF_PORT} +// }, +// { +// domainName := "ibcf.ims.domain", +// IpAddress := PX_SIP_MW_IBCF_IPADDR, +// portNumbers := {PX_SIP_MW_IBCF_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IB:= +// { +// interfaceName := "Mw IB", +// //available := PX_SIP_MW_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := PX_SIP_MW_I_CSCF_IPADDR, +// portNumbers := {PX_SIP_MW_I_CSCF_PORT} +// }, +// { +// domainName := "ibcf.ims.domain", +// IpAddress := PX_SIP_MW_IBCF_IPADDR, +// portNumbers := {PX_SIP_MW_IBCF_PORT} +// } +// } +// } +// }; +// }//end group Sip +// +// group Diameter{ +// template MonitorInterfaceInfo m_MonIntf_Diameter_Rx := +// { +// interfaceName := "Rx", +// //available := PX_DIAMETER_RX_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := PX_DIAMETER_RX_P_CSCF_IPADDR, +// portNumbers := {PX_DIAMETER_RX_P_CSCF_PORT} +// }, +// { +// domainName := "pcrf.ims.domain", +// IpAddress := PX_DIAMETER_RX_PCRF_IPADDR, +// portNumbers := {PX_DIAMETER_RX_PCRF_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_IH := +// { +// interfaceName := "Cx IH", +// //available := PX_DIAMETER_CX_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := PX_DIAMETER_CX_I_CSCF_IPADDR, +// portNumbers := {PX_DIAMETER_CX_I_CSCF_PORT} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := PX_DIAMETER_CX_HSS_IPADDR, +// portNumbers := {PX_DIAMETER_CX_HSS_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_SH := +// { +// interfaceName := "Cx SH", +// //available := PX_DIAMETER_CX_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := PX_DIAMETER_CX_S_CSCF_IPADDR, +// portNumbers := {PX_DIAMETER_CX_S_CSCF_PORT} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := PX_DIAMETER_CX_HSS_IPADDR, +// portNumbers := {PX_DIAMETER_CX_HSS_PORT} +// } +// } +// } +// }; +// +// template MonitorInterfaceInfo m_MonIntf_Diameter_Sh := +// { +// interfaceName := "Sh", +// //available := PX_DIAMETER_SH_MONITORENABLED, +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "as.ims.domain", +// IpAddress := PX_DIAMETER_SH_AS_IPADDR, +// portNumbers := {PX_DIAMETER_SH_AS_PORT} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := PX_DIAMETER_SH_HSS_IPADDR, +// portNumbers := {PX_DIAMETER_SH_HSS_PORT} +// } +// } +// } +// }; +// +// }//end group Diameter +// +// }//end group IMS +// +// }//end group VxLTEMonitorInterfaces_Templates } diff --git a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn index 063f6de..8d07990 100644 --- a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn @@ -13,311 +13,312 @@ module LibIot_VxLTE_PIXITS { ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailableList,MonitorInterfaceInfo; } - group VxLTEMonitorInterfaces_PIXITS_As_structure{ - group EPC{ - group Diameter{ - - modulepar MonitorInterfaceInfo PX_MonIntf_S6a := - { - interfaceName := "S6a", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "mme.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_S9 := - { - interfaceName := "S9", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "hpcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "vpcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Gx := - { - interfaceName := "Gx", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pgw.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - }//end group Diameter - } // end group EPC - group IMS{ - group Sip{ - modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := - { - interfaceName := "Gm A", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := - { - interfaceName := "Gm B", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := omit, - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Ic := - { - interfaceName := "Ic", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "ibcfa.imsa.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcfb.imsb.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := - { - interfaceName := "Mw PI", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := - { - interfaceName := "Mw PS", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := - { - interfaceName := "Mw SI", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Isc := - { - interfaceName := "Isc", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "as.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := - { - interfaceName := "Mw PB", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := - { - interfaceName := "Mw IB", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "ibcf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - - }//end group Sip - group Diameter{ - modulepar MonitorInterfaceInfo PX_MonIntf_Rx := - { - interfaceName := "Rx", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "pcscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "pcrf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := - { - interfaceName := "Cx IH", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "icscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := - { - interfaceName := "Cx SH", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - modulepar MonitorInterfaceInfo PX_MonIntf_Sh := - { - interfaceName := "Sh", - interfaceInfo := { - IpInterfaceInfo := { - { - domainName := "scscf.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", - portNumbers := {5060} - }, - { - domainName := "hss.ims.domain", - IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", - portNumbers := {5060} - } - } - } - }; - - - }//end group Diameter - } - - }// end VxLTEMonitorInterfaces_As_structure +//TODO: remove at end of validation phase +// group VxLTEMonitorInterfaces_PIXITS_As_structure{ +// group EPC{ +// group Diameter{ +// +// modulepar MonitorInterfaceInfo PX_MonIntf_S6a := +// { +// interfaceName := "S6a", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "mme.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_S9 := +// { +// interfaceName := "S9", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "hpcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "vpcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Gx := +// { +// interfaceName := "Gx", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pgw.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "pcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// }//end group Diameter +// } // end group EPC +// group IMS{ +// group Sip{ +// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := +// { +// interfaceName := "Gm A", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := omit, +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := +// { +// interfaceName := "Gm B", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := omit, +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Ic := +// { +// interfaceName := "Ic", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "ibcfa.imsa.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "ibcfb.imsb.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := +// { +// interfaceName := "Mw PI", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := +// { +// interfaceName := "Mw PS", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := +// { +// interfaceName := "Mw SI", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Isc := +// { +// interfaceName := "Isc", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "as.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := +// { +// interfaceName := "Mw PB", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "ibcf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := +// { +// interfaceName := "Mw IB", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "ibcf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// +// }//end group Sip +// group Diameter{ +// modulepar MonitorInterfaceInfo PX_MonIntf_Rx := +// { +// interfaceName := "Rx", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "pcscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "pcrf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := +// { +// interfaceName := "Cx IH", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "icscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := +// { +// interfaceName := "Cx SH", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// modulepar MonitorInterfaceInfo PX_MonIntf_Sh := +// { +// interfaceName := "Sh", +// interfaceInfo := { +// IpInterfaceInfo := { +// { +// domainName := "scscf.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", +// portNumbers := {5060} +// }, +// { +// domainName := "hss.ims.domain", +// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", +// portNumbers := {5060} +// } +// } +// } +// }; +// +// +// }//end group Diameter +// } +// +// }// end VxLTEMonitorInterfaces_As_structure group VxLTEMonitorInterfaces_PIXITS{ -- GitLab From 298091397ea7770451e7ad7a66dd71934ba1ab13 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 24 Nov 2020 15:11:23 +0100 Subject: [PATCH 117/176] TA source code minor update --- javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java index 4faffaa..50d2d27 100644 --- a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java +++ b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java @@ -54,6 +54,7 @@ import com.testingtech.ttcn.tri.TriStatusImpl; import de.tu_berlin.cs.uebb.muttcn.runtime.RB; +import net.sourceforge.jpcap.capture.PacketCapture; public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, TriPlatformPA, TciEncoding, TestCaseParameterServer { @@ -179,6 +180,11 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, Tri if (portName.contains("acPort")) { //New test started ... + try{ + PacketCapture pcap=new PacketCapture(); + }catch(Exception e){ + return new TriStatusImpl("Check presence of PCAP library on operating system!"); + } IotConnectionOffline adapter = new IotConnectionOffline(log, Cte); adapter.setTraceFile(ROOTFOLDERTRACEFILE+this.testcaseName+".pcapng"); baseAdapter = adapter; -- GitLab From 97ce65b164baf6a17ea8587c19a12b4ca0af7d58 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 24 Nov 2020 15:59:55 +0100 Subject: [PATCH 118/176] TA source code minor update --- javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java index 50d2d27..bbf5bf5 100644 --- a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java +++ b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java @@ -183,7 +183,8 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, Tri try{ PacketCapture pcap=new PacketCapture(); }catch(Exception e){ - return new TriStatusImpl("Check presence of PCAP library on operating system!"); + loginfo("\nCheck presence of PCAP library on operating system!\n"); + return new TriStatusImpl(TriStatus.TRI_ERROR); } IotConnectionOffline adapter = new IotConnectionOffline(log, Cte); adapter.setTraceFile(ROOTFOLDERTRACEFILE+this.testcaseName+".pcapng"); -- GitLab From 9c7dab58ed324c531634eb19bb2aadca4aae1656 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 8 Jan 2021 07:36:08 +0100 Subject: [PATCH 119/176] updated due to TTWB30 --- .../LibUpperTesterCodec.java | 66 +++++++++++-------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java b/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java index 1e28df4..064d7c7 100644 --- a/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java +++ b/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java @@ -70,32 +70,46 @@ public class LibUpperTesterCodec extends AbstractBaseCodec implements TciCDProvi return booleanValue; case TciTypeClass.RECORD: - - /*type record EquipmentOperationRsp { - Status status - }*/ - RecordValue rv = (RecordValue) decodingHypothesis.newInstance(); - - RecordValue rvstatus = (RecordValue) rv.getField("status").getType().newInstance(); - - /*type enumerated FncRetCode { - e_success(0), - // error codes - e_error(1), - e_timeout(2) - }*/ - EnumeratedValue code = (EnumeratedValue) rvstatus.getField("code").getType().newInstance(); - code.setEnum("e_success"); - - CharstringValue r = (CharstringValue) rvstatus.getField("reason").getType().newInstance(); - r.setString("OK"); - rvstatus.setField("code",code); - rvstatus.setField("reason",r); - - //return createNewHypotesis(NewHypotesis,encodedMsg); - //return Newhypotesis; - rv.setField("status", rvstatus); - return rv; + + if (decodingHypothesis.getName().equals("EquipmentOperationReq")) { + /*type record EquipmentOperationReq { + EquipmentCommand cmd, ParameterList params optional + }*/ + RecordValue rv = (RecordValue) decodingHypothesis.newInstance(); + + CharstringValue ccmd = (CharstringValue) rv.getField("cmd").getType().newInstance(); + ccmd.setString("COMMAND"); //parse command from message + rv.setField("cmd",ccmd); + //decode_ParameterList() //parse parameterlist from message + return rv; + } + else if (decodingHypothesis.getName().equals("EquipmentOperationRsp")){ + /*type record EquipmentOperationRsp { + Status status + }*/ + RecordValue rv = (RecordValue) decodingHypothesis.newInstance(); + + RecordValue rvstatus = (RecordValue) rv.getField("status").getType().newInstance(); + + /*type enumerated FncRetCode { + e_success(0), + // error codes + e_error(1), + e_timeout(2) + }*/ + EnumeratedValue code = (EnumeratedValue) rvstatus.getField("code").getType().newInstance(); + code.setEnum("e_success"); + + CharstringValue r = (CharstringValue) rvstatus.getField("reason").getType().newInstance(); + r.setString("OK"); + rvstatus.setField("code",code); + rvstatus.setField("reason",r); + + //return createNewHypotesis(NewHypotesis,encodedMsg); + //return Newhypotesis; + rv.setField("status", rvstatus); + return rv; + } default: return super.decode(message,decodingHypothesis); -- GitLab From c7e03d1932716c041d141d1242ebbfbd09284172 Mon Sep 17 00:00:00 2001 From: juvancic Date: Sun, 10 Jan 2021 14:29:08 +0100 Subject: [PATCH 120/176] updated check of component status in TP functions for test TCVxLTE_INT_REG_01 --- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 3 ++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 8 ++++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 8 +++++++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 2 ++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn | 2 ++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn | 6 ++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 4 ++++ 7 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index f822767..5fdb040 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -69,7 +69,8 @@ module AtsImsIot_TD_REG{ f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile // Test body - + log("1"); + log(vc_vxlte_monitor_components); f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 10 f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, true); // Event 2, 9 //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index 381f2c9..af2891c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -88,6 +88,7 @@ group g_HSS { in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( { @@ -102,6 +103,7 @@ group g_HSS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_MAA_01 @@ -230,6 +232,7 @@ group g_HSS { in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( { @@ -244,6 +247,7 @@ group g_HSS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_SAA_01 @@ -377,6 +381,7 @@ group g_HSS { in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( { @@ -391,6 +396,7 @@ group g_HSS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_UAA_01 /** @@ -436,6 +442,7 @@ group g_HSS { in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( { @@ -450,6 +457,7 @@ group g_HSS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_UAA_02 /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index d2ec953..b6c638e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -149,7 +149,8 @@ module AtsImsIot_TP_behavior_GM { function f_mtc_check_TP_GM_PCSCF_REGISTER_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true - ) runs on ImsTestCoordinator { + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -164,6 +165,7 @@ module AtsImsIot_TP_behavior_GM { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_01 /** @@ -219,6 +221,7 @@ module AtsImsIot_TP_behavior_GM { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -233,6 +236,7 @@ module AtsImsIot_TP_behavior_GM { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_02 /** @@ -459,6 +463,7 @@ module AtsImsIot_TP_behavior_GM { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -473,6 +478,7 @@ module AtsImsIot_TP_behavior_GM { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01 function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index 934597a..842356d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -201,6 +201,7 @@ group g_PGW { in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( { @@ -215,6 +216,7 @@ group g_PGW { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PGW_RAA_01 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn index bf5fe31..64de622 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -189,6 +189,7 @@ module AtsImsIot_TP_behavior_MW_IS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -203,6 +204,7 @@ module AtsImsIot_TP_behavior_MW_IS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02 function f_mtc_check_TP_MW_ICSCF_REGISTER_03( // FIXME RMI To be reviewed diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 03bd974..bcd50d5 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -145,6 +145,7 @@ module AtsImsIot_TP_behavior_MW_PS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -159,6 +160,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_01 /** @@ -231,6 +233,7 @@ module AtsImsIot_TP_behavior_MW_PS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -245,6 +248,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_02 /** @@ -536,6 +540,7 @@ module AtsImsIot_TP_behavior_MW_PS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -550,6 +555,7 @@ module AtsImsIot_TP_behavior_MW_PS { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01 function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index 9f04228..47d7a77 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -128,6 +128,7 @@ group g_PCRF_AAA { in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( { @@ -142,6 +143,7 @@ group g_PCRF_AAA { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCRF_AAA_01 /** @@ -465,6 +467,7 @@ group g_PCSCF_AAR { in boolean p_checkMessage := true, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( { @@ -478,6 +481,7 @@ group g_PCSCF_AAR { ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01 /** -- GitLab From 79c27bd1935e6845779e7fc5350c3330fc46e98a Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 09:18:26 +0100 Subject: [PATCH 121/176] updated TA --- javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java b/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java index 25692b3..71396b3 100644 --- a/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java +++ b/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java @@ -147,7 +147,7 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { */ int iotmsgStatus = encodedMsg[2+4]&0xFF;//0+6=7thposition RecordValue rv = (RecordValue) decodingHypothesis.newInstance(); - + /*type record Status { FncRetCode code, charstring reason optional @@ -439,7 +439,7 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { case 0:/**/ case 1:protocol= "udp";break; case 2:/**/ - case 3:protocol= "tcp";break; + case 3:protocol= "tcp or sctp";break; default: } -- GitLab From b29bb4cab85532846b139b587c9e207d08b5e1cb Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 09:18:57 +0100 Subject: [PATCH 122/176] updated TA --- .../iskratel/ttcn/tri/ReadCaptureThread.java | 54 +++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java index 7ec2a16..4830f95 100644 --- a/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java +++ b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java @@ -110,7 +110,7 @@ public class ReadCaptureThread extends Thread implements Runnable{ public void packetArrived(Packet packet) { this.counter++; - //String type = packet.getClass().getName(); + String type = packet.getClass().getName(); //System.out.println(name + ": Packet(" + counter + ") is of type " + type + "."); //log.debug(name + ": Packet(" + counter + ") is of type " + type +"."); @@ -120,6 +120,24 @@ public class ReadCaptureThread extends Thread implements Runnable{ // //System.err.println(((EthernetPacket)(packet)).getProtocol()); // } + if(packet instanceof IPPacket) { + IPPacket ipPacket = (IPPacket)packet; + byte[] message = ipPacket.getData();//.getTCPData();//TODO: assume data is in one packet + + String srcHost = ipPacket.getSourceAddress(); + String dstHost = ipPacket.getDestinationAddress(); + //String isoData = new String(data);//, "ISO-8859-1"); + log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + log.debug(ipPacket.toColoredString(false)); +// TriMessage triMessage =TriMessageImpl.valueOf(message); +// TriAddress triAddress = new TriAddressImpl(new byte[] {}); +// +// synchronized(this.filterpackets.cte) { +// log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); +// this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); +// } + } + if(packet instanceof TCPPacket) { TCPPacket tcpPacket = (TCPPacket)packet; byte[] message = tcpPacket.getData();//.getTCPData();//TODO: assume data is in one packet @@ -128,7 +146,8 @@ public class ReadCaptureThread extends Thread implements Runnable{ String dstHost = tcpPacket.getDestinationAddress(); //String isoData = new String(data);//, "ISO-8859-1"); log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); - + //log.debug(tcpPacket.toColoredString(false)); + TriMessage triMessage =TriMessageImpl.valueOf(message); TriAddress triAddress = new TriAddressImpl(new byte[] {}); @@ -146,6 +165,7 @@ public class ReadCaptureThread extends Thread implements Runnable{ String dstHost = udpPacket.getDestinationAddress(); //String isoData = new String(data);//, "ISO-8859-1"); log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + //log.debug(udpPacket.toColoredString(false)); TriMessage triMessage =TriMessageImpl.valueOf(message); TriAddress triAddress = new TriAddressImpl(new byte[] {}); @@ -154,7 +174,35 @@ public class ReadCaptureThread extends Thread implements Runnable{ log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); } - } + } + + if (packet instanceof SCTPPacket){ + SCTPPacket sctpPacket = (SCTPPacket)packet; + byte[] message = sctpPacket.getData();//.getUDPData();//TODO: assume data is in one packet + + String srcHost = sctpPacket.getSourceAddress(); + String dstHost = sctpPacket.getDestinationAddress(); + //String isoData = new String(data);//, "ISO-8859-1"); + log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + //log.debug(sctpPacket.toColoredString(false)); + + int i=0; + while(i < sctpPacket.getChunks().size()) { + + message = (sctpPacket.getChunks().get(i).getUserData()); + + TriMessage triMessage =TriMessageImpl.valueOf(message); + TriAddress triAddress = new TriAddressImpl(new byte[] {}); + + synchronized(this.filterpackets.cte) { + log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); + this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); + } + + i++; + } + + } } // public List getPackets(){ -- GitLab From 34952494d26de40466fefd137e338f1a44e3671e Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 09:19:52 +0100 Subject: [PATCH 123/176] updated TA --- javasrc/net/sourceforge/jpcap/net/IPProtocol.java | 1 + javasrc/net/sourceforge/jpcap/net/IPProtocols.java | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/javasrc/net/sourceforge/jpcap/net/IPProtocol.java b/javasrc/net/sourceforge/jpcap/net/IPProtocol.java index d16bcf8..be33881 100644 --- a/javasrc/net/sourceforge/jpcap/net/IPProtocol.java +++ b/javasrc/net/sourceforge/jpcap/net/IPProtocol.java @@ -64,6 +64,7 @@ public class IPProtocol implements IPProtocols messages.put(new Integer(ENCAP), "Encapsulation Header"); messages.put(new Integer(PIM), "Protocol Independent Multicast"); messages.put(new Integer(COMP), "Compression Header Protocol"); + messages.put(new Integer(SCTP), "Stream Control Transmission Protocol"); messages.put(new Integer(RAW), "Raw IP Packet"); messages.put(new Integer(INVALID), "INVALID IP"); } diff --git a/javasrc/net/sourceforge/jpcap/net/IPProtocols.java b/javasrc/net/sourceforge/jpcap/net/IPProtocols.java index 6946f44..ace569f 100644 --- a/javasrc/net/sourceforge/jpcap/net/IPProtocols.java +++ b/javasrc/net/sourceforge/jpcap/net/IPProtocols.java @@ -144,7 +144,12 @@ public interface IPProtocols * Compression Header Protocol. */ int COMP = 108; - + + /** + * Stream Control Transmission Protocol. + */ + int SCTP = -124; //132; + /** * Raw IP packets. */ -- GitLab From 293dae2c20d285ed891b007bf7fc0c510350fa28 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 09:20:06 +0100 Subject: [PATCH 124/176] updated TA --- javasrc/net/sourceforge/jpcap/net/PacketFactory.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/javasrc/net/sourceforge/jpcap/net/PacketFactory.java b/javasrc/net/sourceforge/jpcap/net/PacketFactory.java index fa13575..861455c 100644 --- a/javasrc/net/sourceforge/jpcap/net/PacketFactory.java +++ b/javasrc/net/sourceforge/jpcap/net/PacketFactory.java @@ -60,7 +60,7 @@ public class PacketFactory // udp case IPProtocols.UDP: return new UDPPacket(lLen, bytes); // sctp - //case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); + case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); // unidentified ip.. default: return new IPPacket(lLen, bytes); } @@ -77,7 +77,7 @@ public class PacketFactory // udp case IPProtocols.UDP: return new UDPPacket(lLen, bytes); // sctp - //case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); + case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); // unidentified ip.. default: return new IPPacket(lLen, bytes); } @@ -123,6 +123,8 @@ public class PacketFactory case IPProtocols.TCP: return new TCPPacket(lLen, bytes, tv); // udp case IPProtocols.UDP: return new UDPPacket(lLen, bytes, tv); + // sctp + case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); // unidentified ip.. default: return new IPPacket(lLen, bytes, tv); } @@ -138,6 +140,8 @@ public class PacketFactory case IPProtocols.TCP: return new TCPPacket(lLen, bytes); // udp case IPProtocols.UDP: return new UDPPacket(lLen, bytes); + // sctp + case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); // unidentified ip.. default: return new IPPacket(lLen, bytes); } -- GitLab From 5d60b8a8f59f9d3678d6e37d363cc7c541c462b3 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 09:37:34 +0100 Subject: [PATCH 125/176] updated 1st test TD_REG --- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 2 -- 1 file changed, 2 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index 5fdb040..392350b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -69,8 +69,6 @@ module AtsImsIot_TD_REG{ f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile // Test body - log("1"); - log(vc_vxlte_monitor_components); f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 10 f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, true); // Event 2, 9 //f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false, true); // Event 5, 8 -- GitLab From 42f400908c1c409f925860f58a80c19ad8911528 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 10:12:41 +0100 Subject: [PATCH 126/176] updated TA --- .../sourceforge/jpcap/net/SCTPChunkType.java | 168 ++++++++ .../net/sourceforge/jpcap/net/SCTPFields.java | 97 +++++ .../net/sourceforge/jpcap/net/SCTPPacket.java | 358 ++++++++++++++++++ 3 files changed, 623 insertions(+) create mode 100644 javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java create mode 100644 javasrc/net/sourceforge/jpcap/net/SCTPFields.java create mode 100644 javasrc/net/sourceforge/jpcap/net/SCTPPacket.java diff --git a/javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java b/javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java new file mode 100644 index 0000000..7e56c5b --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java @@ -0,0 +1,168 @@ +// $Id: SCTPChunkType.java,v 1.00 2021/01/10 $ + +/*************************************************************************** + * * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import java.util.HashMap; +import java.util.Map; + +/** + * SCTP Chunk Type + * + * @see RFC 4960 + * @author + * @since + */ +public final class SCTPChunkType extends NamedNumber { + + /** */ + static final long serialVersionUID = -5598298520049931819L; + + /** Payload Data: 0 */ + public static final SCTPChunkType DATA = new SCTPChunkType((byte) 0, "Payload Data"); + + /** Initiation: 1 */ + public static final SCTPChunkType INIT = new SCTPChunkType((byte) 1, "Initiation"); + + /** Initiation Acknowledgement: 2 */ + public static final SCTPChunkType INIT_ACK = new SCTPChunkType((byte) 2, "Initiation Acknowledgement"); + + /** Selective Acknowledgement: 3 */ + public static final SCTPChunkType SACK = new SCTPChunkType((byte) 3, "Selective Acknowledgement"); + + /** Heartbeat Request: 4 */ + public static final SCTPChunkType HEARTBEAT = new SCTPChunkType((byte) 4, "Heartbeat Request"); + + /** Heartbeat Acknowledgement: 5 */ + public static final SCTPChunkType HEARTBEAT_ACK = new SCTPChunkType((byte) 5, "Heartbeat Acknowledgement"); + + /** Abort: 6 */ + public static final SCTPChunkType ABORT = new SCTPChunkType((byte) 6, "Abort"); + + /** Shutdown: 7 */ + public static final SCTPChunkType SHUTDOWN = new SCTPChunkType((byte) 7, "Shutdown"); + + /** Shutdown Acknowledgement: 8 */ + public static final SCTPChunkType SHUTDOWN_ACK = new SCTPChunkType((byte) 8, "Shutdown Acknowledgement"); + + /** Operation Error: 9 */ + public static final SCTPChunkType ERROR = new SCTPChunkType((byte) 9, "Operation Error"); + + /** State Cookie: 10 */ + public static final SCTPChunkType COOKIE_ECHO = new SCTPChunkType((byte) 10, "State Cookie"); + + /** Cookie Acknowledgement: 11 */ + public static final SCTPChunkType COOKIE_ACK = new SCTPChunkType((byte) 11, "Cookie Acknowledgement"); + + /** Explicit Congestion Notification Echo: 12 */ + public static final SCTPChunkType ECNE = new SCTPChunkType((byte) 12, "Explicit Congestion Notification Echo"); + + /** Congestion Window Reduced: 13 */ + public static final SCTPChunkType CWR = new SCTPChunkType((byte) 13, "Congestion Window Reduced"); + + /** Shutdown Complete: 14 */ + public static final SCTPChunkType SHUTDOWN_COMPLETE = new SCTPChunkType((byte) 14, "Shutdown Complete"); + + private static final Map registry = new HashMap(); + + static { + registry.put(DATA.value(), DATA); + registry.put(INIT.value(), INIT); + registry.put(INIT_ACK.value(), INIT_ACK); + registry.put(SACK.value(), SACK); + registry.put(HEARTBEAT.value(), HEARTBEAT); + registry.put(HEARTBEAT_ACK.value(), HEARTBEAT_ACK); + registry.put(ABORT.value(), ABORT); + registry.put(SHUTDOWN.value(), SHUTDOWN); + registry.put(SHUTDOWN_ACK.value(), SHUTDOWN_ACK); + registry.put(ERROR.value(), ERROR); + registry.put(COOKIE_ECHO.value(), COOKIE_ECHO); + registry.put(COOKIE_ACK.value(), COOKIE_ACK); + registry.put(ECNE.value(), ECNE); + registry.put(CWR.value(), CWR); + registry.put(SHUTDOWN_COMPLETE.value(), SHUTDOWN_COMPLETE); + } + + /** @return an ActionForUnkownType object. */ + public ActionForUnkownType getActionForUnkownType() { + int val = (value() >> 6) & 0x03; + return ActionForUnkownType.values()[val]; + } + + /** + * @param value value + * @param name name + */ + public SCTPChunkType(Byte value, String name) { + super(value, name); + } + + /** + * @param value value + * @return a SCTPChunkType object. + */ + public static SCTPChunkType getInstance(Byte value) { + if (registry.containsKey(value)) { + return registry.get(value); + } else { + return new SCTPChunkType(value, "unknown"); + } + } + + /** + * @param type type + * @return a SCTPChunkType object. + */ + public static SCTPChunkType register(SCTPChunkType type) { + return registry.put(type.value(), type); + } + + /** @return the value of this object as an int. */ + public int valueAsInt() { + return 0xFF & value(); + } + + /** @return a string representation of this value. */ + @Override + public String valueAsString() { + return String.valueOf(valueAsInt()); + } + + @Override + public int compareTo(SCTPChunkType o) { + return value().compareTo(o.value()); + } + + /** + * Action that must be taken if the processing endpoint does not recognize the Chunk Type. + * (highest-order 2 bits of the Chunk Type) + * + * @see RFC 4960 + * @author Kaito Yamada + * @since pcap4j 1.6.6 + */ + public static enum ActionForUnkownType { + + /** + * Stop processing this SCTP packet and discard it, do not process any further chunks within it. + */ + DISCARD, + + /** + * Stop processing this SCTP packet and discard it, do not process any further chunks within it, + * and report the unrecognized chunk in an 'Unrecognized Chunk Type'. + */ + DISCARD_AND_REPORT, + + /** Skip this chunk and continue processing. */ + SKIP, + + /** + * Skip this chunk and continue processing, but report in an ERROR chunk using the 'Unrecognized + * Chunk Type' cause of error. + */ + SKIP_AND_REPORT, + } +} \ No newline at end of file diff --git a/javasrc/net/sourceforge/jpcap/net/SCTPFields.java b/javasrc/net/sourceforge/jpcap/net/SCTPFields.java new file mode 100644 index 0000000..8839e18 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/SCTPFields.java @@ -0,0 +1,97 @@ +// $Id: SCTPFields.java,v 1.00 2021/01/10 $ + +/*************************************************************************** + * * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + + +/** + * SCTP protocol field encoding information. + * + * @author + * @version + * @lastModifiedBy + * @lastModifiedAt $Date: 2021/01/25 $ + */ +public interface SCTPFields +{ + + /** + * SCTP header + * + *

    +	   *  0                              16                            31
    +	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +	   * |           Src Port            |           Dst Port            |
    +	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +	   * |                        Verification Tag                       |
    +	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +	   * |                            Checksum                           |
    +	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +	   * |                          Chunk #1                             |
    +	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +	   * |                           ...                                 |
    +	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +	   * |                          Chunk #n                             |
    +	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +	   * 
    + * + * @see RFC 4960 + */ + int SRC_PORT_OFFSET = 0; + int SRC_PORT_SIZE = 2; + int DST_PORT_OFFSET = SRC_PORT_OFFSET + SRC_PORT_SIZE; + int DST_PORT_SIZE = 2; + int VERIFICATION_TAG_OFFSET = DST_PORT_OFFSET + DST_PORT_SIZE; + int VERIFICATION_TAG_SIZE = 4; + int CHECKSUM_OFFSET = VERIFICATION_TAG_OFFSET + VERIFICATION_TAG_SIZE; + int CHECKSUM_SIZE = 4; + int CHUNKS_OFFSET = CHECKSUM_OFFSET + CHECKSUM_SIZE; + + + /** + * SCTP Chunk + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Chunk Type | Chunk Flags | Chunk Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ \ + / Chunk Value / + \ \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + **/ + + int CHUNK_TYPE_OFFSET = 0; + int CHUNK_TYPE_SIZE = 1; + int CHUNK_FLAGS_OFFSET = CHUNK_TYPE_OFFSET + CHUNK_TYPE_SIZE; + int CHUNK_FLAGS_SIZE = 1; + int CHUNK_LEN_OFFSET = CHUNK_FLAGS_OFFSET + CHUNK_FLAGS_SIZE; + int CHUNK_LEN_SIZE = 2; + int CHUNK_RAWDATA_OFFSET = CHUNK_LEN_OFFSET + CHUNK_LEN_SIZE; + + /** + * 3.3.1 Payload Data (DATA) (0) + The following format MUST be used for the DATA chunk: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type = 0 | Reserved|U|B|E| Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | TSN | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Stream Identifier S | Stream Sequence Number n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Payload Protocol Identifier | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ \ + / User Data (seq n of Stream S) / + \ \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ + + int CHUNK_USERDATA_OFFSET = CHUNK_RAWDATA_OFFSET + 12; //Only USER Data from DATA chunk is interesting +} diff --git a/javasrc/net/sourceforge/jpcap/net/SCTPPacket.java b/javasrc/net/sourceforge/jpcap/net/SCTPPacket.java new file mode 100644 index 0000000..8f466c2 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/SCTPPacket.java @@ -0,0 +1,358 @@ +// $Id: SCTPPacket.java,v 1.00 21/01/10 $ + +/*************************************************************************** + * * + ***************************************************************************/ +package net.sourceforge.jpcap.net; + +import net.sourceforge.jpcap.util.AnsiEscapeSequences; +import net.sourceforge.jpcap.util.ArrayHelper; +import net.sourceforge.jpcap.util.Timeval; +import java.io.Serializable; + +import java.util.ArrayList; +import java.util.List; + + +/** + * A SCTP packet. + *

    + * Extends an IP packet, adding a SCTP header and SCTP data payload. + * + * @author + * @version + * @lastModifiedBy + * @lastModifiedAt $Date: 2021/01/25 $ + */ +public class SCTPPacket extends IPPacket implements SCTPFields, Serializable +{ + int srcPort; + int dstPort; + int verificationTag; + int checksum; + + /** + * Create a new SCTP packet. + */ + public SCTPPacket(int lLen, byte [] bytes) { + super(lLen,bytes); + // set SCTP header length + _sctpHeaderLength = CHUNKS_OFFSET; + + // set data (payload) length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + int tmpLen = getLength() - getIpHeaderLength() - _sctpHeaderLength; + _payloadDataLength = (tmpLen < 0) ? 0 : tmpLen; + } + + /** + * Create a new SCTP packet. + */ + public SCTPPacket(int lLen, byte [] bytes, Timeval tv) { + this(lLen, bytes); + this._timeval = tv; + } + + private int _sourcePort; + private boolean _sourcePortSet = false; + /** + * Fetch the port number on the source host. + */ + public int getSourcePort() { + if(! _sourcePortSet) { + _sourcePort = + ArrayHelper.extractInteger(_bytes, _ipOffset + SRC_PORT_OFFSET, SRC_PORT_SIZE); + _sourcePortSet = true; + } + return _sourcePort; + } + + private int _destinationPort; + private boolean _destinationPortSet = false; + /** + * Fetches the port number on the destination host. + */ + public int getDestinationPort() { + if(! _destinationPortSet) { + _destinationPort = + ArrayHelper.extractInteger(_bytes, _ipOffset + DST_PORT_OFFSET, DST_PORT_SIZE); + _destinationPortSet = true; + } + return _destinationPort; + } + + private long _verificationtag; + private boolean _verificationtagSet = false; + /** + * Fetch the packet verification tag. + */ + public long getVerificationTag() { + if(! _verificationtagSet) { + _verificationtag = + ArrayHelper.extractLong(_bytes, _ipOffset + VERIFICATION_TAG_OFFSET, VERIFICATION_TAG_SIZE); + _verificationtagSet = true; + } + return _verificationtag; + } + + private int _checksum; + private boolean _checksumSet = false; + /** + * Fetch the packet acknowledgment number. + */ + public int getSCTPChecksum() { + if(! _checksumSet) { + _checksum = + ArrayHelper.extractInteger/*extractLong*/(_bytes, _ipOffset + CHECKSUM_OFFSET, CHECKSUM_SIZE); + _checksumSet = true; + } + return _checksum; + } + + /** + * Fetch the header checksum. + */ + public int getChecksum() { + return getSCTPChecksum(); + } + + // this gets set by the constructor + private int _sctpHeaderLength; + + /** + * Fetch the SCTP header length in bytes. + */ + public int getSCTPHeaderLength() { + return _sctpHeaderLength; + } + + /** + * Fetch the SCTP header length in bytes. + */ + public int getSctpHeaderLength() { + // this is the old method call, but everything else uses all caps for + // SCTP, so in the interest of consistency... + return getSCTPHeaderLength(); + } + + /** + * Fetches the packet SCTP header length. + */ + public int getHeaderLength() { + return getSCTPHeaderLength(); + } + + // this gets set by the constructor + private int _payloadDataLength; + /** + * Fetches the length of the payload data. + */ + public int getPayloadDataLength() { + return _payloadDataLength; + } + + + private byte[] _sctpHeaderBytes = null; + /** + * Fetch the SCTP header a byte array. + */ + public byte[] getSCTPHeader() { + if(_sctpHeaderBytes == null) { + _sctpHeaderBytes = + PacketEncoding.extractHeader(_ipOffset, getSctpHeaderLength(), _bytes); + } + return _sctpHeaderBytes; + } + + /** + * Fetch the SCTP header as a byte array. + */ + public byte[] getHeader() { + return getSCTPHeader(); + } + + private byte[] _sctpDataBytes = null; + /** + * Fetch the SCTP data as a byte array. + */ + public byte[] getSCTPData() { + if(_sctpDataBytes == null) { + // set data length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + _sctpDataBytes = PacketEncoding.extractData(_ipOffset, getSctpHeaderLength(), _bytes, getPayloadDataLength()); + } + return _sctpDataBytes; + } + + /** + * Fetch the SCTP data as a byte array. + */ + public byte[] getData() { + return getSCTPData(); + } + + private List _chunks=null; + /** @return chunks */ + public List getChunks() { + + if(_chunks == null) { + // set data length based on info in headers (note: tcpdump + // can return extra junk bytes which bubble up to here + _chunks = new ArrayList(); + int length = getPayloadDataLength(); + int offset = 0; + + while (length != 0) { + SCTPChunkType type = SCTPChunkType.getInstance(this.getData()[offset]); + SctpChunk newOne = new SctpChunk(this.getData(), offset, length, type); + + if (type == SCTPChunkType.DATA) {//keep only userdata chunks + _chunks.add(newOne); + } + + int newOneLen = newOne.length(); + offset += newOneLen; + length -= newOneLen; + } + } + return new ArrayList(_chunks); + } + + /** + * Convert this SCTP packet to a readable string. + */ + public String toString() { + return toColoredString(false); + } + + /** + * Generate string with contents describing this SCTP packet. + * @param colored whether or not the string should contain ansi + * color escape sequences. + */ + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("SCTPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(getSourceAddress()); + buffer.append('.'); + buffer.append(IPPort.getName(getSourcePort())); + buffer.append(" -> "); + buffer.append(getDestinationAddress()); + buffer.append('.'); + buffer.append(IPPort.getName(getDestinationPort())); + + buffer.append(" l=" + getSCTPHeaderLength() + "," + getPayloadDataLength()); + + int i=0; + while(i < getChunks().size()) { + buffer.append(getChunks().get(i).toString()); + i++; + } + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Convert this SCTP packet to a verbose. + */ + public String toColoredVerboseString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("SCTPPacket"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append("sport=" + getSourcePort() + ", "); + buffer.append("dport=" + getDestinationPort() + ", "); + buffer.append("hlen=" + getHeaderLength() + ", "); + + buffer.append("wsize=" + getVerificationTag() + ", "); + buffer.append("sum=0x" + Integer.toHexString(getChecksum()) + ", "); + buffer.append(']'); + + return buffer.toString(); + } + + /** + * Fetch ascii escape sequence of the color associated with this packet type. + */ + public String getColor() { + return AnsiEscapeSequences.YELLOW; + } + + private String _rcsid = + "$Id: SCTPPacket.java,v 1.00 2021/01/10 $"; + + /** + * The interface representing an SCTP Chunk Field. + * @see RFC 4960 + */ + public class SctpChunk /*extends Serializable*/ { + + SCTPChunkType _SCTPChunkType; + int _chunkFlags; + int _chunkLen; + byte[] _chunkRawData; + + SctpChunk(byte[] _bytes, int _offset, int length, SCTPChunkType type){ + _SCTPChunkType=type; + _chunkFlags=ArrayHelper.extractInteger(_bytes, _offset + CHUNK_FLAGS_OFFSET, CHUNK_FLAGS_SIZE); + _chunkLen=ArrayHelper.extractInteger(_bytes, _offset + CHUNK_LEN_OFFSET, CHUNK_LEN_SIZE); + _chunkRawData=PacketEncoding.extractData(_offset, CHUNK_RAWDATA_OFFSET, _bytes, length()-CHUNK_RAWDATA_OFFSET); + if (_SCTPChunkType == SCTPChunkType.DATA) {//keep only userdata + _chunkRawData=PacketEncoding.extractData(_offset, CHUNK_USERDATA_OFFSET, _bytes, length()-CHUNK_USERDATA_OFFSET); + } + } + + /** @return type */ + public SCTPChunkType getType() { + return _SCTPChunkType; + } + + /** @return length */ + public int length() { + return _chunkLen; + } + + /** @return raw data */ + public byte[] getRawData() { + return _chunkRawData; + } + + /** @return user data */ + public byte[] getUserData() { + return _chunkRawData; + } + + public String toString() { + return toColoredString(false); + } + + public String toColoredString(boolean colored) { + StringBuffer buffer = new StringBuffer(); + buffer.append('['); + if(colored) buffer.append(getColor()); + buffer.append("SCTP Chunk"); + if(colored) buffer.append(AnsiEscapeSequences.RESET); + buffer.append(": "); + buffer.append(getType().toString()); + buffer.append(':'); + buffer.append(" l=" + length() ); + buffer.append(']'); + + return buffer.toString(); + } + + public String getColor() { + return AnsiEscapeSequences.YELLOW; + } + } + +} + + -- GitLab From d8482acf87c238312b646b2446f2a2c87b746f6a Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 10:12:50 +0100 Subject: [PATCH 127/176] updated TA --- .../sourceforge/jpcap/net/NamedNumber.java | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 javasrc/net/sourceforge/jpcap/net/NamedNumber.java diff --git a/javasrc/net/sourceforge/jpcap/net/NamedNumber.java b/javasrc/net/sourceforge/jpcap/net/NamedNumber.java new file mode 100644 index 0000000..4d4771d --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/net/NamedNumber.java @@ -0,0 +1,96 @@ +/*_########################################################################## + _## + _## Copyright (C) 2011-2016 Pcap4J.org + _## + _########################################################################## +*/ + +//package org.pcap4j.packet.namednumber; +package net.sourceforge.jpcap.net; + +import java.io.Serializable; + +/** + * @author Kaito Yamada + * @since pcap4j 0.9.1 + * @param number + * @param named number + */ +public abstract class NamedNumber> + implements Comparable, Serializable { + + /** */ + private static final long serialVersionUID = 3858426889927624965L; + + private final T value; + private final String name; + + /** + * @param value value + * @param name name + */ + protected NamedNumber(T value, String name) { + if (value == null) { + throw new IllegalArgumentException("value is null."); + } + if (name == null) { + throw new IllegalArgumentException("name is null."); + } + this.value = value; + this.name = name; + } + + /** @return value */ + public T value() { + return value; + } + + /** @return name */ + public String name() { + return name; + } + + /** @return a string representation of this value. */ + public String valueAsString() { + return value.toString(); + } + + @Override + public abstract int compareTo(U o); + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(70); + return sb.append(valueAsString()).append(" (").append(name).append(")").toString(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + name.hashCode(); + result = prime * result + value.hashCode(); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + NamedNumber other = (NamedNumber) obj; + if (!name.equals(other.name)) { + return false; + } + if (!value.equals(other.value)) { + return false; + } + return true; + } +} \ No newline at end of file -- GitLab From 1899154f2e55bac8aa63f93eed08a62f6937d34b Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 29 Jan 2021 10:13:18 +0100 Subject: [PATCH 128/176] updated TA --- .../sourceforge/jpcap/util/ByteArrays.java | 1033 +++++++++++++++++ 1 file changed, 1033 insertions(+) create mode 100644 javasrc/net/sourceforge/jpcap/util/ByteArrays.java diff --git a/javasrc/net/sourceforge/jpcap/util/ByteArrays.java b/javasrc/net/sourceforge/jpcap/util/ByteArrays.java new file mode 100644 index 0000000..bfb7df5 --- /dev/null +++ b/javasrc/net/sourceforge/jpcap/util/ByteArrays.java @@ -0,0 +1,1033 @@ +/*_########################################################################## + _## + _## Copyright (C) 2011-2019 Pcap4J.org + _## + _########################################################################## +*/ + +package net.sourceforge.jpcap.util; + + +import static java.nio.ByteOrder.*; + +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.ByteOrder; +import java.util.List; +import java.util.regex.Pattern; +import java.util.zip.Adler32; +import java.util.zip.CRC32; + +/** + * @author Kaito Yamada + * @since pcap4j 0.9.1 + */ +public final class ByteArrays { + + /** */ + public static final int BYTE_SIZE_IN_BYTES = 1; + + /** */ + public static final int SHORT_SIZE_IN_BYTES = 2; + + /** */ + public static final int INT_SIZE_IN_BYTES = 4; + + /** */ + public static final int LONG_SIZE_IN_BYTES = 8; + + /** */ + public static final int INET4_ADDRESS_SIZE_IN_BYTES = 4; + + /** */ + public static final int INET6_ADDRESS_SIZE_IN_BYTES = 16; + + /** */ + public static final int BYTE_SIZE_IN_BITS = 8; + + private static final Pattern NO_SEPARATOR_HEX_STRING_PATTERN = + Pattern.compile("\\A([0-9a-fA-F][0-9a-fA-F])+\\z"); + + private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray(); + + private static final int[] CRC32C_TABLE = + new int[] { + 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, 0x26a1e7e8, + 0xd4ca64eb, + 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, + 0x5e133c24, + 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, 0xd7c45070, 0x25afd373, 0x36ff2087, + 0xc494a384, + 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 0x5d1d08bf, 0xaf768bbc, 0xbc267848, + 0x4e4dfb4b, + 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, 0xe72719c1, 0x154c9ac2, 0x061c6936, + 0xf477ea35, + 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, + 0x7eaeb2fa, + 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 0xf779deae, 0x05125dad, 0x1642ae59, + 0xe4292d5a, + 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, 0x7da08661, 0x8fcb0562, 0x9c9bf696, + 0x6ef07595, + 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, 0x86e18aa3, 0x748a09a0, 0x67dafa54, + 0x95b17957, + 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 0x0c38d26c, 0xfe53516f, 0xed03a29b, + 0x1f682198, + 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, + 0x85efbe38, + 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, 0x1c661503, 0xee0d9600, 0xfd5d65f4, + 0x0f36e6f7, + 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 0xa65c047d, 0x5437877e, 0x4767748a, + 0xb50cf789, + 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, + 0x3fd5af46, + 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, 0xb602c312, 0x44694011, 0x5739b3e5, + 0xa55230e6, + 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, + 0x2f8b6829, + 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, 0x456cac67, 0xb7072f64, 0xa457dc90, + 0x563c5f93, + 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, + 0xdce5075c, + 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 0x55326b08, 0xa759e80b, 0xb4091bff, + 0x466298fc, + 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, + 0xccbbc033, + 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, 0x65d122b9, 0x97baa1ba, 0x84ea524e, + 0x7681d14d, + 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 0xef087a76, 0x1d63f975, 0x0e330a81, + 0xfc588982, + 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, 0x758fe5d6, 0x87e466d5, 0x94b49521, + 0x66df1622, + 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, + 0xec064eed, + 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 0x0417b1db, 0xf67c32d8, 0xe52cc12c, + 0x1747422f, + 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, 0x8ecee914, 0x7ca56a17, 0x6ff599e3, + 0x9d9e1ae0, + 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, 0x144976b4, 0xe622f5b7, 0xf5720643, + 0x07198540, + 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, + 0x8dc0dd8f, + 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, + 0x37faccf1, + 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, 0xae7367ca, 0x5c18e4c9, 0x4f48173d, + 0xbd23943e, + 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, + 0x27a40b9e, + 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, + 0xad7d5351, + }; + + private ByteArrays() { + throw new AssertionError(); + } + + /** + * @param array array + * @return a new array containing specified array's elements in reverse order. + */ + public static byte[] reverse(byte[] array) { + byte[] rarray = new byte[array.length]; + for (int i = 0; i < array.length; i++) { + rarray[i] = array[array.length - i - 1]; + } + return rarray; + } + + /** + * @param array array + * @param offset offset + * @return byte value. + */ + public static byte getByte(byte[] array, int offset) { + validateBounds(array, offset, BYTE_SIZE_IN_BYTES); + return array[offset]; + } + + /** + * @param value value + * @return byte array + */ + public static byte[] toByteArray(byte value) { + return new byte[] {value}; + } + + /** + * @param value value + * @param separator separator + * @return hex string + */ + public static String toHexString(byte value, String separator) { + return toHexString(toByteArray(value), separator); + } + + /** + * @param array array + * @param offset offset + * @return short value + */ + public static short getShort(byte[] array, int offset) { + return getShort(array, offset, ByteOrder.BIG_ENDIAN); + } + + /** + * @param array array + * @param offset offset + * @param bo bo + * @return short value + */ + public static short getShort(byte[] array, int offset, ByteOrder bo) { + validateBounds(array, offset, SHORT_SIZE_IN_BYTES); + + if (bo == null) { + throw new NullPointerException(" bo: " + bo); + } + + if (bo.equals(LITTLE_ENDIAN)) { + return (short) (((array[offset + 1]) << (BYTE_SIZE_IN_BITS * 1)) | ((0xFF & array[offset]))); + } else { + return (short) (((array[offset]) << (BYTE_SIZE_IN_BITS * 1)) | ((0xFF & array[offset + 1]))); + } + } + + /** + * @param value value + * @return byte array + */ + public static byte[] toByteArray(short value) { + return toByteArray(value, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param bo bo + * @return byte array + */ + public static byte[] toByteArray(short value, ByteOrder bo) { + if (bo.equals(LITTLE_ENDIAN)) { + return new byte[] {(byte) (value), (byte) (value >> BYTE_SIZE_IN_BITS * 1)}; + } else { + return new byte[] {(byte) (value >> BYTE_SIZE_IN_BITS * 1), (byte) (value)}; + } + } + + /** + * @param value value + * @param separator separator + * @return hex string + */ + public static String toHexString(short value, String separator) { + return toHexString(value, separator, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param separator separator + * @param bo bo + * @return hex string + */ + public static String toHexString(short value, String separator, ByteOrder bo) { + return toHexString(toByteArray(value, bo), separator); + } + + /** + * @param array array + * @param offset offset + * @return int value. + */ + public static int getInt(byte[] array, int offset) { + return getInt(array, offset, ByteOrder.BIG_ENDIAN); + } + + /** + * @param array array + * @param offset offset + * @param bo bo + * @return int value. + */ + public static int getInt(byte[] array, int offset, ByteOrder bo) { + validateBounds(array, offset, INT_SIZE_IN_BYTES); + + if (bo == null) { + throw new NullPointerException(" bo: " + bo); + } + + if (bo.equals(LITTLE_ENDIAN)) { + return ((array[offset + 3]) << (BYTE_SIZE_IN_BITS * 3)) + | ((0xFF & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 2)) + | ((0xFF & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 1)) + | ((0xFF & array[offset])); + } else { + return ((array[offset]) << (BYTE_SIZE_IN_BITS * 3)) + | ((0xFF & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 2)) + | ((0xFF & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 1)) + | ((0xFF & array[offset + 3])); + } + } + + /** + * @param array array + * @param offset offset + * @param length length + * @return int value. + */ + public static int getInt(byte[] array, int offset, int length) { + return getInt(array, offset, length, ByteOrder.BIG_ENDIAN); + } + + /** + * @param array array + * @param offset offset + * @param length length + * @param bo bo + * @return int value. + */ + public static int getInt(byte[] array, int offset, int length, ByteOrder bo) { + validateBounds(array, offset, length); + if (length > INT_SIZE_IN_BYTES) { + StringBuilder sb = + new StringBuilder(30) + .append("length must be equal or less than ") + .append(INT_SIZE_IN_BYTES) + .append(", but is: ") + .append(length); + throw new IllegalArgumentException(sb.toString()); + } + + if (bo == null) { + throw new NullPointerException(" bo: " + bo); + } + + int value = 0; + if (bo.equals(LITTLE_ENDIAN)) { + for (int i = offset + length - 1; i >= offset; i--) { + value <<= BYTE_SIZE_IN_BITS; + value |= 0xFF & array[i]; + } + } else { + for (int i = offset; i < offset + length; i++) { + value <<= BYTE_SIZE_IN_BITS; + value |= 0xFF & array[i]; + } + } + return value; + } + + /** + * @param value value + * @return byte array + */ + public static byte[] toByteArray(int value) { + return toByteArray(value, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param bo bo + * @return byte array + */ + public static byte[] toByteArray(int value, ByteOrder bo) { + if (bo.equals(LITTLE_ENDIAN)) { + return new byte[] { + (byte) (value), + (byte) (value >> BYTE_SIZE_IN_BITS * 1), + (byte) (value >> BYTE_SIZE_IN_BITS * 2), + (byte) (value >> BYTE_SIZE_IN_BITS * 3), + }; + } else { + return new byte[] { + (byte) (value >> BYTE_SIZE_IN_BITS * 3), + (byte) (value >> BYTE_SIZE_IN_BITS * 2), + (byte) (value >> BYTE_SIZE_IN_BITS * 1), + (byte) (value) + }; + } + } + + /** + * @param value value + * @param length length + * @return byte array + */ + public static byte[] toByteArray(int value, int length) { + return toByteArray(value, length, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param length length + * @param bo bo + * @return byte array + */ + public static byte[] toByteArray(int value, int length, ByteOrder bo) { + if (length > INT_SIZE_IN_BYTES) { + StringBuilder sb = + new StringBuilder(30) + .append("length must be equal or less than ") + .append(INT_SIZE_IN_BYTES) + .append(", but is: ") + .append(length); + throw new IllegalArgumentException(sb.toString()); + } + + byte[] arr = new byte[length]; + if (bo.equals(LITTLE_ENDIAN)) { + for (int i = 0; i < length; i++) { + arr[length - i - 1] = (byte) (value >> BYTE_SIZE_IN_BITS * i); + } + } else { + for (int i = 0; i < length; i++) { + arr[i] = (byte) (value >> BYTE_SIZE_IN_BITS * i); + } + } + + return arr; + } + + /** + * @param value value + * @param separator separator + * @return hex string + */ + public static String toHexString(int value, String separator) { + return toHexString(value, separator, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param separator separator + * @param bo bo + * @return hex string + */ + public static String toHexString(int value, String separator, ByteOrder bo) { + return toHexString(toByteArray(value, bo), separator); + } + + /** + * @param array array + * @param offset offset + * @return long value + */ + public static long getLong(byte[] array, int offset) { + return getLong(array, offset, ByteOrder.BIG_ENDIAN); + } + + /** + * @param array array + * @param offset offset + * @param bo bo + * @return long value + */ + public static long getLong(byte[] array, int offset, ByteOrder bo) { + validateBounds(array, offset, LONG_SIZE_IN_BYTES); + + if (bo == null) { + throw new NullPointerException(" bo: " + bo); + } + + if (bo.equals(LITTLE_ENDIAN)) { + return (((long) array[offset + 7]) << (BYTE_SIZE_IN_BITS * 7)) + | ((0xFFL & array[offset + 6]) << (BYTE_SIZE_IN_BITS * 6)) + | ((0xFFL & array[offset + 5]) << (BYTE_SIZE_IN_BITS * 5)) + | ((0xFFL & array[offset + 4]) << (BYTE_SIZE_IN_BITS * 4)) + | ((0xFFL & array[offset + 3]) << (BYTE_SIZE_IN_BITS * 3)) + | ((0xFFL & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 2)) + | ((0xFFL & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 1)) + | ((0xFFL & array[offset])); + } else { + return (((long) array[offset]) << (BYTE_SIZE_IN_BITS * 7)) + | ((0xFFL & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 6)) + | ((0xFFL & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 5)) + | ((0xFFL & array[offset + 3]) << (BYTE_SIZE_IN_BITS * 4)) + | ((0xFFL & array[offset + 4]) << (BYTE_SIZE_IN_BITS * 3)) + | ((0xFFL & array[offset + 5]) << (BYTE_SIZE_IN_BITS * 2)) + | ((0xFFL & array[offset + 6]) << (BYTE_SIZE_IN_BITS * 1)) + | ((0xFFL & array[offset + 7])); + } + } + + /** + * @param value value + * @return byte array + */ + public static byte[] toByteArray(long value) { + return toByteArray(value, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param bo bo + * @return byte array + */ + public static byte[] toByteArray(long value, ByteOrder bo) { + if (bo.equals(LITTLE_ENDIAN)) { + return new byte[] { + (byte) (value), + (byte) (value >> BYTE_SIZE_IN_BITS * 1), + (byte) (value >> BYTE_SIZE_IN_BITS * 2), + (byte) (value >> BYTE_SIZE_IN_BITS * 3), + (byte) (value >> BYTE_SIZE_IN_BITS * 4), + (byte) (value >> BYTE_SIZE_IN_BITS * 5), + (byte) (value >> BYTE_SIZE_IN_BITS * 6), + (byte) (value >> BYTE_SIZE_IN_BITS * 7) + }; + } else { + return new byte[] { + (byte) (value >> BYTE_SIZE_IN_BITS * 7), + (byte) (value >> BYTE_SIZE_IN_BITS * 6), + (byte) (value >> BYTE_SIZE_IN_BITS * 5), + (byte) (value >> BYTE_SIZE_IN_BITS * 4), + (byte) (value >> BYTE_SIZE_IN_BITS * 3), + (byte) (value >> BYTE_SIZE_IN_BITS * 2), + (byte) (value >> BYTE_SIZE_IN_BITS * 1), + (byte) (value) + }; + } + } + + /** + * @param value value + * @param separator separator + * @return hex string + */ + public static String toHexString(long value, String separator) { + return toHexString(value, separator, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param separator separator + * @param bo bo + * @return hex string + */ + public static String toHexString(long value, String separator, ByteOrder bo) { + return toHexString(toByteArray(value, bo), separator); + } + +// /** +// * @param array array +// * @param offset offset +// * @return a new MacAddress object. +// */ +// public static MacAddress getMacAddress(byte[] array, int offset) { +// return getMacAddress(array, offset, ByteOrder.BIG_ENDIAN); +// } +// +// /** +// * @param array array +// * @param offset offset +// * @param bo bo +// * @return a new MacAddress object. +// */ +// public static MacAddress getMacAddress(byte[] array, int offset, ByteOrder bo) { +// validateBounds(array, offset, MacAddress.SIZE_IN_BYTES); +// +// if (bo == null) { +// throw new NullPointerException(" bo: " + bo); +// } +// +// if (bo.equals(LITTLE_ENDIAN)) { +// return MacAddress.getByAddress(reverse(getSubArray(array, offset, MacAddress.SIZE_IN_BYTES))); +// } else { +// return MacAddress.getByAddress(getSubArray(array, offset, MacAddress.SIZE_IN_BYTES)); +// } +// } +// +// /** +// * @param value value +// * @return byte array +// */ +// public static byte[] toByteArray(MacAddress value) { +// return toByteArray(value, ByteOrder.BIG_ENDIAN); +// } +// +// /** +// * @param value value +// * @param bo bo +// * @return byte array +// */ +// public static byte[] toByteArray(MacAddress value, ByteOrder bo) { +// if (bo.equals(LITTLE_ENDIAN)) { +// return reverse(value.getAddress()); +// } else { +// return value.getAddress(); +// } +// } +// +// /** +// * @param array array +// * @param offset offset +// * @param length length +// * @return a new LinkLayerAddress object. +// */ +// public static LinkLayerAddress getLinkLayerAddress(byte[] array, int offset, int length) { +// return getLinkLayerAddress(array, offset, length, ByteOrder.BIG_ENDIAN); +// } +// +// /** +// * @param array array +// * @param offset offset +// * @param length length +// * @param bo bo +// * @return a new LinkLayerAddress object. +// */ +// public static LinkLayerAddress getLinkLayerAddress( +// byte[] array, int offset, int length, ByteOrder bo) { +// validateBounds(array, offset, length); +// +// if (bo == null) { +// throw new NullPointerException(" bo: " + bo); +// } +// +// if (bo.equals(LITTLE_ENDIAN)) { +// return LinkLayerAddress.getByAddress(reverse(getSubArray(array, offset, length))); +// } else { +// return LinkLayerAddress.getByAddress(getSubArray(array, offset, length)); +// } +// } +// +// /** +// * @param value value +// * @return byte array +// */ +// public static byte[] toByteArray(LinkLayerAddress value) { +// return toByteArray(value, ByteOrder.BIG_ENDIAN); +// } +// +// /** +// * @param value value +// * @param bo bo +// * @return byte array +// */ +// public static byte[] toByteArray(LinkLayerAddress value, ByteOrder bo) { +// if (bo.equals(LITTLE_ENDIAN)) { +// return reverse(value.getAddress()); +// } else { +// return value.getAddress(); +// } +// } + + /** + * @param array array + * @param offset offset + * @return a new Inet4Address object. + */ + public static Inet4Address getInet4Address(byte[] array, int offset) { + return getInet4Address(array, offset, ByteOrder.BIG_ENDIAN); + } + + /** + * @param array array + * @param offset offset + * @param bo bo + * @return a new Inet4Address object. + */ + public static Inet4Address getInet4Address(byte[] array, int offset, ByteOrder bo) { + validateBounds(array, offset, INET4_ADDRESS_SIZE_IN_BYTES); + + if (bo == null) { + throw new NullPointerException(" bo: " + bo); + } + + try { + if (bo.equals(LITTLE_ENDIAN)) { + return (Inet4Address) + InetAddress.getByAddress( + reverse(getSubArray(array, offset, INET4_ADDRESS_SIZE_IN_BYTES))); + } else { + return (Inet4Address) + InetAddress.getByAddress(getSubArray(array, offset, INET4_ADDRESS_SIZE_IN_BYTES)); + } + } catch (UnknownHostException e) { + throw new AssertionError(e); + } + } + + /** + * @param addr a string representation of an IPv4 address. (e.g. "192.168.0.100") + * @return a byte array representation of the IPv4 address. + * @throws IllegalArgumentException if failed to parse addr. + */ + public static byte[] parseInet4Address(String addr) { + String[] octetStrs = addr.split("\\.", 4); + if (octetStrs.length != INET4_ADDRESS_SIZE_IN_BYTES) { + throw new IllegalArgumentException("Couldn't get an Inet4Address from " + addr); + } + + byte[] octets = new byte[4]; + for (int i = 0; i < octets.length; i++) { + String octetStr = octetStrs[i]; + try { + int octet = Integer.parseInt(octetStr); + if (octet < 0 || octet > 255) { + throw new IllegalArgumentException("Couldn't get an Inet4Address from " + addr); + } + octets[i] = (byte) octet; + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Couldn't get an Inet4Address from " + addr); + } + } + + return octets; + } + + /** + * @param array array + * @param offset offset + * @return a new Inet6Address object. + */ + public static Inet6Address getInet6Address(byte[] array, int offset) { + return getInet6Address(array, offset, ByteOrder.BIG_ENDIAN); + } + + /** + * @param array array + * @param offset offset + * @param bo bo + * @return a new Inet6Address object. + */ + public static Inet6Address getInet6Address(byte[] array, int offset, ByteOrder bo) { + validateBounds(array, offset, INET6_ADDRESS_SIZE_IN_BYTES); + + if (bo == null) { + throw new NullPointerException(" bo: " + bo); + } + + try { + if (bo.equals(LITTLE_ENDIAN)) { + return Inet6Address.getByAddress( + null, reverse(getSubArray(array, offset, INET6_ADDRESS_SIZE_IN_BYTES)), -1); + } else { + return Inet6Address.getByAddress( + null, getSubArray(array, offset, INET6_ADDRESS_SIZE_IN_BYTES), -1); + } + } catch (UnknownHostException e) { + throw new AssertionError(e); + } + } + + /** + * @param value value + * @return byte array + */ + public static byte[] toByteArray(InetAddress value) { + return toByteArray(value, ByteOrder.BIG_ENDIAN); + } + + /** + * @param value value + * @param bo bo + * @return byte array + */ + public static byte[] toByteArray(InetAddress value, ByteOrder bo) { + if (bo.equals(LITTLE_ENDIAN)) { + return reverse(value.getAddress()); + } else { + return value.getAddress(); + } + } + + /** + * @param array array + * @param offset offset + * @param length length + * @return sub array + */ + public static byte[] getSubArray(byte[] array, int offset, int length) { + validateBounds(array, offset, length); + + byte[] subArray = new byte[length]; + System.arraycopy(array, offset, subArray, 0, length); + return subArray; + } + + /** + * @param array array + * @param offset offset + * @return sub array + */ + public static byte[] getSubArray(byte[] array, int offset) { + return getSubArray(array, offset, array.length - offset); + } + + /** + * @param array array + * @param separator separator + * @return hex string + */ + public static String toHexString(byte[] array, String separator) { + return toHexString(array, separator, 0, array.length); + } + + /** + * @param array array + * @param separator separator + * @param offset offset + * @param length length + * @return hex string + */ + public static String toHexString(byte[] array, String separator, int offset, int length) { + validateBounds(array, offset, length); + + char[] hexChars; + if (separator.length() != 0) { + char[] sepChars = separator.toCharArray(); + hexChars = new char[length * 2 + sepChars.length * (length - 1)]; + int cur = 0; + int i = 0; + for (; i < length - 1; i++) { + int v = array[offset + i] & 0xFF; + hexChars[cur] = HEX_CHARS[v >>> 4]; + cur++; + hexChars[cur] = HEX_CHARS[v & 0x0F]; + cur++; + for (int j = 0; j < sepChars.length; j++) { + hexChars[cur] = sepChars[j]; + cur++; + } + } + int v = array[offset + i] & 0xFF; + hexChars[cur] = HEX_CHARS[v >>> 4]; + hexChars[cur + 1] = HEX_CHARS[v & 0x0F]; + } else { + hexChars = new char[length * 2]; + int cur = 0; + for (int i = 0; i < length; i++) { + int v = array[offset + i] & 0xFF; + hexChars[cur] = HEX_CHARS[v >>> 4]; + cur++; + hexChars[cur] = HEX_CHARS[v & 0x0F]; + cur++; + } + } + + return new String(hexChars); + } + + /** + * A utility method to calculate the Internet checksum. + * + * @see RFC 1071 + * @param data data + * @return checksum + */ + public static short calcChecksum(byte[] data) { + long sum = 0; + for (int i = 1; i < data.length; i += SHORT_SIZE_IN_BYTES) { + sum += 0xFFFFL & getShort(data, i - 1); + } + if (data.length % 2 != 0) { + sum += 0xFFFFL & (data[data.length - 1] << BYTE_SIZE_IN_BITS); + } + + while ((sum >> (BYTE_SIZE_IN_BITS * SHORT_SIZE_IN_BYTES)) != 0) { + sum = (0xFFFFL & sum) + (sum >>> (BYTE_SIZE_IN_BITS * SHORT_SIZE_IN_BYTES)); + } + + return (short) ~sum; + } + + /** + * A utility method to calculate CRC-32 checksum. + * + * @param data data + * @return checksum + */ + public static int calcCrc32Checksum(byte[] data) { + CRC32 crc32 = new CRC32(); + crc32.update(data); + return (int) crc32.getValue(); + } + + /** + * A utility method to calculate CRC-32C checksum. + * + * @param data data + * @return checksum + */ + public static int calcCrc32cChecksum(byte[] data) { + int c = 0xFFFFFFFF; + for (int i = 0; i < data.length; i++) { + c = CRC32C_TABLE[(c ^ data[i]) & 0xFF] ^ (c >>> 8); + } + return c ^ 0xFFFFFFFF; + } + + /** + * A utility method to calculate Adler-32 checksum. + * + * @param data data + * @return checksum + */ + public static int calcAdler32Checksum(byte[] data) { + Adler32 adler32 = new Adler32(); + adler32.update(data); + return (int) adler32.getValue(); + } + + /** + * @param hexString hexString + * @param separator separator + * @return a new byte array. + */ + public static byte[] parseByteArray(String hexString, String separator) { + if (hexString == null || separator == null) { + StringBuilder sb = new StringBuilder(); + sb.append("hexString: ").append(hexString).append(" separator: ").append(separator); + throw new NullPointerException(sb.toString()); + } + + if (hexString.startsWith("0x")) { + hexString = hexString.substring(2); + } + + String noSeparatorHexString; + if (separator.length() == 0) { + if (!NO_SEPARATOR_HEX_STRING_PATTERN.matcher(hexString).matches()) { + StringBuilder sb = new StringBuilder(100); + sb.append("invalid hex string(") + .append(hexString) + .append("), not match pattern(") + .append(NO_SEPARATOR_HEX_STRING_PATTERN.pattern()) + .append(")"); + throw new IllegalArgumentException(sb.toString()); + } + noSeparatorHexString = hexString; + } else { + StringBuilder patternSb = new StringBuilder(60); + patternSb + .append("\\A[0-9a-fA-F][0-9a-fA-F](") + .append(Pattern.quote(separator)) + .append("[0-9a-fA-F][0-9a-fA-F])*\\z"); + String patternString = patternSb.toString(); + + Pattern pattern = Pattern.compile(patternString); + if (!pattern.matcher(hexString).matches()) { + StringBuilder sb = new StringBuilder(150); + sb.append("invalid hex string(") + .append(hexString) + .append("), not match pattern(") + .append(patternString) + .append(")"); + throw new IllegalArgumentException(sb.toString()); + } + noSeparatorHexString = hexString.replaceAll(Pattern.quote(separator), ""); + } + + int arrayLength = noSeparatorHexString.length() / 2; + byte[] array = new byte[arrayLength]; + for (int i = 0; i < arrayLength; i++) { + array[i] = (byte) Integer.parseInt(noSeparatorHexString.substring(i * 2, i * 2 + 2), 16); + } + + return array; + } + + /** + * @param array array + * @return a clone of array + */ + public static byte[] clone(byte[] array) { + byte[] clone = new byte[array.length]; + System.arraycopy(array, 0, clone, 0, array.length); + return clone; + } + + /** + * A utility method to validate arguments which indicate a part of an array. + * + * @param arr arr + * @param offset offset + * @param len len + * @throws NullPointerException if the {@code arr} is null. + * @throws IllegalArgumentException if {@code arr} is empty or {@code len} is zero. + * @throws ArrayIndexOutOfBoundsException if {@code offset} or {@code len} is negative, or ({@code + * offset} + {@code len}) is greater than or equal to {@code arr.length}. + */ + public static void validateBounds(byte[] arr, int offset, int len) { + if (arr == null) { + throw new NullPointerException("arr must not be null."); + } + if (arr.length == 0) { + throw new IllegalArgumentException("arr is empty."); + } + if (len == 0) { + StringBuilder sb = new StringBuilder(100); + sb.append("length is zero. offset: ") + .append(offset) + .append(", arr: ") + .append(toHexString(arr, "")); + throw new IllegalArgumentException(sb.toString()); + } + if (offset < 0 || len < 0 || offset + len > arr.length) { + StringBuilder sb = new StringBuilder(100); + sb.append("arr.length: ") + .append(arr.length) + .append(", offset: ") + .append(offset) + .append(", len: ") + .append(len) + .append(", arr: ") + .append(toHexString(arr, "")); + throw new ArrayIndexOutOfBoundsException(sb.toString()); + } + } + + /** + * @param arr1 arr1 + * @param arr2 arr2 + * @return arr1 xor arr2 + */ + public static byte[] xor(byte[] arr1, byte[] arr2) { + if (arr1 == null) { + throw new NullPointerException("arr1 must not be null."); + } + if (arr2 == null) { + throw new NullPointerException("arr2 must not be null."); + } + if (arr1.length != arr2.length) { + throw new IllegalArgumentException("arr1.length must equal to arr2.length."); + } + + byte[] result = new byte[arr1.length]; + for (int i = 0; i < arr1.length; i++) { + result[i] = (byte) (arr1[i] ^ arr2[i]); + } + + return result; + } + + /** + * @param arr1 arr1 + * @param arr2 arr2 + * @return arr1 + arr2 + */ + public static byte[] concatenate(byte[] arr1, byte[] arr2) { + byte[] result = new byte[arr1.length + arr2.length]; + System.arraycopy(arr1, 0, result, 0, arr1.length); + System.arraycopy(arr2, 0, result, arr1.length, arr2.length); + return result; + } + + /** + * @param arrs arrays + * @return the concatenated array. + */ + public static byte[] concatenate(List arrs) { + int length = 0; + for (byte[] arr : arrs) { + length += arr.length; + } + + byte[] result = new byte[length]; + int destPos = 0; + for (byte[] arr : arrs) { + System.arraycopy(arr, 0, result, destPos, arr.length); + destPos += arr.length; + } + + return result; + } +} \ No newline at end of file -- GitLab From f8be8cbbb829068d8d9c83ea5493e57a7af704c5 Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 1 Feb 2021 11:49:24 +0100 Subject: [PATCH 129/176] TPs runs against new TDL/TO plugin and errors resolved --- test_purposes/Cx/TP_CX.tplan2 | 61 ++++++++++++++++---------------- test_purposes/Gm/TP_GM.tplan2 | 4 +-- test_purposes/Ic/TP_IC.tplan2 | 22 ++++++------ test_purposes/Mw/TP_MW_PS.tplan2 | 2 +- test_purposes/Sip_Common.tplan2 | 34 ++++++++++-------- 5 files changed, 64 insertions(+), 59 deletions(-) diff --git a/test_purposes/Cx/TP_CX.tplan2 b/test_purposes/Cx/TP_CX.tplan2 index 5cc3ee8..589377b 100644 --- a/test_purposes/Cx/TP_CX.tplan2 +++ b/test_purposes/Cx/TP_CX.tplan2 @@ -59,16 +59,16 @@ Package TP_CX { } then { the IMS_HSS_A entity sends the MAA containing - Session_ID_AVP - Vendor_Specific_Application_Id_AVP - Auth_Session_State_AVP - Origin_Host_AVP - Origin_Realm_AVP - not Experimental_Result_AVP + Session_ID_AVP, + Vendor_Specific_Application_Id_AVP, + Auth_Session_State_AVP, + Origin_Host_AVP, + Origin_Realm_AVP, + not Experimental_Result_AVP, Result_Code_AVP indicating value DIAMETER_SUCCESS - User_Name_AVP - SIP_Number_Auth_Items_AVP + User_Name_AVP, + SIP_Number_Auth_Items_AVP, SIP_Auth_Data_Item_AVP containing SIP_Authentication_Scheme_AVP ; @@ -149,16 +149,16 @@ Package TP_CX { ensure that { when { the IMS_S_CSCF_A entity sends a SAR containing - Session_ID_AVP - Vendor_Specific_Application_Id_AVP + Session_ID_AVP, + Vendor_Specific_Application_Id_AVP, Auth_Session_State_AVP indicating value NO_STATE_MAINTAINED, - Origin_Host_AVP - Origin_Realm_AVP - Public_Identity_AVP - not User_Name_AVP - Destination_Realm_AVP - Server_Name_AVP + Origin_Host_AVP, + Origin_Realm_AVP, + Public_Identity_AVP, + not User_Name_AVP, + Destination_Realm_AVP, + Server_Name_AVP, Server_Assignment_Type_AVP indicating value UNREGISTERED_USER User_Data_Already_Available_AVP @@ -273,11 +273,11 @@ Package TP_CX { } then { the IMS_HSS_A entity sends the UAA containing - Session_ID_AVP - Vendor_Specific_Application_Id_AVP - Auth_Session_State_AVP - Origin_Host_AVP - Origin_Realm_AVP + Session_ID_AVP, + Vendor_Specific_Application_Id_AVP, + Auth_Session_State_AVP, + Origin_Host_AVP, + Origin_Realm_AVP, not Result_Code_AVP Experimental_Result_AVP containing Experimental_Result_Code_AVP @@ -316,12 +316,12 @@ Package TP_CX { } then { the IMS_HSS_A entity sends the UAA containing - not Result_Code_AVP + not Result_Code_AVP, Experimental_Result_AVP containing Experimental_Result_Code_AVP indicating value DIAMETER_SUBSEQUENT_REGISTRATION ;, - Server_Name_AVP + Server_Name_AVP, not Server_Capabilities_AVP ; to the IMS_I_CSCF_A entity @@ -357,10 +357,11 @@ Package TP_CX { } then { the IMS_HSS_A entity sends the UAA containing - not Result_Code_AVP - Experimental_Result_AVP + not Result_Code_AVP, + Experimental_Result_AVP containing Experimental_Result_Code_AVP indicating value DIAMETER_ERROR_USER_UNKNOWN + ;, not Server_Name_AVP ; to the IMS_I_CSCF_A entity @@ -388,10 +389,10 @@ Package TP_CX { ensure that { when { the IMS_I_CSCF_A entity sends a UAR containing - Public_Identity_AVP - User_Name_AVP + Public_Identity_AVP, + User_Name_AVP, User_Authentication_Type_AVP - indicating value DE_REGISTRATION + indicating value DE_REGISTRATION, Visited_Network_Identifier_AVP ; to the IMS_HSS_A entity @@ -399,8 +400,8 @@ Package TP_CX { then { the IMS_HSS_A entity sends the UAA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - Server_Name_AVP + indicating value DIAMETER_SUCCESS, + Server_Name_AVP, not Server_Capabilities_AVP ; to the IMS_I_CSCF_A entity diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index b2f24c4..0cfd7e3 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -2100,7 +2100,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE + Route indicating value PX_UE_A_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity @@ -2186,7 +2186,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE + Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2 index f963878..c11bad3 100644 --- a/test_purposes/Ic/TP_IC.tplan2 +++ b/test_purposes/Ic/TP_IC.tplan2 @@ -62,7 +62,7 @@ Package TP_IC { REGISTER requests received from the UE to the entry point in the home network" Reference - "TS 124 229 [1], clause 5.2.2.1 ¶16 (2nd numbered list) and 5.2.2.2" + "TS 124 229 [1], clause 5.2.2.1 �16 (2nd numbered list) and 5.2.2.2" Config Id CFG_IC_01 Initial conditions with { the IMS_A entity isNotConfiguredForTopologyHiding and @@ -83,7 +83,7 @@ Package TP_IC { "S-CSCF shall insert orig-ioi parameter, remove access-network-charging-info parameter and P-Access-Network-Info header before sending initial INVITE or a initial request over NNI" Reference - "TS 124 229 [1], clause 5.4.3.2 ¶11 (1st numbered list), clause 5.10.3.2" + "TS 124 229 [1], clause 5.4.3.2 �11 (1st numbered list), clause 5.10.3.2" Config Id CF_VxLTE_INT PICS Selection NONE @@ -101,7 +101,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity forwards the initial INVITE containing - Route indicating value not PX_S_CSCF_A_SIP_URI, + Route not indicating value PX_S_CSCF_A_SIP_URI, PChargingVector containing Icid, Orig_Ioi indicating value PX_IMS_A_ICID, @@ -129,7 +129,7 @@ Package TP_IC { "S-CSCF inserts a second P-Asserted-Identity header indicating a registered tel URI or sip URI whichever is not present in initial INVITE" Reference - "TS 124 229 [1], clause 5.4.3.2 ¶9 (item 9 1st numbered list)" + "TS 124 229 [1], clause 5.4.3.2 �9 (item 9 1st numbered list)" Config Id CF_VxLTE_INT PICS Selection NONE @@ -239,7 +239,7 @@ Package TP_IC { then { the IMS_IBCF_A entity forwards the initial INVITE containing Route containing - RouteBody indicating value not PX_P_CSCF_A_SIP_URI, + RouteBody not indicating value PX_P_CSCF_A_SIP_URI, RouteBody indicating value PX_P_CSCF_Service_Route_URIs ; , Via containing @@ -826,7 +826,7 @@ Package TP_IC { then { the IMS_IBCF_A entity sends the subsequent INVITE containing RecordRoute indicating value PX_S_CSCF_A_SIP_URI , - Route indicating value not PX_S_CSCF_A_SIP_URI + Route not indicating value PX_S_CSCF_A_SIP_URI PChargingVector containing not AccessNetworkChargingInfo ; @@ -867,7 +867,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity forwards the BYE containing - Route indicating value not PX_S_CSCF_A_SIP_URI + Route not indicating value PX_S_CSCF_A_SIP_URI ; to the IMS_IBCF_B entity } @@ -975,7 +975,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity forwards the ACK containing - Route indicating value not PX_S_CSCF_A_SIP_URI + Route not indicating value PX_S_CSCF_A_SIP_URI ; to the IMS_IBCF_B entity } @@ -1076,7 +1076,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity sends a CANCEL containing - Route indicating value not PX_S_CSCF_A_SIP_URI + Route not indicating value PX_S_CSCF_A_SIP_URI ; to the IMS_IBCF_B entity and the IMS_IBCF_B entity forwards the CANCEL @@ -1109,7 +1109,7 @@ Package TP_IC { ensure that { when { the IMS_IBCF_B entity receives the CANCEL containing - Route indicating value not PX_S_CSCF_A_SIP_URI + Route not indicating value PX_S_CSCF_A_SIP_URI ; from the IMS_A entity } @@ -1145,7 +1145,7 @@ Package TP_IC { } then { the IMS_IBCF_B entity sends a CANCEL containing - Route indicating value not PX_S_CSCF_B_SIP_URI + Route not indicating value PX_S_CSCF_B_SIP_URI ; to the IMS_IBCF_A entity } diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 75c7d4c..f4d5d62 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -1572,7 +1572,7 @@ Package TP_MW_PS { from the UE_B entity } then { - the not IMS_P_CSCF_B entity sends a 200_Ok containing + the IMS_P_CSCF_B entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index d0fdb72..2ef3ff9 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -130,17 +130,19 @@ Package Sip_Common { SipMessage REGISTER; SipMessage SUBSCRIBE; SipMessage INVITE; - SipMessage 486_INVITE; SipMessage ACK; + SipMessage CANCEL; + SipMessage BYE; // SIP Responses - SipMessage 401_Unauthorized; - SipMessage 100_Trying; - SipMessage 180_Ringing; - SipMessage 200_Ok; - SipMessage 2xx_Any; - SipMessage 404_NotFound; - SipMessage 403_Forbidden; - SipMessage 4xx_Any; + SipMessage r_100_Trying; + SipMessage r_180_Ringing; + SipMessage r_200_Ok; + SipMessage r_2xx_Any; + SipMessage r_401_Unauthorized; + SipMessage r_403_Forbidden; + SipMessage r_404_NotFound; + SipMessage r_486_INVITE; + SipMessage r_4xx_Any; } // End of Data section Configuration { @@ -173,6 +175,7 @@ Package Sip_Common { SUT component UE_A of type SipComponent SUT component IMS_P_CSCF_B of type SipComponent SUT component IMS_S_CSCF_B of type SipComponent + SUT component IMS_I_CSCF_B of type SipComponent SUT component IMS_AS_B of type SipComponent SUT component IMS_IBCF_B of type SipComponent SUT component IMS_IBCF_A of type SipComponent @@ -201,6 +204,7 @@ Package Sip_Common { SUT component UE_A of type SipComponent SUT component IMS_P_CSCF_B of type SipComponent SUT component IMS_S_CSCF_B of type SipComponent + SUT component IMS_I_CSCF_B of type SipComponent SUT component IMS_AS_B of type SipComponent SUT component IMS_IBCF_B of type SipComponent SUT component IMS_IBCF_A of type SipComponent @@ -227,16 +231,16 @@ Package Sip_Common { ; } // End of Configuration section - Type MSG (optional TCP of type CONTENT); + //Type MSG (optional TCP of type CONTENT); - Type CONTENT; - CONTENT tcp; + //Type CONTENT; + //CONTENT tcp; - MSG MESSAGE; + //MSG MESSAGE; - Type MSG_SIZE; + //Type MSG_SIZE; - Message_Body_Size MSG_SIZE; + //Message_Body_Size MSG_SIZE; } // End of Package Sip_Common -- GitLab From 487289b6ac639fee50bf0f140241b3f5a1774a2b Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 8 Mar 2021 14:18:25 +0100 Subject: [PATCH 130/176] Semicolons moved to previous line to avoid empty lines --- test_purposes/Cx/TP_CX.tplan2 | 54 ++--- test_purposes/Gm/TP_GM.tplan2 | 263 ++++++++-------------- test_purposes/Gx/TP_GX.tplan2 | 97 +++------ test_purposes/Ic/TP_IC.tplan2 | 206 +++++------------- test_purposes/Isc/TP_ISC.tplan2 | 6 +- test_purposes/Mw/TP_MW_IS.tplan2 | 66 ++---- test_purposes/Mw/TP_MW_PS.tplan2 | 361 ++++++++++--------------------- test_purposes/Mw/TP_MW_SI.tplan2 | 341 ++++++++++------------------- test_purposes/Rtp/TP_Rtp.tplan2 | 3 +- test_purposes/Rx/TP_RX.tplan2 | 72 ++---- test_purposes/S6a/TP_S6A.tplan2 | 30 +-- test_purposes/S9/TP_S9.tplan2 | 46 +--- test_purposes/Sh/TP_Sh.tplan2 | 6 +- 13 files changed, 472 insertions(+), 1079 deletions(-) diff --git a/test_purposes/Cx/TP_CX.tplan2 b/test_purposes/Cx/TP_CX.tplan2 index 589377b..156cc4f 100644 --- a/test_purposes/Cx/TP_CX.tplan2 +++ b/test_purposes/Cx/TP_CX.tplan2 @@ -52,9 +52,7 @@ Package TP_CX { Server_Name_AVP SIP_Number_Auth_Items_AVP SIP_Auth_Data_Item_AVP containing - SIP_Authentication_Scheme_AVP - ; - ; + SIP_Authentication_Scheme_AVP;; to the IMS_HSS_A entity } then { @@ -70,9 +68,7 @@ Package TP_CX { User_Name_AVP, SIP_Number_Auth_Items_AVP, SIP_Auth_Data_Item_AVP containing - SIP_Authentication_Scheme_AVP - ; - ; + SIP_Authentication_Scheme_AVP;; to the IMS_S_CSCF_A entity } } @@ -109,8 +105,7 @@ Package TP_CX { Destination_Realm_AVP User_Name_AVP Deregistration_Reason_AVP containing - Reason_Code_AVP - ;; + Reason_Code_AVP;; to the IMS_HSS_A entity } then { @@ -121,8 +116,7 @@ Package TP_CX { Origin_Host_AVP Origin_Realm_AVP Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the IMS_S_CSCF_A entity } } @@ -161,8 +155,7 @@ Package TP_CX { Server_Name_AVP, Server_Assignment_Type_AVP indicating value UNREGISTERED_USER - User_Data_Already_Available_AVP - ; + User_Data_Already_Available_AVP; to the IMS_HSS_A entity } then { @@ -175,8 +168,7 @@ Package TP_CX { Result_Code_AVP indicating value DIAMETER_SUCCESS User_Data AVP - Charging_Information_AVP - ; + Charging_Information_AVP; to the IMS_S_CSCF_A entity } } @@ -215,8 +207,7 @@ Package TP_CX { Server_Name_AVP Server_Assignment_Type_AVP indicating value USER_DEREGISTRATION - User_Data_Already_Available_AVP - ; + User_Data_Already_Available_AVP; to the IMS_HSS_A entity } then { @@ -227,8 +218,7 @@ Package TP_CX { Origin_Host_AVP Origin_Realm_AVP Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the IMS_S_CSCF_A entity } } @@ -267,8 +257,7 @@ Package TP_CX { indicating value REGISTRATION, User_Name_AVP Destination_Host_AVP - Destination_Realm_AVP - ; + Destination_Realm_AVP; to the IMS_HSS_A entity } then { @@ -281,9 +270,7 @@ Package TP_CX { not Result_Code_AVP Experimental_Result_AVP containing Experimental_Result_Code_AVP - indicating value DIAMETER_FIRST_REGISTRATION - ; - ; + indicating value DIAMETER_FIRST_REGISTRATION;; to the IMS_I_CSCF_A entity } } @@ -310,8 +297,7 @@ Package TP_CX { when { the IMS_I_CSCF_A entity sends a UAR containing Public_Identity_AVP - User_Name_AVP - ; + User_Name_AVP; to the IMS_HSS_A entity } then { @@ -319,11 +305,9 @@ Package TP_CX { not Result_Code_AVP, Experimental_Result_AVP containing Experimental_Result_Code_AVP - indicating value DIAMETER_SUBSEQUENT_REGISTRATION - ;, + indicating value DIAMETER_SUBSEQUENT_REGISTRATION;, Server_Name_AVP, - not Server_Capabilities_AVP - ; + not Server_Capabilities_AVP; to the IMS_I_CSCF_A entity } } @@ -360,10 +344,8 @@ Package TP_CX { not Result_Code_AVP, Experimental_Result_AVP containing Experimental_Result_Code_AVP - indicating value DIAMETER_ERROR_USER_UNKNOWN - ;, - not Server_Name_AVP - ; + indicating value DIAMETER_ERROR_USER_UNKNOWN;, + not Server_Name_AVP; to the IMS_I_CSCF_A entity } } @@ -393,8 +375,7 @@ Package TP_CX { User_Name_AVP, User_Authentication_Type_AVP indicating value DE_REGISTRATION, - Visited_Network_Identifier_AVP - ; + Visited_Network_Identifier_AVP; to the IMS_HSS_A entity } then { @@ -402,8 +383,7 @@ Package TP_CX { Result_Code_AVP indicating value DIAMETER_SUCCESS, Server_Name_AVP, - not Server_Capabilities_AVP - ; + not Server_Capabilities_AVP; to the IMS_I_CSCF_A entity } } diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 0cfd7e3..1e6cda2 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -44,8 +44,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - ContentLength indicating value greater than 1300 bytes - ; + ContentLength indicating value greater than 1300 bytes; to the IMS_P_CSCF_A entity } then { @@ -54,8 +53,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - ContentLength indicating value greater than 1300 bytes - ; + ContentLength indicating value greater than 1300 bytes; from the UE_A entity and the IMS_P_CSCF_A entity sends a 200_Ok containing From indicating value PX_UE_A_SIP_URI, @@ -65,8 +63,7 @@ Package TP_GM { PChargingVector containing orig_ioi indicating value PX_OPERATOR_ID_A, term_ioi indicating value PX_OPERATOR_ID_B, - not PAccessNetworkInfo - ;; + not PAccessNetworkInfo;; to the UE_A entity } } @@ -111,8 +108,7 @@ Package TP_GM { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "", not term_ioi, - not SecurityClient - ;; + not SecurityClient;; to the IMS_P_CSCF_A entity and the UE_A entity receives an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, @@ -127,8 +123,7 @@ Package TP_GM { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; from the IMS_P_CSCF_A entity } } @@ -171,8 +166,7 @@ Package TP_GM { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth", - not SecurityClient - ;; + not SecurityClient;; from the UE_A entity } then { @@ -190,8 +184,7 @@ Package TP_GM { term_ioi_parameter indicating value "Operator Identifier Of ImsB" Path, - ServiceRoute - ; + ServiceRoute; to the UE_A entity } } @@ -234,14 +227,12 @@ Package TP_GM { Username indicating value PX_UE_A_INVALID_USERNAME, Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "" - ;; + Nonce indicating value "";; from the UE_A entity and the IMS_P_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID - ; + CallId indicating value PX_UE_A_CALLID; to the UE_A entity } } @@ -285,8 +276,7 @@ Package TP_GM { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "", not term_ioi, - not SecurityClient - ;; + not SecurityClient;; to the IMS_P_CSCF_B entity and the UE_A entity receives an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, @@ -302,8 +292,7 @@ Package TP_GM { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; from the IMS_P_CSCF_B entity } } @@ -346,8 +335,7 @@ Package TP_GM { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth", - not SecurityClient - ;; + not SecurityClient;; from the UE_A entity } then { @@ -366,8 +354,7 @@ Package TP_GM { term_ioi_parameter indicating value "Operator Identifier Of ImsB" Path, - ServiceRoute - ; + ServiceRoute; to the UE_A entity } } @@ -410,13 +397,11 @@ Package TP_GM { Username indicating value PX_UE_A_INVALID_USERNAME, Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "" - ;; + Nonce indicating value "";; and the IMS_P_CSCF_B entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID - ; + CallId indicating value PX_UE_A_CALLID; } } } // End of TP_GM_PCSCF_REGISTER_06 @@ -446,8 +431,7 @@ Package TP_GM { } then { the UE_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_P_CSCF_A entity } } @@ -478,8 +462,7 @@ Package TP_GM { } then { the IMS_P_CSCF_B entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the UE_A entity } } @@ -515,8 +498,7 @@ Package TP_GM { } then { the UE_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_P_CSCF_A entity and the UE_A entity receives a BYE from the IMS_P_CSCF_A entity @@ -553,15 +535,13 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity and the IMS_P_CSCF_A entity sends a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; to the UE_A entity } } @@ -596,16 +576,14 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_B entity and the UE_A entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - PVisitedNetwork - ; + PVisitedNetwork; to the IMS_P_CSCF_B entity } } @@ -636,8 +614,7 @@ Package TP_GM { } then { the IMS_P_CSCF_A entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; to the UE_A entity } } @@ -670,8 +647,7 @@ Package TP_GM { } then { the IMS_P_CSCF_B entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; to the UE_A entity and the UE_A entity sends a 200_Ok to the IMS_P_CSCF_B entity @@ -749,9 +725,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_A entity } } @@ -794,9 +768,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the UE_B entity } } @@ -837,9 +809,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_A entity } } @@ -880,9 +850,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the UE_B entity } } @@ -951,8 +919,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_B entity } then { @@ -961,8 +928,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the UE_B entity } } @@ -1034,8 +1000,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_A entity } then { @@ -1044,8 +1009,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the UE_B entity } } @@ -1083,8 +1047,7 @@ Package TP_GM { the IMS_P_CSCF_A entity sends a 180_Ringing containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_A entity } } @@ -1122,8 +1085,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the IMS_P_CSCF_B entity } then { @@ -1135,8 +1097,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } } @@ -1174,8 +1135,7 @@ Package TP_GM { the IMS_P_CSCF_B entity sends a 180_Ringing containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_A entity } } @@ -1215,8 +1175,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the IMS_P_CSCF_A entity } then { @@ -1228,8 +1187,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } } @@ -1265,8 +1223,7 @@ Package TP_GM { the IMS_P_CSCF_A entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_A entity } } @@ -1304,8 +1261,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the IMS_P_CSCF_B entity } then { @@ -1317,8 +1273,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } } @@ -1356,8 +1311,7 @@ Package TP_GM { the IMS_P_CSCF_B entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_A entity } } @@ -1397,8 +1351,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the IMS_P_CSCF_A entity } then { @@ -1410,8 +1363,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } } @@ -1449,8 +1401,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } } @@ -1490,8 +1441,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } } @@ -1531,8 +1481,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } } @@ -1569,8 +1518,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_S_CSCF_A entity } then { @@ -1579,8 +1527,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_B entity } } @@ -1623,9 +1570,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_A entity } } @@ -1667,9 +1612,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_B entity } } @@ -1713,9 +1656,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_B entity } } @@ -1759,9 +1700,7 @@ Package TP_GM { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_B entity } } @@ -1799,8 +1738,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } } @@ -1839,8 +1777,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_B entity } } @@ -1879,8 +1816,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -1921,8 +1857,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } } @@ -1963,8 +1898,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_B entity } } @@ -2005,8 +1939,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_B entity } } @@ -2041,8 +1974,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -2054,8 +1986,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_A entity } } @@ -2090,8 +2021,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -2103,8 +2033,7 @@ Package TP_GM { Route indicating value PX_UE_A_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_B entity } } @@ -2140,8 +2069,7 @@ Package TP_GM { the IMS_P_CSCF_A entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the IMS_S_CSCF_A entity } } @@ -2176,8 +2104,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -2189,8 +2116,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_A entity } } @@ -2225,8 +2151,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -2238,8 +2163,7 @@ Package TP_GM { Route indicating value PX_UE_A_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_B entity } } @@ -2275,8 +2199,7 @@ Package TP_GM { the IMS_P_CSCF_A entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the IMS_S_CSCF_A entity } } @@ -2315,8 +2238,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } } @@ -2355,8 +2277,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_B entity } } @@ -2396,8 +2317,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } } @@ -2437,8 +2357,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_B entity } } @@ -2476,8 +2395,7 @@ Package TP_GM { the IMS_P_CSCF_A entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the IMS_S_CSCF_A entity } } @@ -2520,8 +2438,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } } @@ -2559,8 +2476,7 @@ Package TP_GM { the IMS_P_CSCF_B entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the UE_A entity } } @@ -2604,8 +2520,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the IMS_P_CSCF_A entity } } @@ -2644,8 +2559,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -2684,8 +2598,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_B entity } } @@ -2724,8 +2637,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -2765,8 +2677,7 @@ Package TP_GM { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_B entity } } @@ -2804,8 +2715,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -2846,8 +2756,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } } @@ -2886,8 +2795,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -2929,8 +2837,7 @@ Package TP_GM { Route indicating value PX_UE_B_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } } diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2 index 77fdf1c..3be289a 100644 --- a/test_purposes/Gx/TP_GX.tplan2 +++ b/test_purposes/Gx/TP_GX.tplan2 @@ -44,8 +44,7 @@ Package TP_GX { indicating value INITIAL_REQUEST Subscription_Id_AVP containing Subscription_Id_Type_AVP - indicating value END_USER_IMSI - ;, + indicating value END_USER_IMSI;, IP_CAN_Type_AVP RAT_Type_AVP Called_Station_Id_AVP @@ -64,10 +63,7 @@ Package TP_GX { Allocation_Retention_Priority_AVP containing Priority_Level_AVP Pre_emption_Capablity_AVP - Pre_emption_Vulnerability_AVP - ; - ; - ; + Pre_emption_Vulnerability_AVP;;; to the EPC_PCRF_A entity } then { @@ -84,10 +80,7 @@ Package TP_GX { Allocation_Retention_Priority_AVP containing Priority_Level_AVP Pre_emption_Capablity_AVP - Pre_emption_Vulnerability_AVP - ; - ; - ; + Pre_emption_Vulnerability_AVP;;; to the EPC_PGW_A entity } } @@ -115,15 +108,13 @@ Package TP_GX { when { the EPC_PGW_A entity sends an CCR containing CC_Request_Type_AVP - indicating value TERMINATION_REQUEST - ; + indicating value TERMINATION_REQUEST; to the EPC_PCRF_A entity } then { the EPC_PCRF_A entity sends the CCA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PGW_A entity } } @@ -151,15 +142,13 @@ Package TP_GX { when { the EPC_PGW_A entity sends an CCR containing CC_Request_Type_AVP - indicating value TERMINATION_REQUEST - ; + indicating value TERMINATION_REQUEST; to the EPC_PCRF_A entity } then { the EPC_PCRF_A entity sends the CCA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PGW_A entity } } @@ -202,10 +191,7 @@ Package TP_GX { Allocation_Retention_Priority_AVP containing Priority_Level_AVP Pre_emption_Capablity_AVP - Pre_emption_Vulnerability_AVP - ; - ; - ; + Pre_emption_Vulnerability_AVP;;; to the EPC_PGW_B entity } } @@ -237,8 +223,7 @@ Package TP_GX { then { the EPC_PCRF_B entity sends the CCA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PGW_B entity } } @@ -272,8 +257,7 @@ Package TP_GX { indicating value INITIAL_REQUEST Subscription_Id_AVP containing Subscription_Id_Type_AVP - indicating value END_USER_IMSI - ;, + indicating value END_USER_IMSI;, IP_CAN_Type_AVP RAT_Type_AVP Called_Station_Id_AVP @@ -292,10 +276,7 @@ Package TP_GX { Allocation_Retention_Priority_AVP containing Priority_Level_AVP Pre_emption_Capablity_AVP - Pre_emption_Vulnerability_AVP - ; - ; - ; + Pre_emption_Vulnerability_AVP;;; to the EPC_PCRF_B entity } } @@ -326,8 +307,7 @@ Package TP_GX { then { the EPC_PGW_B entity sends an CCR containing CC_Request_Type_AVP - indicating value TERMINATION_REQUEST - ; + indicating value TERMINATION_REQUEST; to the EPC_PCRF_B entity } } @@ -358,21 +338,15 @@ Package TP_GX { Charging_Rule_Name_AVP Flows_AVP containing Media_Component_Number_AVP - indicating value 0 - , + indicating value 0, Flow_Status_AVP - indicating value ENABLED - ; - ; - ; - ; + indicating value ENABLED;;;; to the EPC_PGW_A entity } then { the EPC_PGW_A entity sends the RAA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PCRF_A entity } } @@ -404,8 +378,7 @@ Package TP_GX { then { the EPC_PGW_A entity sends the RAA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PCRF_A entity } } @@ -438,8 +411,7 @@ Package TP_GX { then { the EPC_PGW_A entity sends the RAA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PCRF_A entity } } @@ -467,15 +439,13 @@ Package TP_GX { when { the EPC_PCRF_A entity sends an RAR containing Charging_Rule_Remove_AVP containing - Charging_Rule_Name_AVP - ;; + Charging_Rule_Name_AVP;; to the EPC_PGW_A entity } then { the EPC_PGW_A entity sends the RAA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PCRF_A entity } } @@ -513,8 +483,7 @@ Package TP_GX { Flow_Description_AVP Flow_Status_AVP Flows_AVP containing - Media_Component_Number_AVP - ;, + Media_Component_Number_AVP;, QOS_Information_AVP containing QOS_Class_Identifier_AVP indicating value @@ -524,11 +493,7 @@ Package TP_GX { Max_Requested_Bandwidth_DL_AVP Guaranteed_Bitrate_UL_AVP Guaranteed_Bitrate_DL_AVP - Allocation_Retention_Priority_AVP - ; - ; - ; - ; + Allocation_Retention_Priority_AVP;;;; to the EPC_PGW_A entity } } @@ -561,9 +526,7 @@ Package TP_GX { then { the EPC_PCRF_A entity sends the RAR containing Charging_Rule_Remove_AVP containing - Charging_Rule_Name_AVP - ; - ; + Charging_Rule_Name_AVP;; to the EPC_PGW_A entity } } @@ -601,23 +564,17 @@ Package TP_GX { Flow_Description_AVP Flow_Status_AVP Flows_AVP containing - Media_Component_Number_AVP - ;, + Media_Component_Number_AVP;, QOS_Information_AVP containing QOS_Class_Identifier_AVP indicating value "QCI_1 for voice or - QCI_2 for video" - ;, + QCI_2 for video";, Max_Requested_Bandwidth_UL_AVP Max_Requested_Bandwidth_DL_AVP Guaranteed_Bitrate_UL_AVP Guaranteed_Bitrate_DL_AVP - Allocation_Retention_Priority_AVP - ; - ; - ; - ; + Allocation_Retention_Priority_AVP;;;; to the EPC_PGW_A entity } } @@ -649,9 +606,7 @@ Package TP_GX { then { the EPC_PCRF_B entity sends the RAR containing Charging_Rule_Remove_AVP containing - Charging_Rule_Name_AVP - ; - ; + Charging_Rule_Name_AVP;; to the EPC_PGW_A entity } } diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2 index c11bad3..b7aab22 100644 --- a/test_purposes/Ic/TP_IC.tplan2 +++ b/test_purposes/Ic/TP_IC.tplan2 @@ -106,13 +106,10 @@ Package TP_IC { Icid, Orig_Ioi indicating value PX_IMS_A_ICID, not Access_Network_Charging_Info, - not Term_Ioi - ; , + not Term_Ioi;, RecordRoute containing - Header indicating value PX_S_CSCF_A_SIP_URI - ; , - not PAccessNetworkInfo - ; + Header indicating value PX_S_CSCF_A_SIP_URI;, + not PAccessNetworkInfo; to the IMS_IBCF_B entity } } @@ -150,9 +147,7 @@ Package TP_IC { the IMS_IBCF_A entity forwards the initial INVITE containing PAssertedID containing PAssertedIDValue indicating value PX_UE_A_SIP_URI, - PAssertedIDValue indicating value PX_UE_A_TEL_URI - ; - ; + PAssertedIDValue indicating value PX_UE_A_TEL_URI;; to the IMS_IBCF_B entity } } @@ -188,21 +183,17 @@ Package TP_IC { ; to the IMS_S_CSCF_A entity and the IMS_S_CSCF_A entity sends a NAPTR_Query containing - Query indicating value PX_UE_B_TEL_URI - ; + Query indicating value PX_UE_B_TEL_URI; to the Enum_DB entity and the Enum_DB entity sends a NAPTR_Response containing - NAPTR_ResourceRecord indicating value PX_UE_B_SIP_URI - ; + NAPTR_ResourceRecord indicating value PX_UE_B_SIP_URI; to the IMS_S_CSCF_A entity } then { the IMS_IBCF_A entity forwards the initial INVITE containing RequestLine indicating value PX_UE_B_SIP_URI, PChargingVector containing - not Access_Network_Charging_Info - ; - ; + not Access_Network_Charging_Info;; to the IMS_IBCF_B entity } } @@ -240,26 +231,20 @@ Package TP_IC { the IMS_IBCF_A entity forwards the initial INVITE containing Route containing RouteBody not indicating value PX_P_CSCF_A_SIP_URI, - RouteBody indicating value PX_P_CSCF_Service_Route_URIs - ; , + RouteBody indicating value PX_P_CSCF_Service_Route_URIs; , Via containing ViaBody containing - HostPort indicating value PX_P_CSCF_Port_Number - ; , + HostPort indicating value PX_P_CSCF_Port_Number; , PX_P_CSCF_FQDN "or" - PX_P_CSCF_IP_Addr - ; , + PX_P_CSCF_IP_Addr; , RecordRoute containing RouteBody containing - NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests - ; , + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests; , PX_P_CSCF_FQDN_address_IMS_A "or" - PX_P_CSCF_IP_address_IMS_A - ; , + PX_P_CSCF_IP_address_IMS_A; , not PPreferredID , PAssertedID indicating value PX_UE_B_SIP_URI , - PChargingVector indicating value PX_IMS_A_ICID - ; + PChargingVector indicating value PX_IMS_A_ICID; to the IMS_IBCF_B entity } } @@ -333,9 +318,7 @@ Package TP_IC { the IMS_IBCF_A entity sends the 180_Ringing response containing P_Charging_Vector_Header containing Orig_Ioi indicating value PX_IMS_B_ICID , - Term_Ioi indicating value PX_IMS_A_ICID - ; - ; + Term_Ioi indicating value PX_IMS_A_ICID;; to the IMS_IBCF_B entity } @@ -368,8 +351,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity sends the 180_Ringing response containing - not PChargingVector - ; + not PChargingVector; to the IMS_IBCF_B entity } @@ -408,9 +390,7 @@ Package TP_IC { the IMS_IBCF_A entity sends the 180_Ringing response containing PAssertedID containing PAssertedIDValue indicating value PX_UE_A_SIP_URI , - PAssertedIDValue indicating value PX_UE_A_TEL_URI - ; - ; + PAssertedIDValue indicating value PX_UE_A_TEL_URI;; to the IMS_IBCF_B entity } } @@ -444,18 +424,13 @@ Package TP_IC { the IMS_IBCF_A entity sends the 180_Ringing response containing RecordRoute containing RouteBody containing - NameAddr indicating value PX_P_CSCF_A_SIP_URI - ; , + NameAddr indicating value PX_P_CSCF_A_SIP_URI; , RouteBody containing - NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests - ; , - not CompSipUri - ; , + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests; , + not CompSipUri; , not PPreferredID , PAssertedID containing - PAssertedIDValue indicating value PX_UE_A_SIP_URI - ; - ; + PAssertedIDValue indicating value PX_UE_A_SIP_URI;; to the IMS_IBCF_B entity } } @@ -490,18 +465,13 @@ Package TP_IC { the IMS_IBCF_B entity receives the 180_Ringing response containing RecordRoute containing RouteBody containing - NameAddr indicating value PX_P_CSCF_A_SIP_URI - ; , + NameAddr indicating value PX_P_CSCF_A_SIP_URI; , RouteBody containing - NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests - ; , - not CompSipUri - ; , + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests; , + not CompSipUri; , not PPreferredID , PAssertedID containing - PAssertedIDValue indicating value PX_UE_A_SIP_URI - ; - ; + PAssertedIDValue indicating value PX_UE_A_SIP_URI;; from the IMS_IBCF_A entity and the IMS_IBCF_B entity sends the 180_Ringing to the IMS_P_CSCF_B entity @@ -537,18 +507,13 @@ Package TP_IC { the IMS_IBCF_A entity sends the 180_Ringing response containing RecordRoute containing RouteBody containing - NameAddr indicating value PX_P_CSCF_A_SIP_URI - ; , + NameAddr indicating value PX_P_CSCF_A_SIP_URI; , RouteBody containing - NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests - ; , - not CompSipUri - ; , + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests; , + not CompSipUri; , not PPreferredID , PAssertedID containing - PAssertedIDValue indicating value PX_UE_A_SIP_URI - ; - ; + PAssertedIDValue indicating value PX_UE_A_SIP_URI;; to the IMS_IBCF_B entity } } @@ -586,9 +551,7 @@ Package TP_IC { the IMS_IBCF_A entity sends the 200_Ok response containing PChargingVector containing Orig_Ioi indicating value PX_IMS_B_ICID , - Term_Ioi indicating value PX_IMS_A_ICID - ; - ; + Term_Ioi indicating value PX_IMS_A_ICID;; to the IMS_IBCF_B entity } @@ -625,9 +588,7 @@ Package TP_IC { the IMS_IBCF_A entity sends the 200_Ok response containing PAssertedID containing PAssertedIDValue indicating value PX_UE_A_SIP_URI , - PAssertedIDValue indicating value PX_UE_A_TEL_URI - ; - ; + PAssertedIDValue indicating value PX_UE_A_TEL_URI;; to the IMS_IBCF_B entity } } @@ -659,8 +620,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity sends the 200_Ok response containing - not PChargingFunctionAddresses - ; + not PChargingFunctionAddresses; to the IMS_IBCF_B entity } @@ -696,9 +656,7 @@ Package TP_IC { then { the IMS_IBCF_A entity sends the 200_Ok response containing PChargingVector containing - not AccessNetworkChargingInfo - ; - ; + not AccessNetworkChargingInfo;; to the IMS_IBCF_B entity } } @@ -733,18 +691,13 @@ Package TP_IC { the IMS_IBCF_B entity receives a 200_Ok response containing RecordRoute containing RouteBody containing - NameAddr indicating value PX_P_CSCF_A_SIP_URI - ; , + NameAddr indicating value PX_P_CSCF_A_SIP_URI; , RouteBody containing - NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests - ; , - not CompSipUri - ; , + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests; , + not CompSipUri; , not PPreferredID , PAssertedID containing - PAssertedIDValue indicating value PX_UE_B_SIP_URI - ; - ; + PAssertedIDValue indicating value PX_UE_B_SIP_URI;; from the IMS_IBCF_A entity and the IMS_IBCF_B entity sends the 200_Ok response to the IMS_P_CSCF_B entity @@ -780,18 +733,13 @@ Package TP_IC { the IMS_IBCF_A entity sends the 200_Ok response containing RecordRoute containing RouteBody containing - NameAddr indicating value PX_P_CSCF_A_SIP_URI - ; , + NameAddr indicating value PX_P_CSCF_A_SIP_URI; , RouteBody containing - NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests - ; , - not CompSipUri - ; , + NameAddr indicating value PX_P_CSCF_Port_Number_Subsequent_Requests; , + not CompSipUri; , not PPreferredID , PAssertedID containing - PAssertedIDValue indicating value PX_UE_B_SIP_URI - ; - ; + PAssertedIDValue indicating value PX_UE_B_SIP_URI;; to the IMS_IBCF_A entity and the IMS_IBCF_B entity sends the 200_Ok response to the IMS_P_CSCF_B entity // MORE TO COME!!!! @@ -828,9 +776,7 @@ Package TP_IC { RecordRoute indicating value PX_S_CSCF_A_SIP_URI , Route not indicating value PX_S_CSCF_A_SIP_URI PChargingVector containing - not AccessNetworkChargingInfo - ; - ; + not AccessNetworkChargingInfo;; to the IMS_IBCF_B entity } } @@ -867,8 +813,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity forwards the BYE containing - Route not indicating value PX_S_CSCF_A_SIP_URI - ; + Route not indicating value PX_S_CSCF_A_SIP_URI ; to the IMS_IBCF_B entity } } @@ -975,8 +920,7 @@ Package TP_IC { } then { the IMS_IBCF_A entity forwards the ACK containing - Route not indicating value PX_S_CSCF_A_SIP_URI - ; + Route not indicating value PX_S_CSCF_A_SIP_URI; to the IMS_IBCF_B entity } } @@ -1076,12 +1020,10 @@ Package TP_IC { } then { the IMS_IBCF_A entity sends a CANCEL containing - Route not indicating value PX_S_CSCF_A_SIP_URI - ; + Route not indicating value PX_S_CSCF_A_SIP_URI; to the IMS_IBCF_B entity and the IMS_IBCF_B entity forwards the CANCEL to the IMS_P_CSCF_B entity - } } @@ -1109,8 +1051,7 @@ Package TP_IC { ensure that { when { the IMS_IBCF_B entity receives the CANCEL containing - Route not indicating value PX_S_CSCF_A_SIP_URI - ; + Route not indicating value PX_S_CSCF_A_SIP_URI; from the IMS_A entity } then { @@ -1145,8 +1086,7 @@ Package TP_IC { } then { the IMS_IBCF_B entity sends a CANCEL containing - Route not indicating value PX_S_CSCF_B_SIP_URI - ; + Route not indicating value PX_S_CSCF_B_SIP_URI; to the IMS_IBCF_A entity } } @@ -1310,7 +1250,6 @@ Package TP_IC { the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and the UE_A entity isRequestedToSend a CANCEL and the UE_A entity hasReceived200OkCancel from the UE_B entity - } Expected behaviour @@ -1347,7 +1286,6 @@ Package TP_IC { the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and the UE_A entity isRequestedToSend a CANCEL and the UE_A entity hasReceived200OkCancel from the UE_B entity - } Expected behaviour @@ -1381,8 +1319,7 @@ Package TP_IC { the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and the UE_A entity isRequestedToSend a CANCEL and the UE_A entity hasReceived200OkCancel from the UE_B entity and - the UE_A entity hasReceivedTerminatedRequest from the UE_B entity - + the UE_A entity hasReceivedTerminatedRequest from the UE_B entity } Expected behaviour @@ -1419,7 +1356,6 @@ Package TP_IC { the UE_A entity isRequestedToSend a CANCEL and the UE_A entity hasReceived200OkCancel from the UE_B entity and the UE_A entity hasReceivedTerminatedRequest from the UE_B entity - } Expected behaviour @@ -1455,9 +1391,7 @@ Package TP_IC { UE_B isAttachedTo the EPC_B and UE_A isRegisteredTo the IMS_A and UE_B isRegisteredTo the IMS_B and - UE_B isBusy - - + UE_B isBusy } Expected behaviour @@ -1493,8 +1427,6 @@ Package TP_IC { UE_A isRegisteredTo the IMS_A and UE_B isRegisteredTo the IMS_B and UE_B isBusy - - } Expected behaviour @@ -1530,8 +1462,6 @@ Package TP_IC { UE_A isRegisteredTo the IMS_B and UE_B isRegisteredTo the IMS_B and UE_B isBusy - - } Expected behaviour @@ -1566,8 +1496,6 @@ Package TP_IC { UE_A isRegisteredTo the IMS_A and UE_B isRegisteredTo the IMS_A and UE_B isBusy - - } Expected behaviour @@ -1604,8 +1532,6 @@ Package TP_IC { UE_B isRegisteredTo the IMS_B and UE_B isBusy and UE_B hasResponded486INVITE - - } Expected behaviour @@ -1642,8 +1568,6 @@ Package TP_IC { UE_B isRegisteredTo the IMS_B and UE_B isBusy and UE_B hasResponded486INVITE - - } Expected behaviour @@ -1689,14 +1613,10 @@ Package TP_IC { the IMS_IBCF_B entity sends the REGISTER containing Via containing ViaBody containing - HostPort indicating value PX_IBCF_B_SIP_URI - ; - ; , + HostPort indicating value PX_IBCF_B_SIP_URI;; , Route indicating value PX_IBCF_B_SIP_URI, Path containing - PathValue indicating value PX_IBCF_B_SIP_URI - ; - ; + PathValue indicating value PX_IBCF_B_SIP_URI;; to the IMS_IBCF_A entity and the IMS_IBCF_B entity receives the 401_Unauthorized from the IMS_A entity and @@ -1736,14 +1656,10 @@ Package TP_IC { the IMS_IBCF_B entity sends the REGISTER containing Via containing ViaBody containing - HostPort indicating value PX_IBCF_B_SIP_URI - ; - ; , + HostPort indicating value PX_IBCF_B_SIP_URI;; , Route indicating value PX_IBCF_B_SIP_URI, Path containing - PathValue indicating value PX_IBCF_B_SIP_URI - ; - ; + PathValue indicating value PX_IBCF_B_SIP_URI;; to the IMS_IBCF_A entity and the IMS_IBCF_B entity receives the 200_OK from the IMS_A entity and @@ -1897,8 +1813,7 @@ Package TP_IC { } then { the IMS_IBCF_B entity sends the SUBSCRIBE containing - Route indicating value PX_IBCF_B_SIP_URI - ; + Route indicating value PX_IBCF_B_SIP_URI; to the IMS_IBCF_A entity and the IMS_IBCF_B entity receives the 200_OK from the IMS_A entity and @@ -1929,8 +1844,7 @@ Package TP_IC { ensure that { when { the IMS_IBCF_B entity receives a NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; from the IMS_A entity } then { @@ -1944,18 +1858,6 @@ Package TP_IC { } } } // End of TP_IC_IBCF_NOTIFY_01 - - - - - - - - - - - - } // End of Package TP_IC diff --git a/test_purposes/Isc/TP_ISC.tplan2 b/test_purposes/Isc/TP_ISC.tplan2 index dc46bb2..3ab972a 100644 --- a/test_purposes/Isc/TP_ISC.tplan2 +++ b/test_purposes/Isc/TP_ISC.tplan2 @@ -53,15 +53,13 @@ Package TP_ISC { PChargingVector, PChargingFunctionAddresses, PAccessNetworkInfo - PVisitedNetworkId - ; + PVisitedNetworkId; to the IMS_AS_A entity and the IMS_AS_A entity sends an 200_Ok containing From indicating value PX_AS_A_SIP_URI, To indicating value PX_SCSCF_SIP_URI, CallId, - Via - ; + Via; to the IMS_S_CSCF_A entity } } diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2 index 14c159c..a40ee2f 100644 --- a/test_purposes/Mw/TP_MW_IS.tplan2 +++ b/test_purposes/Mw/TP_MW_IS.tplan2 @@ -40,8 +40,7 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a MESSAGE - containing ContentLength indicating value greater than 1300 bytes - ; + containing ContentLength indicating value greater than 1300 bytes; from the IMS_P_CSCF_A entity } then { @@ -77,8 +76,7 @@ Package TP_MW_IS { From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; from the IMS_P_CSCF_A entity } then { @@ -95,8 +93,7 @@ Package TP_MW_IS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; to the IMS_S_CSCF_A entity } } @@ -137,8 +134,7 @@ Package TP_MW_IS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; from the IMS_P_CSCF_A entity } then { @@ -156,8 +152,7 @@ Package TP_MW_IS { term_ioi_parameter indicating value "Operator Identifier Of ImsB" Path, - ServiceRoute - ; + ServiceRoute; to the IMS_S_CSCF_A entity } } @@ -196,16 +191,14 @@ Package TP_MW_IS { Username indicating value PX_UE_A_INVALID_USERNAME, Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "" - ;; + Nonce indicating value "";; from the IMS_P_CSCF_A entity } then { the IMS_I_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID - ; + CallId indicating value PX_UE_A_CALLID; to the IMS_P_CSCF_A entity } } @@ -240,8 +233,7 @@ Package TP_MW_IS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - PVisitedNetworkID - ; + PVisitedNetworkID; from the IMS_IBCF_A entity } then { @@ -255,8 +247,7 @@ Package TP_MW_IS { icid indicating value PX_TO_BE_DEFINED, PVisitedNetworkID indicating value PX_TO_BE_DEFINED, Require_HDR indicating value "path", - Supported indicating value "path" - ;; + Supported indicating value "path";; to the IMS_S_CSCF_A entity and the IMS_I_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, @@ -272,8 +263,7 @@ Package TP_MW_IS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; to the IMS_IBCF_A entity } } @@ -314,8 +304,7 @@ Package TP_MW_IS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; from the IMS_IBCF_A entity } then { @@ -332,8 +321,7 @@ Package TP_MW_IS { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth", - PChargingVector - ;; + PChargingVector;; to the IMS_S_CSCF_A entity and the IMS_I_CSCF_A entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, @@ -349,8 +337,7 @@ Package TP_MW_IS { term_ioi_parameter indicating value "Operator Identifier Of ImsB" Path, - ServiceRoute - ; + ServiceRoute; to the IMS_IBCF_A entity } } @@ -389,16 +376,14 @@ Package TP_MW_IS { Username indicating value PX_UE_A_INVALID_USERNAME, Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "" - ;; + Nonce indicating value "";; to the IMS_IBCF_A entity } then { the IMS_I_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID - ; + CallId indicating value PX_UE_A_CALLID; to the IMS_IBCF_A entity } } @@ -426,14 +411,12 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the IMS_P_CSCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_S_CSCF_A entity } } @@ -461,14 +444,12 @@ Package TP_MW_IS { ensure that { when { the IMS_S_CSCF_B entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the IMS_P_CSCF_B entity } then { the IMS_S_CSCF_B entity forwards a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_I_CSCF_B entity } } @@ -498,8 +479,7 @@ Package TP_MW_IS { } then { the IMS_I_CSCF_B entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_S_CSCF_B entity } } @@ -532,14 +512,12 @@ Package TP_MW_IS { ensure that { when { the IMS_I_CSCF_A entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the IMS_P_CSCF_A entity } then { the IMS_I_CSCF_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_S_CSCF_A entity } } diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index f4d5d62..659229a 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -44,8 +44,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - ContentLength indicating value greater than 1300 bytes - ; + ContentLength indicating value greater than 1300 bytes; from the UE_A entity } then { @@ -58,8 +57,7 @@ Package TP_MW_PS { icid_value, orig_value, not PAccessNetworkInfo, - ContentLength indicating value greater than 1300 bytes - ;; + ContentLength indicating value greater than 1300 bytes;; to the IMS_S_CSCF_A entity } } @@ -91,8 +89,7 @@ Package TP_MW_PS { From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; from the UE_A entity } then { @@ -106,8 +103,7 @@ Package TP_MW_PS { icid indicating value PX_TO_BE_DEFINED, PVisitedNetworkID indicating value PX_TO_BE_DEFINED, Require indicating value "path", - Supported indicating value "path" - ;; + Supported indicating value "path";; to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, @@ -122,8 +118,7 @@ Package TP_MW_PS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; to the UE_A entity } } @@ -164,8 +159,7 @@ Package TP_MW_PS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; from the UE_A entity } then { @@ -182,8 +176,7 @@ Package TP_MW_PS { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth", - PChargingVector - ;; + PChargingVector;; to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, @@ -199,8 +192,7 @@ Package TP_MW_PS { term_ioi_parameter indicating value "Operator Identifier Of ImsB" Path, - ServiceRoute - ; + ServiceRoute; to the UE_A entity } } @@ -239,8 +231,7 @@ Package TP_MW_PS { Username indicating value PX_UE_A_INVALID_USERNAME, Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "" - ;; + Nonce indicating value "";; from the UE_A entity } then { @@ -257,14 +248,12 @@ Package TP_MW_PS { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth", - PChargingVector - ;; + PChargingVector;; to the IMS_I_CSCF_A entity and the IMS_I_CSCF_A entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID - ; + CallId indicating value PX_UE_A_CALLID; to the IMS_P_CSCF_A entity } } @@ -298,8 +287,7 @@ Package TP_MW_PS { From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; from the UE_A entity } then { @@ -313,8 +301,7 @@ Package TP_MW_PS { icid indicating value PX_TO_BE_DEFINED, PVisitedNetworkID indicating value PX_TO_BE_DEFINED, Require indicating value "path", - Supported indicating value "path" - ;; + Supported indicating value "path";; to the IMS_S_CSCF_B entity and the IMS_P_CSCF_B entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, @@ -329,8 +316,7 @@ Package TP_MW_PS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; to the UE_A entity } } @@ -373,8 +359,7 @@ Package TP_MW_PS { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; from the UE_A entity } then { @@ -392,8 +377,7 @@ Package TP_MW_PS { Nonce indicating value "not empty", qop indicating value "auth", PChargingVector, - PVisitedNetwork - ;; + PVisitedNetwork;; to the IMS_I_CSCF_B entity and the IMS_P_CSCF_B entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, @@ -410,8 +394,7 @@ Package TP_MW_PS { indicating value "Operator Identifier Of ImsB" Path, ServiceRoute, - PVisitedNetwork - ; + PVisitedNetwork; to the UE_A entity } } @@ -451,8 +434,7 @@ Package TP_MW_PS { Username indicating value PX_UE_A_INVALID_USERNAME, Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, - Nonce indicating value "" - ;; + Nonce indicating value "";; to the UE_A entity } then { @@ -470,14 +452,12 @@ Package TP_MW_PS { Nonce indicating value "not empty", qop indicating value "auth", PChargingVector, - PVisitedNetwork - ;; + PVisitedNetwork;; to the IMS_S_CSCF_B entity and the IMS_P_CSCF_B entity sends an 404_NotFound containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_A_CALLID - ; + CallId indicating value PX_UE_A_CALLID; to the UE_A entity } } @@ -505,14 +485,12 @@ Package TP_MW_PS { ensure that { when { the IMS_P_CSCF_A entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the UE_A entity } then { the IMS_P_CSCF_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_I_CSCF_A entity } } @@ -540,14 +518,12 @@ Package TP_MW_PS { ensure that { when { the IMS_P_CSCF_B entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the UE_A entity } then { the IMS_P_CSCF_B entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_S_CSCF_B entity } } @@ -578,8 +554,7 @@ Package TP_MW_PS { } then { the IMS_P_CSCF_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_I_CSCF_A entity } } @@ -610,14 +585,12 @@ Package TP_MW_PS { ensure that { when { the IMS_P_CSCF_A entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the UE_A entity } then { the IMS_P_CSCF_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity sends a BYE to the UE_A entity @@ -654,8 +627,7 @@ Package TP_MW_PS { the IMS_P_CSCF_A entity receives a 200_Ok from the IMS_S_CSCF_A entity and the IMS_P_CSCF_A entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_I_CSCF_A entity and the IMS_P_CSCF_A entity receives a 200_Ok from the IMS_I_CSCF_A entity @@ -691,8 +663,7 @@ Package TP_MW_PS { From indicating value PX_IMS_P_CSCF_B_SIP_URI, To indicating value PX_I_CSCF_A_SIP_URI, Event indicating value "reg,de-reg", - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_S_CSCF_B entity } } @@ -723,8 +694,7 @@ Package TP_MW_PS { } then { the IMS_P_CSCF_B entity sends a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_S_CSCF_B entity and the IMS_P_CSCF_B entity receives a 200_Ok from the IMS_S_CSCF_B entity @@ -760,8 +730,7 @@ Package TP_MW_PS { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, Event, - Expires - ; + Expires; from the UE_A entity } then { @@ -772,15 +741,13 @@ Package TP_MW_PS { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, Event, - Expires - ; + Expires; to the IMS_S_CSCF_A entity and the IMS_P_CSCF_A entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; from the IMS_S_CSCF_A entity } } @@ -816,8 +783,7 @@ Package TP_MW_PS { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, Event, - Expires - ; + Expires; from the UE_A entity } then { @@ -828,15 +794,13 @@ Package TP_MW_PS { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, Event, - Expires - ; + Expires; to the IMS_S_CSCF_B entity and the IMS_P_CSCF_B entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; to the IMS_S_CSCF_B entity } } @@ -866,14 +830,12 @@ Package TP_MW_PS { the IMS_P_CSCF_A entity receives a NOTIFY containing From indicating value PX_S_CSCF_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; from the IMS_S_CSCF_A entity } then { the IMS_P_CSCF_A entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; to the UE_A entity } } @@ -903,8 +865,7 @@ Package TP_MW_PS { the IMS_P_CSCF_A entity receives a NOTIFY containing From indicating value PX_S_CSCF_A_SIP_URI, To indicating value PX_P_CSCF_A_SIP_URI, - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; from the IMS_S_CSCF_A entity } then { @@ -938,14 +899,12 @@ Package TP_MW_PS { the IMS_P_CSCF_B entity receives a NOTIFY containing From indicating value PX_S_CSCF_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; from the IMS_S_CSCF_B entity } then { the IMS_P_CSCF_A entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; to the UE_A entity and the IMS_P_CSCF_A entity receives a 200_Ok from the UE_A entity @@ -1021,9 +980,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_A entity } then { @@ -1038,9 +995,7 @@ Package TP_MW_PS { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_S_CSCF_A entity } } @@ -1079,9 +1034,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_S_CSCF_B entity } then { @@ -1096,9 +1049,7 @@ Package TP_MW_PS { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the UE_B entity } } @@ -1137,9 +1088,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_A entity } then { @@ -1154,9 +1103,7 @@ Package TP_MW_PS { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_S_CSCF_B entity } } @@ -1195,9 +1142,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_S_CSCF_A entity } then { @@ -1212,9 +1157,7 @@ Package TP_MW_PS { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the UE_B entity } } @@ -1533,8 +1476,7 @@ Package TP_MW_PS { the IMS_P_CSCF_A entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the UE_A entity } } @@ -1567,16 +1509,14 @@ Package TP_MW_PS { the IMS_P_CSCF_B entity receives a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; from the UE_B entity } then { the IMS_P_CSCF_B entity sends a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; to the IMS_S_CSCF_B entity } } @@ -1611,16 +1551,14 @@ Package TP_MW_PS { the IMS_P_CSCF_B entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the IMS_S_CSCF_B entity } then { the IMS_P_CSCF_B entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the UE_A entity } } @@ -1655,16 +1593,14 @@ Package TP_MW_PS { the IMS_P_CSCF_A entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the UE_B entity } then { the IMS_P_CSCF_A entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the IMS_S_CSCF_A entity } } @@ -1699,8 +1635,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } then { @@ -1709,8 +1644,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } } @@ -1745,8 +1679,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -1755,8 +1688,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_B entity } } @@ -1791,8 +1723,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } then { @@ -1801,8 +1732,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } } @@ -1837,8 +1767,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -1847,8 +1776,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_B entity } } @@ -1888,9 +1816,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_A entity } then { @@ -1903,9 +1829,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_S_CSCF_A entity } } @@ -1944,9 +1868,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_S_CSCF_B entity } then { @@ -1959,9 +1881,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the UE_B entity } } @@ -2000,9 +1920,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_A entity } then { @@ -2015,9 +1933,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_S_CSCF_B entity } } @@ -2058,9 +1974,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_S_CSCF_A entity } then { @@ -2073,9 +1987,7 @@ Package TP_MW_PS { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the UE_B entity } } @@ -2110,8 +2022,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } then { @@ -2120,8 +2031,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_S_CSCF_A entity } } @@ -2157,8 +2067,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -2167,8 +2076,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_S_CSCF_B entity } } @@ -2207,8 +2115,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_A entity } } @@ -2244,8 +2151,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } then { @@ -2254,8 +2160,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_S_CSCF_B entity } } @@ -2293,8 +2198,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the UE_B entity } then { @@ -2303,8 +2207,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_S_CSCF_A entity } } @@ -2413,8 +2316,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -2423,8 +2325,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -2459,8 +2360,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -2469,8 +2369,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_B entity } } @@ -2538,8 +2437,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -2548,8 +2446,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -2584,8 +2481,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -2594,8 +2490,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_B entity } } @@ -2630,8 +2525,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } then { @@ -2640,8 +2534,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_S_CSCF_A entity } } @@ -2678,8 +2571,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } then { @@ -2688,8 +2580,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_S_CSCF_A entity } } @@ -2726,8 +2617,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -2736,8 +2626,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the UE_B entity } } @@ -2776,8 +2665,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_A entity } then { @@ -2786,8 +2674,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_S_CSCF_B entity } } @@ -2826,8 +2713,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -2836,8 +2722,7 @@ Package TP_MW_PS { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the UE_B entity } } @@ -2873,8 +2758,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -2883,8 +2767,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -2920,8 +2803,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the UE_B entity } then { @@ -2930,8 +2812,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_S_CSCF_B entity } } @@ -2968,8 +2849,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -2978,8 +2858,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -3016,8 +2895,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the UE_A entity } then { @@ -3026,8 +2904,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_S_CSCF_A entity } } @@ -3063,8 +2940,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -3073,8 +2949,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -3110,8 +2985,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the UE_B entity } then { @@ -3120,8 +2994,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_S_CSCF_B entity } } @@ -3158,8 +3031,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_S_CSCF_B entity } then { @@ -3168,8 +3040,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the UE_A entity } } @@ -3206,8 +3077,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the UE_B entity } then { @@ -3216,8 +3086,7 @@ Package TP_MW_PS { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_S_CSCF_A entity } } diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index 97e03e5..1d2e6c2 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -40,14 +40,12 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives a MESSAGE containing - ContentLength indicating value greater than 1300 bytes - ; + ContentLength indicating value greater than 1300 bytes; from the IMS_I_CSCF_A entity } then { the IMS_S_CSCF_A entity forwards the MESSAGE containing - ContentLength indicating value greater than 1300 bytes - ; + ContentLength indicating value greater than 1300 bytes; to the IMS_IBCF_A entity } } @@ -79,8 +77,7 @@ Package TP_MW_SI { From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; from the IMS_I_CSCF_A entity } then { @@ -97,8 +94,7 @@ Package TP_MW_SI { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; to the IMS_I_CSCF_A entity } } @@ -139,8 +135,7 @@ Package TP_MW_SI { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; from the IMS_I_CSCF_A entity } then { @@ -158,8 +153,7 @@ Package TP_MW_SI { term_ioi_parameter indicating value "Operator Identifier Of ImsB" Path, - ServiceRoute - ; + ServiceRoute; to the IMS_I_CSCF_A entity } } @@ -194,8 +188,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - PVisitedNetworkID - ; + PVisitedNetworkID; from the IMS_I_CSCF_B entity } then { @@ -209,8 +202,7 @@ Package TP_MW_SI { icid indicating value PX_TO_BE_DEFINED, PVisitedNetworkID indicating value PX_TO_BE_DEFINED, Require indicating value "path", - Supported indicating value "path" - ;; + Supported indicating value "path";; to the IMS_IBCF_B entity and the IMS_S_CSCF_B entity sends an 401_Unauthorized containing From indicating value PX_UE_A_SIP_URI, @@ -226,8 +218,7 @@ Package TP_MW_SI { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", - qop indicating value "auth" - ;; + qop indicating value "auth";; to the IMS_I_CSCF_B entity } } @@ -269,8 +260,7 @@ Package TP_MW_SI { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth", - PVisitedNetworkID - ;; + PVisitedNetworkID;; from the IMS_I_CSCF_B entity } then { @@ -288,8 +278,7 @@ Package TP_MW_SI { Nonce indicating value "not empty", qop indicating value "auth", PVisitedNetworkID, - PChargingVector - ;; + PChargingVector;; to the IMS_IBCF_B entity and the IMS_S_CSCF_B entity sends an 200_Ok containing From indicating value PX_UE_A_SIP_URI, @@ -306,8 +295,7 @@ Package TP_MW_SI { term_ioi_parameter indicating value "Operator Identifier Of ImsB" Path, - ServiceRoute - ; + ServiceRoute; to the IMS_I_CSCF_B entity } } @@ -337,8 +325,7 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the IMS_I_CSCF_A entity } then { @@ -376,12 +363,10 @@ Package TP_MW_SI { } then { the IMS_IBCF_A entity forwards a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_I_CSCF_A entity and the IMS_I_CSCF_A entity forwards a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; to the IMS_S_CSCF_A entity } } @@ -412,8 +397,7 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity receives a REGISTER containing - Expire indicating value 0 - ; + Expire indicating value 0; from the IMS_I_CSCF_A entity } then { @@ -456,8 +440,7 @@ Package TP_MW_SI { From indicating value PX_IMS_P_CSCF_B_SIP_URI, To indicating value PX_I_CSCF_A_SIP_URI, Event indicating value "reg,de-reg", - Expire indicating value 0 - ; + Expire indicating value 0; from the IMS_P_CSCF_B entity } then { @@ -495,8 +478,7 @@ Package TP_MW_SI { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, Event, - Expires - ; + Expires; from the IMS_P_CSCF_A entity } then { @@ -504,8 +486,7 @@ Package TP_MW_SI { From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; to the IMS_P_CSCF_A entity } } @@ -539,8 +520,7 @@ Package TP_MW_SI { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, Event, - Expires - ; + Expires; to the IMS_IBCF_A entity } then { @@ -548,8 +528,7 @@ Package TP_MW_SI { From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA - ; + Via indicating value PX_UE_A_VIA; to the IMS_IBCF_A entity } } @@ -580,14 +559,12 @@ Package TP_MW_SI { } then { the IMS_S_CSCF_A entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity receives an 200_Ok from the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an NOTIFY containing - Event indicating value "de-reg" - ; + Event indicating value "de-reg"; to the IMS_P_CSCF_A entity } } @@ -615,13 +592,11 @@ Package TP_MW_SI { ensure that { when { the IMS_S_CSCF_A entity isRequestedToSend a NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; } then { the IMS_S_CSCF_A entity sends an NOTIFY containing - Event indicating value "de-reg" - ; + Event indicating value "de-reg"; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity receives an 200_Ok from the IMS_P_CSCF_A entity @@ -653,14 +628,12 @@ Package TP_MW_SI { the IMS_S_CSCF_B entity receives a NOTIFY containing From indicating value PX_S_CSCF_A_SIP_URI, To indicating value PX_UE_A_SIP_URI, - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; to the IMS_P_CSCF_B entity and the IMS_S_CSCF_B entity receives a 200_Ok from the IMS_P_CSCF_B entity @@ -692,14 +665,12 @@ Package TP_MW_SI { the IMS_S_CSCF_B entity receives a NOTIFY containing From indicating value PX_A_CSCF_A_SIP_URI, To indicating value PX_P_CSCF_B_SIP_URI, - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends an NOTIFY containing - Event indicating value "reg,de-reg" - ; + Event indicating value "reg,de-reg"; to the IMS_P_CSCF_B entity and the IMS_S_CSCF_B entity receives a 200_Ok from the IMS_P_CSCF_B entity @@ -739,9 +710,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_P_CSCF_A entity } then { @@ -756,9 +725,7 @@ Package TP_MW_SI { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_IBCF_A entity } } @@ -797,9 +764,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_IBCF_B entity } then { @@ -814,9 +779,7 @@ Package TP_MW_SI { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_P_CSCF_B entity } } @@ -856,9 +819,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_P_CSCF_B entity } then { @@ -873,9 +834,7 @@ Package TP_MW_SI { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_IBCF_B entity } } @@ -915,9 +874,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_IBCF_A entity } then { @@ -932,9 +889,7 @@ Package TP_MW_SI { ContentLength, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_P_CSCF_A entity } } @@ -1113,8 +1068,7 @@ Package TP_MW_SI { the IMS_S_CSCF_A entity sends a 180_Ringing containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the IMS_P_CSCF_A entity } } @@ -1151,8 +1105,7 @@ Package TP_MW_SI { the IMS_S_CSCF_B entity sends a 180_Ringing containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the IMS_IBCF_B entity } } @@ -1261,8 +1214,7 @@ Package TP_MW_SI { the IMS_S_CSCF_A entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the IMS_P_CSCF_A entity } } @@ -1303,8 +1255,7 @@ Package TP_MW_SI { the IMS_S_CSCF_B entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the IMS_IBCF_B entity } } @@ -1339,16 +1290,14 @@ Package TP_MW_SI { the IMS_S_CSCF_B entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the IMS_IBCF_B entity } then { the IMS_S_CSCF_B entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the IMS_P_CSCF_B entity } } @@ -1383,16 +1332,14 @@ Package TP_MW_SI { the IMS_S_CSCF_A entity receives a 200_Ok containing not PChargingVector, not PChargingFunctionAddresses, - not PPreferredIdentity - ; + not PPreferredIdentity; from the IMS_P_CSCF_A entity } then { the IMS_S_CSCF_A entity sends a 200_Ok containing PChargingVector, PChargingFunctionAddresses, - PPreferredIdentity - ; + PPreferredIdentity; to the IMS_IBCF_A entity } } @@ -1427,8 +1374,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_S_CSCF_A entity } then { @@ -1437,8 +1383,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_A entity } } @@ -1473,8 +1418,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_A entity } then { @@ -1483,8 +1427,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_A entity } } @@ -1521,8 +1464,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } then { @@ -1531,8 +1473,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_B entity } } @@ -1569,8 +1510,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_A entity } then { @@ -1579,8 +1519,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_A entity } } @@ -1620,9 +1559,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_S_CSCF_A entity } then { @@ -1635,9 +1572,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_IBCF_A entity } } @@ -1678,9 +1613,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_IBCF_B entity } then { @@ -1693,9 +1626,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_P_CSCF_B entity } } @@ -1736,9 +1667,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_P_CSCF_B entity } then { @@ -1751,9 +1680,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_IBCF_B entity } } @@ -1794,9 +1721,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; to the IMS_IBCF_A entity } then { @@ -1809,9 +1734,7 @@ Package TP_MW_SI { PAccessNetworkInfo, MessageBody containing SDP containing - Version indicating value "0" - ; - ;; + Version indicating value "0";;; from the IMS_P_CSCF_A entity } } @@ -1846,8 +1769,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_A entity } then { @@ -1856,8 +1778,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_IBCF_A entity } } @@ -1893,8 +1814,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } then { @@ -1903,8 +1823,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_IBCF_B entity } } @@ -1943,16 +1862,14 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an BYE containing From indicating value PX_S_CSCF_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_IBCF_A entity } } @@ -1988,8 +1905,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } then { @@ -1998,8 +1914,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_I_CSCF_B entity } } @@ -2035,8 +1950,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_P_CSCF_A entity } then { @@ -2045,8 +1959,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_I_CSCF_A entity } } @@ -2087,16 +2000,14 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_A entity and the IMS_S_CSCF_A entity sends an BYE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_I_CSCF_A entity } } @@ -2132,21 +2043,19 @@ Package TP_MW_SI { the UE_B entity isNoLongerAvailable } then { - the IMS_S_CSCF_A entity sends an BYE containing + the IMS_S_CSCF_A entity sends a BYE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_A entity - and the IMS_S_CSCF_A entity sends an BYE containing + and the IMS_S_CSCF_A entity sends a BYE containing From indicating value PX_UE_A_SIP_URI, To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_I_CSCF_A entity } } @@ -2181,8 +2090,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_IBCF_A entity } then { @@ -2191,8 +2099,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_A entity } } @@ -2227,8 +2134,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_B entity } then { @@ -2237,8 +2143,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_B entity } } @@ -2275,8 +2180,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_IBCF_B entity } then { @@ -2285,8 +2189,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_B entity } } @@ -2321,8 +2224,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_A entity } then { @@ -2331,8 +2233,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_A entity } } @@ -2371,8 +2272,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_A entity } then { @@ -2381,8 +2281,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_IBCF_A entity } } @@ -2419,8 +2318,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_B entity } then { @@ -2429,8 +2327,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_B entity } } @@ -2469,8 +2366,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } then { @@ -2479,8 +2375,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_IBCF_B entity } } @@ -2519,8 +2414,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; from the IMS_IBCF_A entity } then { @@ -2529,8 +2423,7 @@ Package TP_MW_SI { To indicating value PX_UE_B_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE - ; + Route indicating value PX_UE_A_SERVICE_ROUTE; to the IMS_P_CSCF_A entity } } @@ -2566,8 +2459,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_IBCF_A entity } then { @@ -2576,8 +2468,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_A entity } } @@ -2613,8 +2504,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } then { @@ -2623,8 +2513,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_IBCF_B entity } } @@ -2661,8 +2550,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_IBCF_B entity } then { @@ -2671,8 +2559,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_B entity } } @@ -2709,8 +2596,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_P_CSCF_A entity } then { @@ -2719,8 +2605,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_IBCF_A entity } } @@ -2756,8 +2641,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_IBCF_A entity } then { @@ -2766,8 +2650,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_A entity } } @@ -2803,8 +2686,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_P_CSCF_B entity } then { @@ -2813,8 +2695,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_IBCF_B entity } } @@ -2851,8 +2732,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_IBCF_B entity } then { @@ -2861,8 +2741,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_P_CSCF_B entity } } @@ -2899,8 +2778,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; from the IMS_P_CSCF_A entity } then { @@ -2909,8 +2787,7 @@ Package TP_MW_SI { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_B_CALLID, Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE - ; + Route indicating value PX_UE_B_SERVICE_ROUTE; to the IMS_IBCF_A entity } } diff --git a/test_purposes/Rtp/TP_Rtp.tplan2 b/test_purposes/Rtp/TP_Rtp.tplan2 index c2ebc9b..ef9a2fc 100644 --- a/test_purposes/Rtp/TP_Rtp.tplan2 +++ b/test_purposes/Rtp/TP_Rtp.tplan2 @@ -250,8 +250,7 @@ Package TP_RTP { DNS_information P_CSCF_information "indicating value P-CSCF-IP_address or - indicating value P-CSCF-FQDN_address" - ; + indicating value P-CSCF-FQDN_address"; to the EPC_PGW_A entity } } diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index 3ef6692..da45319 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -57,13 +57,9 @@ Package TP_RX { Flow_Status_AVP indicating value ENABLED, AF_Signalling_Protocol_AVP - indicating value SIP - ; - ; - ;, + indicating value SIP;;;, IP_CAN_AVP - RAT_Type_AVP - ; + RAT_Type_AVP; to the IMS_P_CSCF_A entity } } @@ -97,9 +93,7 @@ Package TP_RX { Result_Code_AVP indicating value DIAMETER_SUCCESS "(2001)" Acceptable_Service_Info_AVP containing - "one or more" Media_Component_Description_AVP - ; - ; + "one or more" Media_Component_Description_AVP;; to the IMS_P_CSCF_A entity } } @@ -176,10 +170,7 @@ Package TP_RX { Flow_Status_AVP indicating value ENABLED, AF_Signalling_Protocol_AVP - indicating value SIP - ; - ; - ; + indicating value SIP;;; to the EPC_PCRF_A entity } } @@ -254,10 +245,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -304,10 +292,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -354,10 +339,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -402,10 +384,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -452,10 +431,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -502,10 +478,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -552,10 +525,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -602,10 +572,7 @@ Package TP_RX { Codec_Data_AVP "one or more" Media_Subcomponent_Description_AVP containing Flow_Number_AVP - Flow_Description_AVP - ; - ; - ; + Flow_Description_AVP;;; to the EPC_PCRF_A entity } } @@ -633,15 +600,13 @@ Package TP_RX { when { the IMS_P_CSCF_A entity sends a ASR containing Abort_Cause_AVP - indicating value BEARER_RELEASED '(0)' - ; + indicating value BEARER_RELEASED '(0)'; to the EPC_PCRF_A entity } then { the EPC_PCRF_A entity sends the ASA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS "(2001)" - ; + indicating value DIAMETER_SUCCESS "(2001)"; to the IMS_P_CSCF_A entity } } @@ -674,8 +639,7 @@ Package TP_RX { the EPC_PCRF_B entity sends the ASR containing Session_Id_AVP Abort_Cause_AVP - indicating value BEARER_RELEASED - ; + indicating value BEARER_RELEASED; to the IMS_P_CSCF_B entity } } @@ -708,8 +672,7 @@ Package TP_RX { then { the EPC_PCRF_A entity sends the STA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the IMS_P_CSCF_A entity } } @@ -741,8 +704,7 @@ Package TP_RX { then { the EPC_PCRF_A entity sends the STA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the IMS_P_CSCF_A entity } } diff --git a/test_purposes/S6a/TP_S6A.tplan2 b/test_purposes/S6a/TP_S6A.tplan2 index 02c2156..c987a48 100644 --- a/test_purposes/S6a/TP_S6A.tplan2 +++ b/test_purposes/S6a/TP_S6A.tplan2 @@ -47,8 +47,7 @@ Package TP_S6A { User_Name_AVP indicating value IMSI Visited_PLMN_Id_AVP - Requested_EUTRAN_Authentication_Info_AVP - ; + Requested_EUTRAN_Authentication_Info_AVP; to the IMS_HSS_A entity } } @@ -81,8 +80,7 @@ Package TP_S6A { the IMS_HSS_A entity sends the AIA containing Result_Code_AVP indicating value DIAMETER_SUCCESS - Authentication_Info_AVP - ; + Authentication_Info_AVP; to the EPC_MME_B entity } } @@ -116,8 +114,7 @@ Package TP_S6A { indicating value IMSI, Cancellation_Type_AVP indicating value Subscription_Withdrawal '(2)' - CLR_Flags_AVP - ; + CLR_Flags_AVP; to the EPC_MME_A entity } } @@ -149,8 +146,7 @@ Package TP_S6A { then { the EPC_MME_A entity sends the CLA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the IMS_HSS_A entity } } @@ -182,8 +178,7 @@ Package TP_S6A { the EPC_MME_A entity sends the PUR containing User_Name_AVP indicating value IMSI, - PUR_Flags_AVP - ; + PUR_Flags_AVP; to the IMS_HSS_A entity } } @@ -215,8 +210,7 @@ Package TP_S6A { then { the IMS_HSS_A entity sends the PUA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_MME_A entity } } @@ -251,8 +245,7 @@ Package TP_S6A { indicating value IMSI ULR_Flags_AVP Visited_PLMN_Id_AVP - RAT_Type_AVP - ; + RAT_Type_AVP; to the IMS_HSS_A entity } } @@ -287,8 +280,7 @@ Package TP_S6A { indicating value IMSI ULR_Flags_AVP Visited_PLMN_Id_AVP - RAT_Type_AVP - ; + RAT_Type_AVP; to the IMS_HSS_A entity } } @@ -321,8 +313,7 @@ Package TP_S6A { the IMS_HSS_A entity sends the ULA containing Result_Code_AVP indicating value DIAMETER_SUCCESS - ULA_Flags_AVP - ; + ULA_Flags_AVP; to the EPC_MME_A entity } } @@ -355,8 +346,7 @@ Package TP_S6A { the IMS_HSS_A entity sends the ULA containing Result_Code_AVP indicating value DIAMETER_SUCCESS - ULA_Flags_AVP - ; + ULA_Flags_AVP; to the EPC_MME_B entity } } diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index ee14b18..4cdbec2 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -87,13 +87,9 @@ Package TP_S9 { Flow_Status_AVP indicating value ENABLED, AF_Signalling_Protocol_AVP - indicating value SIP - ; - ; - ;, + indicating value SIP;;;, IP_CAN_AVP - RAT_Type_AVP - ; + RAT_Type_AVP; to the EPC_PCRF_B entity } } @@ -127,9 +123,7 @@ Package TP_S9 { Result_Code_AVP indicating value DIAMETER_SUCCESS Acceptable_Service_Info_AVP containing - "one or more" Media_Component_Description_AVP - ; - ; + "one or more" Media_Component_Description_AVP;; to the EPC_PCRF_B entity } } @@ -161,8 +155,7 @@ Package TP_S9 { the EPC_PCRF_A entity sends the ASR containing Session_Id_AVP Abort_Cause_AVP - indicating value BEARER_RELEASED - ; + indicating value BEARER_RELEASED; to the EPC_PCRF_B entity } } @@ -227,8 +220,7 @@ Package TP_S9 { indicating value INITIAL_REQUEST Subscription_Id_AVP containing Subscription_Id_Type_AVP - indicating value END_USER_IMSI - ;, + indicating value END_USER_IMSI;, IP_CAN_Type_AVP RAT_Type_AVP Called_Station_Id_AVP @@ -247,15 +239,11 @@ Package TP_S9 { Allocation_Retention_Priority_AVP containing Priority_Level_AVP Pre_emption_Capablity_AVP - Pre_emption_Vulnerability_AVP - ; - ;, + Pre_emption_Vulnerability_AVP;;, Subsession_Enforcement_Info_AVP containing Subsession_Id_AVP Subsession_Operation_AVP - indicating value ESTABLISHMENT - ; - ; + indicating value ESTABLISHMENT;; to the EPC_PCRF_A entity } } @@ -291,9 +279,7 @@ Package TP_S9 { Subsession_Enforcement_Info_AVP containing Subsession_Id_AVP Subsession_Operation_AVP - indicating value TERMINATION - ; - ; + indicating value TERMINATION;; to the EPC_PCRF_A entity } } @@ -338,11 +324,7 @@ Package TP_S9 { Allocation_Retention_Priority_AVP containing Priority_Level_AVP Pre_emption_Capablity_AVP - Pre_emption_Vulnerability_AVP - ; - ; - ; - ; + Pre_emption_Vulnerability_AVP;;;; to the EPC_PCRF_B entity } } @@ -376,9 +358,7 @@ Package TP_S9 { Result_Code_AVP indicating value DIAMETER_SUCCESS Subsession_Decision_Info_AVP containing - Subsession_Id_AVP - ; - ; + Subsession_Id_AVP;; to the EPC_PCRF_B entity } } @@ -440,8 +420,7 @@ Package TP_S9 { then { the EPC_PCRF_A entity sends a STA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PCRF_B entity } } @@ -473,8 +452,7 @@ Package TP_S9 { then { the EPC_PCRF_A entity sends a STA containing Result_Code_AVP - indicating value DIAMETER_SUCCESS - ; + indicating value DIAMETER_SUCCESS; to the EPC_PCRF_B entity } } diff --git a/test_purposes/Sh/TP_Sh.tplan2 b/test_purposes/Sh/TP_Sh.tplan2 index 9ab6083..58d34ee 100644 --- a/test_purposes/Sh/TP_Sh.tplan2 +++ b/test_purposes/Sh/TP_Sh.tplan2 @@ -50,8 +50,7 @@ Package TP_Sh { Origin_Realm_AVP Destination_Realm_AVP User_Identity_AVP - Data_Reference_AVP - ; + Data_Reference_AVP; to the IMS_HSS_A entity } then { @@ -63,8 +62,7 @@ Package TP_Sh { Origin_Realm_AVP Result_Code_AVP indicating value DIAMETER_SUCCESS - User_Data_AVP - ; + User_Data_AVP; to the IMS_AS_A entity } } -- GitLab From b873bedca31d2f117b742e9c28b289b5cfdedf1f Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 19 Mar 2021 14:21:53 +0000 Subject: [PATCH 131/176] TTCN3 DIAMETER error resolved --- log4j.properties | 2 +- tracefiles/TC_VxLTE_INT_REG_01.pcapng | Bin 17020 -> 23691 bytes ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 2 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 36 +++++------ ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 45 +++++++------- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 57 +++++++++--------- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn | 31 +++++----- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn | 25 ++++---- ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn | 5 +- 9 files changed, 104 insertions(+), 99 deletions(-) diff --git a/log4j.properties b/log4j.properties index 56ac12a..8daffb3 100644 --- a/log4j.properties +++ b/log4j.properties @@ -1,4 +1,4 @@ -log4j.rootLogger=debug, stdout, R +log4j.rootLogger=error, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout diff --git a/tracefiles/TC_VxLTE_INT_REG_01.pcapng b/tracefiles/TC_VxLTE_INT_REG_01.pcapng index a027d17479d3734d694b4519a118ed53510c72d1..fb6fd7aaca6c2e9c9e06756423752091eb8fc5db 100644 GIT binary patch literal 23691 zcmeHPYm6J!6~6ZFc7uxpXp0)!ppM+qrj5rtS zGxly!rJ|Okw7>X4Ren$uDkOpw6~vE%kXjZI2_#wxC{&@UXo#ppTZum)3RO#b?u=hM z_S#wRZj->QH0ycZxpU6B=bp!R&l@j3{iq!cqUPTqvcbW~A3nM3^oSFEVF>9PdNq~J zW{v+lPy!8pJpAk!+IK_p!814ScAU9+Nft(1ykB8p!R@1AP``^6dQ0l=1P6H>U2z|#icO8ur%w(JtFETSY2%%8M2OZD)15AMR@xiR04p14<*ulrB6CGC z=GriSTy8~F%OzQbhw(mFD8^hpx$1JuC7IVBAtd;qoFZw*$+A+?L|zjGXrWAUs#@a7 zbxyWrg=h z>Y~B{wLC>`(dlqHuvUEF%TDw*s7Sn-wW94+T`S&qV)@L?PGR-5_q!J_UblPo)8~G- zbX52&8n8Wu&|~j|g2f8gV?(x6tH|cY4I$e{55HxTUx%IHF@#9q6rZJarkOhufx#JJ z0zh#59I_3<{RI3v;P+aD_B;vucD%2*i)=R<=doJ1?STEScWE2JJ$vAu-JK`^*KUDp zuDq&x{T;gok0aYx*MHuA$Ex1fJx_LS-(G_2*BjpeO(FYHI3CBxeQ9&t1axQ&q0ojk z4LpdsO?}IWb^_(_*2ZmQaQozb%xTQ=>vmtfh`IgZ6JI%q2GDtgPW__EZS?Bc_H+B& z@U;YdbgMLc2hM?H48I2F&C<||o9jvgrVbi)q7z^t;LS{(p=HBD_~0pQ9l$1!oEy0? z#G5Pxb$vmH;UA*vCP4=Sp^F?Fnq#fKK(5f`e2^@Ld@H^Vt+lI?wU1loMw_|8TINP4 zo7OTnt`>8nm+~=ekE_f;`S_?4RqaUM%u3mwH6&trwGyKNUn&e`V>s`+6AxF^KC z%+-v1QP`w|vcBJQ1-fav^HbJOV;GNZqrnB`|Y=r z*gXS}P2$0BZFpxbj*{7$Y$&UMmBxX8&Y`iXNGC8+X1G*S=;-T6hcJA2tjm}!hTJa zD@i`ezuk#ez-+{uSw4mq4Ead9T7yeNM@*(8_93<{xa3!SnF>WQxgah0Y45^EWJ1eoGHqde}-Ul(!?Tfc0?Cv_iF(R+z1)74G~|`in+d;gwIDf#x-7 zgyqUcp+b-Svx$mS0(h9S! zX@$WX{_!}Z6+TAjrN^7xM(>R^(+bM(~~hT zpWBK41^y!5%v2ltyWul_5I159wRFRqCZDm(E4Dh_kQWz@7fAJZC130iN$TmtTMnoh z-EbMx4VK|!89rB|;nPdqU6l!rXFb=U?*W1WZ{}%WaK@MhK76Y+!7&(ahL*h)MI1h` z*|Y}WqWS~w0J1F}5eQQS9C-xbZzTobPCOt0t6ZTX#*%a1 z044I2AY>^fB9ZH3RP% zy5_dWTGLnqZ&~ zht>DA6LpMztChJHzI4R_@v%~VAU$B=-1=YS)D>a0RsPuaK(4P8921s8>d%8#OnU20 zgUz}D-6AAgx#I3Jng&)(+KNeAG3hH{RiHHueD1Na)-+&YW38p$8(Ql9ne<6_y*-G$ zu;K-8=5&Gm8wRfD#4f<}$QavGM{&J?{(Bk?*dd+y%EczG$M)eWvXK}dglvKLV&iB3 z2|GH9s|)EOG{r`O0BG$O#nq*4+>tI=p6254E?A&$i^DJLV(*P$k>K9!YIC7Fu*hCE z9c%X@1T4@Op?^;FnJ2Ca6`&NntqADsX6e}TOgp2l2 zE<%*~k^l)%d}4lXnq*!3;?d-xbh?sJc||JY$|mt>N|CCN!%R-aH(Wd*I@)|VT1(=l zlu}kIh|q2&Q;_(ifLG~h$Kl2GJ##iGI@-7d4Vs=ZA2)8@c+R=&dlD;900vVp9!*2u zSQL`efIZMKRidM&GttqOyGPC6Z9X=C!33u$z?7sc;KhshjdXOh{bZ9~ebt2M`mt?& z9yLn^3`&r%m3tAo)fnCV%PAi1sXap$l*NLw;9@uCCBhbz1(dH|c}EB4Ml2{xtbZsA z);0NE!{|A%OYvs5EbM0tD9eFA)mGffP|odw{ULy|%ul2zXOj~N!aO~7sm#&~VxcY4 z0fC{ZP)@5d{;GFTWm;F)n%`8f%2r-reJxeld=xCv*Q>I%J+Lt}*Q<2%+M|LQIJ zg0P&DXT1TD33&ZMI>az6Lj(9J%LxGn5^(>wiff4~*acxi5p&Sd_Udc+RDZxjTrsRe zX)_(wBI4R+WZi`53~y`A4sITUwqDh(uIssR2`((jEHRAEg7u6yvn1PoV@UGB-x~l> zs4Z{-Y76|TD=2H@Vz8DEU7RLec>&>D0h=ayY%4ccgK)M#64{2M|u zdZ|6V)TG%+Z~wA2Ge}c=wWNdUl)ZFy(5D=PLO#Oid!t@uXKuGLud}M_A{1>UHM{V} zm}J+MydtGcJ|vJKKfU0KD7fyRxdapg#SvRIR;vd^rZt$s!vv@+sEA_1JY%@*MsTPc zsODOI5(9_I&#CulGy89osauQV3&HC0f$`ZR)dlYRiSaDdS=?qEs#%N!ftF&Kb5QXR zKD%57H&1tDMnRiPP=<3aIHOpHt?^1@x=*?>T?7B|`N_3iz#y0FCcsqW<;?m*ALG>12{TC_b;o9bY#gI62Q!RX|fnDF4%ECf~jo_E9g2MH-g1-|AZ4g0vyDfnT_ZH zosIXcPC#6EO&Q7JqaWB{y=NJgNamYSJ#;t3VRzw%5PJIjUx;7BzFyc9mvW>#*9^t? zc8%ROqIfq!Z+EG-o<%R8f8E^McZtVo=z*=O0$6xwd!8w!#8+|d%I`0x8$8XV~!`k^Mey_8ohn#iO#(xBFCP3ZC`6|yF~pjski?F3S%@j literal 17020 zcmeHOYiu0V6`oxu1l(9Om{ct!(y$4R^O)V4eZRAg?Kn$fV|newyfZsz&bgFirskkXX)2NYTfh0=3ocJ1Bu z`muh{fIQOOxp!vn^L*#rbIv{6+Sb;3k)o*n@c!E@aQ~!yS*Zv`m#?_2lWgbEUbCRJZhCsQsz@AdhdZjr@~;KDiJ_(#ik3R<(m69&pR!TkofZ*6isP{n8u>t;7&iK67E zH&d_g>L|sbjA>|?`t`Yw;5W48k7ubC`bMgk+U&aqZ_aFcaOZQ||L`oNSK2SMzrK0b zGv6BO?TaUddxvOE$_J&KX3xn2%X0RdVBB2kd|oE{DMcN(D{7if#0MQtJKNTJT;hY3 zl4GQ2kmh_&yOXnX0hgWg`hyojfXeifQLK$2$Ef&E<2uRn5=Z zxwh7BKAUCYJkEj469nEXh$8W)0)!QOVv^^)0k@ZB1kvLZ#+^_( zK_-HCJ&&Zi@D0~?0% z4l6-pwVH0Mt+lJ5XB1UB&FhjP2We4C6HTWJ8c}6FMQAk%E4& z*Aob^ZpQC-1-veXjoL!{({==|T@o~jQAsLdgF1J*y5N`b!5v>Ru;|G4c3e38(4NbI zP?@W&<)GgXUl1iFRFp)b%r?sl0?{;mDi5O(NH$x@@~RW&-Oo=lhZXe{uZjr2KwE2~ zkjHrtF-YfmJ=4}Y$aEQ%nE{ijn7Et*IJx=;2bq!Kp{@bua8C~%D&P_@*ft}H3=X%9 z4FI%(U=Pcc7n;aAbBxGoJrkq>>_bXHC*_rgSqUkao*U-~Kias;!xZf~ejNDI&xW#U z6o+(N(j*w;+?aqDmxL2m>;`F=mgF>Z9DtyxP)mT}7Wr&}L^vro&a!T=oDno<-t8p; zK^n^|o=iqekBw)=v9S!}2^kgAL?$>gk>T}7Eg(X`Eonwlq{wmx1WR0=x=z%bBm7^lNuEP+SD1hLoP^zsJWGl*8l(n~7QPP^S_R5})()%FTF@cmF-s&(VF38!8<(-}P z#HiQ}-+A%5Tb}5G6y{&LdB^B<=*24^dJdfV^5)E=Q?M&oZft$)gYO+@ragNsl;y=4 z%5ngA3d+)!Kk(jtImm2@Q52&sOurDv213q&&mX{glw}iqPs6ka> zS+<+caYM4)2>D%$v`xV`o$$?9=Aj1Oz`Hx)-L8zLaX{im*urmahi?|BZylY1x#1X> zBq_8+QC0=M|Dri3qkIpPyRf_>iH=Rc0AmytXj~ae+lt0IvqI)n0P$?XBZG*f|*tdhzn@s)!6!DVlS)# z4Lw(5W*HHLK#IZvU9W3_w~ISK1_ z&ETVHbIoAA?!|QjK6-VAvN)h4c+oZid?Z6=xqK90vEFBjk5+?W>l*NoRh*%y-6mgJ zPeT4nmDc9ix(8B;x< zS$CYjikSKD-F19+ZFKq|i+q;)2qmN(uwTQ-7dH_Oo@GL8gwdLpj5DYG7y%WCYPv4T_410FR~SW^S=#EBCO zT1KGCN&@JC!LkIYGHq(LSKEQICF3D(H*p0-kC*rHJ~tYToZp!W1UP|Xlf)D7@c}0< zxNHX|6i}g&RE^bU(Do1;h>??!@IrZW>E4b~4Dy&}%DJsJ%`?5!IkTV9n zp-V2?J7BEWYUFT5mpo>uEhgq3A+X0m8PhE0D!Sy3^M6N7d@@kG$NAnFosM0?J?^oO zXZN_Xu*V6|2<~we`(nK?u}*tjGx`FqA@bKK@G)Mg83oTI|x55B(Pn{(9M5OIXJg@Yh-3uMcJ@3j-a&i#84TD-W5^v5vVGdg5yMqZ#^J zQ!{fq2aw2`uPOt0$sqcjay@ePKJ4F0iIWM6|7gREhC-~SLfQ{2QI|b1K;c@ zC83O|o=4k<&%cYf`semq9`#=woj&weE;R(*N)Q*>Wcx3aW1deMI3vZPCV_OO%%=T|qlXo)KE#^Qi>3d84&xtjU#Fu2vy zL>*MXpBoK>!&ZdKiaZQH&F+E2`0c!B;l$u@)u#g_jV`+=TlHz>S-4MC3VD2GX2Sgh zbYw9aA2=Q#?hQN2#c=PWPGlr_H0-F(8$GSQyZ+upqO0%I>n|~KDA7F>KlJJKSUL4* zxTHfQEotCLt`HXKG4EM;-VcfWc4r110Hx& zL+A#Rbu1ue7I+NO)s#5y4e3)Y;i~g1lXi`v4NpIHb^?L1{606>sYZ6Jl$~JBXIX1w zGp`X^D`O`RxwX2=#@4#Ha@Sb?G_|!h*6^U=S>3Zvp#;>IiB#UoMuy_iJM8;HiDCP` zN8sKcIh3g628L#H$L#y=K&{5u{;*E@TPQ@b?_c7rI&Xo#56ixD$;vH94yN<^fqDkAcF zJ4VzeCX|#{c1DPqKtLTnudAxcIh8SL^93Rdr^Gs4~G zebu}pE`%YQk$gsx2{c(|R;D`k4y;~?j57n!7Kw9!IJ^KGnhSUY3{;}>Rux>Qu5oZ( z2m|VjI6NEr2x*Rv-yO#w!McN4hzeXu5Z>&xF?6&pqR}`_1-?iA&jPRGh5Y~I^BtwT zpo|Ilf9ugM(-U7gzi;thID-8D{k}5)zt(=a{oR(`Z@ynq?TskjW$12|IOi%!LDCxM zVkU`G4aDGajSN_d+;dFs0ttlIEYot0xpt8j0e%>dY^!!8+ZqCYUc~kyt(vf`4c}(u zoD%Re`YBnQTy^kgllU}2=UNzaE01Aa%Xr+{0AL@|wGPi5=bn3roD`(_Igg^l2uud9 z+7E{z7)MZZDiWzZ6N${8h_r^GiV-DTIY5C=ZP75uD2#AsB=i~9YAQ9a!j4M)XsgL% z^}O~r@Y+$}GfWM6EpQ=j@LF#Tuig3Pzt(`)#H}tO!{R{tRv$+1%*2*xTBQr^*Ad9>@ z#fW~Q8T2NL0xtrDXEA&~;I$%$pZdq1QV`0RObHCXU}aS73v1^MCsF4)9s@c28p`7K zciS&pZ~gJF7W6NC=Bx(e-;ZJ;?<%?jV$suJyI9hQSSCkbx5h=i<-4#EQm^ZS`j56N zVhZJBHMair?>(guJjc`!TYGOv8rX`|U~Bsi9SdUXv!^8+;5t>D;(4Dqrl-~sT-U8K zy;^Wpu=T7Fl4|OYo-LiFuR|HrEVe+4tjH~k_V6=^t+$^9Y+W_v*6-RcTORsl--6hh z@c459MxU5+y4KJFb9>$EW`P;l@=dYcF+Q6ahkxQW@BLV&;PP_(7+9ws52w#r_Emq# zHQZN7ACv( Date: Fri, 19 Mar 2021 15:34:24 +0100 Subject: [PATCH 132/176] update --- tracefiles/TC_VxLTE_INT_REG_01.pcapng | Bin 17020 -> 23691 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tracefiles/TC_VxLTE_INT_REG_01.pcapng b/tracefiles/TC_VxLTE_INT_REG_01.pcapng index a027d17479d3734d694b4519a118ed53510c72d1..fb6fd7aaca6c2e9c9e06756423752091eb8fc5db 100644 GIT binary patch literal 23691 zcmeHPYm6J!6~6ZFc7uxpXp0)!ppM+qrj5rtS zGxly!rJ|Okw7>X4Ren$uDkOpw6~vE%kXjZI2_#wxC{&@UXo#ppTZum)3RO#b?u=hM z_S#wRZj->QH0ycZxpU6B=bp!R&l@j3{iq!cqUPTqvcbW~A3nM3^oSFEVF>9PdNq~J zW{v+lPy!8pJpAk!+IK_p!814ScAU9+Nft(1ykB8p!R@1AP``^6dQ0l=1P6H>U2z|#icO8ur%w(JtFETSY2%%8M2OZD)15AMR@xiR04p14<*ulrB6CGC z=GriSTy8~F%OzQbhw(mFD8^hpx$1JuC7IVBAtd;qoFZw*$+A+?L|zjGXrWAUs#@a7 zbxyWrg=h z>Y~B{wLC>`(dlqHuvUEF%TDw*s7Sn-wW94+T`S&qV)@L?PGR-5_q!J_UblPo)8~G- zbX52&8n8Wu&|~j|g2f8gV?(x6tH|cY4I$e{55HxTUx%IHF@#9q6rZJarkOhufx#JJ z0zh#59I_3<{RI3v;P+aD_B;vucD%2*i)=R<=doJ1?STEScWE2JJ$vAu-JK`^*KUDp zuDq&x{T;gok0aYx*MHuA$Ex1fJx_LS-(G_2*BjpeO(FYHI3CBxeQ9&t1axQ&q0ojk z4LpdsO?}IWb^_(_*2ZmQaQozb%xTQ=>vmtfh`IgZ6JI%q2GDtgPW__EZS?Bc_H+B& z@U;YdbgMLc2hM?H48I2F&C<||o9jvgrVbi)q7z^t;LS{(p=HBD_~0pQ9l$1!oEy0? z#G5Pxb$vmH;UA*vCP4=Sp^F?Fnq#fKK(5f`e2^@Ld@H^Vt+lI?wU1loMw_|8TINP4 zo7OTnt`>8nm+~=ekE_f;`S_?4RqaUM%u3mwH6&trwGyKNUn&e`V>s`+6AxF^KC z%+-v1QP`w|vcBJQ1-fav^HbJOV;GNZqrnB`|Y=r z*gXS}P2$0BZFpxbj*{7$Y$&UMmBxX8&Y`iXNGC8+X1G*S=;-T6hcJA2tjm}!hTJa zD@i`ezuk#ez-+{uSw4mq4Ead9T7yeNM@*(8_93<{xa3!SnF>WQxgah0Y45^EWJ1eoGHqde}-Ul(!?Tfc0?Cv_iF(R+z1)74G~|`in+d;gwIDf#x-7 zgyqUcp+b-Svx$mS0(h9S! zX@$WX{_!}Z6+TAjrN^7xM(>R^(+bM(~~hT zpWBK41^y!5%v2ltyWul_5I159wRFRqCZDm(E4Dh_kQWz@7fAJZC130iN$TmtTMnoh z-EbMx4VK|!89rB|;nPdqU6l!rXFb=U?*W1WZ{}%WaK@MhK76Y+!7&(ahL*h)MI1h` z*|Y}WqWS~w0J1F}5eQQS9C-xbZzTobPCOt0t6ZTX#*%a1 z044I2AY>^fB9ZH3RP% zy5_dWTGLnqZ&~ zht>DA6LpMztChJHzI4R_@v%~VAU$B=-1=YS)D>a0RsPuaK(4P8921s8>d%8#OnU20 zgUz}D-6AAgx#I3Jng&)(+KNeAG3hH{RiHHueD1Na)-+&YW38p$8(Ql9ne<6_y*-G$ zu;K-8=5&Gm8wRfD#4f<}$QavGM{&J?{(Bk?*dd+y%EczG$M)eWvXK}dglvKLV&iB3 z2|GH9s|)EOG{r`O0BG$O#nq*4+>tI=p6254E?A&$i^DJLV(*P$k>K9!YIC7Fu*hCE z9c%X@1T4@Op?^;FnJ2Ca6`&NntqADsX6e}TOgp2l2 zE<%*~k^l)%d}4lXnq*!3;?d-xbh?sJc||JY$|mt>N|CCN!%R-aH(Wd*I@)|VT1(=l zlu}kIh|q2&Q;_(ifLG~h$Kl2GJ##iGI@-7d4Vs=ZA2)8@c+R=&dlD;900vVp9!*2u zSQL`efIZMKRidM&GttqOyGPC6Z9X=C!33u$z?7sc;KhshjdXOh{bZ9~ebt2M`mt?& z9yLn^3`&r%m3tAo)fnCV%PAi1sXap$l*NLw;9@uCCBhbz1(dH|c}EB4Ml2{xtbZsA z);0NE!{|A%OYvs5EbM0tD9eFA)mGffP|odw{ULy|%ul2zXOj~N!aO~7sm#&~VxcY4 z0fC{ZP)@5d{;GFTWm;F)n%`8f%2r-reJxeld=xCv*Q>I%J+Lt}*Q<2%+M|LQIJ zg0P&DXT1TD33&ZMI>az6Lj(9J%LxGn5^(>wiff4~*acxi5p&Sd_Udc+RDZxjTrsRe zX)_(wBI4R+WZi`53~y`A4sITUwqDh(uIssR2`((jEHRAEg7u6yvn1PoV@UGB-x~l> zs4Z{-Y76|TD=2H@Vz8DEU7RLec>&>D0h=ayY%4ccgK)M#64{2M|u zdZ|6V)TG%+Z~wA2Ge}c=wWNdUl)ZFy(5D=PLO#Oid!t@uXKuGLud}M_A{1>UHM{V} zm}J+MydtGcJ|vJKKfU0KD7fyRxdapg#SvRIR;vd^rZt$s!vv@+sEA_1JY%@*MsTPc zsODOI5(9_I&#CulGy89osauQV3&HC0f$`ZR)dlYRiSaDdS=?qEs#%N!ftF&Kb5QXR zKD%57H&1tDMnRiPP=<3aIHOpHt?^1@x=*?>T?7B|`N_3iz#y0FCcsqW<;?m*ALG>12{TC_b;o9bY#gI62Q!RX|fnDF4%ECf~jo_E9g2MH-g1-|AZ4g0vyDfnT_ZH zosIXcPC#6EO&Q7JqaWB{y=NJgNamYSJ#;t3VRzw%5PJIjUx;7BzFyc9mvW>#*9^t? zc8%ROqIfq!Z+EG-o<%R8f8E^McZtVo=z*=O0$6xwd!8w!#8+|d%I`0x8$8XV~!`k^Mey_8ohn#iO#(xBFCP3ZC`6|yF~pjski?F3S%@j literal 17020 zcmeHOYiu0V6`oxu1l(9Om{ct!(y$4R^O)V4eZRAg?Kn$fV|newyfZsz&bgFirskkXX)2NYTfh0=3ocJ1Bu z`muh{fIQOOxp!vn^L*#rbIv{6+Sb;3k)o*n@c!E@aQ~!yS*Zv`m#?_2lWgbEUbCRJZhCsQsz@AdhdZjr@~;KDiJ_(#ik3R<(m69&pR!TkofZ*6isP{n8u>t;7&iK67E zH&d_g>L|sbjA>|?`t`Yw;5W48k7ubC`bMgk+U&aqZ_aFcaOZQ||L`oNSK2SMzrK0b zGv6BO?TaUddxvOE$_J&KX3xn2%X0RdVBB2kd|oE{DMcN(D{7if#0MQtJKNTJT;hY3 zl4GQ2kmh_&yOXnX0hgWg`hyojfXeifQLK$2$Ef&E<2uRn5=Z zxwh7BKAUCYJkEj469nEXh$8W)0)!QOVv^^)0k@ZB1kvLZ#+^_( zK_-HCJ&&Zi@D0~?0% z4l6-pwVH0Mt+lJ5XB1UB&FhjP2We4C6HTWJ8c}6FMQAk%E4& z*Aob^ZpQC-1-veXjoL!{({==|T@o~jQAsLdgF1J*y5N`b!5v>Ru;|G4c3e38(4NbI zP?@W&<)GgXUl1iFRFp)b%r?sl0?{;mDi5O(NH$x@@~RW&-Oo=lhZXe{uZjr2KwE2~ zkjHrtF-YfmJ=4}Y$aEQ%nE{ijn7Et*IJx=;2bq!Kp{@bua8C~%D&P_@*ft}H3=X%9 z4FI%(U=Pcc7n;aAbBxGoJrkq>>_bXHC*_rgSqUkao*U-~Kias;!xZf~ejNDI&xW#U z6o+(N(j*w;+?aqDmxL2m>;`F=mgF>Z9DtyxP)mT}7Wr&}L^vro&a!T=oDno<-t8p; zK^n^|o=iqekBw)=v9S!}2^kgAL?$>gk>T}7Eg(X`Eonwlq{wmx1WR0=x=z%bBm7^lNuEP+SD1hLoP^zsJWGl*8l(n~7QPP^S_R5})()%FTF@cmF-s&(VF38!8<(-}P z#HiQ}-+A%5Tb}5G6y{&LdB^B<=*24^dJdfV^5)E=Q?M&oZft$)gYO+@ragNsl;y=4 z%5ngA3d+)!Kk(jtImm2@Q52&sOurDv213q&&mX{glw}iqPs6ka> zS+<+caYM4)2>D%$v`xV`o$$?9=Aj1Oz`Hx)-L8zLaX{im*urmahi?|BZylY1x#1X> zBq_8+QC0=M|Dri3qkIpPyRf_>iH=Rc0AmytXj~ae+lt0IvqI)n0P$?XBZG*f|*tdhzn@s)!6!DVlS)# z4Lw(5W*HHLK#IZvU9W3_w~ISK1_ z&ETVHbIoAA?!|QjK6-VAvN)h4c+oZid?Z6=xqK90vEFBjk5+?W>l*NoRh*%y-6mgJ zPeT4nmDc9ix(8B;x< zS$CYjikSKD-F19+ZFKq|i+q;)2qmN(uwTQ-7dH_Oo@GL8gwdLpj5DYG7y%WCYPv4T_410FR~SW^S=#EBCO zT1KGCN&@JC!LkIYGHq(LSKEQICF3D(H*p0-kC*rHJ~tYToZp!W1UP|Xlf)D7@c}0< zxNHX|6i}g&RE^bU(Do1;h>??!@IrZW>E4b~4Dy&}%DJsJ%`?5!IkTV9n zp-V2?J7BEWYUFT5mpo>uEhgq3A+X0m8PhE0D!Sy3^M6N7d@@kG$NAnFosM0?J?^oO zXZN_Xu*V6|2<~we`(nK?u}*tjGx`FqA@bKK@G)Mg83oTI|x55B(Pn{(9M5OIXJg@Yh-3uMcJ@3j-a&i#84TD-W5^v5vVGdg5yMqZ#^J zQ!{fq2aw2`uPOt0$sqcjay@ePKJ4F0iIWM6|7gREhC-~SLfQ{2QI|b1K;c@ zC83O|o=4k<&%cYf`semq9`#=woj&weE;R(*N)Q*>Wcx3aW1deMI3vZPCV_OO%%=T|qlXo)KE#^Qi>3d84&xtjU#Fu2vy zL>*MXpBoK>!&ZdKiaZQH&F+E2`0c!B;l$u@)u#g_jV`+=TlHz>S-4MC3VD2GX2Sgh zbYw9aA2=Q#?hQN2#c=PWPGlr_H0-F(8$GSQyZ+upqO0%I>n|~KDA7F>KlJJKSUL4* zxTHfQEotCLt`HXKG4EM;-VcfWc4r110Hx& zL+A#Rbu1ue7I+NO)s#5y4e3)Y;i~g1lXi`v4NpIHb^?L1{606>sYZ6Jl$~JBXIX1w zGp`X^D`O`RxwX2=#@4#Ha@Sb?G_|!h*6^U=S>3Zvp#;>IiB#UoMuy_iJM8;HiDCP` zN8sKcIh3g628L#H$L#y=K&{5u{;*E@TPQ@b?_c7rI&Xo#56ixD$;vH94yN<^fqDkAcF zJ4VzeCX|#{c1DPqKtLTnudAxcIh8SL^93Rdr^Gs4~G zebu}pE`%YQk$gsx2{c(|R;D`k4y;~?j57n!7Kw9!IJ^KGnhSUY3{;}>Rux>Qu5oZ( z2m|VjI6NEr2x*Rv-yO#w!McN4hzeXu5Z>&xF?6&pqR}`_1-?iA&jPRGh5Y~I^BtwT zpo|Ilf9ugM(-U7gzi;thID-8D{k}5)zt(=a{oR(`Z@ynq?TskjW$12|IOi%!LDCxM zVkU`G4aDGajSN_d+;dFs0ttlIEYot0xpt8j0e%>dY^!!8+ZqCYUc~kyt(vf`4c}(u zoD%Re`YBnQTy^kgllU}2=UNzaE01Aa%Xr+{0AL@|wGPi5=bn3roD`(_Igg^l2uud9 z+7E{z7)MZZDiWzZ6N${8h_r^GiV-DTIY5C=ZP75uD2#AsB=i~9YAQ9a!j4M)XsgL% z^}O~r@Y+$}GfWM6EpQ=j@LF#Tuig3Pzt(`)#H}tO!{R{tRv$+1%*2*xTBQr^*Ad9>@ z#fW~Q8T2NL0xtrDXEA&~;I$%$pZdq1QV`0RObHCXU}aS73v1^MCsF4)9s@c28p`7K zciS&pZ~gJF7W6NC=Bx(e-;ZJ;?<%?jV$suJyI9hQSSCkbx5h=i<-4#EQm^ZS`j56N zVhZJBHMair?>(guJjc`!TYGOv8rX`|U~Bsi9SdUXv!^8+;5t>D;(4Dqrl-~sT-U8K zy;^Wpu=T7Fl4|OYo-LiFuR|HrEVe+4tjH~k_V6=^t+$^9Y+W_v*6-RcTORsl--6hh z@c459MxU5+y4KJFb9>$EW`P;l@=dYcF+Q6ahkxQW@BLV&;PP_(7+9ws52w#r_Emq# zHQZN7ACv( Date: Mon, 29 Mar 2021 13:32:04 +0000 Subject: [PATCH 133/176] TTCN3 code modified until 1st demo conf call --- .../AtsImsIot_Diameter_Templates.ttcn | 42 ++++++++++++++++--- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 18 ++++---- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 30 ++++++------- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 37 ++++++++++++++-- .../AtsImsIot_TP_behavior_MW_IS.ttcn | 39 +++++++++++++++-- ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn | 2 +- ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 1 - 7 files changed, 132 insertions(+), 37 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index b702b8b..751c737 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -473,6 +473,7 @@ module AtsImsIot_Diameter_Templates { group CxRequestMessageTemplates{ template MAR_MSG mw_MAR modifies mw_MAR_dummy := { + header := mw_diameterHeaderReq_dummy(MAR_E, c_applId3GPPCxDx), mAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -485,6 +486,7 @@ module AtsImsIot_Diameter_Templates { } template RTR_MSG mw_RTR modifies mw_RTR_dummy := { + header := mw_diameterHeaderReq_dummy(RTR_E, c_applId3GPPCxDx), rTR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -494,6 +496,7 @@ module AtsImsIot_Diameter_Templates { } template SAR_MSG mw_SAR_UnregisteredUser modifies mw_SAR_dummy := { + header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), sAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -506,6 +509,7 @@ module AtsImsIot_Diameter_Templates { } template SAR_MSG mw_SAR_UserDeregistration modifies mw_SAR_dummy := { + header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), sAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -518,42 +522,58 @@ module AtsImsIot_Diameter_Templates { } template UAR_MSG mw_UAR_Registration modifies mw_UAR_dummy := { + header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - user_Name := omit, + user_Name := ?, public_Identity := ?, visited_Network_Identifier := ?, - user_Authorization_Type := mw_userAuthorizationType(REGISTRATION) + user_Authorization_Type := mw_userAuthorizationType(REGISTRATION), + sIP_AOR := *, + sIP_Visited_Network_Id := *, + sIP_User_Authorization_Type := * } } template UAR_MSG mw_UAR modifies mw_UAR_dummy := { + header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?, - public_Identity := ? + public_Identity := ?, + sIP_AOR := *, + sIP_Visited_Network_Id := *, + sIP_User_Authorization_Type := * } } template UAR_MSG mw_UAR_unknownPrivateId modifies mw_UAR_dummy := { + header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?,//UNKNOWN PRIVATE USER IDENTITY - public_Identity := ? + public_Identity := ?, + sIP_AOR := *, + sIP_Visited_Network_Id := *, + sIP_User_Authorization_Type := * } } template UAR_MSG mw_UAR_deRegistration modifies mw_UAR_dummy := { + header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?, public_Identity := ?, visited_Network_Identifier := ?, - user_Authorization_Type := mw_userAuthorizationType(DE_REGISTRATION) + user_Authorization_Type := mw_userAuthorizationType(DE_REGISTRATION), + sIP_AOR := *, + sIP_Visited_Network_Id := *, + sIP_User_Authorization_Type := * } } @@ -561,6 +581,7 @@ module AtsImsIot_Diameter_Templates { group CxAnswertMessageTemplates{ template MAA_MSG mw_MAA modifies mw_MAA_dummy := { + header := mw_diameterHeaderAns_dummy(MAA_E, c_applId3GPPCxDx), mAA_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -573,6 +594,7 @@ module AtsImsIot_Diameter_Templates { } template RTA_MSG mw_RTA modifies mw_RTA_dummy := { + header := mw_diameterHeaderAns_dummy(RTA_E, c_applId3GPPCxDx), rTA_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -581,6 +603,7 @@ module AtsImsIot_Diameter_Templates { } template SAA_MSG mw_SAA modifies mw_SAA_dummy := { + header := mw_diameterHeaderAns_dummy(SAA_E, c_applId3GPPCxDx), sAA_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -589,6 +612,7 @@ module AtsImsIot_Diameter_Templates { } template SAA_MSG mw_SAA_userData modifies mw_SAA_dummy := { + header := mw_diameterHeaderAns_dummy(SAA_E, c_applId3GPPCxDx), sAA_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, @@ -599,8 +623,10 @@ module AtsImsIot_Diameter_Templates { } template UAA_MSG mw_UAA_diamFirstRegistration modifies mw_UAA_dummy := { + header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, + auth_Application_Id := *, auth_Session_State := mw_authSessionState_noStateMaintained, result_Code := omit, experimental_Result := mw_experimentalResult(DIAMETER_FIRST_REGISTRATION_E) @@ -608,9 +634,11 @@ module AtsImsIot_Diameter_Templates { } template UAA_MSG mw_UAA_diamSubsequentRegistration modifies mw_UAA_dummy := { + header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, + auth_Application_Id := *, result_Code := omit, experimental_Result := mw_experimentalResult(DIAMETER_SUBSEQUENT_REGISTRATION_E), server_Name := ?, @@ -619,8 +647,10 @@ module AtsImsIot_Diameter_Templates { } template UAA_MSG mw_UAA_diamErrorUserUnknown modifies mw_UAA_dummy := { + header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, + auth_Application_Id := *, auth_Session_State := mw_authSessionState_noStateMaintained, result_Code := omit, experimental_Result := mw_experimentalResult(DIAMETER_ERROR_USER_UNKNOWN_E), @@ -629,8 +659,10 @@ module AtsImsIot_Diameter_Templates { } template UAA_MSG mw_UAA_diamSuccess modifies mw_UAA_dummy := { + header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, + auth_Application_Id := *, auth_Session_State := mw_authSessionState_noStateMaintained, result_Code := mw_resultCode(mw_resultCode_diameterSuccess), experimental_Result := omit, diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 64cf1bb..99b9b25 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -2885,9 +2885,9 @@ module AtsImsIot_Functions { } /** - * @desc This altstep add one alternative checking for a very specifc SIP response. + * @desc This altstep add one alternative checking for a very specifc DIAMETER message. If it matches then the conformance verdict is set to requested verdict - * @param p_message The expected SIP response + * @param p_message The expected DIAMETER message * @param p_verdict Verdict to be used in case of match * @param p_tpId The test purpose identifier * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc @@ -2906,7 +2906,7 @@ module AtsImsIot_Functions { var DIAMETER_MSG v_msg; v_msg := v_message; log("### Forwarding message to MTC"); - //icpPort.send(v_msg); //TODO: check how to sync diameter with MTC + icpPort.send(v_msg); } } [p_checkMessage] diameterPort.check(receive(p_message) -> value v_message) { @@ -2915,7 +2915,7 @@ module AtsImsIot_Functions { var DIAMETER_MSG v_msg; v_msg := v_message; log("### Forwarding message to MTC"); - //icpPort.send(v_msg);//TODO: check how to sync diameter with MTC + icpPort.send(v_msg); } } } @@ -3188,7 +3188,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); } /** - * @desc Activates for each entry in a expected IMS SIP message list a default + * @desc Activates for each entry in a expected IMS DIAMETER message list a default * for receiving that message and setting the verdict as desired * @param p_default Reference to default array where deaults are to be added * @param p_startIdx Index into default array after which references for @@ -3211,11 +3211,15 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); var integer v_idx := p_startIdx; for (var integer i := 0; i < v_size; i := i + 1) { - if (isvalue(p_list[i])) { + if (ispresent(p_list[i])) { + log("Function f_activateDiameterDefaults ispresent:",p_list[i],i); p_default[v_idx] := activate( a_receive_diameter(p_list[i],p_verdict, p_tpId, p_forwardMtc, p_checkMessage) ); } + else { + log("Function f_activateDiameterDefaults else statement:",p_list[i]); + } // else { // p_default[v_idx] := activate( // a_receive_diameter_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) @@ -3353,7 +3357,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); * skipped prior to checking * @param p_tpId The Test Purpose identifier * @param p_forwardMtc - * indicate if the received Sip message should be forwarded to the + * indicate if the received Diameter message should be forwarded to the * mtc * @param p_checkMessage * indicate if the incomming message should only be checked diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index 486a2bf..f656acd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -69,26 +69,26 @@ module AtsImsIot_TD_REG{ f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile // Test body - f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 10 - f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, true); // Event 2, 9 - f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 + f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); // Event 2, 9 + f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false); // Event 5, 8 - f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 3, 4 - f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 + f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH, false);// Event 3, 4 + f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 6, 7 - f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA); // Events 11, 20 - f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS); // Events 12, 19 - f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 18 + f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 20 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 19 + f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false); // Event 15, 18 - f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 13, 14 - f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 + f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH, false);// Event 13, 14 + f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 16, 17 - f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA); // Events 21, 24 - f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, true); // Events 22, 23 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 22, 23 - f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 25 - f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 26 - f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 27, 28 + f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx, false);// Event 25 + f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx, false); // Event 26 + f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx, false); // Event 27, 28 // postamble f_PO_user_home_deregistration ( v_ueA ); diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index 8cd83be..6b40b01 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -378,24 +378,53 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_UAA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in boolean p_forward_to_mtc := true ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ +// p_monitorCompRef.start ( +// f_Iot_Diameter_receive( +// { +// DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration}, +// DIAMETER_MSG:{uAA_MSG := mw_UAA_diamFirstRegistration} +// }, +// {}, +// {0, omit}, +// "TP_CX_HSS_UAA_01", +// p_forward_to_mtc, +// p_checkMessage +// ) +// ); +// p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration} + }, + {}, + {0, omit}, + "TP_CX_HSS_UAA_01 - UAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration}, DIAMETER_MSG:{uAA_MSG := mw_UAA_diamFirstRegistration} }, {}, {0, omit}, - "TP_CX_HSS_UAA_01", + "TP_CX_HSS_UAA_01 - UAA", p_forward_to_mtc, p_checkMessage ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_UAA_01 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn index 64de622..9141754 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -119,21 +119,52 @@ module AtsImsIot_TP_behavior_MW_IS { */ function f_mtc_check_TP_MW_ICSCF_REGISTER_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ +// p_monitorCompRef.start( +// f_Iot_Sip_receive( +// { +// mw_SipRequest(mw_REGISTER_Request_Base),//Updated line 23.3.2021 - TODO +// mw_SipResponse(mw_401Unauthorized_Base) +// }, +// {}, +// {0, omit}, +// "TP_MW_ICSCF_REGISTER_01", +// false, +// p_checkMessage +// ) +// ); +// p_monitorCompRef.done; + p_monitorCompRef.start( f_Iot_Sip_receive( - { + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_ICSCF_REGISTER_01 - REQ", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_401Unauthorized_Base) }, {}, {0, omit}, - "TP_MW_ICSCF_REGISTER_01", - false, + "TP_MW_ICSCF_REGISTER_01 - RESP", + true, p_checkMessage ) ); p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_01 /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn index 5ff7cdd..a86c232 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn @@ -63,7 +63,7 @@ module AtsImsIot_TestSystem { group portDefinitions { type port ImsCoordinationPort message { - inout SipMessage; + inout SipMessage, DIAMETER_MSG; } type port DataPort message { in Request, Response, SEND_request, RECEIVE_response; // SIP diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn index 17a47fa..f484f30 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -160,7 +160,6 @@ module LibIot_VxLTE_Functions { if (isvalue(vc_MonIntfList.gmA)){ f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA); - //TODO: per each enabled monitor inteface send traffic filter req vc_vxlte_monitor_components.gmA.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, -- GitLab From 06e685305e643cc867e81bc87e5dfb121a1d9f59 Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 16 Apr 2021 14:15:21 +0000 Subject: [PATCH 134/176] Changes done during week 15 --- log4j.properties | 2 +- tracefiles/TC_VxLTE_INT_REG_01.pcapng | Bin 23691 -> 49355 bytes ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 117 ++- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 65 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 23 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 186 ++-- .../AtsImsIot_TP_behavior_MW_IS.ttcn | 214 +++-- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 231 +++-- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 227 +++-- ttcn/AtsImsIot/AtsImsIot_Templates.ttcn | 16 +- ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 | 103 +++ ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 5 +- ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 | 200 +++++ ttcn/LibIot/LibIot_PIXITS.ttcn | 791 +----------------- ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 57 +- ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn | 617 ++++---------- 16 files changed, 1247 insertions(+), 1607 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 create mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 diff --git a/log4j.properties b/log4j.properties index 8daffb3..56ac12a 100644 --- a/log4j.properties +++ b/log4j.properties @@ -1,4 +1,4 @@ -log4j.rootLogger=error, stdout, R +log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout diff --git a/tracefiles/TC_VxLTE_INT_REG_01.pcapng b/tracefiles/TC_VxLTE_INT_REG_01.pcapng index fb6fd7aaca6c2e9c9e06756423752091eb8fc5db..ddb45c0752223f45a4bf1025e525321b498eb191 100644 GIT binary patch literal 49355 zcmeHQ32+?cmF|&zAxjwJ0M0^|Mgd|#Ep^X5l13S!0~D|;HWNGsLWYVdJ$dvu`u^*E>&n>|59#-SWhiXV*=*&)Ye4(a8A3&`vg` zB)gSZsxuascwXp?N%|j0B$K) z4B~Zzkw}nt@B$}DyvG-k1xXU!QYa*Q!#Hu$2d`O~3fU(W?7XQvWRX&@$)p*O9@yCbQX2y&H` z{4V9ZUWd=^;P}4wo(m$KM8BPilu|fV4*T2j=sAvl{Lgvtmo9Q>`x!-&JE{HX#?Dww zlcNg{r(*bgkC+ZAiJloHBqy@36(vbdrL?&u3MI+WXgVsYc2s}6ILi$u)V-n_A}aK? zwT!2eR2@0g%_c={vaMx|>(?LVMh)KLM&e;mmE)qZF>cqy&i+wucyN&INmEO3^lnZG zaa7z4iGZ$kLU!>&roH93#$77MBidv)3z{EO70{VB*Uic?S&hhXX|AnhXCkf1nO;Fv zr7-I3q>AIe)U+z1-kmXV8ocY}d!lL|m22%9JNtsF}T$7Wb$kcQ+G&SYsTs`^&D5^{)32~z4 zw-QGWY82s=gyN^ZDl4Z@AhdI)s+z3ElsH%}9$B2+jCv2tqLx-=Za_?;3(sHZa!m?z z)P*2J;-2xrDaUkB=4O(T%3SBHY?apE)&LM4)B>zc}{C8s% zpee%W zdB)a3qatHlf5R7V9pq^zz%ZSu(lp;A@V*|G!{c>&^#|ABeiqNQ;BPC#Y`X{hO|-AS zm$98|Ow$!O?x$m-;HpO)dIbs;U>IL5&r*+{?QCUEM$6HbrC0PjX)3lg zcYU3Dy!lS*ZR+(+XNdPvZy!Ez?Z$muh4rVLiO-|Q(c5=Zuj3_82bRCb&qIw_d^wjQ z&c``W$NHb)d;vu)(xW9Qf?DYPy=b8(v=Fv@o@iRrAJci_8Y@p+yYb2+4?d#v#OI6_ zLhG>9O5lm7=NVfUS_&7|-w2)%Xa}XQj3<2hgU1k0)J~uE;g6=!Jj0xA@LbbJuzxD; zLwRNgb(N3Wv*{|FH~A7>)ARuxUtscOIe9`9^76&4%=w@W+VXj*>5RL+K@`$-o0W$i zeB|(f>z*eb`u#f$3ITN-Bq{-gycSq~3TX{21HYgtYnDcJ>h1iVq~8BRruSv+o4t&p zmZXNO_c6?*@eDH=C@Jlk1g>q|KIp=`m^k)ZMc5SBpTqt(H}4h&U(oLMIz*4lGgUf+3OJ8cBfBtJ3U^XOF+Ln+`f?D3x#=?)9Vr1JN6`CFHlz% zw-F5W>ql}~x4|cLx559K%A@W!czil-n%gVjHc}1Rjnb*Ne z873gl4t^kVmZ+SF9PSOtZ=B|Zj`Dtrq#O^yB3Wr)h1czN`Fy;y;iNbgofPVEitktrvg@9|^2kG9 z&vR0AkjkCsr1(b|WcF$dG8bGLxc?Y3$c{ZHMLY!q3!Fh)mOD%*#Tj>flX|@QfYrcy z=_4qOwSk;-PZL_V68)hkOXgP~RuW4I9 z3>fgrZY!@`fAy6|9{!ZhD~}j0hgRzXuRID~d261racDtYSbr0E#X&oP+!un&UcaO5?m~7SnSxxyLj*-Tc*7=0~S7`j*ds zr#*1jw}^^<`<9je9{$wf12-gy|L)jsP!TBTDWW7BbK3QR<)@-$;=d(1I6gejobm?s zK<|5JV^MZSR#TXKWc_Tr(8;&6m>NouE=(tOO$>A1_V@Pnj%*(vPX|+ysw8Qqvac8O zNi(ogM+W<mGRzmFseu+Au@xtIeggM%g#?^rfPe;vX}6} zyr=Syv$v9mTc72qc*3{rcLoxwoSCu9R3t?HV72MgC^O~;3KROauG)0UKD^W~!4ZvEGRYlbMj7+CF`kXl**w;IO zNwkQpjwN6r_4Q(^HiU;0@d-?04vY@dy#?ob$HyjeZXJ~)G(p$L=iF+Z>%B-#q?2^X z*y-IaqkTesBcr=VCWd;uGKabCWT~wFrKNvv`_TA!|3xeJz42Wajt}e{xp3vaXgXku zHt9||0^-9oYNlhUKMKzE7M!scyQ>b}1DeWE!#F0)QKkVgB~zJl59>@4#lPvO=9^ts zR_RYBA*%E?CFYe?gQI126rme^BxzETB&PI9yqN@rEEJhocj>jJr}d|L2j#Gsj%pW+ z@lX^(m>MPjR90>vM4(Uq1e-FXXlg->(6!ta9EnTObVxS3SXOD`6_F-g5U}|djL;5T zv2=8i%663yGbK)EC62QpeR9Ql?tX33t~hDq?25A!1V-iGY_O9>cGSvFX!9&adU5UXLj$>&hyVAtwtaI=$YI>vXFSHmQmVb1HR8^4AP|reAKz@fR7K98t%L5 zI7p-S8d4=|x)l;eae{^DC`GWvnFMDmA293m&8i0J;@@mArmmb@H1QQ;O!v`e%);@o zODB`6g=ND&D(0PW9Y;NUtPF>c!g|zy)(@F~obOS*P*hde=Ogfz87=^Flog&_@L$#x zTU*xoSWxD!d@n8h?eL^e%`?n|;c;)8#=ahgC`sX~)I_060{6!(_k@eyGrNyrE;im- zyDyr&`j3CRmHB)#qi;V>zVXoeb{f8Y3O;MT`N!?#)qnG3V{Yi?N%7#OGbZji^TW(j z&+%hh(}8{D)n}R!UT4GH0rH^M9Av+Ed-4Fz(tMD&OweSH;1*mCH{#u$J$8Y2xDoM< zS=71&Z?mOaxAxXT*-l5DN(6n|zKm-KJ*J=Sj)1X`yfE8;V1KKx(_y!}`GB7Ng0wB1 zZ(6vA@zDM&e_S_;^ABMk)M9%WfBiKPEki%s;{l@#nDet8%=8G4(K7#8A z*4}o{qB%4ap2E;?&41&W0sWcU@`?0x!pOl^=1shfHiJiXe!Yx>^qH5L5X1DYV}5<- z$v00Dw<1XYAaUu$J?)Q=Z9Q%N&))$ZFw6si`f+M&K&PQx^EXANWSp=>-eiO+h;l0`V2j!QIs#r20m$mUHUp%?~;`G{&g8C@$)T* zw*02~nwQ>Zj&geJbOjo-nP#0MPh5N`8RlH+>BwvVr!A6VF``%y1rEq5`kAclcIL!G z=kRu!HyZiTlQ9=R8;Lv82_rkYJ$KH%y(qU7Lw^@ixtj+jNzo-(1_nApm%w2QR?eO2%*M?>DrZr6!gdT2c{-iSL)QFMbs; z^m!<8wwH7En=|`pL))pDedtKKopV}VY!FWC`u|&`i(-Fjo?!-!{S7B!|5VzioLpX? zG{^1C`v1XsUGFz^@AZGN9_u#5*D~*G*bvlY%yQTe%^xz`{cZd*HpS`G?s*sm`2L2s z&3kd6+YVp*y(OpUkYi?HTwMFY@DPh}(Y`-3F20U&@dul3w?AST7c24=78x0x(iF1L z(^01stK-P%;%gik9kWw0=alA4hgWW7bcI7fA2(|cyCIZw#-dt)85$#FS>%nvk#YOT z_8~xE=rNYvEFvry#zhmJ19^J|qh$<1KuS_nwXT>lD~Ec5iF7<9s&nL$;miYW);kmo zhwOV@8jYeHSMs7cKCkFdoFAK1axku<=rO4NVnpsjO{vOxBBC6GiH~294h72QqUa}i z%BC|qodn89)E)8G1btM>vaAF2QLa6HbfJ&PZ*p)k$^T$rv+zq(@|S~}Dga9|GUt~D zmQ*=bQu+Kr!a3@w216;6w%FbQTh_!12UgjxItHcxn|QB$ZL<4TDri zNXm81EGku26jQ0np&PbR15-(#Fd?j?RfCXJ`&hYx&S;YS4?yyt3rmnTX!{nOf6dn6 zA)6Z5yz`JL`KtkeYq+n`0)SI1r|kf+O_e2CnE@PME^3-j$OB>ImP?gsILQ~_?5Y>N zR!{hG<0LO5y*Q4f#`kP(%prIUXfu2SIkSwvU}Sxk@pqVIR5G)S_me+v>;8MUjcwh^ zy#6~lo*3rNK>d7j#b+6d`_HxoO3%;d`pmMvG^+6vgKf;0nlNX8&8RW{$IJmmKs4{5Zt5EQ*+6jXN zZa-=h3#PxobWy--Va#x8CvRdt4HlyI8reca$DFAOu7?{samt^<3>~0yz(?KaD zdSp@Z*nM)?>9Qku%bkz;oI6=rx#L5q0`oajunE9S7sq_A;AI7Fj72b?D|jU^k1F?L ztOm?yVRH+6^uAkeN-q=fcae6 zv()1coVm6f=JUT&k2l|e9?!viel~Xaz%40)bNS&9@Od3h>B;c)tB*Z{9(g*zWZ{&S ztH)Oi^O;)co9Cj1U=)_XeEz7;6A3F%+>*NT$a8)x=JR9Ec0KiE7(DUx`~sryr@<3G zv|;5up~n)J4pCWsJW)G+A_?M(`I4CEmC-of5yCspHbPTMqWoTkdyKGlbOxTO81tDZ zo(6gYB*8o}}JCDwxj>!2`Hwm)+;IdtDC6?Gik4Q07BH!6^mZA(<%WWY^jo;+)<2%N@Bg-2Cke)uD@NkfpxwiAM?2qLaPf)ExQa?mL_-5%M;d!?g{`CNBj#p(^aXe>CNt{ADnoZ_?cc zEvDpO1oOGhZjIIEq!=76>!i3^H^{zZHOTf4TzTaAbMl-NhhUIR=Q%0%!yxO17F)SN z=7!SSa8f`&EU`8vHO~^v0^*J%m&3qj~?WYL=QlB$8QlD&i%)`@I;;n@lNeHed>U_Mt|*2nQYl>tG^D~|bGWz-=` z$uwhDBpZB7$Ne}qahfkQuK{-sZPYwqJw7^^&lQEIpeFUed?rqP|1E3FVLpfTZ0uL_ zFrQzWxaZt+3G?|6H-QeUn9ob))ZDqX4FP8PFrTURw?DA94CeETUx1w2{ITu1L9&Zs zK37SkCwh~u1L!C zC=zfLBXV5EvZ8W`6EzFYh}+vkz|_Toofi_^k!);@JhcE6))_2U)Fy${O&HvSIc;KQ z7YpAm0+U@b<@(8o)|Nw&{b$l<`u;Pc&16ty@7-o&zH8I9nG;DyT2N#)pvXFKmLkC_ zLy?6xWA{0PzYP>wEPk*w6j_Ys78F?;-J|o2?Q6?`B3q@vN7asNt)zAoSsIUDd1Ni~ zW#A0cW?-ZkiLUxuF}Hr>do&&&+?N@T4RrO7y>yA`$zKAxx)4r>Rn8UCrl;zNA?pMp zrCGSPmYiXsIDcdp^^|?xo z5iWvpc~3W+Ympz-EJl+24=g760s4HFjz9(J|9Y&RsLvIc*Mzw&Mq~c=MUk%BJB~W) zb9GLhbST+Z{YqX9)Mst3o0Vg-3U`Jy2UPh)TEmJpx~rg!GQJv6pX;q_FUk|pC2H}b zfHIBc#)f54ORF+BASP4Y?D<*RBame-iB|(@nOrpEgGU=xX*H!ERx!-yjg=*#7qL!e z^<#}?VX-`D29o@bK=Qu_Q&6qABhcpy?=yA&s$k$64(xiOJ};Ll({Ph7 zpgvchD{eJYjvF_58R^AwBsTv1I5Ml@`=rhA=~+;pBle@uU%=c`Apj<$G{#ef~ zC58Dh@1ZncpM8ob?TyGP76q){VOb&UvvajNG8fqWs5v}Mhk*t5naK5n^Xr-Yn9HXv zORgsD^L5+qCUSKWUep5Yb9~)DlqA<<-an_4tCm)#G&$j$bSxveTHJU=`{!5apNCsd zD2Mxes}A7w2KvXueLl4AynBa6Mt6@)46*rXwmtfC!<)7|6X<)wg3ez6TBx=WF-JqaThG;>BAxp3 zH8ri}B&I`3qGv`4$%(9q7Q=+UBu1mz6Df5@k~lFctF-!b_H;63mr|T@Q4a!0!rn9Q zYHP8sk>>{L&@QYD$MwVbMt|>!%VW`W>Z*$e1t0IY>at5N6FRZy5!{_TkH$7xpwOoY z>aeUECGfl|M+qA{85Jct)xn}1AnK4p>qvL7lSq%HC1X2SEu@IiL>(P(0CcZLQ! z*#3b_I@p2!(Se~$JJ<`a80uhmjScos;P2Q@{aPl)xC7Gy!$Uhe*wGymBg0p8;041w zI@ld!6C*oD$I1I%+S@$D?V8xxKgtac4zfLI3OwK>IT|gy%Amm;T$WxItmxYNno2n& zs?j-ayNu@OW>e{8GNB^0gRYFJa#&VX#Cc?bWV-?P74OEzdAjx0e9?up2yZ7z3o1ot zEC$|L=r40f5d?I&ZY6+f@IEuszL14@utcsWX6Xx^?^aR@eREXS_9oP6Ze*~#aJ^iAc{`@RCdRt@caO1nSoEt}GA1Uwz3kY)_WmxfzHm4dNqENz%!i>U(1s$RFh;@j zH6q4NL_}*~^Nt%)Bm-RX(3U4`y)V3MDhps+c0!$lKmqYU+UUImXT`B7(F>H=#pei0 zjfbY(Gx}T0%NGDmcW*qvV9Afm{>~Ht!0tTM^!bC=WB6K~dY>_! j<)*QBiBy+~s98A;u7Ju4HJy5nXGJKYihz|>H^luvrkebX literal 23691 zcmeHPYm6J!6~6ZFc7uxpXp0)!ppM+qrj5rtS zGxly!rJ|Okw7>X4Ren$uDkOpw6~vE%kXjZI2_#wxC{&@UXo#ppTZum)3RO#b?u=hM z_S#wRZj->QH0ycZxpU6B=bp!R&l@j3{iq!cqUPTqvcbW~A3nM3^oSFEVF>9PdNq~J zW{v+lPy!8pJpAk!+IK_p!814ScAU9+Nft(1ykB8p!R@1AP``^6dQ0l=1P6H>U2z|#icO8ur%w(JtFETSY2%%8M2OZD)15AMR@xiR04p14<*ulrB6CGC z=GriSTy8~F%OzQbhw(mFD8^hpx$1JuC7IVBAtd;qoFZw*$+A+?L|zjGXrWAUs#@a7 zbxyWrg=h z>Y~B{wLC>`(dlqHuvUEF%TDw*s7Sn-wW94+T`S&qV)@L?PGR-5_q!J_UblPo)8~G- zbX52&8n8Wu&|~j|g2f8gV?(x6tH|cY4I$e{55HxTUx%IHF@#9q6rZJarkOhufx#JJ z0zh#59I_3<{RI3v;P+aD_B;vucD%2*i)=R<=doJ1?STEScWE2JJ$vAu-JK`^*KUDp zuDq&x{T;gok0aYx*MHuA$Ex1fJx_LS-(G_2*BjpeO(FYHI3CBxeQ9&t1axQ&q0ojk z4LpdsO?}IWb^_(_*2ZmQaQozb%xTQ=>vmtfh`IgZ6JI%q2GDtgPW__EZS?Bc_H+B& z@U;YdbgMLc2hM?H48I2F&C<||o9jvgrVbi)q7z^t;LS{(p=HBD_~0pQ9l$1!oEy0? z#G5Pxb$vmH;UA*vCP4=Sp^F?Fnq#fKK(5f`e2^@Ld@H^Vt+lI?wU1loMw_|8TINP4 zo7OTnt`>8nm+~=ekE_f;`S_?4RqaUM%u3mwH6&trwGyKNUn&e`V>s`+6AxF^KC z%+-v1QP`w|vcBJQ1-fav^HbJOV;GNZqrnB`|Y=r z*gXS}P2$0BZFpxbj*{7$Y$&UMmBxX8&Y`iXNGC8+X1G*S=;-T6hcJA2tjm}!hTJa zD@i`ezuk#ez-+{uSw4mq4Ead9T7yeNM@*(8_93<{xa3!SnF>WQxgah0Y45^EWJ1eoGHqde}-Ul(!?Tfc0?Cv_iF(R+z1)74G~|`in+d;gwIDf#x-7 zgyqUcp+b-Svx$mS0(h9S! zX@$WX{_!}Z6+TAjrN^7xM(>R^(+bM(~~hT zpWBK41^y!5%v2ltyWul_5I159wRFRqCZDm(E4Dh_kQWz@7fAJZC130iN$TmtTMnoh z-EbMx4VK|!89rB|;nPdqU6l!rXFb=U?*W1WZ{}%WaK@MhK76Y+!7&(ahL*h)MI1h` z*|Y}WqWS~w0J1F}5eQQS9C-xbZzTobPCOt0t6ZTX#*%a1 z044I2AY>^fB9ZH3RP% zy5_dWTGLnqZ&~ zht>DA6LpMztChJHzI4R_@v%~VAU$B=-1=YS)D>a0RsPuaK(4P8921s8>d%8#OnU20 zgUz}D-6AAgx#I3Jng&)(+KNeAG3hH{RiHHueD1Na)-+&YW38p$8(Ql9ne<6_y*-G$ zu;K-8=5&Gm8wRfD#4f<}$QavGM{&J?{(Bk?*dd+y%EczG$M)eWvXK}dglvKLV&iB3 z2|GH9s|)EOG{r`O0BG$O#nq*4+>tI=p6254E?A&$i^DJLV(*P$k>K9!YIC7Fu*hCE z9c%X@1T4@Op?^;FnJ2Ca6`&NntqADsX6e}TOgp2l2 zE<%*~k^l)%d}4lXnq*!3;?d-xbh?sJc||JY$|mt>N|CCN!%R-aH(Wd*I@)|VT1(=l zlu}kIh|q2&Q;_(ifLG~h$Kl2GJ##iGI@-7d4Vs=ZA2)8@c+R=&dlD;900vVp9!*2u zSQL`efIZMKRidM&GttqOyGPC6Z9X=C!33u$z?7sc;KhshjdXOh{bZ9~ebt2M`mt?& z9yLn^3`&r%m3tAo)fnCV%PAi1sXap$l*NLw;9@uCCBhbz1(dH|c}EB4Ml2{xtbZsA z);0NE!{|A%OYvs5EbM0tD9eFA)mGffP|odw{ULy|%ul2zXOj~N!aO~7sm#&~VxcY4 z0fC{ZP)@5d{;GFTWm;F)n%`8f%2r-reJxeld=xCv*Q>I%J+Lt}*Q<2%+M|LQIJ zg0P&DXT1TD33&ZMI>az6Lj(9J%LxGn5^(>wiff4~*acxi5p&Sd_Udc+RDZxjTrsRe zX)_(wBI4R+WZi`53~y`A4sITUwqDh(uIssR2`((jEHRAEg7u6yvn1PoV@UGB-x~l> zs4Z{-Y76|TD=2H@Vz8DEU7RLec>&>D0h=ayY%4ccgK)M#64{2M|u zdZ|6V)TG%+Z~wA2Ge}c=wWNdUl)ZFy(5D=PLO#Oid!t@uXKuGLud}M_A{1>UHM{V} zm}J+MydtGcJ|vJKKfU0KD7fyRxdapg#SvRIR;vd^rZt$s!vv@+sEA_1JY%@*MsTPc zsODOI5(9_I&#CulGy89osauQV3&HC0f$`ZR)dlYRiSaDdS=?qEs#%N!ftF&Kb5QXR zKD%57H&1tDMnRiPP=<3aIHOpHt?^1@x=*?>T?7B|`N_3iz#y0FCcsqW<;?m*ALG>12{TC_b;o9bY#gI62Q!RX|fnDF4%ECf~jo_E9g2MH-g1-|AZ4g0vyDfnT_ZH zosIXcPC#6EO&Q7JqaWB{y=NJgNamYSJ#;t3VRzw%5PJIjUx;7BzFyc9mvW>#*9^t? zc8%ROqIfq!Z+EG-o<%R8f8E^McZtVo=z*=O0$6xwd!8w!#8+|d%I`0x8$8XV~!`k^Mey_8ohn#iO#(xBFCP3ZC`6|yF~pjski?F3S%@j diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 99b9b25..3e5b77a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -1,25 +1,36 @@ /** - * @author STF 370 + * @author STF 370, TTF006; * @version $Id: $ * @desc This module provides common function for TestCoordinator component. */ module AtsImsIot_Functions { - - import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; } - import from AtsImsIot_TestSystem all; - import from LibSip_SIPTypesAndValues all; - import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } - import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } - import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter;} + + //LibDiameter + import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} + + //LibSip + import from LibSip_SIPTypesAndValues all; + + //LibIms import from LibIms_UpperTester all; - import from LibUpperTester all; + + //LibIot + import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } + import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } - import from LibIot_Functions { function f_getE2EVerdict; } + import from LibIot_Functions { function f_getE2EVerdict; } import from LibIot_TypesAndValues { type DefaultList, MonitorInterfaceInfo; } - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} - import from LibIot_VxLTE_Functions {function f_SipMonitorInterface_available,f_DiameterMonitorInterface_available;} + + //LibUpperTester + import from LibUpperTester all; + + //AtsImsIot + import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; } + import from AtsImsIot_TestSystem all; + import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter;} + group ue { @@ -2103,7 +2114,7 @@ module AtsImsIot_Functions { var integer v_size := lengthof(PX_IMS_USER_DATA); const ImsUserInfo c_dummyInfo := { "dummy", "dummy", "dummy", "dummy", "dummy" }; var ImsUserIdentity v_userid; - + for(var integer i := 0; i < v_size; i := i+1) { if(PX_IMS_USER_DATA[i].productIndex == p_productIdx) { var integer v_size_j := lengthof(PX_IMS_USER_DATA[i].userIds); @@ -2632,8 +2643,29 @@ module AtsImsIot_Functions { } } } - } - } + } //end f_receiveDiameterMsg + + /** + * @desc + * This function returns correct cx interface monitor in case of single Cx interface connection or + * set cxIH Interface monitor in case of two Cx interface connections. + * If single is set to true then only CxSH monitor is enabled. If single is set to false this monitor is set to CxIH monitor. + * @param p_singleCxInterface true - only one interface Cx with IH-SH/false - two separate interfaces one for SH(S-CSCF HSS) and another for IH(I-CSCF HSS) + */ + function f_getCxInterface(boolean p_singleCxInterface) runs on ImsTestCoordinator system IotSystemInterface return DiameterInterfaceMonitor { + var DiameterInterfaceMonitor v_diameterInterfaceMonitor; + if (p_singleCxInterface) + { + v_diameterInterfaceMonitor := vc_vxlte_monitor_components.cxSH + } + else + { + v_diameterInterfaceMonitor := vc_vxlte_monitor_components.cxIH + } + return v_diameterInterfaceMonitor; + } + + } //end group diameterComponent group sgiComponent { /** @@ -2690,6 +2722,26 @@ module AtsImsIot_Functions { } } } + /** + * @desc + * This function waits for a Diameter message send from a given monitor + * component to mtc. + * @param p_monitor Reference of Interface Monitor component + * @param p_msg The Diameter message + */ + function f_getDiameterMsgFromMonitor(InterfaceMonitor p_monitor, out DIAMETER_MSG p_msg) runs on ImsTestCoordinator { + timer t_local := PX_MAX_MSG_WAIT; + t_local.start; + alt { + []icpPort.receive (DIAMETER_MSG:?) /*from p_monitor*/ -> value p_msg { + t_local.stop; + setverdict(pass, self, "***f_getDiameterMsgFromMonitor: DIAMETER message received***"); + } + []t_local.timeout { + setverdict(fail, self, "***f_getDiameterMsgFromMonitor: DIAMETER message not received***"); + } + } + } } group altsteps { @@ -2977,7 +3029,7 @@ module AtsImsIot_Functions { * allows read access to the top element of incoming port queues * without removing the top element from the queue. */ - function f_imsIot_receive( + function f_imsIot_receive( // FIXME To be removed in template SipMessageList p_passCriteria, in template SipMessageList p_failCriteria, in template SkipType p_skip, @@ -3021,7 +3073,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); * @param p_tpId The Test Purpose identifier * @param p_skipCount Indicate how many messages should be skipped prior to checking */ - function f_gen_receive( + function f_gen_receive( // FIXME To be removed in charstring p_tpId, in template SkipType p_skip ) runs on ImsInterfaceMonitor { @@ -3122,7 +3174,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); any of the expcted messages * @param p_tpId Test Purpose identifir */ - function f_activateImsSipDefaults( + function f_activateImsSipDefaults( // FIXME To be removed inout DefaultList p_default, in integer p_startIdx, in template SipMessageList p_list, @@ -3174,17 +3226,19 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); for (var integer i := 0; i < v_size; i := i + 1) { if (ischosen(p_list[i].request)) { + //log ("### f_activateImsSipDefaults: Adding ", p_list[i].request); p_default[v_idx] := activate( a_receive_sip_Request(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) ); } else { + //log ("### f_activateImsSipDefaults: Adding ", p_list[i].response); p_default[v_idx] := activate( a_receive_sip_Response(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) ); } v_idx := v_idx + 1; } -//log ("### f_activateImsSipDefaults: ended"); + //log ("### f_activateImsSipDefaults: ended"); } /** @@ -3286,8 +3340,8 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); var integer i := 0; var integer v_size_ai := lengthof(PX_AVAILABLE_INTERFACES); - log ("### f_Iot_Sip_receive: passCriteria=", p_passCriteria); - log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); + //log ("### f_Iot_Sip_receive: passCriteria=", p_passCriteria); + //log ("### f_Iot_Sip_receive: failCriteria=", p_failCriteria); // check if interface is available if(not((isvalue(vc_Interface)) /*and (vc_interfaceName=="")*/)){ @@ -3302,25 +3356,8 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria); deactivate(v_defaultArray[i]); } - } + } -// for(i := 0; i < v_size_ai; i := i+1) { -// if (PX_AVAILABLE_INTERFACES[i].interfaceName == vc_interfaceName) { -// if (PX_AVAILABLE_INTERFACES[i].available == false) { -// setverdict(inconc, self, "******f_imsIot_receive: Interface " & PX_AVAILABLE_INTERFACES[i].interfaceName & " not available and is not evaluated******" ); -// } else { // Interface is available -// v_defaultArray[0] := activate(a_default(p_tpId)); -// f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); -// f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); -// f_gen_receive(p_tpId, p_skip); -// -// for (i := 0; i < lengthof(v_defaultArray); i := i + 1) { -// deactivate(v_defaultArray[i]); -// } -// } -// break; // Exit loop -// } -// } // 'for' loop } /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index f656acd..f28127a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -46,8 +46,8 @@ module AtsImsIot_TD_REG{ testcase TC_VxLTE_INT_REG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, @@ -67,24 +67,29 @@ module AtsImsIot_TD_REG{ // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - + // Test body f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 - f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); // Event 2, 9 - f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, false); // Event 5, 8 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); // Event 2, 9 + f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); // Event 2, 9 + // FIXME Not on the PCAP traces + // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 - f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH, false);// Event 3, 4 + f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false);// Event 3, 4 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 6, 7 f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 20 - f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 19 - f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false); // Event 15, 18 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPI, false); // Events 12, 19 + f_mtc_check_TP_MW_SCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Event 2, 9 + // FIXME Not on the PCAP traces + // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 18 - f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH, false);// Event 13, 14 + f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false);// Event 13, 14 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 16, 17 - f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 - f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 22, 23 + // FIXME TD_VxLTE_INT_REG_01 indictes a SUBSCRIBE, we have an INVITE in log, do we have to change the TD_VxLTE_INT_REG_01 + //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 + //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 22, 23 f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx, false);// Event 25 f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx, false); // Event 26 @@ -112,7 +117,7 @@ module AtsImsIot_TD_REG{ testcase TC_VxLTE_INT_REG_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD @@ -138,7 +143,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, true); // Event 2, 5 f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5 - f_mtc_check_TP_CX_HSS_UAA_03(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 f_mtc_check_TP_RX_PCSCF_AAR_02(vc_vxlte_monitor_components.rx);// Event 7 @@ -179,36 +184,36 @@ module AtsImsIot_TD_REG{ PX_SIP_ISC_INTERFACENAME})) { f_cf_createVxLteMonitor(); - + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_VxLteMonitor_Up(); - + // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - + // test body - f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 + f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, true); // Events 1, 10 f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, true); // Event 2, 9 f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 - f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 - f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 24 - f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Events 12, 23 - f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, false); // Event 15, 22 + f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, true); // Events 11, 24 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, true); // Events 12, 23 + f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 22 - f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 13, 14 + f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 13, 14 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 16, 17 - f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 18, 21 + f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, true); // Event 18, 21 - f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 25, 28 - f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 26, 27 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, true); // Events 25, 28 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, true); // Events 26, 27 f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 29 f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 30 @@ -273,7 +278,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10 - f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6//may be removed because in other network + f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6//may be removed because in other network f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9//may be removed because in other network f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 28 @@ -281,7 +286,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 26 f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 24 - f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 19, 20 + f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23 f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 29, 36 @@ -344,7 +349,7 @@ module AtsImsIot_TD_REG{ //f_mtc_check_TP_IC_IBCF_REGISTER_0X(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 //Check during validation if TD and TP need to be written in TD document because Ic interface f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5 - f_mtc_check_TP_CX_HSS_UAA_03(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 f_mtc_check_TP_RX_PCSCF_AAR_02(vc_vxlte_monitor_components.rx);// Event 7 @@ -402,7 +407,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12 f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10 - f_mtc_check_TP_CX_HSS_UAA_01(vc_vxlte_monitor_components.cxIH);// Event 5, 6 + f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9 f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32 @@ -410,7 +415,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 30 f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 28 - f_mtc_check_TP_CX_HSS_UAA_02(vc_vxlte_monitor_components.cxIH);// Event 19, 20 + f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23 f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 24, 27 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index 6b40b01..1a36e95 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -1,5 +1,5 @@ /* - * @author STF 574 + * @author STF 574, TTF006 * @version $Id$ * @desc This module provides the TP behaviour functions at CX interface */ @@ -7,22 +7,23 @@ module AtsImsIot_TP_behavior_CX { - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + // LibDiameter + import from LibDiameter_Templates all; + import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; + + // LibIot import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - - import from AtsImsIot_Functions all; import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - import from AtsImsIot_Diameter_Templates all; - // LibDiameter - import from LibDiameter_Templates all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; - + // AtsImsIot + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from AtsImsIot_Functions all; + import from AtsImsIot_Diameter_Templates all; + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } group g_HSS { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index b6c638e..b7628f7 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -26,6 +26,7 @@ module AtsImsIot_TP_behavior_GM { // AtsImsIot import from AtsImsIot_TestSystem all; import from AtsImsIot_Templates all; + import from AtsImsIot_Templates_GM all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; @@ -74,23 +75,38 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_MESSAGE_01( - SipInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mdw_MESSAGE_1500c), - mw_SipResponse(mw_200OK_Base) - }, // FIXME CallId and more can be checked - { mw_SipRequest(mw_MESSAGE_Request_Base) }, - {0, omit}, - "TP_GM_PCSCF_MESSAGE_01", - false, - false - )); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)) { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_MESSAGE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { }, + {0, omit}, + "TP_GM_PCSCF_MESSAGE_01 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_MESSAGE_01 } // End of group imsMessages @@ -148,24 +164,58 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_REGISTER_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_401Unauthorized_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_REGISTER_01( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_01 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 401 Unauthorized response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_401Unauthorized(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_401Unauthorized_Base), + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_01 - 401 Unauthorized", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_01 /** @@ -221,22 +271,58 @@ module AtsImsIot_TP_behavior_GM { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME - }, - {}, - {0, omit}, - "TP_GM_PCSCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_02 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_02 - 200 OK", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_02 /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn index 9141754..e6efe52 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -26,6 +26,7 @@ module AtsImsIot_TP_behavior_MW_IS { // AtsImsIot import from AtsImsIot_TestSystem all; import from AtsImsIot_Templates all; + import from AtsImsIot_Templates_MW all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; @@ -55,24 +56,38 @@ module AtsImsIot_TP_behavior_MW_IS { * } */ function f_mtc_check_TP_MW_ICSCF_MESSAGE_01( - SipInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mdw_MESSAGE_1500c), - mw_SipResponse(mw_200OK_Base) - }, // FIXME CallId and more can be checked - { mw_SipRequest(mw_MESSAGE_Request_Base) }, - {0, omit}, - "TP_MW_ICSCF_MESSAGE_01", - false, - false - )); - p_monitorCompRef.done; - } - + if (isvalue(p_monitorCompRef)) { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_MW_ICSCF_MESSAGE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { }, + {0, omit}, + "TP_MW_ICSCF_MESSAGE_01 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } } // End of group imsMessages // 5.2 IMS Registration @@ -121,50 +136,56 @@ module AtsImsIot_TP_behavior_MW_IS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ -// p_monitorCompRef.start( -// f_Iot_Sip_receive( -// { -// mw_SipRequest(mw_REGISTER_Request_Base),//Updated line 23.3.2021 - TODO -// mw_SipResponse(mw_401Unauthorized_Base) -// }, -// {}, -// {0, omit}, -// "TP_MW_ICSCF_REGISTER_01", -// false, -// p_checkMessage -// ) -// ); -// p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {}, - {0, omit}, - "TP_MW_ICSCF_REGISTER_01 - REQ", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipResponse(mw_401Unauthorized_Base) - }, - {}, - {0, omit}, - "TP_MW_ICSCF_REGISTER_01 - RESP", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_ICSCF_REGISTER_01( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_01 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 401 Unauthorized response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_401Unauthorized(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_401Unauthorized_Base), + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_01 - 401 Unauthorized", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_01 /** @@ -220,22 +241,61 @@ module AtsImsIot_TP_behavior_MW_IS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME - }, - {}, - {0, omit}, - "TP_MW_ICSCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_ICSCF_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_02 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq, + ?, // UE URI + mw_contact(mw_ContactAddress), + ? //FIXME ? + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_02 - 200 OK", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02 function f_mtc_check_TP_MW_ICSCF_REGISTER_03( // FIXME RMI To be reviewed diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index bcd50d5..9f96e39 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -25,6 +25,7 @@ module AtsImsIot_TP_behavior_MW_PS { import from LibMsrp_Templates all; // AtsImsIot import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates_MW all; import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; @@ -67,23 +68,38 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_MESSAGE_01( - SipInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mdw_MESSAGE_1500c), - mw_SipResponse(mw_200OK_Base) - }, // FIXME CallId and more can be checked - { mw_SipRequest(mw_MESSAGE_Request_Base) }, - {0, omit}, - "TP_MW_PCSCF_MESSAGE_01", - false, - false - )); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)) { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_MESSAGE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { }, + {0, omit}, + "TP_MW_PCSCF_MESSAGE_01 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_MESSAGE_01 } // End of group imsMessages @@ -143,23 +159,57 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_REGISTER_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_401Unauthorized_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check first REGISTER request + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_REGISTER_01( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_01 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 401 Unauthorized response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_401Unauthorized(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_401Unauthorized_Base), + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_01 - 401 Unauthorized", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_01 @@ -233,22 +283,61 @@ module AtsImsIot_TP_behavior_MW_PS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME - }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the second REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_02 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check the second REGISTER response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq, + ?, // UE URI + mw_contact(mw_ContactAddress), + ? //FIXME SUT S-CSCF? + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_02 - 200 Okay", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_02 /** @@ -540,22 +629,36 @@ module AtsImsIot_TP_behavior_MW_PS { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_SUBSCRIBE_Request_Base), - mw_SipResponse (mw_200OK_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_SUBSCRIBE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)) { + // Check the SUBSCRIBE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_SUBSCRIBE_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Check SUBSCRIBE 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_01 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01 function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index 18321d4..6304f9a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -26,6 +26,7 @@ module AtsImsIot_TP_behavior_MW_SI { // AtsImsIot import from AtsImsIot_TestSystem all; import from AtsImsIot_Templates all; + import from AtsImsIot_Templates_MW all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; @@ -55,23 +56,39 @@ module AtsImsIot_TP_behavior_MW_SI { * } */ function f_mtc_check_TP_MW_SCSCF_MESSAGE_01( - SipInterfaceMonitor p_monitorCompRef + SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mdw_MESSAGE_1500c), - mw_SipResponse(mw_200OK_Base) - }, // FIXME CallId and more can be checked - { mw_SipRequest(mw_MESSAGE_Request_Base) }, - {0, omit}, - "TP_MW_SCSCF_MESSAGE_01", - false, - false - )); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)) { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mdw_MESSAGE_1500c) + }, // FIXME CallId and more can be checked + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_MW_SCSCF_MESSAGE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK_Base) + }, // FIXME CallId and more can be checked + { }, + {0, omit}, + "TP_MW_SCSCF_MESSAGE_01 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } } // End of group imsMessages @@ -119,21 +136,58 @@ module AtsImsIot_TP_behavior_MW_SI { */ function f_mtc_check_TP_MW_SCSCF_REGISTER_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipResponse(mw_401Unauthorized_Base) - }, - {}, - {0, omit}, - "TP_MW_SCSCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_SCSCF_REGISTER_01( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_SCSCF_REGISTER_01 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 401 Unauthorized response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_401Unauthorized(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_401Unauthorized_Base), + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_SCSCF_REGISTER_01 - 401 Unauthorized", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_01 /** @@ -189,20 +243,61 @@ module AtsImsIot_TP_behavior_MW_SI { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_Response_200onREGISTER_IMS(?,?,?,?,?)) //FIXME - }, - {}, - {0, omit}, - "TP_MW_SCSCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_SCSCF_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_SCSCF_REGISTER_02 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq, + ?, // UE URI + mw_contact(mw_ContactAddress), + ? //FIXME SUT S-CSCF? + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_SCSCF_REGISTER_02 - 200 OK", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_02 } // End of group imsRegistration @@ -351,20 +446,36 @@ module AtsImsIot_TP_behavior_MW_SI { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_SUBSCRIBE_Request_Base), - mw_SipResponse (mw_200OK_Base) - }, - {}, - {0, omit}, - "TP_MW_SCSCF_SUBSCRIBE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the SUBSCRIBE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_SUBSCRIBE_Request_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_SUBSCRIBE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Check SUBSCRIBE 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse (mw_200OK_Base) + }, + {}, + {0, omit}, + "TP_MW_SCSCF_SUBSCRIBE_01 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_SCSCF_SUBSCRIBE_01 } // End of group imsSubscribe diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn index 2e9bd42..609aac9 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn @@ -408,7 +408,7 @@ module AtsImsIot_Templates { */ template Response mdw_TP_IMS_5089_01_ic modifies mw_401Unauthorized_Base := { msgHeader := { - wwwAuthenticate := mw_WwwAuthenticate + wwwAuthenticate := mw_WwwAuthenticate_AKA } } @@ -2237,7 +2237,7 @@ module AtsImsIot_Templates { {nameAddr := ?, genericParams := p_SemicolonParam_List}, * } } - template WwwAuthenticate mw_WwwAuthenticate := { + template WwwAuthenticate mw_WwwAuthenticate_AKA := { fieldName := WWW_AUTHENTICATE_E, challenge := { digestCln := { //{id := "username", paramValue := ?}, @@ -2263,6 +2263,18 @@ module AtsImsIot_Templates { {id := "algorithm", paramValue := { quotedString := "MD5" }}, *} + } + } + + template WwwAuthenticate mw_WwwAuthenticate := { + fieldName := WWW_AUTHENTICATE_E, + challenge := { + digestCln := { //{id := "username", paramValue := ?}, + {id := "realm", paramValue := ?}, // TODO containing operator ID + {id := "nonce", paramValue := ?}, + {id := "qop", paramValue := ?}, + *} + } } // template diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 new file mode 100644 index 0000000..59c7e54 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 @@ -0,0 +1,103 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides TP related templates used at MW interface + */ +module AtsImsIot_Templates_GM { + + // LibCommon + //import from LibCommon_BasicTypesAndValues all; + //import from LibCommon_VerdictControl all; + + // libSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + + // LibIms + import from LibIms_Templates all; + + //import from LibMsrp_TypesAndValues all; + + // LibIot + //import from LibIot_TypesAndValues all; + import from LibIot_PIXITS all; + + // AtsImsIot + //import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_PIXITS all; + import from AtsImsIot_Templates all; + + group sip_templates { + + template(present) From mw_From_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := FROM_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + fromParams := * + } // End of template mw_From_AddrUnion_SipUrl + + template(present) To mw_To_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := TO_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + toParams := * + } // End of template mw_To_AddrUnion_SipUrl + + } // End of group sip_templates + + group g_gmA { + + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_GM_PCSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_GM_PCSCF_REGISTER_02 + + template Response mw_401Unauthorized( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_401Unauthorized_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_401Unauthorized + + } // End of group g_gmA + +} // End of module AtsImsIot_Templates_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index fa0d816..8ba7622 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -3,7 +3,6 @@ * @version $Id$ * @desc This module provides TP related templates used at IC interface */ - module AtsImsIot_Templates_IC { @@ -58,7 +57,7 @@ module AtsImsIot_Templates_IC import from AtsImsIot_Templates { template mdw_2XX_Base, mw_180Ringing_Base, mw_200OK_Base, mw_PChargingVector, mw_SIP_URI_Base, mw_TEL_URI_Base, - mw_credentialIntegrityNo, mw_401Unauthorized_Base, mw_WwwAuthenticate, mw_PathDef, mw_ServiceRoute, mdw_4XX_Base + mw_credentialIntegrityNo, mw_401Unauthorized_Base, mw_WwwAuthenticate_AKA, mw_PathDef, mw_ServiceRoute, mdw_4XX_Base }; group g_IBCF { @@ -533,7 +532,7 @@ module AtsImsIot_Templates_IC */ template Response mdw_TP_IC_IBCF_REGISTER401_01 modifies mw_401Unauthorized_Base := { msgHeader := { - wwwAuthenticate := mw_WwwAuthenticate + wwwAuthenticate := mw_WwwAuthenticate_AKA } } diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 new file mode 100644 index 0000000..49bc10e --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 @@ -0,0 +1,200 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides TP related templates used at MW interface + */ +module AtsImsIot_Templates_MW { + + // LibCommon + //import from LibCommon_BasicTypesAndValues all; + //import from LibCommon_VerdictControl all; + + // libSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + + // LibIms + import from LibIms_Templates all; + + //import from LibMsrp_TypesAndValues all; + + // LibIot + //import from LibIot_TypesAndValues all; + import from LibIot_PIXITS all; + + // AtsImsIot + //import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_PIXITS all; + import from AtsImsIot_Templates all; + + group sip_templates { + + template(present) From mw_From_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := FROM_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + fromParams := * + } // End of template mw_From_AddrUnion_SipUrl + + template(present) To mw_To_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := TO_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + toParams := * + } // End of template mw_To_AddrUnion_SipUrl + + template (present) Contact mw_contact( + template (present) ContactAddress p_contactAddresses := ? + ) := { + fieldName := CONTACT_E, + contactBody := { contactAddresses := { p_contactAddresses } } + } // End of template mw_Contact + + } // End of group sip_templates + + group g_pcscf { + + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_PCSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_PCSCF_REGISTER_02 + + template Response mw_401Unauthorized( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_401Unauthorized_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_401Unauthorized + + } // End of group g_pcscf + + group g_scscf { + + template(present) REGISTER_Request mw_TP_MW_SCSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_SCSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_MW_SCSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_MW_SCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_SCSCF_REGISTER_02 + + } // End of group g_scscf + + group g_icscf { + + template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_ICSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_MW_ICSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_ICSCF_REGISTER_02 + + } // End of group g_icscf + +} // End of module AtsImsIot_Templates_MW \ No newline at end of file diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn index 53fd922..f94b965 100644 --- a/ttcn/LibIot/LibIot_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_PIXITS.ttcn @@ -1,6 +1,6 @@ /* - * @author STF 370 - * @version $Id: LibIot_PIXITS.ttcn 277 2009-06-16 15:06:42Z pintar $ + * @author STF370 + * @version $Id: LibIot_PIXITS.ttcn $ * @desc This module provides PIXIT parameters which need to be * changeable within validation */ @@ -374,791 +374,6 @@ module LibIot_PIXITS { } // group adapterGlobalConfiguration -//TODO: remove at end of validation phase -// group VxLTEMonitorInterfaces_As_structure{ -// group EPC{ -// group Diameter{ -// -// modulepar MonitorInterfaceInfo PX_MonIntf_S6a := -// { -// interfaceName := "S6a", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "mme.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_S9 := -// { -// interfaceName := "S9", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "hpcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "vpcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Gx := -// { -// interfaceName := "Gx", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pgw.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "pcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// }//end group Diameter -// } // end group EPC -// group IMS{ -// group Sip{ -// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := -// { -// interfaceName := "Gm A", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := omit, -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := -// { -// interfaceName := "Gm B", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := omit, -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Ic := -// { -// interfaceName := "Ic", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "ibcfa.imsa.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "ibcfb.imsb.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := -// { -// interfaceName := "Mw PI", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := -// { -// interfaceName := "Mw PS", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := -// { -// interfaceName := "Mw SI", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Isc := -// { -// interfaceName := "Isc", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "as.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := -// { -// interfaceName := "Mw PB", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "ibcf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := -// { -// interfaceName := "Mw IB", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "ibcf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// -// }//end group Sip -// group Diameter{ -// modulepar MonitorInterfaceInfo PX_MonIntf_Rx := -// { -// interfaceName := "Rx", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "pcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := -// { -// interfaceName := "Cx IH", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := -// { -// interfaceName := "Cx SH", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Sh := -// { -// interfaceName := "Sh", -// //available := true, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// -// -// }//end group Diameter -// } -// -// }// end VxLTEMonitorInterfaces_As_structure -//remove at end of validation phase -// group VxLTEMonitorInterfaces_As_pixits{ -// -// group Sip{ -// //A.8.2 PIXIT items for the Gm Interface -// //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. -// group GmA{ -// modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE -// modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE -// modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF -// modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; // Gm Port number of P-CSCF -// modulepar boolean PX_SIP_GMA_MONITORENABLED := true; -// }//end group GmA -// -// //A.8.2 PIXIT items for the Gm Interface -// //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. -// group GmB{ -// modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE -// modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE -// modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF -// modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; // Gm Port number of P-CSCF -// modulepar boolean PX_SIP_GMB_MONITORENABLED := true; -// }//end group GmB -// -// //A.8.3 PIXIT items for the Ic Interface -// //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. -// group Ic{ -// modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network A -// modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A -// modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network B -// modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; // Ic Port number of IBCF of network B -// modulepar boolean PX_SIP_IC_MONITORENABLED := true; -// }//end group Ic -// -// //A.8.4 PIXIT items for the Mw Interface -// //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. -// group Mw{ -// modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of P-CSCF -// modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060;// Mw Port number of P-CSCF -// modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of I-CSCF -// modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080;// Mw Port number of I-CSCF -// modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of S-CSCF -// modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090;// Mw Port number of S-CSCF -// modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of IBCF -// modulepar integer PX_SIP_MW_IBCF_PORT := 5050;// Mw Port number of IBCF -// modulepar boolean PX_SIP_MW_MONITORENABLED := true; -// }//end group Mw -// -// //A.8.* PIXIT items for the Isc Interface -// //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. -// group Isc{ -// modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF -// modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF -// modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS -// modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS -// modulepar boolean PX_SIP_ISC_MONITORENABLED := true; -// }//end group Isc -// }//end group SIp -// -// group Diameter{ -// //A.8.5 PIXIT items for the Cx Interface -// //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. -// group Cx{ -// modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Charstring Cx IP address of I-CSCF -// modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868;// Cx Port number of I-CSCF -// modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of S-CSCF -// modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868;// Cx Port number of S-CSCF -// modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of HSS -// modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868;// Cx Port number of HSS -// modulepar boolean PX_DIAMETER_CX_MONITORENABLED := true; -// }//end group Cx -// -// //A.8.6 PIXIT items for the Gx Interface -// //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. -// group Gx{ -// modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PCRF -// modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868;// Gx Port number of PCRF -// modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PGW -// modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868;// Gx Port number of PGW -// modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; -// }//end group Gx -// -// //A.8.7 PIXIT items for the Rx Interface -// //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. -// group Rx{ -// modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of P-CSCF -// modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868;// Rx Port number of P-CSCF -// modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of PCRF -// modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868;// Rx Port number of PCRF -// modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; -// }//end group Rx -// -// //A.8.8 PIXIT items for the S6a Interface -// //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. -// group S6a{ -// modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of MME -// modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868;// S6a Port number of MME -// modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of HSS -// modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868;// S6a Port number of HSS -// modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; -// }//end group S6a -// -// //A.8.9 PIXIT items for the S9 Interface -// //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. -// group S9{ -// modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of H-PCRF -// modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868;// S9 Port number of H-PCRF -// modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of V-PCRF -// modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868;// S9 Port number of V-PCRF -// modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; -// }//end group S9 -// -// //A.8.10 PIXIT items for the Sh Interface -// //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. -// group Sh{ -// modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of AS -// modulepar integer PX_DIAMETER_SH_AS_PORT := 3868;// Sh Port number of AS -// modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of HSS -// modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868;// Sh Port number of HSS -// modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; -// }//end group Sh -// }//end group Diameter -// -// //A.8.11 PIXIT items for the RTP Interface -// //In the context of the present document RTP is only considered end-to-end between two UEs. -// -// }//end group VxLTEMonitorInterfaces_As_pixits -// remove at end of validation phase -// group VxLTEMonitorInterfaces_Templates{ -// group EPC{ -// group Diameter{ -// template MonitorInterfaceInfo m_MonIntf_Diameter_S6a := -// { -// interfaceName := "S6a", -// //available := PX_DIAMETER_S6A_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "mme.epc.domain",//TODO: define as PIXIT -// IpAddress := PX_DIAMETER_S6A_MME_IPADDR, -// portNumbers := {PX_DIAMETER_S6A_MME_PORT} -// }, -// { -// domainName := "hss.epc.domain", -// IpAddress := PX_DIAMETER_S6A_HSS_IPADDR, -// portNumbers := {PX_DIAMETER_S6A_HSS_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Diameter_S9 := -// { -// interfaceName := "S9", -// //available := PX_DIAMETER_S9_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "hpcrf.epc.domain", -// IpAddress := PX_DIAMETER_S9_H_PCRF_IPADDR, -// portNumbers := {PX_DIAMETER_S9_H_PCRF_PORT} -// }, -// { -// domainName := "vpcrf.epc.domain", -// IpAddress := PX_DIAMETER_S9_V_PCRF_IPADDR, -// portNumbers := {PX_DIAMETER_S9_V_PCRF_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Diameter_Gx := -// { -// interfaceName := "Gx", -// //available := PX_DIAMETER_GX_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcrf.epc.domain", -// IpAddress := PX_DIAMETER_GX_PCRF_IPADDR, -// portNumbers := {PX_DIAMETER_GX_PCRF_PORT} -// }, -// { -// domainName := "pgw.epc.domain", -// IpAddress := PX_DIAMETER_GX_PGW_IPADDR, -// portNumbers := {PX_DIAMETER_GX_PGW_PORT} -// } -// } -// } -// }; -// }//end group Diameter -// -// }//end group EPC -// -// group IMS{ -// -// group Sip{ -// template MonitorInterfaceInfo m_MonIntf_Sip_Gm_A := -// { -// interfaceName := "Gm A", -// //available := PX_SIP_GMA_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := PX_SIP_GMA_PCSCF_IPADDR, -// portNumbers := {PX_SIP_GMA_PCSCF_PORT} -// }, -// { -// domainName := omit, -// IpAddress := PX_SIP_GMA_UE_IPADDR, -// portNumbers := {PX_SIP_GMA_UE_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_Gm_B := -// { -// interfaceName := "Gm B", -// //available := PX_SIP_GMB_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := PX_SIP_GMB_PCSCF_IPADDR, -// portNumbers := {PX_SIP_GMB_PCSCF_PORT} -// }, -// { -// domainName := omit, -// IpAddress := PX_SIP_GMB_UE_IPADDR, -// portNumbers := {PX_SIP_GMB_UE_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_Ic := -// { -// interfaceName := "Ic", -// //available := PX_SIP_IC_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "ibcfa.ims.domain", -// IpAddress := PX_SIP_IC_IBCF_A_IPADDR, -// portNumbers := {PX_SIP_IC_IBCF_A_PORT} -// }, -// { -// domainName := "ibcfb.ims.domain", -// IpAddress := PX_SIP_IC_IBCF_B_IPADDR, -// portNumbers := {PX_SIP_IC_IBCF_B_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PI:= -// { -// interfaceName := "Mw PI", -// //available := PX_SIP_MW_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := PX_SIP_MW_P_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_P_CSCF_PORT} -// }, -// { -// domainName := "icscf.ims.domain", -// IpAddress := PX_SIP_MW_I_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_I_CSCF_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PS:= -// { -// interfaceName := "Mw PS", -// //available := PX_SIP_MW_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := PX_SIP_MW_P_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_P_CSCF_PORT} -// }, -// { -// domainName := "scscf.ims.domain", -// IpAddress := PX_SIP_MW_S_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_S_CSCF_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_SI:= -// { -// interfaceName := "Mw SI", -// //available := PX_SIP_MW_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := PX_SIP_MW_S_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_S_CSCF_PORT} -// }, -// { -// domainName := "icscf.ims.domain", -// IpAddress := PX_SIP_MW_I_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_I_CSCF_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_ISC:= -// { -// interfaceName := "Isc", -// //available := PX_SIP_ISC_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := PX_SIP_ISC_S_CSCF_IPADDR, -// portNumbers := {PX_SIP_ISC_S_CSCF_PORT} -// }, -// { -// domainName := "as.ims.domain", -// IpAddress := PX_SIP_ISC_AS_IPADDR, -// portNumbers := {PX_SIP_ISC_AS_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_PB:= -// { -// interfaceName := "Mw PB", -// //available := PX_SIP_MW_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := PX_SIP_MW_P_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_P_CSCF_PORT} -// }, -// { -// domainName := "ibcf.ims.domain", -// IpAddress := PX_SIP_MW_IBCF_IPADDR, -// portNumbers := {PX_SIP_MW_IBCF_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Sip_Mw_IB:= -// { -// interfaceName := "Mw IB", -// //available := PX_SIP_MW_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := PX_SIP_MW_I_CSCF_IPADDR, -// portNumbers := {PX_SIP_MW_I_CSCF_PORT} -// }, -// { -// domainName := "ibcf.ims.domain", -// IpAddress := PX_SIP_MW_IBCF_IPADDR, -// portNumbers := {PX_SIP_MW_IBCF_PORT} -// } -// } -// } -// }; -// }//end group Sip -// -// group Diameter{ -// template MonitorInterfaceInfo m_MonIntf_Diameter_Rx := -// { -// interfaceName := "Rx", -// //available := PX_DIAMETER_RX_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := PX_DIAMETER_RX_P_CSCF_IPADDR, -// portNumbers := {PX_DIAMETER_RX_P_CSCF_PORT} -// }, -// { -// domainName := "pcrf.ims.domain", -// IpAddress := PX_DIAMETER_RX_PCRF_IPADDR, -// portNumbers := {PX_DIAMETER_RX_PCRF_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_IH := -// { -// interfaceName := "Cx IH", -// //available := PX_DIAMETER_CX_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := PX_DIAMETER_CX_I_CSCF_IPADDR, -// portNumbers := {PX_DIAMETER_CX_I_CSCF_PORT} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := PX_DIAMETER_CX_HSS_IPADDR, -// portNumbers := {PX_DIAMETER_CX_HSS_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Diameter_Cx_SH := -// { -// interfaceName := "Cx SH", -// //available := PX_DIAMETER_CX_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := PX_DIAMETER_CX_S_CSCF_IPADDR, -// portNumbers := {PX_DIAMETER_CX_S_CSCF_PORT} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := PX_DIAMETER_CX_HSS_IPADDR, -// portNumbers := {PX_DIAMETER_CX_HSS_PORT} -// } -// } -// } -// }; -// -// template MonitorInterfaceInfo m_MonIntf_Diameter_Sh := -// { -// interfaceName := "Sh", -// //available := PX_DIAMETER_SH_MONITORENABLED, -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "as.ims.domain", -// IpAddress := PX_DIAMETER_SH_AS_IPADDR, -// portNumbers := {PX_DIAMETER_SH_AS_PORT} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := PX_DIAMETER_SH_HSS_IPADDR, -// portNumbers := {PX_DIAMETER_SH_HSS_PORT} -// } -// } -// } -// }; -// -// }//end group Diameter -// -// }//end group IMS -// -// }//end group VxLTEMonitorInterfaces_Templates + } diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn index f484f30..bfa675e 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -45,17 +45,20 @@ module LibIot_VxLTE_Functions { if (PX_SIP_IC_MONITORENABLED == true){ vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic); } - if (PX_SIP_MW_MONITORENABLED == true){ - + if (PX_SIP_MW_PI_MONITORENABLED == true){ vc_MonIntfList.mwPI := valueof(m_MonIntf_Sip_Mw_PI); - /**/ + } + if (PX_SIP_MW_PS_MONITORENABLED == true){ vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS); - /**/ + } + if (PX_SIP_MW_IS_MONITORENABLED == true){ vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS); - /**/ + } + if (PX_SIP_MW_PB_MONITORENABLED == true){ vc_MonIntfList.mwPB := valueof(m_MonIntf_Sip_Mw_PB); - /**/ - vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB); + } + if (PX_SIP_MW_IB_MONITORENABLED == true){ + vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB); } if (PX_SIP_ISC_MONITORENABLED == true){ vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC); @@ -63,9 +66,10 @@ module LibIot_VxLTE_Functions { - if (PX_DIAMETER_CX_MONITORENABLED == true){ + if (PX_DIAMETER_CX_IH_MONITORENABLED == true){ vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH); - /**/ + } + if (PX_DIAMETER_CX_SH_MONITORENABLED == true){ vc_MonIntfList.cxSH := valueof(m_MonIntf_Diameter_Cx_SH); } if (PX_DIAMETER_GX_MONITORENABLED == true){ @@ -477,37 +481,41 @@ module LibIot_VxLTE_Functions { v_ic := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Ic)/*PX_SIP_IC_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_ic); } - if (PX_SIP_MW_MONITORENABLED == true){ + if (PX_SIP_MW_PI_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_MW_PI_INTERFACENAME; - v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_InterfaceAvailable.available := PX_SIP_MW_PI_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); v_mwPI := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PI)/*PX_SIP_MW_PI_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwPI); - /**/ + } + if (PX_SIP_MW_PS_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_MW_PS_INTERFACENAME; - v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_InterfaceAvailable.available := PX_SIP_MW_PS_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); v_mwPS := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PS)/*PX_SIP_MW_PS_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwPS); - /**/ + } + if (PX_SIP_MW_IS_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_MW_IS_INTERFACENAME; - v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_InterfaceAvailable.available := PX_SIP_MW_IS_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); v_mwSI := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IS)/*PX_SIP_MW_IS_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwSI); - /**/ + } + if (PX_SIP_MW_PB_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_MW_PB_INTERFACENAME; - v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_InterfaceAvailable.available := PX_SIP_MW_PB_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); v_mwPB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PB)/*PX_SIP_MW_PB_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwPB); - /**/ + } + if (PX_SIP_MW_IB_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_MW_IB_INTERFACENAME; - v_InterfaceAvailable.available := PX_SIP_MW_MONITORENABLED; + v_InterfaceAvailable.available := PX_SIP_MW_IB_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); v_mwIB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IB)/*PX_SIP_MW_IB_INTERFACENAME*/ ); - f_cf_monitor_up_sip(v_mwIB); + f_cf_monitor_up_sip(v_mwIB); } if (PX_SIP_ISC_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_ISC_INTERFACENAME; @@ -519,15 +527,16 @@ module LibIot_VxLTE_Functions { - if (PX_DIAMETER_CX_MONITORENABLED == true){ + if (PX_DIAMETER_CX_IH_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_IH_INTERFACENAME; - v_InterfaceAvailable.available := PX_DIAMETER_CX_MONITORENABLED; + v_InterfaceAvailable.available := PX_DIAMETER_CX_IH_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); v_cxIH := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Cx_IH)/*PX_DIAMETER_CX_IH_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_cxIH); - /**/ + } + if (PX_DIAMETER_CX_SH_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_SH_INTERFACENAME; - v_InterfaceAvailable.available := PX_DIAMETER_CX_MONITORENABLED; + v_InterfaceAvailable.available := PX_DIAMETER_CX_SH_MONITORENABLED; v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); v_cxSH := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Cx_SH)/*PX_DIAMETER_CX_SH_INTERFACENAME*/ ); f_cf_monitor_up_diameter(v_cxSH); diff --git a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn index 8d07990..3f2eb02 100644 --- a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn @@ -1,466 +1,165 @@ /* - * @author STF 574 - * @version $Id: LibIot_VxLTE_PIXITS.ttcn 1 2020-05-29 15:06:42Z pintar $ - * @desc This module provides PIXIT parameters which need to be - * changeable within validation + * @author STF574, TTF006 + * @version $Id: LibIot_VxLTE_PIXITS.ttcn 1 2020-05-29 15:06:42Z pintar $ + * @desc This module provides PIXIT parameters which need to be + * changeable within validation */ module LibIot_VxLTE_PIXITS { - import from LibIot_TypesAndValues - { - type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, - ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailableList,MonitorInterfaceInfo; - } + import from LibIot_TypesAndValues + { + type IOTExecMode, IotVerdictType, CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList, + ProtocolFilter, IpAddress, PortNumber, ProductList, InterfaceAvailableList,MonitorInterfaceInfo; + } -//TODO: remove at end of validation phase -// group VxLTEMonitorInterfaces_PIXITS_As_structure{ -// group EPC{ -// group Diameter{ -// -// modulepar MonitorInterfaceInfo PX_MonIntf_S6a := -// { -// interfaceName := "S6a", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "mme.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_S9 := -// { -// interfaceName := "S9", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "hpcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "vpcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Gx := -// { -// interfaceName := "Gx", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pgw.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "pcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// }//end group Diameter -// } // end group EPC -// group IMS{ -// group Sip{ -// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_A := -// { -// interfaceName := "Gm A", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := omit, -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Gm_B := -// { -// interfaceName := "Gm B", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := omit, -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Ic := -// { -// interfaceName := "Ic", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "ibcfa.imsa.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "ibcfb.imsb.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PI := -// { -// interfaceName := "Mw PI", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PS := -// { -// interfaceName := "Mw PS", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_SI := -// { -// interfaceName := "Mw SI", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Isc := -// { -// interfaceName := "Isc", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "as.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_PB := -// { -// interfaceName := "Mw PB", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "ibcf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Mw_IB := -// { -// interfaceName := "Mw IB", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "ibcf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// -// }//end group Sip -// group Diameter{ -// modulepar MonitorInterfaceInfo PX_MonIntf_Rx := -// { -// interfaceName := "Rx", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "pcscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "pcrf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_IH := -// { -// interfaceName := "Cx IH", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "icscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Cx_SH := -// { -// interfaceName := "Cx SH", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// modulepar MonitorInterfaceInfo PX_MonIntf_Sh := -// { -// interfaceName := "Sh", -// interfaceInfo := { -// IpInterfaceInfo := { -// { -// domainName := "scscf.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:32e0", //"192.86.1.97", -// portNumbers := {5060} -// }, -// { -// domainName := "hss.ims.domain", -// IpAddress := "fe80::21a:a0ff:fe07:98", //"10.10.20.98", -// portNumbers := {5060} -// } -// } -// } -// }; -// -// -// }//end group Diameter -// } -// -// }// end VxLTEMonitorInterfaces_As_structure - - group VxLTEMonitorInterfaces_PIXITS{ - - group Sip{ - //A.8.2 PIXIT items for the Gm Interface - //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group GmA{ - modulepar charstring PX_SIP_GMA_INTERFACENAME := "Gm A"; - modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE - modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE - modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF - modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; // Gm Port number of P-CSCF - modulepar boolean PX_SIP_GMA_MONITORENABLED := true; - }//end group GmA - - //A.8.2 PIXIT items for the Gm Interface - //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group GmB{ - modulepar charstring PX_SIP_GMB_INTERFACENAME := "Gm B"; - modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of UE - modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE - modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; // Gm IP address of P-CSCF - modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; // Gm Port number of P-CSCF - modulepar boolean PX_SIP_GMB_MONITORENABLED := true; - }//end group GmB - - //A.8.3 PIXIT items for the Ic Interface - //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. - group Ic{ - modulepar charstring PX_SIP_IC_INTERFACENAME := "Ic"; - modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network A - modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A - modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; // Ic IP address of IBCF of network B - modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; // Ic Port number of IBCF of network B - modulepar boolean PX_SIP_IC_MONITORENABLED := true; - }//end group Ic - - //A.8.4 PIXIT items for the Mw Interface - //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group Mw{ - modulepar charstring PX_SIP_MW_PI_INTERFACENAME := "Mw PI"; - modulepar charstring PX_SIP_MW_PS_INTERFACENAME := "Mw PS"; - modulepar charstring PX_SIP_MW_IS_INTERFACENAME := "Mw SI"; - modulepar charstring PX_SIP_MW_PB_INTERFACENAME := "Mw PB"; - modulepar charstring PX_SIP_MW_IB_INTERFACENAME := "Mw IB"; - modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of P-CSCF - modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060;// Mw Port number of P-CSCF - modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of I-CSCF - modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080;// Mw Port number of I-CSCF - modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of S-CSCF - modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090;// Mw Port number of S-CSCF - modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Mw IP address of IBCF - modulepar integer PX_SIP_MW_IBCF_PORT := 5050;// Mw Port number of IBCF - modulepar boolean PX_SIP_MW_MONITORENABLED := true; - }//end group Mw - - //A.8.* PIXIT items for the Isc Interface - //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. - group Isc{ - modulepar charstring PX_SIP_ISC_INTERFACENAME := "Isc"; - modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF - modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF - modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS - modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS - modulepar boolean PX_SIP_ISC_MONITORENABLED := true; - }//end group Isc - }//end group SIp - - group Diameter{ - //A.8.5 PIXIT items for the Cx Interface - //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. - group Cx{ - modulepar charstring PX_DIAMETER_CX_IH_INTERFACENAME := "Cx IH"; - modulepar charstring PX_DIAMETER_CX_SH_INTERFACENAME := "Cx SH"; - modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Charstring Cx IP address of I-CSCF - modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868;// Cx Port number of I-CSCF - modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of S-CSCF - modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868;// Cx Port number of S-CSCF - modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Cx IP address of HSS - modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868;// Cx Port number of HSS - modulepar boolean PX_DIAMETER_CX_MONITORENABLED := true; - }//end group Cx - - //A.8.6 PIXIT items for the Gx Interface - //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. - group Gx{ - modulepar charstring PX_DIAMETER_GX_INTERFACENAME := "Gx"; - modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PCRF - modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868;// Gx Port number of PCRF - modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98";// Gx IP address of PGW - modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868;// Gx Port number of PGW - modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; - }//end group Gx - - //A.8.7 PIXIT items for the Rx Interface - //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. - group Rx{ - modulepar charstring PX_DIAMETER_RX_INTERFACENAME := "Rx"; - modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of P-CSCF - modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868;// Rx Port number of P-CSCF - modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// Rx IP address of PCRF - modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868;// Rx Port number of PCRF - modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; - }//end group Rx - - //A.8.8 PIXIT items for the S6a Interface - //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. - group S6a{ - modulepar charstring PX_DIAMETER_S6A_INTERFACENAME := "S6a"; - modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of MME - modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868;// S6a Port number of MME - modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// S6a IP address of HSS - modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868;// S6a Port number of HSS - modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; - }//end group S6a - - //A.8.9 PIXIT items for the S9 Interface - //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. - group S9{ - modulepar charstring PX_DIAMETER_S9_INTERFACENAME := "S9"; - modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of H-PCRF - modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868;// S9 Port number of H-PCRF - modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98";// S9 IP address of V-PCRF - modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868;// S9 Port number of V-PCRF - modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; - }//end group S9 - - //A.8.10 PIXIT items for the Sh Interface - //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. - group Sh{ - modulepar charstring PX_DIAMETER_SH_INTERFACENAME := "Sh"; - modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of AS - modulepar integer PX_DIAMETER_SH_AS_PORT := 3868;// Sh Port number of AS - modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98";// Sh IP address of HSS - modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868;// Sh Port number of HSS - modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; - }//end group Sh - }//end group Diameter - - //A.8.11 PIXIT items for the RTP Interface - //In the context of the present document RTP is only considered end-to-end between two UEs. + group VxLTEMonitorInterfaces_PIXITS{ + + group Sip{ + //A.8.2 PIXIT items for the Gm Interface + //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group GmA{ + modulepar charstring PX_SIP_GMA_INTERFACENAME := "Gm A"; //Gm A interface between UE A and P-CSCF + modulepar charstring PX_SIP_GMA_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; //Gm IP address of UE A + modulepar integer PX_SIP_GMA_UE_PORT := 5060; //Gm Port number of UE A + modulepar charstring PX_SIP_GMA_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Gm IP address of P-CSCF + modulepar integer PX_SIP_GMA_PCSCF_PORT := 5060; //Gm Port number of P-CSCF + modulepar boolean PX_SIP_GMA_MONITORENABLED := true; + }//end group GmA + + //A.8.2 PIXIT items for the Gm Interface + //The Gm interface connects a UE with a P-CSCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group GmB{ + modulepar charstring PX_SIP_GMB_INTERFACENAME := "Gm B"; //Gm B interface between UE B and P-CSCF + modulepar charstring PX_SIP_GMB_UE_IPADDR := "fe80::21a:a0ff:fe07:98"; //Gm IP address of UE B + modulepar integer PX_SIP_GMB_UE_PORT := 5060; //Gm Port number of UE B + modulepar charstring PX_SIP_GMB_PCSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Gm IP address of P-CSCF + modulepar integer PX_SIP_GMB_PCSCF_PORT := 5060; //Gm Port number of P-CSCF + modulepar boolean PX_SIP_GMB_MONITORENABLED := true; + }//end group GmB + + //A.8.3 PIXIT items for the Ic Interface + //The Ic interface connects an IBCF with another IBCF using the SIP and SDP protocols as defined in ETSI TS 129 165 [2]. + group Ic{ + modulepar charstring PX_SIP_IC_INTERFACENAME := "Ic"; //Ic interface between IBCF(A) and IBCF(B) + modulepar charstring PX_SIP_IC_IBCF_A_IPADDR := "fe80::21a:a0ff:fe07:98"; //Ic IP address of IBCF of network A + modulepar integer PX_SIP_IC_IBCF_A_PORT := 5060; //Ic Port number of IBCF of network A + modulepar charstring PX_SIP_IC_IBCF_B_IPADDR := "fe80::21a:a0ff:fe07:98"; //Ic IP address of IBCF of network B + modulepar integer PX_SIP_IC_IBCF_B_PORT := 5060; //Ic Port number of IBCF of network B + modulepar boolean PX_SIP_IC_MONITORENABLED := true; + }//end group Ic + + //A.8.4 PIXIT items for the Mw Interface + //The Mw interface connects an x-CSCF with another x-CSCF or an IBCF using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group Mw{ + modulepar charstring PX_SIP_MW_PI_INTERFACENAME := "Mw PI"; //Mw interface between P-CSCF and I-CSCF + modulepar charstring PX_SIP_MW_PS_INTERFACENAME := "Mw PS"; //Mw interface between P-CSCF and S-CSCF + modulepar charstring PX_SIP_MW_IS_INTERFACENAME := "Mw SI"; //Mw interface between S-CSCF and I-CSCF + modulepar charstring PX_SIP_MW_PB_INTERFACENAME := "Mw PB"; //Mw interface between P-CSCF and IBCF + modulepar charstring PX_SIP_MW_IB_INTERFACENAME := "Mw IB"; //Mw interface between I-CSCF and IBCF + modulepar charstring PX_SIP_MW_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Mw IP address of P-CSCF + modulepar integer PX_SIP_MW_P_CSCF_PORT := 5060; //Mw Port number of P-CSCF + modulepar charstring PX_SIP_MW_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Mw IP address of I-CSCF + modulepar integer PX_SIP_MW_I_CSCF_PORT := 5080; //Mw Port number of I-CSCF + modulepar charstring PX_SIP_MW_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Mw IP address of S-CSCF + modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090; //Mw Port number of S-CSCF + modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Mw IP address of IBCF + modulepar integer PX_SIP_MW_IBCF_PORT := 5050; //Mw Port number of IBCF + modulepar boolean PX_SIP_MW_PI_MONITORENABLED := true; //true - Monitor enabled for PI connection only + modulepar boolean PX_SIP_MW_PS_MONITORENABLED := true; //true - Monitor enabled for PS connection only + modulepar boolean PX_SIP_MW_IS_MONITORENABLED := true; //true - Monitor enabled for IS connection only + modulepar boolean PX_SIP_MW_PB_MONITORENABLED := true; //true - Monitor enabled for PB connection only + modulepar boolean PX_SIP_MW_IB_MONITORENABLED := true; //true - Monitor enabled for IB connection only + }//end group Mw + + //A.8.* PIXIT items for the Isc Interface + //The Isc interface connects an S-CSCF with AS using the SIP and SDP protocols as defined in ETSI TS 124 229 [1]. + group Isc{ + modulepar charstring PX_SIP_ISC_INTERFACENAME := "Isc"; //Isc interface between S-CSCF and AS + modulepar charstring PX_SIP_ISC_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of S-CSCF + modulepar integer PX_SIP_ISC_S_CSCF_PORT := 5090;// Isc Port number of S-CSCF + modulepar charstring PX_SIP_ISC_AS_IPADDR := "fe80::21a:a0ff:fe07:98";// Isc IP address of AS + modulepar integer PX_SIP_ISC_AS_PORT := 5100;// Isc Port number of AS + modulepar boolean PX_SIP_ISC_MONITORENABLED := true; + }//end group Isc + }//end group SIp - }//end group VxLTEMonitorInterfaces_PIXITS - -} \ No newline at end of file + group Diameter{ + //A.8.5 PIXIT items for the Cx Interface + //The Cx interface connects an I- or S-CSCF with an HSS using the Diameter protocol as defined ETSI TS 129 228 [3] and ETSI TS 129 229 [4]. + group Cx{ + modulepar charstring PX_DIAMETER_CX_IH_INTERFACENAME := "Cx IH"; //Cx interface between I-CSCF and HSS + modulepar charstring PX_DIAMETER_CX_SH_INTERFACENAME := "Cx SH"; //Cx interface between S-CSCF and HSS + modulepar charstring PX_DIAMETER_CX_I_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Charstring Cx IP address of I-CSCF + modulepar integer PX_DIAMETER_CX_I_CSCF_PORT := 3868; //Cx Port number of I-CSCF + modulepar charstring PX_DIAMETER_CX_S_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Cx IP address of S-CSCF + modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868; //Cx Port number of S-CSCF + modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98"; //Cx IP address of HSS + modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868; //Cx Port number of HSS + modulepar boolean PX_DIAMETER_CX_IH_MONITORENABLED := true; //true - Monitor enabled for IH connection only + modulepar boolean PX_DIAMETER_CX_SH_MONITORENABLED := true; //true - Monitor enabled for SH connection or single SH and IH connection(Set PX_DIAMETER_CX_SINGLE_INTERFACE to true) + modulepar boolean PX_DIAMETER_CX_SINGLE_INTERFACE := true; //if true both CX_IH and CX_SH are treated as one interface + }//end group Cx + + //A.8.6 PIXIT items for the Gx Interface + //The Gx interface connects a PCRF with a PGW using the Diameter protocol as defined in ETSI TS 129 212 [8]. + group Gx{ + modulepar charstring PX_DIAMETER_GX_INTERFACENAME := "Gx"; //Gx interface between PCRF and PGW + modulepar charstring PX_DIAMETER_GX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Gx IP address of PCRF + modulepar integer PX_DIAMETER_GX_PCRF_PORT := 3868; //Gx Port number of PCRF + modulepar charstring PX_DIAMETER_GX_PGW_IPADDR := "fe80::21a:a0ff:fe07:98"; //Gx IP address of PGW + modulepar integer PX_DIAMETER_GX_PGW_PORT := 3868; //Gx Port number of PGW + modulepar boolean PX_DIAMETER_GX_MONITORENABLED := true; + }//end group Gx + + //A.8.7 PIXIT items for the Rx Interface + //The Rx interface connects a P-CSCF with a PCRF using the Diameter protocol as defined in ETSI TS 129 214 [7]. + group Rx{ + modulepar charstring PX_DIAMETER_RX_INTERFACENAME := "Rx"; //Rx interface between PCRF and P-CSCF + modulepar charstring PX_DIAMETER_RX_P_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Rx IP address of P-CSCF + modulepar integer PX_DIAMETER_RX_P_CSCF_PORT := 3868; //Rx Port number of P-CSCF + modulepar charstring PX_DIAMETER_RX_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Rx IP address of PCRF + modulepar integer PX_DIAMETER_RX_PCRF_PORT := 3868; //Rx Port number of PCRF + modulepar boolean PX_DIAMETER_RX_MONITORENABLED := true; + }//end group Rx + + //A.8.8 PIXIT items for the S6a Interface + //The S6a interface connects an MME with an HSS using the Diameter protocol as defined in ETSI TS 129 272 [9]. + group S6a{ + modulepar charstring PX_DIAMETER_S6A_INTERFACENAME := "S6a"; //S6a interface between MME and HSS + modulepar charstring PX_DIAMETER_S6A_MME_IPADDR := "fe80::21a:a0ff:fe07:98"; //S6a IP address of MME + modulepar integer PX_DIAMETER_S6A_MME_PORT := 3868; //S6a Port number of MME + modulepar charstring PX_DIAMETER_S6A_HSS_IPADDR := "fe80::21a:a0ff:fe07:98"; //S6a IP address of HSS + modulepar integer PX_DIAMETER_S6A_HSS_PORT := 3868; //S6a Port number of HSS + modulepar boolean PX_DIAMETER_S6A_MONITORENABLED := true; + }//end group S6a + + //A.8.9 PIXIT items for the S9 Interface + //The S9 interface connects an H-PCRF with a V-PCRF using the Diameter protocol as defined in ETSI TS 129 215 [10]. + group S9{ + modulepar charstring PX_DIAMETER_S9_INTERFACENAME := "S9"; //S9 interface between H-PCRF and V-PCRF + modulepar charstring PX_DIAMETER_S9_H_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98"; //S9 IP address of H-PCRF + modulepar integer PX_DIAMETER_S9_H_PCRF_PORT := 3868; //S9 Port number of H-PCRF + modulepar charstring PX_DIAMETER_S9_V_PCRF_IPADDR := "fe80::21a:a0ff:fe07:98"; //S9 IP address of V-PCRF + modulepar integer PX_DIAMETER_S9_V_PCRF_PORT := 3868; //S9 Port number of V-PCRF + modulepar boolean PX_DIAMETER_S9_MONITORENABLED := true; + }//end group S9 + + //A.8.10 PIXIT items for the Sh Interface + //The Sh interface connects an AS with an HSS using the Diameter protocol as defined in ETSI TS 129 328 [11] and ETSI TS 129 329 [13]. + group Sh{ + modulepar charstring PX_DIAMETER_SH_INTERFACENAME := "Sh"; //Sh interface between AS and HSS + modulepar charstring PX_DIAMETER_SH_AS_IPADDR := "fe80::21a:a0ff:fe07:98"; //Sh IP address of AS + modulepar integer PX_DIAMETER_SH_AS_PORT := 3868; //Sh Port number of AS + modulepar charstring PX_DIAMETER_SH_HSS_IPADDR := "fe80::21a:a0ff:fe07:98"; //Sh IP address of HSS + modulepar integer PX_DIAMETER_SH_HSS_PORT := 3868; //Sh Port number of HSS + modulepar boolean PX_DIAMETER_SH_MONITORENABLED := true; + }//end group Sh + }//end group Diameter + + //A.8.11 PIXIT items for the RTP Interface + //In the context of the present document RTP is only considered end-to-end between two UEs. + + }//end group VxLTEMonitorInterfaces_PIXITS + +} //end module LibIot_VxLTE_PIXITS \ No newline at end of file -- GitLab From 66540e7f34716942dac5154e3aaeeb10ba68a792 Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 16 Apr 2021 14:21:04 +0000 Subject: [PATCH 135/176] Changes done during week 15 --- ttcn/LibSip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ttcn/LibSip b/ttcn/LibSip index 7d79616..6b82f94 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d +Subproject commit 6b82f94df97af922d648c66777818ae34741704b -- GitLab From 855e4200cc5033a68da515824747e46390212dee Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 20 Apr 2021 09:27:37 +0200 Subject: [PATCH 136/176] TA use of jpcap lib from other projects --- .../ttcn/tci/codec/IOTCodec/IOTCodec.java | 19 +- .../ttcn/tri/IotConnectionOffline.java | 47 +- .../iskratel/ttcn/tri/ReadCaptureThread.java | 536 +++--- .../com/iskratel/ttcn/tri/VxlteAdapter.java | 31 +- javasrc/net/CVS/Entries | 37 - javasrc/net/CVS/Repository | 1 - javasrc/net/CVS/Root | 1 - .../net/sourceforge/jpcap/capture/.gitignore | 11 - .../CaptureConfigurationException.java | 33 - .../CaptureDeviceInvalidException.java | 33 - .../capture/CaptureDeviceLookupException.java | 31 - .../CaptureDeviceNotFoundException.java | 31 - .../capture/CaptureDeviceOpenException.java | 31 - .../capture/CaptureFileOpenException.java | 31 - .../jpcap/capture/CapturePacketException.java | 31 - .../jpcap/capture/CaptureStatistics.java | 59 - .../jpcap/capture/CaptureTest.java | 125 -- .../jpcap/capture/InvalidFilterException.java | 31 - .../jpcap/capture/PacketCapture.java | 214 --- .../jpcap/capture/PacketCaptureBase.java | 91 -- .../jpcap/capture/PacketCaptureCapable.java | 186 --- .../jpcap/capture/PacketDispatchCapable.java | 48 - .../jpcap/capture/PacketDispatcher.java | 108 -- .../jpcap/capture/PacketHandler.java | 40 - .../jpcap/capture/PacketListener.java | 27 - .../jpcap/capture/RawPacketListener.java | 27 - javasrc/net/sourceforge/jpcap/capture/jpcap.c | 825 ---------- .../net/sourceforge/jpcap/capture/jpcap.def | 17 - .../net/sourceforge/jpcap/capture/makefile | 149 -- .../sourceforge/jpcap/capture/package.html | 35 - .../net/sourceforge/jpcap/capture/process.cpp | 65 - .../net/sourceforge/jpcap/capture/process.hpp | 28 - .../net/sourceforge/jpcap/net/ARPFields.java | 116 -- .../net/sourceforge/jpcap/net/ARPPacket.java | 164 -- .../sourceforge/jpcap/net/EthernetFields.java | 53 - .../sourceforge/jpcap/net/EthernetPacket.java | 212 --- .../jpcap/net/EthernetProtocol.java | 38 - .../jpcap/net/EthernetProtocols.java | 240 --- .../net/sourceforge/jpcap/net/ICMPFields.java | 63 - .../sourceforge/jpcap/net/ICMPMessage.java | 79 - .../sourceforge/jpcap/net/ICMPMessages.java | 181 --- .../net/sourceforge/jpcap/net/ICMPPacket.java | 168 -- .../net/sourceforge/jpcap/net/IGMPFields.java | 73 - .../sourceforge/jpcap/net/IGMPMessage.java | 52 - .../sourceforge/jpcap/net/IGMPMessages.java | 42 - .../net/sourceforge/jpcap/net/IGMPPacket.java | 163 -- .../net/sourceforge/jpcap/net/IPAddress.java | 107 -- .../net/sourceforge/jpcap/net/IPFields.java | 123 -- .../net/sourceforge/jpcap/net/IPPacket.java | 500 ------ javasrc/net/sourceforge/jpcap/net/IPPort.java | 1447 ----------------- .../net/sourceforge/jpcap/net/IPPorts.java | 721 -------- .../net/sourceforge/jpcap/net/IPProtocol.java | 89 - .../sourceforge/jpcap/net/IPProtocols.java | 170 -- .../net/sourceforge/jpcap/net/IPVersions.java | 30 - .../net/sourceforge/jpcap/net/LinkLayer.java | 150 -- .../net/sourceforge/jpcap/net/LinkLayers.java | 143 -- .../net/sourceforge/jpcap/net/MACAddress.java | 56 - .../sourceforge/jpcap/net/NamedNumber.java | 96 -- javasrc/net/sourceforge/jpcap/net/Packet.java | 62 - .../sourceforge/jpcap/net/PacketEncoding.java | 113 -- .../sourceforge/jpcap/net/PacketFactory.java | 162 -- .../net/sourceforge/jpcap/net/RawPacket.java | 95 -- .../sourceforge/jpcap/net/SCTPChunkType.java | 168 -- .../net/sourceforge/jpcap/net/SCTPFields.java | 97 -- .../net/sourceforge/jpcap/net/SCTPPacket.java | 358 ---- .../net/sourceforge/jpcap/net/TCPFields.java | 118 -- .../net/sourceforge/jpcap/net/TCPPacket.java | 427 ----- .../sourceforge/jpcap/net/TypesOfService.java | 39 - .../net/sourceforge/jpcap/net/UDPFields.java | 68 - .../net/sourceforge/jpcap/net/UDPPacket.java | 168 -- javasrc/net/sourceforge/jpcap/net/makefile | 68 - .../net/sourceforge/jpcap/net/package.html | 35 - javasrc/net/sourceforge/jpcap/tutorial/README | 11 - .../jpcap/tutorial/example1/Example1.java | 73 - .../jpcap/tutorial/example1/makefile | 20 - .../jpcap/tutorial/example15/Example15.java | 77 - .../jpcap/tutorial/example15/makefile | 20 - .../jpcap/tutorial/example2/Example2.java | 73 - .../jpcap/tutorial/example2/makefile | 20 - .../jpcap/tutorial/example3/Example3.java | 75 - .../jpcap/tutorial/example3/Example3b.java | 120 -- .../jpcap/tutorial/example3/Example3c.java | 101 -- .../jpcap/tutorial/example3/makefile | 22 - .../jpcap/tutorial/example4/Example4.java | 85 - .../jpcap/tutorial/example4/makefile | 20 - .../jpcap/tutorial/example5/Example5.java | 86 - .../jpcap/tutorial/example5/makefile | 20 - .../jpcap/tutorial/example6/Example6.java | 83 - .../jpcap/tutorial/example6/makefile | 20 - .../jpcap/tutorial/example7/Example7.java | 79 - .../jpcap/tutorial/example7/makefile | 20 - .../net/sourceforge/jpcap/tutorial/makefile | 22 - .../jpcap/tutorial/misc/ICMPTest.java | 95 -- .../jpcap/tutorial/misc/MemoryTest.java | 76 - .../jpcap/tutorial/misc/OfflineTest.java | 135 -- .../tutorial/misc/SerializationTest.java | 123 -- .../sourceforge/jpcap/tutorial/misc/makefile | 23 - .../sourceforge/jpcap/tutorial/package.html | 22 - .../jpcap/tutorial/sniffer/Sniffer.java | 87 - .../jpcap/tutorial/sniffer/makefile | 20 - .../jpcap/util/AnsiEscapeSequences.java | 55 - .../sourceforge/jpcap/util/ArrayHelper.java | 97 -- .../sourceforge/jpcap/util/AsciiHelper.java | 70 - .../sourceforge/jpcap/util/ByteArrays.java | 1033 ------------ .../net/sourceforge/jpcap/util/CVS/Entries | 9 - .../net/sourceforge/jpcap/util/CVS/Repository | 1 - javasrc/net/sourceforge/jpcap/util/CVS/Root | 1 - .../net/sourceforge/jpcap/util/HexHelper.java | 100 -- .../jpcap/util/PropertyHelper.java | 222 --- .../net/sourceforge/jpcap/util/Timeval.java | 52 - javasrc/net/sourceforge/jpcap/util/makefile | 29 - .../net/sourceforge/jpcap/util/package.html | 20 - ttcn/LibSip | 2 +- 113 files changed, 357 insertions(+), 13195 deletions(-) delete mode 100644 javasrc/net/CVS/Entries delete mode 100644 javasrc/net/CVS/Repository delete mode 100644 javasrc/net/CVS/Root delete mode 100644 javasrc/net/sourceforge/jpcap/capture/.gitignore delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/CaptureTest.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketCapture.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketHandler.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/PacketListener.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java delete mode 100644 javasrc/net/sourceforge/jpcap/capture/jpcap.c delete mode 100644 javasrc/net/sourceforge/jpcap/capture/jpcap.def delete mode 100644 javasrc/net/sourceforge/jpcap/capture/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/capture/package.html delete mode 100644 javasrc/net/sourceforge/jpcap/capture/process.cpp delete mode 100644 javasrc/net/sourceforge/jpcap/capture/process.hpp delete mode 100644 javasrc/net/sourceforge/jpcap/net/ARPFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/ARPPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPMessage.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPMessages.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/ICMPPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPMessage.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPMessages.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IGMPPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPAddress.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPPort.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPPorts.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPProtocol.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPProtocols.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/IPVersions.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/LinkLayer.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/LinkLayers.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/MACAddress.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/NamedNumber.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/Packet.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/PacketEncoding.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/PacketFactory.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/RawPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/SCTPFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/SCTPPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/TCPFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/TCPPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/TypesOfService.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/UDPFields.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/UDPPacket.java delete mode 100644 javasrc/net/sourceforge/jpcap/net/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/net/package.html delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/README delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example1/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example15/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example2/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example3/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example4/Example4.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example4/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example5/Example5.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example5/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example6/Example6.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example6/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/example7/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/misc/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/package.html delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java delete mode 100644 javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java delete mode 100644 javasrc/net/sourceforge/jpcap/util/ArrayHelper.java delete mode 100644 javasrc/net/sourceforge/jpcap/util/AsciiHelper.java delete mode 100644 javasrc/net/sourceforge/jpcap/util/ByteArrays.java delete mode 100644 javasrc/net/sourceforge/jpcap/util/CVS/Entries delete mode 100644 javasrc/net/sourceforge/jpcap/util/CVS/Repository delete mode 100644 javasrc/net/sourceforge/jpcap/util/CVS/Root delete mode 100644 javasrc/net/sourceforge/jpcap/util/HexHelper.java delete mode 100644 javasrc/net/sourceforge/jpcap/util/PropertyHelper.java delete mode 100644 javasrc/net/sourceforge/jpcap/util/Timeval.java delete mode 100644 javasrc/net/sourceforge/jpcap/util/makefile delete mode 100644 javasrc/net/sourceforge/jpcap/util/package.html diff --git a/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java b/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java index 71396b3..1fa5304 100644 --- a/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java +++ b/javasrc/com/iskratel/ttcn/tci/codec/IOTCodec/IOTCodec.java @@ -253,7 +253,11 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { } //else if(value_.getType().getName().equals("GeneralConfigurationRsp")){} else if (value_.getType().getName().equals("SetFilterReq")){ + + //tcpdump -qns 0 -XX \(\(tcp or sctp\) and host 172.29.13.100 and port 65535 and \(host 192.168.50.81 or 192.168.50.82\) and port 3868\) -r /home/ttcn3/workspace/TTF006_VxLTE/tracefiles/TC_VxLTE_INT_REG_01.pcapng + ByteArrayOutputStream filter = new ByteArrayOutputStream(); + write(filter,"("); /*type record SetFilterReq { ProtocolFilter protocol, InterfaceInfoList interfaceInfos @@ -263,6 +267,7 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { write(filter," and "); encode_InterfaceInfoList(filter,(RecordOfValue) value_.getField("interfaceInfos")); + write(filter,")"); //Implementation due to existing CapturePCO CharstringValue cvfilter =(CharstringValue) charstringType.newInstance(); @@ -436,13 +441,14 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { String protocol="ip"; //default switch (value.getInt()){ - case 0:/**/ + case 0:protocol= "ip";break; case 1:protocol= "udp";break; case 2:/**/ - case 3:protocol= "tcp or sctp";break; + case 3:protocol= "(tcp or sctp)";break; default: } + protocol="ip"; //default //encode_IntegerValue(out, value.getInt()); write(out, protocol); } @@ -455,7 +461,7 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { //RecordValue rv=(RecordValue) value.getField(i); //encode_IntegerValue(out,(IntegerValue)value.getField(i)); //encode_Charstring(out,(CharstringValue)value.getField(i)); - write(out,"port "); + write(out,"port "); write(out,value.getField(i).toString()); } return; @@ -470,8 +476,8 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { //encode_Charstring(out, (CharstringValue)value.getField("domainName")); write(out,"host "); encode_Charstring(out, (CharstringValue)value.getField("IpAddress")); - write(out," and "); - encode_PortNumberList(out,(RecordOfValue)value.getField("portNumbers")); + //write(out," and ");//commented out because of IP fragmentation + //encode_PortNumberList(out,(RecordOfValue)value.getField("portNumbers"));//commented out because of IP fragmentation } @@ -505,9 +511,10 @@ public class IOTCodec extends AbstractBaseCodec implements TciCDProvided { int len = value.getLength(); for (int i = 0; i < len; i++) { - + write(out,"("); //RecordValue rv=(RecordValue) value.getField(i); encode_InterfaceInfo(out, (UnionValue)value.getField(i)); + write(out,")"); } return; } diff --git a/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java index 449adcc..d11e249 100644 --- a/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java +++ b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java @@ -7,37 +7,25 @@ package com.iskratel.ttcn.tri; import org.apache.log4j.Logger; -import org.etsi.ttcn.tci.CharstringValue; -import org.etsi.ttcn.tci.IntegerValue; -import org.etsi.ttcn.tci.TciModuleParameterId; -import org.etsi.ttcn.tci.TciTMProvided; -import org.etsi.ttcn.tci.Type; import org.etsi.ttcn.tri.TriAddress; import org.etsi.ttcn.tri.TriCommunicationTE; import org.etsi.ttcn.tri.TriComponentId; import org.etsi.ttcn.tri.TriMessage; import org.etsi.ttcn.tri.TriPortId; -import org.etsi.ttcn.tri.TriPortIdList; import org.etsi.ttcn.tri.TriStatus; -import com.testingtech.ttcn.tci.TciModuleParameterIdImpl; import com.testingtech.ttcn.tri.TriAddressImpl; import com.testingtech.ttcn.tri.TriMessageImpl; import com.testingtech.ttcn.tri.TriStatusImpl; -import de.tu_berlin.cs.uebb.muttcn.runtime.RB; +import jpcap.packet.Packet; -import java.io.ByteArrayOutputStream; import java.util.Enumeration; -import java.util.HashMap; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Queue; -import net.sourceforge.jpcap.net.*; - public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapterBase { TriCommunicationTE cte = null; @@ -101,7 +89,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter } public String toString(){ - return (componentId.getComponentName()+" "+tsiPortId.toString()+" "+filter+"\n" + "packets count: "+packets.size()); + return (componentId.getComponentName() + " " + tsiPortId.toString() + " " + ((filter != null) ? filter : "(null)"));// + "\n" + "packets count: " + ((packets != null) ? packets.size() : "(null)")); } } @@ -126,7 +114,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter this.tsiPortId = tsiPortId; ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId); - log.debug(""+ComponentCollection.elements().toString()); + //log.debug(""+ComponentCollection.elements().toString()); //result = connect(); result=true; }else{ @@ -176,7 +164,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter if (buffer == null) { return new TriStatusImpl(TriStatus.TRI_ERROR); } - log.debug("Send message: "+triMessage.getClass() +"// " + triMessage.toString()); + log.debug("Send message: "/*+triMessage.getClass() +"// "*/ + triMessage.toString()); int recv_reply = 0; int iotmsgType = buffer[0]&0xFF | buffer[1]&0xFF << 8; @@ -193,14 +181,14 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter break; case 2: /*SET_FILTER_REQ = 0x0002; /**< ID of SetFilterRequest */ - log.info("FilterREQ"); + log.info("FilterREQ: " + componentId.getComponentName()); byte[] filterresp= {0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*SET_FILTER_REP = 0x0009; /**< ID of SetFilterReply */ String filter = new String(buffer,10,buffer.length-10); - log.debug(filter); + log.debug("FilterREQ: filter=" + filter); try { FilterPackets fp = new FilterPackets(filter, componentId,ComponentCollection.get(componentId.getComponentName()+"-data"), this.cte/*tsiPortId*/); - ComponentCollectionFilter2Port.put(componentId.getComponentName(), fp); + ComponentCollectionFilter2Port.put(componentId.getComponentName(), fp); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -210,24 +198,26 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter break; case 3:/*START_CAPTURE_REQ = 0x0003; /**< ID of StartCaptureRequest */ - log.info("StartCaptureREQ"); + log.info("StartCaptureREQ: " + componentId.getComponentName()); + log.info("StartCaptureREQ: ComponentCollectionFilter2Port=" + ComponentCollectionFilter2Port.size()); byte[] startcapresp= {0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*START_CAPTURE_REP = 0x0004; /**< ID of StartCaptureReply */ - + if (!ComponentCollectionFilter2Port.isEmpty()) { Enumeration keys = ComponentCollectionFilter2Port.keys(); + //log.info("StartCaptureREQ: keys=" + keys); do { try{ String key = (String) keys.nextElement(); - FilterPackets fp = ComponentCollectionFilter2Port.get(key); - + FilterPackets fp = ComponentCollectionFilter2Port.get(key); + log.info("StartCaptureREQ: launch ReadCaptureThread for component " + fp.componentId.getComponentName()); ReadCaptureThread t = new ReadCaptureThread (fp.componentId.getComponentName(),log, tracefile,fp); t.join(1000); Thread.sleep(100); - }catch(Exception e){ log.debug(e.getMessage()); + e.printStackTrace(); } } while (keys.hasMoreElements()); //adapterCollection.clear(); @@ -291,6 +281,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter } catch (Throwable ex) { log.error("Exception: ", ex); + System.err.println("Exception: " + ex); } return new TriStatusImpl(TriStatus.TRI_ERROR); } @@ -347,7 +338,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter protected int receiveBuffer(byte[] buffer, int bufferSize) { // Try to decode message - Packet ippacket =new Packet(); + Packet ippacket = new Packet(); int packetLength=2+4+(((buffer[2] & 0xFF))|((buffer[3] & 0xFF) << 8)|((buffer[4] & 0xFF) << 16) | ((buffer[5] & 0xFF)<<24)); if (bufferSize < packetLength) { @@ -360,7 +351,11 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter if (iotmsg==1){ //CAPTURE_DATA_IND byte[] packetb = new byte[packetLength-0x1b]; System.arraycopy(buffer,0x1b, packetb, 0, packetLength-0x1b); - ippacket = PacketFactory.dataToPacket(1, packetb); + ippacket.data = packetb; + ippacket.len = packetb.length; + ippacket.sec = 1; + // FIXME Set DataLink properly + //ippacket = PacketFactory.dataToPacket(1, packetb); message = new byte[packetLength-0x45];//SIP or DIAMETER message content System.arraycopy(buffer,0x45, message, 0, packetLength-0x45); }else{ diff --git a/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java index 4830f95..db8b46f 100644 --- a/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java +++ b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java @@ -1,234 +1,302 @@ -/** - * @author TTF006 - * @version $Id: $ - * @desc This module provides offline capturing test adapter for VxLTE. - * @see - */ -package com.iskratel.ttcn.tri; - -import org.apache.log4j.Logger; -import org.etsi.ttcn.tri.TriAddress; -import org.etsi.ttcn.tri.TriMessage; - -import com.iskratel.ttcn.tri.IotConnectionOffline.FilterPackets; -import com.testingtech.ttcn.tri.TriAddressImpl; -import com.testingtech.ttcn.tri.TriMessageImpl; - -import net.sourceforge.jpcap.capture.CaptureFileOpenException; -import net.sourceforge.jpcap.capture.CapturePacketException; -import net.sourceforge.jpcap.capture.PacketCapture; -import net.sourceforge.jpcap.capture.PacketListener; -import net.sourceforge.jpcap.capture.RawPacketListener; -import net.sourceforge.jpcap.net.*; - -public class ReadCaptureThread extends Thread implements Runnable{ - - String name; - Thread t; - Logger log; - String tf;//tracefilename - FilterPackets fp; //filterpackets structure with component and ports - - ReadCaptureThread (String threadname){ - name = threadname; - t=new Thread(this,name); - t.start(); - } - - ReadCaptureThread (String threadname,Logger loger, String tracefile,FilterPackets filterpackets){ - name = threadname; - log = loger; - tf = tracefile; - fp = filterpackets; - - t=new Thread(this,name); - t.start(); - } - - public String tracefile=""; - private PacketCapture pcap; - PacketHandler ph; - RawPacketHandler rph; - - - public void run(){ - - try{ - - pcap = new PacketCapture(); - // open devices for capturing (requires root) - try { - pcap.openOffline(this.tf); - } catch (CaptureFileOpenException e) { - log.debug(e.getMessage()); - } - - try{ - // add a BPF filter (see tcpdump documentation) - if (fp.filter.startsWith("udp")){ - pcap.setFilter("(vlan and " + fp.filter+") or ("+fp.filter+")", true); - }else{ - pcap.setFilter(fp.filter, true); - } - // create a handler - // packet - ph = new PacketHandler(fp); - pcap.addPacketListener(ph); - - // raw - //rph = new RawPacketHandler("offline"); - //pcap.addRawPacketListener(rph); - - // capture packets-INFINITE=-1 //***** copied to start capture command - pcap.capture(200); - - } catch (CapturePacketException e) { - - log.debug(this.name+" "+e.getMessage() + "\n");// +e.getStackTrace().toString()); - } - - }catch(/*Interrupted*/Exception e){log.debug(this.name+" "+e.getMessage()+ "\n");} - - //log.debug("Thread ended! "+name);//+" packets " +fp.packets.size()); - } - - class PacketHandler implements PacketListener - { - String name; - private int counter = 0; - //private List packets; - private FilterPackets filterpackets; - - public PacketHandler(String name) { - this.name = name; - } - - public PacketHandler(FilterPackets filterpackets) { - this.name = filterpackets.componentId.getComponentName(); - this.filterpackets = filterpackets; - } - - public void packetArrived(Packet packet) { - this.counter++; - String type = packet.getClass().getName(); - //System.out.println(name + ": Packet(" + counter + ") is of type " + type + "."); - //log.debug(name + ": Packet(" + counter + ") is of type " + type +"."); - -// if (packet instanceof EthernetPacket){ -// final byte[] data = ((EthernetPacket)(packet)).getData(); -// //System.err.println(new String( data,0,data.length)); -// //System.err.println(((EthernetPacket)(packet)).getProtocol()); -// } - - if(packet instanceof IPPacket) { - IPPacket ipPacket = (IPPacket)packet; - byte[] message = ipPacket.getData();//.getTCPData();//TODO: assume data is in one packet - - String srcHost = ipPacket.getSourceAddress(); - String dstHost = ipPacket.getDestinationAddress(); - //String isoData = new String(data);//, "ISO-8859-1"); - log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); - log.debug(ipPacket.toColoredString(false)); -// TriMessage triMessage =TriMessageImpl.valueOf(message); -// TriAddress triAddress = new TriAddressImpl(new byte[] {}); -// -// synchronized(this.filterpackets.cte) { -// log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); -// this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); -// } - } - - if(packet instanceof TCPPacket) { - TCPPacket tcpPacket = (TCPPacket)packet; - byte[] message = tcpPacket.getData();//.getTCPData();//TODO: assume data is in one packet - - String srcHost = tcpPacket.getSourceAddress(); - String dstHost = tcpPacket.getDestinationAddress(); - //String isoData = new String(data);//, "ISO-8859-1"); - log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); - //log.debug(tcpPacket.toColoredString(false)); - - TriMessage triMessage =TriMessageImpl.valueOf(message); - TriAddress triAddress = new TriAddressImpl(new byte[] {}); - - synchronized(this.filterpackets.cte) { - log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); - this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); - } - } - - if (packet instanceof UDPPacket){ - UDPPacket udpPacket = (UDPPacket)packet; - byte[] message = udpPacket.getData();//.getUDPData();//TODO: assume data is in one packet - - String srcHost = udpPacket.getSourceAddress(); - String dstHost = udpPacket.getDestinationAddress(); - //String isoData = new String(data);//, "ISO-8859-1"); - log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); - //log.debug(udpPacket.toColoredString(false)); - - TriMessage triMessage =TriMessageImpl.valueOf(message); - TriAddress triAddress = new TriAddressImpl(new byte[] {}); - - synchronized(this.filterpackets.cte) { - log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); - this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); - } - } - - if (packet instanceof SCTPPacket){ - SCTPPacket sctpPacket = (SCTPPacket)packet; - byte[] message = sctpPacket.getData();//.getUDPData();//TODO: assume data is in one packet - - String srcHost = sctpPacket.getSourceAddress(); - String dstHost = sctpPacket.getDestinationAddress(); - //String isoData = new String(data);//, "ISO-8859-1"); - log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); - //log.debug(sctpPacket.toColoredString(false)); - - int i=0; - while(i < sctpPacket.getChunks().size()) { - - message = (sctpPacket.getChunks().get(i).getUserData()); - - TriMessage triMessage =TriMessageImpl.valueOf(message); - TriAddress triAddress = new TriAddressImpl(new byte[] {}); - - synchronized(this.filterpackets.cte) { - log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); - this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); - } - - i++; - } - - } - } - -// public List getPackets(){ -// return this.packets; -// } - } - - class RawPacketHandler implements RawPacketListener - { - String name; - private int counter = 0; - //private List rawpackets; - - public RawPacketHandler(String name) { - this.name = name; - } - - public void rawPacketArrived(RawPacket rawPacket) { - this.counter++; - //rawpackets.add(rawPacket); - //System.err.println(rawPacket.getClass().toString()/*rawPacket*/); - } - -// public List getPackets(){ -// return this.rawpackets; -// } - } - -} +/** + * @author TTF006 + * @version $Id: $ + * @desc This module provides offline capturing test adapter for VxLTE. + * @see + */ +package com.iskratel.ttcn.tri; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +//import java.util.Arrays.*; +import org.apache.log4j.Logger; +import org.etsi.ttcn.tri.TriAddress; +import org.etsi.ttcn.tri.TriMessage; + +import com.iskratel.ttcn.tri.IotConnectionOffline.FilterPackets; +import com.testingtech.ttcn.tri.TriAddressImpl; +import com.testingtech.ttcn.tri.TriMessageImpl; + +import jpcap.JpcapCaptor; +import jpcap.PacketReceiver; +import jpcap.packet.Packet; +//import jpcap.packet.RawIpPacket; +import jpcap.packet.IPPacket; +import jpcap.packet.TCPPacket; +import jpcap.packet.UDPPacket; +import jpcap.packet.SCTPPacket; + +public class ReadCaptureThread extends Thread implements Runnable{ + + String name; + Thread t; + JpcapCaptor pcap = null; + String tf;//tracefilename + FilterPackets fp; //filterpackets structure with component and ports + Logger log = null; + + ReadCaptureThread (String threadname){ + name = threadname; + t=new Thread(this,name); + t.start(); + } + + ReadCaptureThread (String threadname,Logger loger, String tracefile,FilterPackets filterpackets){ + log = loger; + name = threadname; + tf = tracefile; + fp = filterpackets; + if (fp != null) { + //log.info("ReadCaptureThread: " + threadname + ": fp=" + filterpackets); + } + t=new Thread(this,name); + t.start(); + } + + public String tracefile=""; + PacketHandler ph; + //RawPacketHandler rph; + + + public void run(){ + + //try{ + // open devices for capturing (requires root) + try { + pcap = JpcapCaptor.openFile(this.tf); + } catch (IOException e) { + log.debug(e.getMessage()); + } + + try{ + // add a BPF filter (see tcpdump documentation) + log.debug("ReadCaptureThread: fp.filter=" + ((fp != null) ? fp.filter : "null")); + //if (fp.filter.startsWith("udp")){ + //log.info(">>> filter=" + "(vlan and " + fp.filter+") or ("+fp.filter+")"); + //pcap.setFilter("(vlan and " + fp.filter+") or ("+fp.filter+")", true); + // pcap.setFilter(/*"ip"*/fp.filter, true); + //}else{ + pcap.setFilter(fp.filter, true); + //} + } catch (IOException e) { + + log.debug(this.name+" "+e.getMessage() + "\n");// +e.getStackTrace().toString()); + } + + // create a handler + // packet +// ph = new PacketHandler(fp); +// pcap.addPacketListener(ph); + + // raw + //rph = new RawPacketHandler("offline"); + //JpcapCaptor.addRawPacketListener(rph); + + // capture packets-INFINITE=-1 //***** copied to start capture command +// pcap.capture(200); + + try { + pcap.loopPacket(-1, new PacketHandler(fp)); + } + finally { + + } + + + + //}catch(/*Interrupted*/Exception e){log.debug(this.name+" "+e.getMessage()+ "\n");} + + log.debug("Thread ended! "+name);//+" packets " +fp.packets.size()); + } + + class PacketHandler implements PacketReceiver + { + String name; + private int counter = 0; + //private List packets; + private FilterPackets filterpackets; + private Map _fragments = null; + + + private class _fragmented_packet { + Packet _packet; + + public _fragmented_packet(Packet p_packet) { + _packet = p_packet; + } + + public void appendData(final byte[] p_data) { + _packet.data = concat(_packet.data, p_data); + _packet.len = _packet.data.length; + _packet.caplen = _packet.data.length; + } + + public Packet getPacket() { + return _packet; + } + + private byte[] concat(byte[]... arrays) { + // Determine the length of the result array + int totalLength = 0; + for (int i = 0; i < arrays.length; i++) { + totalLength += arrays[i].length; + } + + // create the result array + byte[] result = new byte[totalLength]; + + // copy the source arrays into the result array + int currentIndex = 0; + for (int i = 0; i < arrays.length; i++) { + System.arraycopy(arrays[i], 0, result, currentIndex, arrays[i].length); + currentIndex += arrays[i].length; + } + + return result; + } + } // End of class _fragmented_packet + + public PacketHandler(String name) { + this.name = name; + _fragments = new HashMap(); + } + + public PacketHandler(FilterPackets filterpackets) { + this.name = filterpackets.componentId.getComponentName(); + this.filterpackets = filterpackets; + _fragments = new HashMap(); + } + + public void receivePacket(Packet packet) { + this.counter++; + //String type = packet.getClass().getName(); + //log.debug(name + ": Packet(" + counter + ") is of type " + type +"."); + +// if (packet instanceof EthernetPacket){ +// final byte[] data = ((EthernetPacket)(packet)).getData(); +// //System.err.println(new String( data,0,data.length)); +// //System.err.println(((EthernetPacket)(packet)).getProtocol()); +// } + + Packet new_packet = null; + if (packet instanceof IPPacket) { + IPPacket ipPacket = (IPPacket) packet; + // Check fragmentation + if (ipPacket.more_frag == true) { // First or next fragment + if (!_fragments.containsKey((long) ipPacket.ident)) { + // Create new entry with the first fragment + _fragments.put((long) ipPacket.ident, new _fragmented_packet(packet)); + } else { + // Append the next fragment... + _fragments.get((long) ipPacket.ident).appendData(ipPacket.data); + } + // ...And process next packet + return; + } else if (ipPacket.dont_frag == false) { // Last segment + if (_fragments.containsKey((long) ipPacket.ident)) { + // Add last fragment + _fragments.get((long) ipPacket.ident).appendData(ipPacket.data); + new_packet = _fragments.get((long) ipPacket.ident).getPacket(); + //System.out.println("Final packet: " + new_packet.getClass().getName()); + // Remove entry + _fragments.remove((long) ipPacket.ident); + } + } else { + new_packet = packet; + } + } + + if(new_packet instanceof TCPPacket) { + TCPPacket tcpPacket = (TCPPacket)new_packet; + byte[] message= tcpPacket.data;//.getTCPData();//TODO: assume data is in one packet + + //String srcHost = tcpPacket.src_ip.toString(); + //String dstHost = tcpPacket.dst_ip.toString(); + //String isoData = new String(data);//, "ISO-8859-1"); + //log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + + TriMessage triMessage =TriMessageImpl.valueOf(message); + TriAddress triAddress = new TriAddressImpl(new byte[] {}); + + synchronized(this.filterpackets.cte) { + log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); + this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); + } + } + + if (new_packet instanceof UDPPacket){ + UDPPacket udpPacket = (UDPPacket)new_packet; + byte[] message = udpPacket.data;//.getUDPData();//TODO: assume data is in one packet + + //String srcHost = udpPacket.src_ip.toString(); + //String dstHost = udpPacket.dst_ip.toString(); + //String isoData = new String(data);//, "ISO-8859-1"); + //log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + + TriMessage triMessage =TriMessageImpl.valueOf(message); + TriAddress triAddress = new TriAddressImpl(new byte[] {}); + + synchronized(this.filterpackets.cte) { + log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); + this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); + } + } + + if (new_packet instanceof SCTPPacket){ + SCTPPacket sctpPacket = (SCTPPacket)new_packet; + byte[] message = sctpPacket.data;//getData();//.getUDPData();//TODO: assume data is in one packet + + //String srcHost = sctpPacket.src_ip.toString();//getSourceAddress(); + //String dstHost = sctpPacket.dst_ip.toString();//getDestinationAddress(); + //String isoData = new String(data);//, "ISO-8859-1"); + //log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData); + //log.debug(sctpPacket.toColoredString(false)); + + int i=0; + while(i < sctpPacket.chunks.length) { + if (sctpPacket.chunks[i].type == 0 ) //DATA_CHUNKTYPE + { + message = java.util.Arrays.copyOfRange(sctpPacket.chunks[i].data, 0+12, sctpPacket.chunks[i].data.length);//12 - length of DATAchunks parameters + + TriMessage triMessage =TriMessageImpl.valueOf(message); + TriAddress triAddress = new TriAddressImpl(new byte[] {}); + + synchronized(this.filterpackets.cte) { + log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString()); + this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); + } + } + i++; + } + } + + } + +// public List getPackets(){ +// return this.packets; +// } + } + + class RawPacketHandler implements PacketReceiver + { + String name; + private int counter = 0; + //private List rawpackets; + + public RawPacketHandler(String name) { + this.name = name; + } + + public void receivePacket(Packet packet) { + this.counter++; + //rawpackets.add(rawPacket); + //System.err.println(rawPacket.getClass().toString()/*rawPacket*/); + } + +// public List getPackets(){ +// return this.rawpackets; +// } + } + +} diff --git a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java index bbf5bf5..0f0c269 100644 --- a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java +++ b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java @@ -54,7 +54,6 @@ import com.testingtech.ttcn.tri.TriStatusImpl; import de.tu_berlin.cs.uebb.muttcn.runtime.RB; -import net.sourceforge.jpcap.capture.PacketCapture; public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, TriPlatformPA, TciEncoding, TestCaseParameterServer { @@ -180,23 +179,23 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, Tri if (portName.contains("acPort")) { //New test started ... - try{ - PacketCapture pcap=new PacketCapture(); - }catch(Exception e){ - loginfo("\nCheck presence of PCAP library on operating system!\n"); - return new TriStatusImpl(TriStatus.TRI_ERROR); - } +// try{ +// PacketCapture pcap=new PacketCapture(); +// }catch(Exception e){ +// loginfo("\nCheck presence of PCAP library on operating system!\n"); +// return new TriStatusImpl(TriStatus.TRI_ERROR); +// } IotConnectionOffline adapter = new IotConnectionOffline(log, Cte); adapter.setTraceFile(ROOTFOLDERTRACEFILE+this.testcaseName+".pcapng"); baseAdapter = adapter; }else if (portName.contains("eaPort")){ - EaPortConnection adapter = new EaPortConnection(Cte); + EaPortConnection adapter = new EaPortConnection(/*this.log,*/ Cte); baseAdapter = adapter; }else { loginfo("Port not supported (" + portName +")!\n"); //Init port connection to avoid mapping errors - DummyConnection adapter = new DummyConnection(Cte); + DummyConnection adapter = new DummyConnection(/*this.log,*/ Cte); baseAdapter = adapter; } @@ -241,7 +240,17 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, Tri //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); } }else{ - baseAdapter = adapterCollection.get(comPortId.getComponent().getComponentName()+portName); + baseAdapter = adapterCollection.get(/*comPortId.getComponent().getComponentName()+*/portName); +// if (!adapterCollection.isEmpty()) { +// Enumeration keys = adapterCollection.keys(); +// do { +// try{ +// String key = (String) keys.nextElement(); +// loginfo("triUnmap:adapters left:key="+key +"comPId=" + portName); +// }catch(Exception e){} +// } while (keys.hasMoreElements()); +// +// } } if (baseAdapter == null) { @@ -307,7 +316,7 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA, Tri } public TciCDProvided getCodec(String s) { - + loginfo(">>> TciCDProvided.getCodec for " + portNameForCoding + " = " + ((s != null) ? s : "(null)")); if (s == null || s.equals("")) { loginfo("No codec name for usage!!! Last used port = " + portNameForCoding); diff --git a/javasrc/net/CVS/Entries b/javasrc/net/CVS/Entries deleted file mode 100644 index 4a9c4eb..0000000 --- a/javasrc/net/CVS/Entries +++ /dev/null @@ -1,37 +0,0 @@ -/IPPort.java/1.3/Thu Jun 7 21:50:56 2001// -/IPVersions.java/1.1/Wed May 23 02:42:22 2001// -/RawPacket.java/1.2/Fri Jun 1 06:30:01 2001// -/package.html/1.1/Thu Jun 14 01:21:53 2001// -/ICMPMessage.java/1.4/Tue Jun 26 18:46:02 2001// -/MACAddress.java/1.3/Tue Jun 26 18:46:03 2001// -/TypesOfService.java/1.2/Tue Jun 26 18:46:04 2001// -/ICMPMessages.java/1.4/Tue Jun 26 23:07:03 2001// -/IPAddress.java/1.4/Tue Jun 26 23:07:03 2001// -/ARPFields.java/1.3/Wed Jun 27 02:28:22 2001// -/EthernetFields.java/1.3/Wed Jun 27 02:28:22 2001// -/EthernetProtocol.java/1.3/Wed Jun 27 02:28:22 2001// -/IPFields.java/1.4/Wed Jun 27 02:28:22 2001// -/IPPorts.java/1.3/Wed Jun 27 02:28:22 2001// -/IPProtocol.java/1.4/Wed Jun 27 02:28:22 2001// -/IPProtocols.java/1.4/Wed Jun 27 02:28:22 2001// -/TCPFields.java/1.3/Wed Jun 27 02:28:22 2001// -/UDPFields.java/1.3/Wed Jun 27 02:28:22 2001// -/ARPPacket.java/1.10/Mon Jul 2 00:23:09 2001// -/Packet.java/1.6/Mon Jul 2 00:23:14 2001// -/LinkLayers.java/1.3/Mon Jul 2 03:25:53 2001// -/LinkLayer.java/1.5/Mon Jul 2 04:03:08 2001// -/EthernetProtocols.java/1.6/Sat Aug 25 16:39:53 2001// -/ICMPFields.java/1.5/Sat Aug 25 16:39:53 2001// -/ICMPPacket.java/1.13/Sat Aug 25 16:39:53 2001// -/IGMPFields.java/1.1/Mon Jul 30 00:00:02 2001// -/IGMPMessage.java/1.1/Mon Jul 30 00:00:02 2001// -/IGMPMessages.java/1.1/Mon Jul 30 00:00:02 2001// -/IGMPPacket.java/1.1/Mon Jul 30 00:00:02 2001// -/PacketFactory.java/1.11/Sat Aug 25 16:39:54 2001// -/UDPPacket.java/1.11/Sat Aug 25 16:39:54 2001// -/makefile/1.13/Sat Aug 25 16:39:54 2001// -/EthernetPacket.java/1.14/Thu Jan 10 00:16:58 2002// -/IPPacket.java/1.16/Thu Jan 10 00:16:58 2002// -/PacketEncoding.java/1.3/Thu Jan 10 00:16:59 2002// -/TCPPacket.java/1.17/Thu Jan 10 00:16:59 2002// -D diff --git a/javasrc/net/CVS/Repository b/javasrc/net/CVS/Repository deleted file mode 100644 index 891c6ed..0000000 --- a/javasrc/net/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -src/java/net/sourceforge/jpcap/net diff --git a/javasrc/net/CVS/Root b/javasrc/net/CVS/Root deleted file mode 100644 index f84ccad..0000000 --- a/javasrc/net/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.jpcap.sourceforge.net:/cvsroot/jpcap diff --git a/javasrc/net/sourceforge/jpcap/capture/.gitignore b/javasrc/net/sourceforge/jpcap/capture/.gitignore deleted file mode 100644 index b3b15a0..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -# $Id: .cvsignore,v 1.5 2004/03/17 02:04:15 pcharles Exp $ - -# ignore generated native header prototype file -net_sourceforge_jpcap_capture_PacketCapture.h - -# ignore files generated on windows -jpcap.exp -jpcap.dll - -# ignore files generated on os x -libjpcap.jnilib diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java deleted file mode 100644 index 477153b..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureConfigurationException.java +++ /dev/null @@ -1,33 +0,0 @@ -// $Id: CaptureConfigurationException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This exception occurs when the capture client tries to - * specify a capture device that does not exist or if the capture - * device specified is illegal. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ - */ -public class CaptureConfigurationException extends Exception -{ - /** - * Create a new invalid capture device exception. - */ - public CaptureConfigurationException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: CaptureConfigurationException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java deleted file mode 100644 index ef03df6..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceInvalidException.java +++ /dev/null @@ -1,33 +0,0 @@ -// $Id: CaptureDeviceInvalidException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This exception occurs when the capture client tries to - * specify a capture device that does not exist or if the capture - * device specified is illegal. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ - */ -public class CaptureDeviceInvalidException extends Exception -{ - /** - * Create a new invalid capture device exception. - */ - public CaptureDeviceInvalidException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: CaptureDeviceInvalidException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java deleted file mode 100644 index 7f2da6d..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceLookupException.java +++ /dev/null @@ -1,31 +0,0 @@ -// $Id: CaptureDeviceLookupException.java,v 1.1 2002/02/18 21:51:54 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Rex Tsai * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This exception occurs when no capture devices are detected. - * - * @author Rex Tsai >chihchun@kalug.linux.org.tw< - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2002/02/18 21:51:54 $ - */ -public class CaptureDeviceLookupException extends Exception -{ - /** - * Create a new capture device not found exception. - */ - public CaptureDeviceLookupException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: CaptureDeviceLookupException.java,v 1.1 2002/02/18 21:51:54 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java deleted file mode 100644 index 4cff935..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException.java +++ /dev/null @@ -1,31 +0,0 @@ -// $Id: CaptureDeviceNotFoundException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This exception occurs when no capture devices are detected. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ - */ -public class CaptureDeviceNotFoundException extends Exception -{ - /** - * Create a new capture device not found exception. - */ - public CaptureDeviceNotFoundException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: CaptureDeviceNotFoundException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java deleted file mode 100644 index fa50804..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureDeviceOpenException.java +++ /dev/null @@ -1,31 +0,0 @@ -// $Id: CaptureDeviceOpenException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This exception occurs when the capture device cannot be opened. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ - */ -public class CaptureDeviceOpenException extends Exception -{ - /** - * Create a new invalid capture device exception. - */ - public CaptureDeviceOpenException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: CaptureDeviceOpenException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java b/javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java deleted file mode 100644 index 68a238a..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureFileOpenException.java +++ /dev/null @@ -1,31 +0,0 @@ -// $Id: CaptureFileOpenException.java,v 1.1 2001/12/30 23:07:00 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Christopher Balcerek * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.capture; - -/** - * This exception occurs when the savefile cannot be opened. - * - * @author Christopher Balcerek - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/12/30 23:07:00 $ - */ -public class CaptureFileOpenException extends Exception -{ - /** - * Create a new invalid capture file exception. - */ - public CaptureFileOpenException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: CaptureFileOpenException.java,v 1.1 2001/12/30 23:07:00 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java b/javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java deleted file mode 100644 index a0aa006..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CapturePacketException.java +++ /dev/null @@ -1,31 +0,0 @@ -// $Id: CapturePacketException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This exception occurs when an error occurs while capturing data. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ - */ -public class CapturePacketException extends Exception -{ - /** - * Create a new invalid capture device exception. - */ - public CapturePacketException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: CapturePacketException.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java b/javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java deleted file mode 100644 index 83ee119..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureStatistics.java +++ /dev/null @@ -1,59 +0,0 @@ -// $Id: CaptureStatistics.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * Packet capture statistics. - *

    - * Encapsulation for statistics collected by PacketCapture. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/17 20:13:51 $ - */ -public class CaptureStatistics -{ - /** - * Create a new and empty statistics container. - */ - public CaptureStatistics(int receivedCount, int droppedCount) { - this.receivedCount = receivedCount; - this.droppedCount = droppedCount; - } - - public int getReceivedCount() { - return receivedCount; - } - - public int getDroppedCount() { - return droppedCount; - } - - - /** - * Convert this packet to a readable string. - */ - public String toString() { - StringBuffer buffer = new StringBuffer(); - buffer.append("[PacketStatistics: "); - buffer.append("received = " + receivedCount); - buffer.append(", dropped = " + droppedCount); - buffer.append(']'); - - return buffer.toString(); - } - - - private int receivedCount; - private int droppedCount; - - private String _rcsid = - "$Id: CaptureStatistics.java,v 1.1 2001/05/17 20:13:51 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/CaptureTest.java b/javasrc/net/sourceforge/jpcap/capture/CaptureTest.java deleted file mode 100644 index 8a956a6..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/CaptureTest.java +++ /dev/null @@ -1,125 +0,0 @@ -// $Id: CaptureTest.java,v 1.2 2001/05/23 02:55:02 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - -import net.sourceforge.jpcap.net.RawPacket; - - -/** - * Class to exercise PacketCapture. - *

    - * Testing of PacketCapture could easily be implemented in the same class's - * main method, but since the tester is a client and must implement the - * listener interface, seems clearer to decouple the two. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.2 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/23 02:55:02 $ - */ -public class CaptureTest implements RawPacketListener -{ - protected static String NAME = "CaptureTest"; - protected static int TEST_COUNT = 2; - - /** - * Create a new tester. - */ - public CaptureTest() { - } - - - // implementation of RawPacketListener interface - - public void rawPacketArrived(RawPacket rawPacket) { - System.err.println(NAME + ": " + rawPacket + " arrived"); - } - - - // implementation of test logic - - /** - * Execute the test. - */ - public void runTest() { - //-- create PacketCapture system - System.err.println(NAME + ": instantiating PacketCapture object.. "); - PacketCapture pc = new PacketCapture(); - System.err.println(NAME + ": PacketCapture instantiated ok"); - - //-- set the capture device - String device = null; - try { - System.err.print(NAME + ": detecting capture device.. "); - device = pc.findDevice(); - System.err.println(device); - } - catch(CaptureDeviceNotFoundException e) { - // usually occurs if no network devices are available on the system - System.err.println(e); - System.exit(1); - } - - //-- open the capture device - try { - System.err.print(NAME + ": opening capture device.. "); - pc.open(device, true); - System.err.println(device); - } - catch(CaptureDeviceOpenException e) { - // usually occurs if the user doesn't have sufficient privileges - System.err.println(e); - System.exit(1); - } - - //-- set filters - try { - String filter = ""; // nothing filtered by default - System.err.println(NAME + ": setting filter to '" + filter + "'.. "); - pc.setFilter(filter, true); - System.err.println(NAME + ": filter compiled and activated ok"); - } - catch(InvalidFilterException e) { - System.err.println(e); - System.exit(1); - } - - //-- register the tester as a packet listener - System.err.print(NAME + ": registering as a packet listener.. "); - pc.addRawPacketListener(this); - System.err.println("ok"); - - //-- capture packets - try { - int count = TEST_COUNT; - System.err.println(NAME + ": waiting for " + count + " packet(s).. "); - pc.capture(count); - System.err.println(NAME + ": done capturing."); - } - catch(CapturePacketException e) { - System.err.println(e); - System.exit(1); - } - - //-- dump statistics - System.err.println(pc.getStatistics()); - } - - - /** - * Simple test to exercise PacketCapture. - */ - public static void main(String [] args) { - CaptureTest ct = new CaptureTest(); - ct.runTest(); - } - - - private String _rcsid = - "$Id: CaptureTest.java,v 1.2 2001/05/23 02:55:02 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java b/javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java deleted file mode 100644 index c950ee7..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/InvalidFilterException.java +++ /dev/null @@ -1,31 +0,0 @@ -// $Id: InvalidFilterException.java,v 1.2 2001/08/21 23:30:12 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This exception occurs when an error occurs while capturing data. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.2 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/08/21 23:30:12 $ - */ -public class InvalidFilterException extends Exception -{ - /** - * Create a new invalid filter exception. - */ - public InvalidFilterException(String message) { - super(message); - } - - - private static String _rcsId = - "$Id: InvalidFilterException.java,v 1.2 2001/08/21 23:30:12 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketCapture.java b/javasrc/net/sourceforge/jpcap/capture/PacketCapture.java deleted file mode 100644 index d6116f0..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/PacketCapture.java +++ /dev/null @@ -1,214 +0,0 @@ -// $Id: PacketCapture.java,v 1.18 2004/10/22 21:28:04 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - -import java.net.NetworkInterface; -import java.util.Enumeration; -import java.util.ArrayList; - - -/** - * This class is the core of packet capture in jpcap. It provides a - * high-level interface for capturing network packets by encapsulating - * libpcap. - *

    - * If you want to capture network packets, implement PacketListener - * and register with an instance of this class. When packets arrive, - * the object will call you back via packetArrived(). - *

    - * Examples can be found in net.sourceforge.jpcap.tutorial. - *

    - * For more documentation on this class's methods, see PacketCaptureCapable; - * Javadoc is 'inherited' from this interface. - *

    - * PacketCapture utilizes libpcap's pcap_loop(). - * For pcap_dispatch()-type behavior, see the endCapture() method. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.18 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/10/22 21:28:04 $ - */ -public class PacketCapture extends PacketCaptureBase - implements PacketCaptureCapable -{ - /** - * Name of the java-enabled wrapper around libpcap. - */ - protected static String LIB_PCAP_WRAPPER = "jpcap"; - - - /** - * Create a new packet capture instance. - */ - public PacketCapture() { - if(nextInstance >= INSTANCE_MAX) { - throw new Error("Too many instances, exceeds " + INSTANCE_MAX); - } - - instanceNum = nextInstance ++; - } - - // methods for controlling a packet capture session - - public void open(String device, boolean promiscuous) - throws CaptureDeviceOpenException { - open(instanceNum, device, DEFAULT_SNAPLEN, promiscuous, DEFAULT_TIMEOUT); - } - - public void open(String device, int snaplen, - boolean promiscuous, int timeout) - throws CaptureDeviceOpenException { - open(instanceNum, device, snaplen, promiscuous, timeout); - } - - public native void open(int instance, String device, int snaplen, - boolean promiscuous, int timeout) - throws CaptureDeviceOpenException; - - - public void openOffline(String fileName) throws CaptureFileOpenException { - openOffline(instanceNum, fileName); - } - - public native void openOffline(int instance, String fileName) - throws CaptureFileOpenException; - - public void setFilter(String filterExpression, boolean optimize) - throws InvalidFilterException { - setFilter(instanceNum, filterExpression, optimize); - } - - public native void setFilter(int instance, String filterExpression, - boolean optimize) - throws InvalidFilterException; - - public void capture(int count) throws CapturePacketException { - - capture(instanceNum, count); - } - - public native void capture(int instance, int count) - throws CapturePacketException; - - public CaptureStatistics getStatistics() { - setupStatistics(); - - // transfer the values setup by the native method into - // the container and return to the caller - return new CaptureStatistics(receivedCount, droppedCount); - } - - /** - * Close cleans up after a packet capture session. - * It does _not_ terminate a packet capture. - * capture() does not return control until 'count' packets are captured. - *

    - * If you are looking for a way to signal an end to a capture session - * before a set number of packets are received, check out the class - * SyncPacketCapture. - */ - public native void close(int instance); - - public void close() { - close(instanceNum); - } - - public native void endCapture(int instance); - - public void endCapture() { - endCapture(instanceNum); - } - - - /** - * Get Interface List - * @return Network device interface names. - */ - /* - public static native String[] lookupDevices() - throws CaptureDeviceLookupException; - */ - - /** - * note: the following code is a viable non-native alternative to - * lookupDevices(). However, it requires jdk1.4. Currently, all - * of the jpcap code builds on jdk1.2, making it 'portable' to a - * large number of platforms and vm's. - * - */ - public static String[] lookupDevices() throws CaptureDeviceLookupException { - String [] deviceList; - ArrayList jDevsList = new ArrayList(); - try { - Enumeration e = NetworkInterface.getNetworkInterfaces(); - while( e.hasMoreElements()) { - NetworkInterface ni = (NetworkInterface)e.nextElement(); - jDevsList.add(ni.getName()); - System.err.println(ni.getName()); - } - } - catch (Exception e) { - } - deviceList = jDevsList.toArray(new String[jDevsList.size()]); - return deviceList; - } - - - // the following methods could be static, but aren't so that they - // can be included in the PacketCaptureCapable interface. - - public native String findDevice() - throws CaptureDeviceNotFoundException; - - public native int getNetwork(String device) - throws CaptureConfigurationException; - - public native int getNetmask(String device) - throws CaptureConfigurationException; - - public int getLinkLayerType() throws CaptureConfigurationException { - return getLinkLayerType(instanceNum); - } - - public native int getLinkLayerType(int instance) - throws CaptureConfigurationException; - - public int getSnapshotLength() { - return getSnapshotLength(instanceNum); - } - - public native int getSnapshotLength(int instance); - - - /** - * The packet capture library sets up the statistic counter members - * when this method is invoked internally. - */ - private native void setupStatistics(int instance); - - private void setupStatistics() { - setupStatistics(instanceNum); - } - - - // static initialization - - static { - System.err.print("PacketCapture: loading native library jpcap.. "); - System.loadLibrary(LIB_PCAP_WRAPPER); - System.err.println("ok"); - } - - - private int instanceNum = 0; // the index of this instance - private static int nextInstance = 0; // static instance counter - private static int INSTANCE_MAX = 20; //original limit 10 - private String _rcsid = - "$Id: PacketCapture.java,v 1.18 2004/10/22 21:28:04 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java b/javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java deleted file mode 100644 index abda8cf..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/PacketCaptureBase.java +++ /dev/null @@ -1,91 +0,0 @@ -// $Id: PacketCaptureBase.java,v 1.5 2004/05/05 23:14:44 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - -import net.sourceforge.jpcap.util.Timeval; -import net.sourceforge.jpcap.net.Packet; -import net.sourceforge.jpcap.net.RawPacket; -import net.sourceforge.jpcap.net.PacketFactory; - - -/** - * This class contains base functionality shared by - * both the simulator and the actual packet capture system. - *

    - * Regardless of whether 'real' packets are being captured off a network - * or 'fake' packets are being generated by the simulator, - * the packet dispatch logic is the same. - *

    - * This class is abstract because it is useless standalone. The - * packet capture system which inherits from this class must provide a - * way of feeding data to handlePacket() where it is then dispatched to - * listeners. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:44 $ - */ -public abstract class PacketCaptureBase - extends PacketDispatcher implements PacketHandler -{ - // internal packet handling implementation - - /** - * Handle arriving packets. - *

    - * Arriving packets are dispatched to registered packet listeners. - * If caplen is smaller than length, then the packet was truncated - * because the amount of data on the wire exceeded the snapshot length - * specified when open() was called. - *

    - * In the simulator case, fake packets are generated and this method - * called with the fabricated data. In the case of the capture system, - * the native library libjpcap calls the method back. - * - * @param length the length of the packet off of the wire. - * @param caplen the number of bytes actually captured. - * @param seconds the seconds component of the timestamp. - * @param useconds the microseconds component of the timestamp. - * @param data the contents of the captured packet. - */ - public void handlePacket(int length, int caplen, - int seconds, int useconds, byte [] data) { - // create a raw packet and abstract packet from the raw data - Timeval tv = new Timeval(seconds, useconds); - - RawPacket rp = new RawPacket(tv, data, - length > caplen ? length - caplen : 0); - //Packet p = PacketFactory.dataToPacket(linkType, data, tv); - Packet p = PacketFactory.dataToPacket(linkType, data); - // dispatch the raw packet to registered listeners.. - dispatchRawPacket(rp); - - // dispatch the packet to listeners interested in packet objects.. - dispatchPacket(p); - } - - - /** - * The link-type code for the currently open network device. - * The type is queried and set in open() and then utilized when - * packets are received by handlePacket(). - */ - public int linkType; - - // the following are redundant with what's stored in CaptureStatistics. - // this is temporary storage enabling the native code's statistics function - // to manipulate the results directly in this class rather than trying - // to modify fields inside an object held by this object. - // figure out how to do this more elegantly. - public int receivedCount = 0; - public int droppedCount = 0; - - private String _rcsid = - "$Id: PacketCaptureBase.java,v 1.5 2004/05/05 23:14:44 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java b/javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java deleted file mode 100644 index a88eacf..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/PacketCaptureCapable.java +++ /dev/null @@ -1,186 +0,0 @@ -// $Id: PacketCaptureCapable.java,v 1.4 2003/06/24 20:30:18 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This is the packet capture interface. It is implemented by both the - * packet capture system (PacketCapture) and the simulator - * (PacketCaptureSimulator). - *

    - * The interface has two major components: methods that a client uses - * to register for packet events and methods that a client - * calls in order to setup and initiate packet capture. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.4 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/06/24 20:30:18 $ - */ -public interface PacketCaptureCapable -{ - /** - * Snapshot length. Maximum number of bytes per packet to capture. - * For IPv4, 96 bytes guarantees that at least the headers of most - * packet types and protocols will get captured. - * For IPv6, 68 is a better value? - */ - int DEFAULT_SNAPLEN = 96; - - /** - * Default capture timeout in milliseconds. - */ - int DEFAULT_TIMEOUT = 1000; - - - // capture component of interface - - /** - * Open a network device for data capture. Throws an exception if - * the device name specified is invalid. Uses default values for - * the capture timeout and snaplen. - * - * @param device the name of the network device. - * Examples of valid network devices on linux are 'eth0' and 'ppp0'. - * @param promiscuous whether or not the device should be opened in - * promiscuous mode. - */ - void open(String device, boolean promiscuous) - throws CaptureDeviceOpenException; - - /** - * Open a network device for data capture. - * - * @param device the name of the network device. - * Examples of valid network devices on linux are 'eth0' and 'ppp0'. - * @param snaplen the 'snapshot' length. Defines the maximum number of - * bytes to save from each captured packet. - * @param promiscuous whether or not the device should be opened in - * promiscuous mode. - * @param timeout the packet capture timeout in milliseconds. - */ - void open(String device, int snaplen, boolean promiscuous, int timeout) - throws CaptureDeviceOpenException; - - /** - * Open a tcpdump-formatted savefile. - * - * @param fileName the name of the savefile. - */ - void openOffline(String fileName) - throws CaptureFileOpenException; - - /** - * Create, compile and activate a filter from a filter expression. - * - * @param filterExpression the filter expression. For example, - * the expression "host techno" would filter only packets sent or - * arriving at the host named techno. - * @param optimize whether or not the resulting bpf code is optimized - * internally by libpcap. - */ - void setFilter(String filterExpression, boolean optimize) - throws InvalidFilterException; - - /** - * Capture packets. - * - * @param count the number of packets to capture. - * If count is negative, capture will block forever, unless an exception - * is thrown. - */ - void capture(int count) - throws CapturePacketException; - - /** - * Fetch statistics on captured packets. - * This method should not be called unless capture() was previously called. - * - * @return packet capture statistics. - */ - CaptureStatistics getStatistics(); - - /** - * Close the capture device. - */ - void close(); - - - // static native methods to fetch capture device and network information - - /** - * Detect a network device suitable for packet capture. - * - * @return a string describing the network device. if no device can be - * found, null is returned. - */ - String findDevice() - throws CaptureDeviceNotFoundException; - - /** - * Fetch the network number for the specified device. - * - * @param device the name of the network device. - * @return the network address - */ - int getNetwork(String device) - throws CaptureConfigurationException; - - /** - * Fetch the network mask for the specified device. - * - * @param device the name of the network device. - * @return the netmask address - */ - int getNetmask(String device) - throws CaptureConfigurationException; - - /** - * Fetch the link layer type for the specified device. - * - * @return the link layer type code. - */ - int getLinkLayerType() - throws CaptureConfigurationException; - - /** - * Get the snapshot length given that network device is open. - * - * @return the packet snapshot length. - */ - int getSnapshotLength(); - - // listener registration component of interface - - /** - * Register a raw packet listener with this capture system. - * @param rawListener the raw packet listener to add to the notification - * list. - */ - void addRawPacketListener(RawPacketListener rawListener); - - /** - * Deregister a raw packet listener from this capture system. - * @param rawListener the raw packet listener to remove from the - * notification list. - */ - void removeRawPacketListener(RawPacketListener rawListener); - - /** - * Register a packet object listener with this capture system. - * @param objListener the packet listener to add to the notification list. - */ - void addPacketListener(PacketListener objListener); - - /** - * Deregister a packet object listener from this capture system. - * @param objListener the packet listener to remove from the - * notification list. - */ - void removePacketListener(PacketListener objListener); -} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java b/javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java deleted file mode 100644 index 244a8f6..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/PacketDispatchCapable.java +++ /dev/null @@ -1,48 +0,0 @@ -// $Id: PacketDispatchCapable.java,v 1.1 2001/06/18 05:01:53 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * An interface for classes capable of dispatching captured network - * packets. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/18 05:01:53 $ - */ -public interface PacketDispatchCapable -{ - /** - * Register a raw packet listener with this capture system. - * @param rawListener the raw packet listener to add to the notification - * list. - */ - void addRawPacketListener(RawPacketListener rawListener); - - /** - * Deregister a raw packet listener from this capture system. - * @param rawListener the raw packet listener to remove from the - * notification list. - */ - void removeRawPacketListener(RawPacketListener rawListener); - - /** - * Register a packet object listener with this capture system. - * @param objListener the packet listener to add to the notification list. - */ - void addPacketListener(PacketListener objListener); - - /** - * Deregister a packet object listener from this capture system. - * @param objListener the packet listener to remove from the - * notification list. - */ - void removePacketListener(PacketListener objListener); -} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java b/javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java deleted file mode 100644 index bf2ffda..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/PacketDispatcher.java +++ /dev/null @@ -1,108 +0,0 @@ -// $Id: PacketDispatcher.java,v 1.3 2004/10/02 01:23:19 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - -import java.util.Iterator; -import java.util.HashSet; -import net.sourceforge.jpcap.net.Packet; -import net.sourceforge.jpcap.net.RawPacket; - - -/** - * This class encapsulates a mechanism for dispatching network data and - * packets to a listener who has subscribed to such events. - *

    - * Since this class doesn't contain an implementation for handling - * real network data, it is abstract. - *

    - * This class is extended by packet capture systems which, although - * they may utilize different sources of packet data, share a common - * mechanism for dispatching the packets. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ - */ -public abstract class PacketDispatcher implements PacketDispatchCapable -{ - /** - * Register a raw packet listener with this capture system. - * @param rawListener the raw packet listener to add to the notification - * list. - */ - public void addRawPacketListener(RawPacketListener rawListener) { - rawListeners.add(rawListener); - } - - /** - * Deregister a raw packet listener from this capture system. - * @param rawListener the raw packet listener to remove from the - * notification list. - */ - public void removeRawPacketListener(RawPacketListener rawListener) { - rawListeners.remove(rawListener); - } - - /** - * Register a packet object listener with this capture system. - * @param objListener the packet listener to add to the notification list. - */ - public void addPacketListener(PacketListener objListener) { - objListeners.add(objListener); - } - - /** - * Deregister a packet object listener from this capture system. - * @param objListener the packet listener to remove from the - * notification list. - */ - public void removePacketListener(PacketListener objListener) { - objListeners.remove(objListener); - } - - /** - * Dispatch a raw packet to all registered listeners. - */ - public void dispatchRawPacket(RawPacket rawPacket) { - Iterator i = rawListeners.iterator(); - while(i.hasNext()) { - RawPacketListener pl = (RawPacketListener)i.next(); - // System.err.println(NAME + ": calling registered listener " + pl); - pl.rawPacketArrived(rawPacket); - } - } - - /** - * Dispatch a packet to all registered listeners. - */ - public void dispatchPacket(Packet packet) { - Iterator i = objListeners.iterator(); - while(i.hasNext()) { - PacketListener pl = (PacketListener)i.next(); - // System.err.println(NAME + ": calling registered listener " + pl); - pl.packetArrived(packet); - } - } - - - /** - * Registered clients listening for raw packets captured by this object. - */ - //jdk1.5: HashSet rawListeners = new HashSet(); - HashSet rawListeners = new HashSet(); - - /** - * Registered clients listening for packet objects captured by this object. - */ - //jdk1.5: HashSet objListeners = new HashSet(); - HashSet objListeners = new HashSet(); - - private String _rcsid = - "$Id: PacketDispatcher.java,v 1.3 2004/10/02 01:23:19 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketHandler.java b/javasrc/net/sourceforge/jpcap/capture/PacketHandler.java deleted file mode 100644 index 01224a0..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/PacketHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -// $Id: PacketHandler.java,v 1.2 2001/06/18 05:03:35 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - - -/** - * This is the jpcap internal capture interface. libjpcap - * calls back the jpcap packet handler via this interface when packets - * arrive. - *

    - * If you are writing an application which captures packets from jpcap, - * you probably want to look at PacketCapture and PacketListener. - *

    - * The scope of this class is protected because it is only used internally - * as a contract between libjpcap and PacketCaptureBase. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.2 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/18 05:03:35 $ - */ -interface PacketHandler -{ - /** - * Handle an arriving packet. - * - * @param length the length of the packet off of the wire. - * @param caplen the number of bytes actually captured. - * @param seconds the seconds component of the timestamp. - * @param useconds the microseconds component of the timestamp. - * @param data the contents of the captured packet. - */ - void handlePacket(int length, int caplen, int seconds, int useconds, - byte [] data); -} diff --git a/javasrc/net/sourceforge/jpcap/capture/PacketListener.java b/javasrc/net/sourceforge/jpcap/capture/PacketListener.java deleted file mode 100644 index 3f50f08..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/PacketListener.java +++ /dev/null @@ -1,27 +0,0 @@ -// $Id: PacketListener.java,v 1.3 2001/05/25 13:46:00 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - -import net.sourceforge.jpcap.net.Packet; - - -/** - * Packet data listener. - *

    - * Applications interested in listening for packets must register - * with PacketCapture and implement PacketDataListener. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/25 13:46:00 $ - */ -public interface PacketListener -{ - void packetArrived(Packet packet); -} diff --git a/javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java b/javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java deleted file mode 100644 index 0f080dc..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/RawPacketListener.java +++ /dev/null @@ -1,27 +0,0 @@ -// $Id: RawPacketListener.java,v 1.1 2001/05/23 02:55:02 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.capture; - -import net.sourceforge.jpcap.net.RawPacket; - - -/** - * Raw packet data listener. - *

    - * Applications interested in listening for raw packet data must register - * with PacketCapture and implement RawPacketDataListener. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/23 02:55:02 $ - */ -public interface RawPacketListener -{ - void rawPacketArrived(RawPacket rawPacket); -} diff --git a/javasrc/net/sourceforge/jpcap/capture/jpcap.c b/javasrc/net/sourceforge/jpcap/capture/jpcap.c deleted file mode 100644 index 4302859..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/jpcap.c +++ /dev/null @@ -1,825 +0,0 @@ -// $Id: jpcap.c,v 1.24 2004/10/07 18:04:41 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -// A libpcap wrapper with java native hooks. -// -// @author Jonas Lehmann and Patrick Charles -// @version $Revision: 1.24 $ -// @lastModifiedBy $Author: pcharles $ -// @lastModifiedAt $Date: 2004/10/07 18:04:41 $ -// -#include -#include -extern "C" { -#include -} -#include -#include "process.hpp" - - -#ifndef WIN32 -#include -#include -#include -#include -#include -#include -#include -#include -#else /*WIN32*/ - -/* KRIS: (28/04/2002) It seems to me that __int64 is a CygWin GCC problem - MSVC has __int64 as a build type */ -#ifdef __GNUC__ -// typedef long __int64; -// /* FIXME: This is dirty. */ -// /* __int64 required for jlong in jni_md.h */ -// /* __int64 should be 8 byte integer */ - -#endif - -#endif /*WIN32*/ - -// native function headers generated by javah -#include "net_sourceforge_jpcap_capture_PacketCapture.h" - -#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && \ - !defined(__bsdi__) && !defined(__APPLE__) && !defined(WIN32) && \ - !defined(__CYGWIN__) -# define DO_SELECT -#endif - - -/***************************************************************************** - * global variables - */ - -#define FALSE 0 -#define TRUE 1 - -static pcap_t *PD[10] = // packet capture device. - {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; -jobject javaObject; // reference to java object hooked into this wrapper lib. -JNIEnv *javaEnvironment; // java vm containing running java object. -const int VERBOSE = 0; // for debugging - -typedef struct pcap_attr { - int pcapGo; - // add any further attributes here. -}; - -/* -static int pcapGo[10] = // state variable for each packet capture device - {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE}; -*/ - -static pcap_attr attr[10] = // state variable for each packet capture device - {{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}; - -const char *DEVICE_NOT_FOUND_EXCEPTION = - "net/sourceforge/jpcap/capture/CaptureDeviceNotFoundException"; -const char *DEVICE_OPEN_EXCEPTION = - "net/sourceforge/jpcap/capture/CaptureDeviceOpenException"; -const char *DEVICE_LOOKUP_EXCEPTION = - "net/sourceforge/jpcap/capture/CaptureDeviceLookupException"; -const char *CAPTURE_EXCEPTION = - "net/sourceforge/jpcap/capture/CapturePacketException"; -const char *CONFIGURATION_EXCEPTION = - "net/sourceforge/jpcap/capture/CaptureConfigurationException"; -const char *INVALID_FILTER_EXCEPTION = - "net/sourceforge/jpcap/capture/InvalidFilterException"; -const char *CLASS_EXCEPTION = - "java/lang/ClassNotFoundException"; -const char *FILE_OPEN_EXCEPTION = - "net/sourceforge/jpcap/capture/CaptureFileOpenException"; - - -/***************************************************************************** - * utility functions - */ - -/* - * Write captured packet data to stderr. - */ -void printPacket(u_char *user, u_char *cp, u_int caplen, u_int length, - u_int seconds, u_int useconds) -{ - register u_int i, s; - register int nshorts; - - nshorts = (u_int) caplen / sizeof(u_short); - - fprintf(stderr, "Packet: u = %s, l = %d of %d, t = %u.%06u, d = ", - user, caplen, length, seconds, useconds); - - i = 0; - while (--nshorts >= 0) { - if ((i++ % 8) == 0) - fprintf(stderr, "\n\t\t\t"); - s = *cp++; - fprintf(stderr, " %02x%02x", s, *cp++); - } - - if (caplen & 1) { - if ((i % 8) == 0) - (void)fprintf(stderr, "\n\t\t\t"); - (void)fprintf(stderr, " %02x", *cp); - } - - fprintf(stderr, "\t\n"); -} - - -/* - * Create and throw an exception into the Java VM using this wrapper. - * If the specified exception class can't be found, the VM will throw - * a class not found exception. - */ -void throwException(JNIEnv *env, const char *excClassName, char *message) { - // create an instance of the specified exception - jclass exception = env->FindClass(excClassName); - - if(exception != NULL) - // throw the new exception back to the java wrapper - env->ThrowNew(exception, message); - - // free the local reference. if exception is still null, delete is a noop. - env->DeleteLocalRef(exception); - -} - - -/***************************************************************************** - * implementation of pcap wrapper functions with java hooks - */ - -/* - * Callback called by pcap_loop() for processing packet data. - * This method is called whenever a packet is captured by the pcap_loop() - * in _capture(). It decomposes the captured data and transfers it - * to the PacketCapture object in the attached java VM. - */ -void processData(u_char *user, struct pcap_pkthdr *h, jbyte *sp) { - processing *proc; - proc = (processing *) user; - proc->processData(user, h, sp); -} - -/* - * Look up a network device. - * Throws a CaptureDeviceNotFoundException if no suitable device is found. - * - * JNI PacketCapture.findDevice() - */ -JNIEXPORT jstring JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_findDevice -(JNIEnv *env, jobject obj) { - char ebuf[PCAP_ERRBUF_SIZE]; - -#ifndef WIN32 - char *device = pcap_lookupdev(ebuf); - - if(device == NULL) { - // if no device can be found, throw an exception back to the java wrapper - throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); - return NULL; - } - else - return env->NewStringUTF(device); - -#else /*WIN32*/ - //char buf[256]; - wchar_t *dev; - char buf_all[516]; - char* desc = 0; - int i=0, t=0; - dev = (wchar_t *)pcap_lookupdev(ebuf); - if (dev) { - if (dev[0]<256) { /* NT / 2000 */ - if (dev[0]==0 && dev[1]==0) { - throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); - return NULL; /* no device */ - } - // Do the same thing as lookupDevices, so that we can - // find a human-readable device name - //wcstombs(buf,(wchar_t *)dev,255); - //return env->NewStringUTF(buf); - - while(!(dev[i]==0 && dev[i-1]==0)) { - i++; - } - - // human-readable descriptions are placed after the device names - desc = (char*)(dev + i + 1); - - t = wcstombs(buf_all,(wchar_t *)dev,255); - - buf_all[t++] = '\n'; - buf_all[t++] = ' '; - buf_all[t++] = ' '; // set "\n " as windows signature - - while (*desc != 0) { - if (t < 514) - buf_all[t++] = *desc; - desc++; - } - return env->NewStringUTF(buf_all); - - } else { /* 9x */ - char *dev9x = (char *)dev; - - if (dev9x[0]==0 && dev9x[1]==0) { - throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); - return NULL; /* no device */ - } - - return env->NewStringUTF((char *)(dev9x)); - } - } else { - throwException(env, DEVICE_NOT_FOUND_EXCEPTION, ebuf); - return NULL; /* no device */ - } - -#endif -} - -/* - * Open a network device for data capture. - * Throws an OpenException if the device cannot be opened. - * If the open is successful, sets the global device pointer. - * - * JNI PacketCapture.open() - */ -JNIEXPORT void JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_open - (JNIEnv *env, jobject object, jint instance, jstring jdevice, jint snaplen, - jboolean promiscuous, jint timeout) -{ - char ebuf[PCAP_ERRBUF_SIZE]; - int linkType; - jfieldID fid; - jclass cls; - const char *device; - - if(jdevice == NULL) { - // device can't be null; throw an exception back to java wrapper - throwException(env, DEVICE_OPEN_EXCEPTION, "null device specified"); - return; - } - - device = env->GetStringUTFChars(jdevice, 0); - - PD[instance] = - pcap_open_live((char*)device, snaplen, promiscuous, timeout, ebuf); - - if(PD[instance] == NULL) { - // if the open fails, throw an exception back to the java wrapper - throwException(env, DEVICE_OPEN_EXCEPTION, ebuf); - return; - } - - attr[instance].pcapGo = FALSE; - - // set the link type in the java wrapper encapsulating the capture system - linkType = pcap_datalink(PD[instance]); - cls = env->GetObjectClass(object); - fid = env->GetFieldID(cls, "linkType", "I"); - - if (fid == 0) { - // catch native/java field inconsistencies - throwException(env, CLASS_EXCEPTION, - "couldn't find member PacketCapture.linkType!"); - return; - } - env->SetIntField(object, fid, linkType); -} - -/* - * Open a tcpdump-formatted "savefile" for reading captured packets - * as an alternative to capturing packets off the wire. - * - * JNI PacketCapture.openOffline() - */ -JNIEXPORT void JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_openOffline - (JNIEnv *env, jobject object, jint instance, jstring jfileName) -{ - const char* fileName; - char ebuf[PCAP_ERRBUF_SIZE]; - jfieldID fid; - jclass cls; - int linkType; - - if(jfileName == NULL) { - throwException(env, FILE_OPEN_EXCEPTION, "null file name specified" ); - return; - } - - fileName = env->GetStringUTFChars(jfileName, 0); - PD[instance] = pcap_open_offline(fileName, ebuf); - - if(PD[instance] == NULL) { - throwException(env, FILE_OPEN_EXCEPTION, ebuf); - return; - } - - // set the link type in the java wrapper encapsulating the capture system - linkType = pcap_datalink(PD[instance]); - cls = env->GetObjectClass(object); - fid = env->GetFieldID(cls, "linkType", "I"); - if (fid == 0) { - // catch native/java field inconsistencies - throwException(env, CLASS_EXCEPTION, - "couldn't find member PacketCapture.linkType!"); - return; - } - env->SetIntField(object, fid, linkType); - - attr[instance].pcapGo = FALSE; - -} - -/* - * Capture packets. - * Throws a CapturePacketException if a problem occurs during the capture. - * - * JNI PacketCapture.capture() - */ -JNIEXPORT void JNICALL Java_net_sourceforge_jpcap_capture_PacketCapture_capture -(JNIEnv *env, jobject obj, jint instance, jint count) { - - processing *p = new(processing); - p->javaEnvironment = env; - p->javaObject = obj; - - // make sure a device is open before allowing the capture session to start - if(PD[instance] == NULL) { - throwException(env, CAPTURE_EXCEPTION, - "a device must be open before capturing packets"); - return; - } - -#ifdef PCAP_LOOP // the old way of capturing - if (pcap_loop(PD[instance], count, - (pcap_handler)processData, (u_char *)p) < 0) - // if the capture failed, throw an exception back to the java wrapper - throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); - -#else - attr[instance].pcapGo = TRUE; - int cnt = 0; - if (pcap_file(PD[instance]) == NULL) { // live capture - -#ifdef DO_SELECT - fd_set fd_wait; - int sel; - struct timeval st; - - while (attr[instance].pcapGo && ((count <= 0) ? true : (cnt < count))) - { - FD_ZERO(&fd_wait); - FD_SET(pcap_fileno(PD[instance]), &fd_wait); - st.tv_sec = 1; - st.tv_usec = 0; - - sel = select(FD_SETSIZE, &fd_wait, NULL, NULL, &st); - - if (sel > 0) { // OK, select says we have a packet in the queue - cnt++; - if (pcap_dispatch(PD[instance], 1, - (pcap_handler)processData, (u_char *)p) < 0) { - // if the capture failed, throw an exception back to the java wrapper - throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); - return; - } - } else if (sel < 0) { - throwException(env, CAPTURE_EXCEPTION, "select() returns -1"); - return; - } - } - -#else // !DO_SELECT - while (attr[instance].pcapGo && ((count <= 0) ? true : (cnt < count))) { - cnt++; - if (pcap_dispatch(PD[instance], 1, - (pcap_handler)processData, (u_char *)p) < 0) { - // if the capture failed, throw an exception back to the java wrapper - throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); - return; - } - } - -#endif // DO_SELECT - } - else { - while (attr[instance].pcapGo && ((count <= 0) ? true : (cnt < count))) { - cnt++; - int ret = (pcap_dispatch(PD[instance], 1, - (pcap_handler)processData, (u_char *)p)); - if (ret < 0) { - // if the capture failed, throw an exception back to the java wrapper - throwException(env, CAPTURE_EXCEPTION, pcap_geterr(PD[instance])); - return; - } else if (ret == 0) { - attr[instance].pcapGo = FALSE; // end of savefile - } - } - } - -#endif // PCAP_LOOP -} - -/* - * Stop capturing packets - * - * JNI PacketCapture.endCapture() - */ -JNIEXPORT void JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_endCapture -(JNIEnv *env, jobject obj, jint instance) { - attr[instance].pcapGo = FALSE; -} - -/* - * Fetch the network associated with the device. - * Throws a CaptureConfigurationException if the device is messed up. - * - * JNI PacketCapture.getNetwork() - */ -JNIEXPORT jint JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_getNetwork -(JNIEnv *env, jobject obj, jstring jdevice) { - char ebuf[PCAP_ERRBUF_SIZE]; - int localnet = 0; - int netmask = 0; - - const char *device = env->GetStringUTFChars(jdevice, 0); - - if(pcap_lookupnet((char*)device, - (bpf_u_int32 *)&localnet, - (bpf_u_int32 *)&netmask, ebuf) < 0) { - // if the lookup failed, throw an exception back to the java wrapper - throwException(env, CONFIGURATION_EXCEPTION, ebuf); - return 0; - } - else - return localnet; -} - -/* - * Fetch the netmask associated with the device. - * Throws a CaptureConfigurationException if the device is messed up. - * - * JNI PacketCapture.getNetmask() - */ -JNIEXPORT jint JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_getNetmask -(JNIEnv *env, jobject obj, jstring jdevice) { - char ebuf[PCAP_ERRBUF_SIZE]; - const char *device = env->GetStringUTFChars(jdevice, 0); - int localnet = 0; - int netmask = 0; - - if(pcap_lookupnet((char*)device, - (bpf_u_int32*)&localnet, - (bpf_u_int32*)&netmask, ebuf) < 0) { - // if the lookup failed, throw an exception back to the java wrapper - throwException(env, CONFIGURATION_EXCEPTION, ebuf); - return 0; - } - else - return netmask; -} - -/* - * Fetch the link layer type associated with this device. - * - * JNI PacketCapture.getLinkLayerType() - */ -JNIEXPORT jint JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_getLinkLayerType -(JNIEnv *env, jobject obj, jint instance) { - return pcap_datalink(PD[instance]); -} - -/* - * Create, compile and activate a filter from a filter expression. - * - * JNI PacketCapture.setFilter() - */ -JNIEXPORT void JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_setFilter -(JNIEnv *env, jobject object, jint instance, jstring jfilter, - jboolean optimize) { - struct bpf_program bpp; - const char *filter = env->GetStringUTFChars(jfilter, 0); - - // the device must be open in order to set the filter. - if(PD[instance] == NULL) { - throwException(env, INVALID_FILTER_EXCEPTION, - "A device must be open before setting the filter."); - return; - } - - // compile bpf program - if(pcap_compile(PD[instance], &bpp, (char*)filter, optimize, 0) == -1) { - // if the filter wouldn't compile, throw an exception back to java - throwException(env, INVALID_FILTER_EXCEPTION, pcap_geterr(PD[instance])); - return; - } - - // activate program - if(pcap_setfilter(PD[instance], &bpp) == -1) - // if the filter couldn't be activated, throw an exception back to java - throwException(env, INVALID_FILTER_EXCEPTION, pcap_geterr(PD[instance])); -} - -/* - * Return the snapshot length being used (given network device has been - * opened) by using a pcap library API call. - * - * JNI PacketCapture.getSnapshotLength() - */ -JNIEXPORT jint JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_getSnapshotLength - (JNIEnv *env, jobject obj, jint instance) -{ - int snapshotLength = -1; - - if(PD[instance] != NULL) { - snapshotLength = pcap_snapshot(PD[instance]); - } - - return snapshotLength; -} - -/* - * Close the capture device. - * - * JNI PacketCapture.close() - */ -JNIEXPORT void JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_close -(JNIEnv *env, jobject object, jint instance) { - if(PD[instance] != NULL) - pcap_close(PD[instance]); -} - -/* - * Fetch and set statistics in the java vm. - * - * JNI PacketCapture.setupStatistics() - */ -JNIEXPORT void JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_setupStatistics -(JNIEnv *env, jobject object, jint instance) { - struct pcap_stat stat; - - if (PD[instance] != NULL && pcap_file(PD[instance]) == NULL) { - if (pcap_stats(PD[instance], &stat) < 0) { - /* - * todo: throw the following as an exception.. - fprintf(stderr, "jpcap: pcap_stats(%s) %s\n", - g_device, pcap_geterr(PD[instance])); - */ - } - else { - jfieldID fid; - jclass cls = env->GetObjectClass(object); - // received count - fid = env->GetFieldID(cls, "receivedCount", "I"); - if (fid == 0) - return; - env->SetIntField(object, fid, stat.ps_recv); - // dropped count - fid = env->GetFieldID(cls, "droppedCount", "I"); - if (fid == 0) - return; - env->SetIntField(object, fid, stat.ps_drop); - } - } -} - -/* - * This function is currently unused. might be used later by capture - * to potentially adjust the snapshot length in the event that the - * capture client got it wrong. - */ -int gx_snaplen; -int adjustSnaplen(int verbose, int instance) { - int i = -1; - i = pcap_snapshot(PD[instance]); - if(i == -1) - return(0); - if(i != gx_snaplen) { - if(verbose) { - printf("jpcap: snaplen was adjusted from %d to %d.\n", gx_snaplen, i); - gx_snaplen = i; - } - } else { - if(verbose) - printf("jpcap: snaplen confirmed at %d.\n", gx_snaplen); - } - return(1); -} - -/* - * Class: net_sourceforge_jpcap_capture_PacketCapture - * Method: lookupDevices - * Signature: ()[Ljava/lang/String; - */ -JNIEXPORT jobjectArray JNICALL -Java_net_sourceforge_jpcap_capture_PacketCapture_lookupDevices -(JNIEnv *env, jclass cls) -{ - char ebuf[PCAP_ERRBUF_SIZE]; - jobjectArray devices = NULL; - - -#ifndef WIN32 - int sock=socket(AF_INET,SOCK_DGRAM,0); - struct ifconf ifc; - struct ifreq *ifr,*last; - struct ifreq ifrflags; - pcap_t *pch; - - char names[100][100]; - int total = 0, i = 0, ifrSize = 0; - - if(sock < 0 ){ - /* error opening socket */ - throwException(env, DEVICE_LOOKUP_EXCEPTION, strerror(sock)); - return NULL; - } - - ifc.ifc_len = 1024 * sizeof(struct ifreq); - ifc.ifc_buf = (char *)malloc(ifc.ifc_len); - - if(ioctl(sock,SIOCGIFCONF,&ifc) < 0 || - ifc.ifc_len < (int)sizeof(struct ifreq)){ - /* SIOCGIFCONF error */ - goto FAIL; - } - - ifr = (struct ifreq *)ifc.ifc_req; - last = (struct ifreq *)((char *)ifr+ifc.ifc_len); - -#ifdef HAVE_SA_LEN - ifrSize = ifr->ifr_addr.sa_len+IFNAMSIZ; -#else /* HAVE_SA_LEN */ - ifrSize = sizeof(struct ifreq); -#endif /* HAVE_SA_LEN */ - - char *s; - for(;ifr < last; (char*)ifr += ifrSize, ifr=(struct ifreq *)s) { - /* Skip "dummy" and "alaias" interface */ - /* - if(strncmp(ifr->ifr_name,"dummy",5)==0 || - strchr(ifr->ifr_name,':') != NULL) - continue; - */ - - for(i=0;iifr_name)==0) - continue; - - /* Check flags */ - memset(&ifrflags,0,sizeof ifrflags); - strncpy(ifrflags.ifr_name,ifr->ifr_name,sizeof ifrflags.ifr_name); - if(ioctl(sock,SIOCGIFFLAGS,(char *)&ifrflags)<0){ - if(errno == ENXIO) - continue; - else - goto FAIL; - } - - if(!(ifrflags.ifr_flags & IFF_UP)) - continue; - - pch = pcap_open_live(ifr->ifr_name,68,0,0, ebuf); - if(pch == NULL) - continue; - pcap_close(pch); - strcpy(names[total++],ifr->ifr_name); - } - - if( total > 0 ) { - devices = env->NewObjectArray - ((jsize)total, env->FindClass("java/lang/String"), NULL); - for(i = 0 ; i < total ; i++ ) { - env->SetObjectArrayElement(devices, i, env->NewStringUTF(names[i])); - } - } - -FAIL: - free(ifc.ifc_buf); - close(sock); - -#else /* WIN32 */ - wchar_t *dev; - int i=0,c=0,j=0, t=0; // t = array index - //char buf[256]; - //char buf2[256]; - char buf_all[516]; - char* desc = 0; - dev = (wchar_t *)pcap_lookupdev(ebuf); - if(dev){ - if(dev[0]<256) { /* NT / 2000 */ - if(dev[0]==0 && dev[1]==0) - return NULL; /* no device */ - while(!(dev[i]==0 && dev[i-1]==0)){ - if(dev[i]==0) c++; - i++; - } - - // human-readable descriptions are placed after the device names - desc = (char*)(dev + i + 1); - - devices=env->NewObjectArray - ((jsize)c, env->FindClass("java/lang/String"), NULL); - //descriptions=env->NewObjectArray - // ((jsize)c, env->FindClass("java/lang/String"), NULL); - - i = 0; - - for(j=0; jSetObjectArrayElement(devices, j, env->NewStringUTF(buf)); - wcstombs(buf2,(wchar_t *)(desc + t), 255); - env->SetObjectArrayElement(descriptions, j, env->NewStringUTF(buf2)); - - while(dev[i]!=0) { - i++; - } - i++; - - while(desc[t] != 0) { - t++; - } - t++; - */ - - // This code will get the device description as well as dev name - // and put them both in the devices array - t = 0; - while (dev[i] != 0) { - if (t < 255) - buf_all[t++] = dev[i++]; - } - i++; - - buf_all[t++] = '\n'; - buf_all[t++] = ' '; - buf_all[t++] = ' '; // set "\n " as windows signature - - while (*desc != 0) { - if (t < 514) - buf_all[t++] = *desc; - desc++; - } - buf_all[t++] = '\0'; - env->SetObjectArrayElement(devices, j, env->NewStringUTF(buf_all)); - desc++; - } - }else{ /* 9x */ - char *dev9x=(char *)dev; - - if(dev9x[0]==0 && dev9x[1]==0) - return NULL; /* no device */ - while(!(dev9x[i]==0 && dev9x[i-1]==0)){ - if(dev9x[i]==0) c++; - i++; - } - - devices=env->NewObjectArray - ((jsize)c, env->FindClass("java/lang/String"), NULL); - i=0; - for(j=0;jSetObjectArrayElement - (devices, j, env->NewStringUTF((char *)(dev9x + i))); - while(dev9x[i]!=0) i++; - i++; - } - } - } -#endif /* WIN32 */ - - if(devices == NULL) { - devices=env->NewObjectArray - ((jsize)0, env->FindClass("java/lang/String"), NULL); - } - return devices; -} - - -const char *rcsid = - "$Id: jpcap.c,v 1.24 2004/10/07 18:04:41 pcharles Exp $"; diff --git a/javasrc/net/sourceforge/jpcap/capture/jpcap.def b/javasrc/net/sourceforge/jpcap/capture/jpcap.def deleted file mode 100644 index ee6f38e..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/jpcap.def +++ /dev/null @@ -1,17 +0,0 @@ -LIBRARY jpcap.dll - -DESCRIPTION 'Java Packet Capture Library' - -EXPORTS - Java_net_sourceforge_jpcap_capture_PacketCapture_findDevice - Java_net_sourceforge_jpcap_capture_PacketCapture_lookupDevices - Java_net_sourceforge_jpcap_capture_PacketCapture_open - Java_net_sourceforge_jpcap_capture_PacketCapture_capture - Java_net_sourceforge_jpcap_capture_PacketCapture_getNetwork - Java_net_sourceforge_jpcap_capture_PacketCapture_getNetmask - Java_net_sourceforge_jpcap_capture_PacketCapture_getLinkLayerType - Java_net_sourceforge_jpcap_capture_PacketCapture_getSnapshotLength - Java_net_sourceforge_jpcap_capture_PacketCapture_setFilter - Java_net_sourceforge_jpcap_capture_PacketCapture_close - Java_net_sourceforge_jpcap_capture_PacketCapture_setupStatistics - Java_net_sourceforge_jpcap_capture_PacketCapture_openOffline diff --git a/javasrc/net/sourceforge/jpcap/capture/makefile b/javasrc/net/sourceforge/jpcap/capture/makefile deleted file mode 100644 index 035ea49..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/makefile +++ /dev/null @@ -1,149 +0,0 @@ -# $Id: makefile,v 1.32 2004/09/28 17:27:12 pcharles Exp $ -# -# package net.sourceforge.jpcap.capture -# -PKG = net.sourceforge.jpcap.capture -PKG_DIR = $(subst .,/,$(PKG)) -PKG_UND = $(subst .,_,$(PKG)) -REL = ../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -WRAPPER = PacketCapture - -JAVA = \ - PacketCaptureCapable \ - PacketCaptureBase \ - PacketDispatchCapable \ - PacketDispatcher \ - PacketHandler \ - $(WRAPPER) \ - CaptureTest \ - \ - PacketListener \ - RawPacketListener \ - CaptureStatistics \ - \ - CaptureConfigurationException \ - CaptureDeviceInvalidException \ - CaptureDeviceLookupException \ - CaptureDeviceNotFoundException \ - CaptureDeviceOpenException \ - CaptureFileOpenException \ - CapturePacketException \ - InvalidFilterException - - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - - -# on linux, OSTYPE is Linux and the include subdir is called 'linux' -# on solaris, they match. need to lower case for other os variants? -OTL = $(subst L,l,${OSTYPE}) - -# on debian linux, make 'linux-gnu' recognizable as linux (.. apologies to RMS) -ifeq ($(OTL), linux-gnu) - OTL=linux -endif - - -## set library name, paths and options for each supported platform group - -# All Unix variants, including: Solaris, Linux, AIX, etc.. -ifeq ($(OSFLAVOR), UNIX) - SO_TARGET = libjpcap.so - INCLUDES = \ - -I/usr/include/pcap \ - -I${JAVA_HOME}/include \ - -I${JAVA_HOME}/include/$(OTL) - LIBS = -lnsl /usr/lib/libpcap.a -else -# Mac OS X -ifeq ($(OSFLAVOR), DARWIN) - SO_TARGET = libjpcap.jnilib - INCLUDES = -I/usr/include/pcap \ - -I/Library/Java/Home/include \ - -I$(SDKROOT)/System/Library/Frameworks/JavaVM.framework/Headers - LIBS = /usr/lib/libpcap.A.dylib -else -# Windows, using MinGW -ifeq ($(OSFLAVOR), MINGW) - SO_TARGET = jpcap.dll - INCLUDES = \ - -I${WINPCAP_HOME}/Include/ \ - -I${JAVA_HOME}/include \ - -I${JAVA_HOME}/include/win32 \ - -I. - LIBS = -L ${WINPCAP_HOME}/Lib -lwpcap -else -# -# Cygwin and native DOS-mode builds aren't supported due to lack of interest -# from the community. If you'd like to change that, submit patches at -# http://www.sf.net/projects/jpcap. -# -# ifeq ($(OSFLAVOR), CYGWIN) -# ifeq ($(OSFLAVOR), DOS) -# -endif -endif -endif - - -all: $(JAVA_CLASSES) $(SO_TARGET) - - -CCOPTS = -Wall -O2 - -# build the native component -# NOTE: the -fPIC option below is only required on Solaris? -ifeq ($(OSFLAVOR), UNIX) -$(SO_TARGET): $(PKG_UND)_$(WRAPPER).h jpcap.c process.cpp - g++ $(CCOPTS) $(INCLUDES) jpcap.c process.cpp -fPIC -shared -o $@ $(LIBS) -else -ifeq ($(OSFLAVOR), DARWIN) -$(SO_TARGET): $(PKG_UND)_$(WRAPPER).h jpcap.c process.cpp - g++ $(CCOPTS) $(INCLUDES) jpcap.c process.cpp -bundle -o $@ $(LIBS) -else -$(SO_TARGET): $(PKG_UND)_$(WRAPPER).h jpcap.c - g++ $(CCOPTS) -D_JNI_IMPLEMENTATION $(INCLUDES) -Wl,--kill-at \ - jpcap.c process.cpp -shared -o $@ $(LIBS) - -endif -endif - -$(PKG_UND)_$(WRAPPER).h: $(WRAPPER).java -ifeq ($(OSFLAVOR), DARWIN) - javah -jni $(PKG).$(WRAPPER) -else - javah -jni $(PKG).$(WRAPPER) -endif -# javap $(PKG).$(WRAPPER) - - -# NOTE: to run the class PacketCapture, the path to the shared object -# must be in the library path. -# On Linux, this means LD_LIBRARY_PATH.must point to the path of libjpcap.so. -# On Windows, this means that the path containing jpcap.dll must be in PATH. -# On Mac OS X, DYLD_LIBRARY_PATH must point the path of libjpcap.jnilib. -LIB_PATH = ${PROJECT_HOME}/src/java/$(PKG_DIR) -test: all - export LD_LIBRARY_PATH=$(LIB_PATH) ; java $(PKG).CaptureTest - - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile - - -# override default clean target to remove stuff generated by the jni compiler -clean: - rm -fv *.o - rm -fv *.so - rm -fv jpcap - rm -fv $(PKG_UND)_$(WRAPPER).h - rm -fv *~ - rm -fv *.class - rm -fv *.dll - rm -fv *.exp - rm -fv *.a - rm -fv *.jnilib diff --git a/javasrc/net/sourceforge/jpcap/capture/package.html b/javasrc/net/sourceforge/jpcap/capture/package.html deleted file mode 100644 index 1e1a527..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/package.html +++ /dev/null @@ -1,35 +0,0 @@ - - - -net.sourceforge.jpcap.capture - - - - -Provides an interface for capturing packets and a layer of abstraction -around libpcap, a portable native system library for capturing network -packets. -

    -PacketCapture is the core of the packet capture system provided by jpcap. -

    -Applications wishing to capture network packets create an instance of -PacketCapture and call its methods in order to open a network device, -set packet filters and ultimately receive packet data from the network. -

    -PacketCapture utilizes a publish/subscribe pattern to broadcast packets -to all objects which have registered as listeners for events of -interest. Applications capturing network data must implement PacketListener -and register with an instance of the capture system in order to receive -packets. -

    - - - diff --git a/javasrc/net/sourceforge/jpcap/capture/process.cpp b/javasrc/net/sourceforge/jpcap/capture/process.cpp deleted file mode 100644 index 95cfb95..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/process.cpp +++ /dev/null @@ -1,65 +0,0 @@ -// $Id: process.cpp,v 1.2 2004/02/24 21:25:08 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2003, 2004 Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -#include "process.hpp" - -/* - * Utilized by processData() callback, for handling packet data. - */ -void processing::processData(u_char *user, struct pcap_pkthdr *h, jbyte *sp) { - jmethodID mid; - jclass cls; - jbyteArray jba; - int seconds; - int useconds; - register const struct timeval *tvp; - - /* decompose the timestamp contained in the packet header */ - tvp = &h->ts; - seconds = tvp->tv_sec; - useconds = tvp->tv_usec; - - // if(VERBOSE) { - // (void)printPacket(user, sp, h->caplen, h->len, seconds, useconds); - // } - - /* Check to see if any unhandled exceptions are pending in the VM before - calling back the packet handler. If an exception is pending, return - control immediately so that the VM can handle it. - */ - if(javaEnvironment->ExceptionOccurred()) - return; - - cls = javaEnvironment->GetObjectClass(javaObject); - - - mid = javaEnvironment-> GetMethodID(cls, "handlePacket", "(IIII[B)V"); - - if(mid == 0) { - fprintf(stderr, "jpcap: method lookup failure\n"); - fflush(stdout); fflush(stderr); - return; - } - - - jba = javaEnvironment->NewByteArray(h->caplen); - - javaEnvironment->SetByteArrayRegion - (jba, 0, h->caplen, sp); - - // dispatch captured data to the handle method in the java capture object.. - javaEnvironment->CallVoidMethod(javaObject, mid, - h->len, h->caplen, seconds, useconds, - jba); - - // free local storage for the byte array.. - javaEnvironment->DeleteLocalRef(jba); - -} - - diff --git a/javasrc/net/sourceforge/jpcap/capture/process.hpp b/javasrc/net/sourceforge/jpcap/capture/process.hpp deleted file mode 100644 index 5d679f8..0000000 --- a/javasrc/net/sourceforge/jpcap/capture/process.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// $Id: process.hpp,v 1.2 2004/02/24 21:25:08 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2003, 2004 Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -extern "C" { -#include -} -#include - - -/** - * Encapsulation of packet processing, with managed of separate instances, - * - * Submitted by Anatol Novchenko, along with numerous changes to jpcap.c. - */ -class processing { - - public: - void processData(u_char *user, struct pcap_pkthdr *h, jbyte *sp); - jobject javaObject;// reference to java object hooked into this wrapper lib. - JNIEnv *javaEnvironment; // java vm containing running java object. - -}; - diff --git a/javasrc/net/sourceforge/jpcap/net/ARPFields.java b/javasrc/net/sourceforge/jpcap/net/ARPFields.java deleted file mode 100644 index 992c248..0000000 --- a/javasrc/net/sourceforge/jpcap/net/ARPFields.java +++ /dev/null @@ -1,116 +0,0 @@ -// $Id: ARPFields.java,v 1.3 2001/06/27 01:46:59 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * IP protocol field encoding information. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/27 01:46:59 $ - */ -public interface ARPFields -{ - // ARP codes - - /** - * Type code for ethernet addresses. - */ - int ARP_ETH_ADDR_CODE = 0x0001; - - /** - * Type code for MAC addresses. - */ - int ARP_IP_ADDR_CODE = 0x0800; - - /** - * Code for ARP request. - */ - int ARP_OP_REQ_CODE = 0x1; - - /** - * Code for ARP reply. - */ - int ARP_OP_REP_CODE = 0x2; - - - // field lengths - - /** - * Operation type length in bytes. - */ - int ARP_OP_LEN = 2; - - /** - * Address type length in bytes. - */ - int ARP_ADDR_TYPE_LEN = 2; - - /** - * Address type length in bytes. - */ - int ARP_ADDR_SIZE_LEN = 1; - - - // field positions - - /** - * Position of the hardware address type. - */ - int ARP_HW_TYPE_POS = 0; - - /** - * Position of the protocol address type. - */ - int ARP_PR_TYPE_POS = ARP_HW_TYPE_POS + ARP_ADDR_TYPE_LEN; - - /** - * Position of the hardware address length. - */ - int ARP_HW_LEN_POS = ARP_PR_TYPE_POS + ARP_ADDR_TYPE_LEN; - - /** - * Position of the protocol address length. - */ - int ARP_PR_LEN_POS = ARP_HW_LEN_POS + ARP_ADDR_SIZE_LEN; - - /** - * Position of the operation type. - */ - int ARP_OP_POS = ARP_PR_LEN_POS + ARP_ADDR_SIZE_LEN; - - /** - * Position of the sender hardware address. - */ - int ARP_S_HW_ADDR_POS = ARP_OP_POS + ARP_OP_LEN; - - /** - * Position of the sender protocol address. - */ - int ARP_S_PR_ADDR_POS = ARP_S_HW_ADDR_POS + MACAddress.WIDTH; - - /** - * Position of the target hardware address. - */ - int ARP_T_HW_ADDR_POS = ARP_S_PR_ADDR_POS + IPAddress.WIDTH; - - /** - * Position of the target protocol address. - */ - int ARP_T_PR_ADDR_POS = ARP_T_HW_ADDR_POS + MACAddress.WIDTH; - - - // complete header length - - /** - * Total length in bytes of an ARP header. - */ - int ARP_HEADER_LEN = ARP_T_PR_ADDR_POS + IPAddress.WIDTH; // == 28 -} diff --git a/javasrc/net/sourceforge/jpcap/net/ARPPacket.java b/javasrc/net/sourceforge/jpcap/net/ARPPacket.java deleted file mode 100644 index 961a45a..0000000 --- a/javasrc/net/sourceforge/jpcap/net/ARPPacket.java +++ /dev/null @@ -1,164 +0,0 @@ -// $Id: ARPPacket.java,v 1.14 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.AnsiEscapeSequences; -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * An ARP protocol packet. - *

    - * Extends an ethernet packet, adding ARP header information and an ARP - * data payload. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.14 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class ARPPacket extends EthernetPacket - implements ARPFields, Serializable -{ - /** - * Create a new ARP packet. - */ - public ARPPacket(int lLen, byte [] bytes) { - super(lLen, bytes); - - this.header = PacketEncoding.extractHeader(lLen, ARP_HEADER_LEN, bytes); - this.data = PacketEncoding.extractData(lLen, ARP_HEADER_LEN, bytes); - } - - /** - * Create a new ARP packet. - */ - public ARPPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - /** - * Fetch the hardware source address. - */ - public String getSourceHwAddress() { - return MACAddress.extract(ARP_S_HW_ADDR_POS, header); - } - - /** - * Fetch the hardware destination address. - */ - public String getDestinationHwAddress() { - return MACAddress.extract(ARP_T_HW_ADDR_POS, header); - } - - /** - * Fetch the proto sender address. - */ - public String getSourceProtoAddress() { - return IPAddress.extract(ARP_S_PR_ADDR_POS, header); - } - - /** - * Fetch the proto sender address. - */ - public String getDestinationProtoAddress() { - return IPAddress.extract(ARP_T_PR_ADDR_POS, header); - } - - /** - * Fetch the operation code. - * Usually one of ARPFields.{ARP_OP_REQ_CODE, ARP_OP_REP_CODE}. - */ - public int getOperation() { - return ArrayHelper.extractInteger(header, ARP_OP_POS, ARP_OP_LEN); - } - - /** - * Fetch the arp header, excluding arp data payload. - */ - public byte [] getARPHeader() { - return header; - } - - /** - * Fetch data portion of the arp header. - */ - public byte [] getARPData() { - return data; - } - - /** - * Fetch the arp header, excluding arp data payload. - */ - public byte [] getHeader() { - return getARPHeader(); - } - - /** - * Fetch data portion of the arp header. - */ - public byte [] getData() { - return getARPData(); - } - - /** - * Convert this ARP packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this ARP packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("ARPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(getOperation() == ARP_OP_REQ_CODE ? "request" : "reply"); - buffer.append(' '); - buffer.append(getSourceHwAddress() + " -> " + - getDestinationHwAddress()); - buffer.append(", "); - buffer.append(getSourceProtoAddress() + " -> " + - getDestinationProtoAddress()); - buffer.append(" l=" + header.length + "," + data.length); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.PURPLE; - } - - /** - * ARP header. - */ - byte [] header; - - /** - * ARP data. - */ - byte [] data; - - - private String _rcsid = - "$Id: ARPPacket.java,v 1.14 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetFields.java b/javasrc/net/sourceforge/jpcap/net/EthernetFields.java deleted file mode 100644 index d2df7e4..0000000 --- a/javasrc/net/sourceforge/jpcap/net/EthernetFields.java +++ /dev/null @@ -1,53 +0,0 @@ -// $Id: EthernetFields.java,v 1.3 2001/06/27 02:14:54 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Ethernet protocol field encoding information. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/27 02:14:54 $ - */ -public interface EthernetFields -{ - // field lengths - - /** - * Width of the ethernet type code in bytes. - */ - int ETH_CODE_LEN = 2; - - - // field positions - - /** - * Position of the destination MAC address within the ethernet header. - */ - int ETH_DST_POS = 0; - - /** - * Position of the source MAC address within the ethernet header. - */ - int ETH_SRC_POS = MACAddress.WIDTH; - - /** - * Position of the ethernet type field within the ethernet header. - */ - int ETH_CODE_POS = MACAddress.WIDTH * 2; - - - // complete header length - - /** - * Total length of an ethernet header in bytes. - */ - int ETH_HEADER_LEN = ETH_CODE_POS + ETH_CODE_LEN; // == 14 -} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetPacket.java b/javasrc/net/sourceforge/jpcap/net/EthernetPacket.java deleted file mode 100644 index 7d14cee..0000000 --- a/javasrc/net/sourceforge/jpcap/net/EthernetPacket.java +++ /dev/null @@ -1,212 +0,0 @@ -// $Id: EthernetPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.AnsiEscapeSequences; -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * An ethernet packet. - *

    - * Contains link-level header and data payload encapsulated by an ethernet - * packet. - *

    - * There are currently two subclasses. IP and ARP protocols are supported. - * IPPacket extends with ip header and data information. - * ARPPacket extends with hardware and protocol addresses. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.19 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class EthernetPacket extends Packet - implements EthernetFields, Serializable -{ - // store the data here, all subclasses can offset into this - protected byte[] _bytes; - - // offset from beginning of byte array where the data payload - // (i.e. IP packet) starts. The size of the ethernet frame header. - protected int _ethOffset; - - // time that the packet was captured off the wire - protected Timeval _timeval; - - - /** - * Construct a new ethernet packet. - *

    - * For the purpose of jpcap, when the type of ethernet packet is - * recognized as a protocol for which a class exists network library, - * then a more specific class like IPPacket or ARPPacket is instantiated. - * The subclass can always be cast into a more generic form. - */ - public EthernetPacket(int lLen, byte [] bytes) { - _bytes = bytes; - _ethernetHeaderLength = lLen; - _ethOffset = lLen; - } - - /** - * Construct a new ethernet packet, including the capture time. - */ - public EthernetPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - // set in constructor - private int _ethernetHeaderLength; - /** - * Fetch the ethernet header length in bytes. - */ - public int getEthernetHeaderLength() { - return _ethernetHeaderLength; - } - - /** - * Fetch the packet ethernet header length. - */ - public int getHeaderLength() { - return getEthernetHeaderLength(); - } - - private byte[] _ethernetHeaderBytes = null; - /** - * Fetch the ethernet header as a byte array. - */ - public byte[] getEthernetHeader() { - if(_ethernetHeaderBytes == null) { - _ethernetHeaderBytes = - PacketEncoding.extractHeader(0, getEthernetHeaderLength(), - _bytes); - } - return _ethernetHeaderBytes; - } - - /** - * Fetch the ethernet header as a byte array. - */ - public byte[] getHeader() { - return getEthernetHeader(); - } - - private byte[] _ethernetDataBytes = null; - /** - * Fetch the ethernet data as a byte array. - */ - public byte[] getEthernetData() { - if(_ethernetDataBytes == null) { - _ethernetDataBytes = - PacketEncoding.extractData(0, getEthernetHeaderLength(), - _bytes); - } - return _ethernetDataBytes; - } - - /** - * Fetch the ethernet data as a byte array. - */ - public byte[] getData() { - return getEthernetData(); - } - - private String _sourceHwAddress = null; - /** - * Fetch the IP address of the host where the packet originated from. - */ - public String getSourceHwAddress() { - if(_sourceHwAddress == null) { - _sourceHwAddress = MACAddress.extract(ETH_SRC_POS, _bytes); - } - return _sourceHwAddress; - } - - private String _destinationHwAddress = null; - /** - * Fetch the IP address of the host where the packet originated from. - */ - public String getDestinationHwAddress() { - if(_destinationHwAddress == null) { - _destinationHwAddress = MACAddress.extract(ETH_DST_POS, _bytes); - } - return _destinationHwAddress; - } - - private int _etherProtocol; - private boolean _etherProtocolSet = false; - /** - * Fetch the ethernet protocol. - */ - public int getEthernetProtocol() { - if(! _etherProtocolSet) { - _etherProtocol = - ArrayHelper.extractInteger(_bytes, ETH_CODE_POS, ETH_CODE_LEN); - _etherProtocolSet = true; - } - return _etherProtocol; - } - - /** - * Fetch the ethernet protocol. - */ - public int getProtocol() { - return getEthernetProtocol(); - } - - /** - * Fetch the timeval containing the time the packet arrived on the - * device where it was captured. - */ - public Timeval getTimeval() { - return _timeval; - } - - /** - * Convert this ethernet packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this ethernet packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("EthernetPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(getSourceHwAddress() + " -> " + - getDestinationHwAddress()); - buffer.append(" proto=0x" + Integer.toHexString(getProtocol())); - buffer.append(" l=" + getEthernetHeaderLength()); // + "," + data.length); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.DARK_GRAY; - } - - - private String _rcsid = - "$Id: EthernetPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java b/javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java deleted file mode 100644 index 1103f4a..0000000 --- a/javasrc/net/sourceforge/jpcap/net/EthernetProtocol.java +++ /dev/null @@ -1,38 +0,0 @@ -// $Id: EthernetProtocol.java,v 1.3 2001/06/27 01:50:42 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import java.util.HashMap; - - -/** - * Ethernet protocol utility class. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/27 01:50:42 $ - */ -public class EthernetProtocol implements EthernetProtocols, EthernetFields -{ - /** - * Extract the protocol type field from packet data. - *

    - * The type field indicates what type of data is contained in the - * packet's data block. - * @param packetBytes packet bytes. - * @return the ethernet type code. i.e. 0x800 signifies IP datagram. - */ - public static int extractProtocol(byte [] packetBytes) { - // convert the bytes that contain the type code into a value.. - return packetBytes[ETH_CODE_POS] << 8 | packetBytes[ETH_CODE_POS + 1]; - } - - private String _rcsid = - "$Id: EthernetProtocol.java,v 1.3 2001/06/27 01:50:42 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java b/javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java deleted file mode 100644 index aadc384..0000000 --- a/javasrc/net/sourceforge/jpcap/net/EthernetProtocols.java +++ /dev/null @@ -1,240 +0,0 @@ -// $Id: EthernetProtocols.java,v 1.7 2003/07/09 03:04:24 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Code constants for well-defined ethernet protocols. - *

    - * Taken from linux/if_ether.h and tcpdump/ethertype.h - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.7 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/07/09 03:04:24 $ - */ -public interface EthernetProtocols -{ - /** - * IP protocol. - */ - int IP = 0x0800; - - /** - * Address resolution protocol. - */ - int ARP = 0x0806; - - /** - * Reverse address resolution protocol. - */ - int RARP = 0x8035; - - - /** - * Ethernet Loopback packet - */ - int LOOP = 0x0060; - - /** - * Ethernet Echo packet - */ - int ECHO = 0x0200; - - /** - * Xerox PUP packet - */ - int PUP = 0x0400; - - /** - * CCITT X.25 - */ - int X25 = 0x0805; - - /** - * G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] - */ - int BPQ = 0x08FF; - - /** - * DEC Assigned proto - */ - int DEC = 0x6000; - - /** - * DEC DNA Dump/Load - */ - int DNA_DL = 0x6001; - - /** - * DEC DNA Remote Console - */ - int DNA_RC = 0x6002; - - /** - * DEC DNA Routing - */ - int DNA_RT = 0x6003; - - /** - * DEC LAT - */ - int LAT = 0x6004; - - /** - * DEC Diagnostics - */ - int DIAG = 0x6005; - - /** - * DEC Customer use - */ - int CUST = 0x6006; - - /** - * DEC Systems Comms Arch - */ - int SCA = 0x6007; - - /** - * Appletalk DDP - */ - int ATALK = 0x809B; - - /** - * Appletalk AARP - */ - int AARP = 0x80F3; - - /** - * IPX over DIX - */ - int IPX = 0x8137; - - /** - * IPv6 over bluebook - */ - int IPV6 = 0x86DD; - - - // Non DIX types. Won't clash for 1500 types. - - /** - * Dummy type for 802.3 frames - */ - int N802_3 = 0x0001; - - /** - * Dummy protocol id for AX.25 - */ - int AX25 = 0x0002; - - /** - * Every packet. - */ - int ALL = 0x0003; - - /** - * 802.2 frames - */ - int N802_2 = 0x0004; - - /** - * Internal only - */ - int SNAP = 0x0005; - - /** - * DEC DDCMP: Internal only - */ - int DDCMP = 0x0006; - - /** - * Dummy type for WAN PPP frames - */ - int WAN_PPP = 0x0007; - - /** - * Dummy type for PPP MP frames - */ - int PPP_MP = 0x0008; - - /** - * Localtalk pseudo type - */ - int LOCALTALK = 0x0009; - - /** - * Dummy type for Atalk over PPP - */ - int PPPTALK = 0x0010; - - /** - * 802.2 frames - */ - int TR_802_2 = 0x0011; - - /** - * Mobitex (kaz@cafe.net) - */ - int MOBITEX = 0x0015; - - /** - * Card specific control frames - */ - int CONTROL = 0x0016; - - /** - * Linux/IR - */ - int IRDA = 0x0017; - - - // others not yet documented.. - - int NS = 0x0600; - - int SPRITE = 0x0500; - - int TRAIL = 0x1000; - - int LANBRIDGE = 0x8038; - - int DECDNS = 0x803c; - - int DECDTS = 0x803e; - - int VEXP = 0x805b; - - int VPROD = 0x805c; - - int N8021Q = 0x8100; - - int PPP = 0x880b; - - int PPPOED = 0x8863; - - int PPPOES = 0x8864; - - int LOOPBACK = 0x9000; - - - // these aren't valid ETHERNET codes, but show up in the type field. - - // spanning tree bridge protocol - int STBPDU = 0x0026; - - // intel adapter fault tolerance heartbeats - int INFTH = 0x886d; - - - /** - * Ethernet protocol mask. - */ - int MASK = 0xffff; -} diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPFields.java b/javasrc/net/sourceforge/jpcap/net/ICMPFields.java deleted file mode 100644 index 7ae1604..0000000 --- a/javasrc/net/sourceforge/jpcap/net/ICMPFields.java +++ /dev/null @@ -1,63 +0,0 @@ -// $Id: ICMPFields.java,v 1.5 2001/07/30 00:01:22 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * ICMP protocol field encoding information. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/07/30 00:01:22 $ - */ -public interface ICMPFields -{ - // field lengths - - /** - * Length of the ICMP message type code in bytes. - */ - int ICMP_CODE_LEN = 1; - - /** - * Length of the ICMP subcode in bytes. - */ - int ICMP_SUBC_LEN = 1; - - /** - * Length of the ICMP header checksum in bytes. - */ - int ICMP_CSUM_LEN = 2; - - - // field positions - - /** - * Position of the ICMP message type. - */ - int ICMP_CODE_POS = 0; - - /** - * Position of the ICMP message subcode. - */ - int ICMP_SUBC_POS = ICMP_CODE_POS + ICMP_CODE_LEN; - - /** - * Position of the ICMP header checksum. - */ - int ICMP_CSUM_POS = ICMP_SUBC_POS + ICMP_CODE_LEN; - - - // complete header length - - /** - * Length in bytes of an ICMP header. - */ - int ICMP_HEADER_LEN = ICMP_CSUM_POS + ICMP_CSUM_LEN; // == 4 -} diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPMessage.java b/javasrc/net/sourceforge/jpcap/net/ICMPMessage.java deleted file mode 100644 index 410139e..0000000 --- a/javasrc/net/sourceforge/jpcap/net/ICMPMessage.java +++ /dev/null @@ -1,79 +0,0 @@ -// $Id: ICMPMessage.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import java.util.HashMap; - - -/** - * ICMP message utility class. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ - */ -public class ICMPMessage implements ICMPMessages -{ - /** - * Fetch an ICMP message. - * @param code the code associated with the message. - * @return a message describing the significance of the ICMP code. - */ - public static String getDescription(int code) { - Integer c = new Integer(code); - if(messages.containsKey(c)) - return (String)messages.get(c); - else - return "unknown"; - } - - /** - * 'Human-readable' ICMP messages. - */ - //jdk1.5: private static HashMap messages = new HashMap(); - private static HashMap messages = new HashMap(); - static { - messages.put(new Integer(ECHO_REPLY), "echo reply"); - messages.put(new Integer(ECHO), "echo request"); - messages.put(new Integer(UNREACH_NET), "net unreachable"); - messages.put(new Integer(UNREACH_HOST), "host unreachable"); - messages.put(new Integer(UNREACH_PROTOCOL), "bad protocol"); - messages.put(new Integer(UNREACH_PORT), "port unreachable"); - messages.put(new Integer(UNREACH_NEEDFRAG), "ip_df drop"); - messages.put(new Integer(UNREACH_SRCFAIL), "source route failed"); - messages.put(new Integer(UNREACH_NET_UNKNOWN), "unknown network"); - messages.put(new Integer(UNREACH_HOST_UNKNOWN), "unknown host"); - messages.put(new Integer(UNREACH_ISOLATED), "source host isolated"); - messages.put(new Integer(UNREACH_NET_PROHIB), "net access prohibited"); - messages.put(new Integer(UNREACH_HOST_PROHIB), "host access prohibited"); - messages.put(new Integer(UNREACH_TOSNET), "tos for net invalid"); - messages.put(new Integer(UNREACH_TOSHOST), "tos for host invalid"); - messages.put(new Integer(SOURCE_QUENCH), "packet lost"); - messages.put(new Integer(REDIRECT_NET), "redirect to network"); - messages.put(new Integer(REDIRECT_HOST), "redirect to host"); - messages.put(new Integer(REDIRECT_TOSNET), "tos redirect to network"); - messages.put(new Integer(REDIRECT_TOSHOST), "tos redirect to host"); - messages.put(new Integer(ROUTER_ADVERT), "router advert"); - messages.put(new Integer(ROUTER_SOLICIT), "router solicit"); - messages.put(new Integer(TIME_EXCEED_INTRANS), "transit time exceeded"); - messages.put(new Integer(TIME_EXCEED_REASS), "reass time exceeded"); - messages.put(new Integer(PARAM_PROB), "bad ip header"); - messages.put(new Integer(TSTAMP), "timestamp request"); - messages.put(new Integer(TSTAMP_REPLY), "timestamp reply"); - messages.put(new Integer(IREQ), "information request"); - messages.put(new Integer(IREQ_REPLY), "information reply"); - messages.put(new Integer(MASK_REQ), "address mask request"); - messages.put(new Integer(MASK_REPLY), "address mask reply"); - } - - - private String _rcsid = - "$Id: ICMPMessage.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $"; -} - diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPMessages.java b/javasrc/net/sourceforge/jpcap/net/ICMPMessages.java deleted file mode 100644 index 827ad62..0000000 --- a/javasrc/net/sourceforge/jpcap/net/ICMPMessages.java +++ /dev/null @@ -1,181 +0,0 @@ -// $Id: ICMPMessages.java,v 1.5 2004/02/24 19:21:30 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Code constants for ICMP message types. - * - * Taken originally from tcpdump/print-icmp.c - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/02/24 19:21:30 $ - */ -public interface ICMPMessages -{ - /** - * Echo reply. - */ - int ECHO_REPLY = 0x0000; - - /** - * Destination network unreachable. - */ - int UNREACH_NET = 0x0300; - - /** - * Destination host unreachable. - */ - int UNREACH_HOST = 0x0301; - - /** - * Bad protocol. - */ - int UNREACH_PROTOCOL = 0x0302; - - /** - * Bad port. - */ - int UNREACH_PORT = 0x0303; - - /** - * IP_DF caused drop. - */ - int UNREACH_NEEDFRAG = 0x0304; - - /** - * Src route failed. - */ - int UNREACH_SRCFAIL = 0x0305; - - /** - * Unknown network. - */ - int UNREACH_NET_UNKNOWN = 0x0306; - - /** - * Unknown host. - */ - int UNREACH_HOST_UNKNOWN = 0x0307; - - /** - * Src host isolated. - */ - int UNREACH_ISOLATED = 0x0308; - - /** - * Network access prohibited. - */ - int UNREACH_NET_PROHIB = 0x0309; - - /** - * Host access prohibited. - */ - int UNREACH_HOST_PROHIB = 0x030a; - - /** - * Bad TOS for net. - */ - int UNREACH_TOSNET = 0x030b; - - /** - * Bad TOS for host. - */ - int UNREACH_TOSHOST = 0x030c; - - /** - * Packet lost, slow down. - */ - int SOURCE_QUENCH = 0x0400; - - /** - * Shorter route to network. - */ - int REDIRECT_NET = 0x0500; - - /** - * Shorter route to host. - */ - int REDIRECT_HOST = 0x0501; - - /** - * Shorter route for TOS and network. - */ - int REDIRECT_TOSNET = 0x0502; - - /** - * Shorter route for TOS and host. - */ - int REDIRECT_TOSHOST = 0x0503; - - /** - * Echo request. - */ - int ECHO = 0x0800; - - /** - * router advertisement - */ - int ROUTER_ADVERT = 0x0900; - - /** - * router solicitation - */ - int ROUTER_SOLICIT = 0x0a00; - - /** - * time exceeded in transit. - */ - int TIME_EXCEED_INTRANS = 0x0b00; - - /** - * time exceeded in reass. - */ - int TIME_EXCEED_REASS = 0x0b01; - - /** - * ip header bad; option absent. - */ - int PARAM_PROB = 0x0c01; - - /** - * timestamp request - */ - int TSTAMP = 0x0d00; - - /** - * timestamp reply - */ - int TSTAMP_REPLY = 0x0e00; - - /** - * information request - */ - int IREQ = 0x0f00; - - /** - * information reply - */ - int IREQ_REPLY = 0x1000; - - /** - * address mask request - */ - int MASK_REQ = 0x1100; - - /** - * address mask reply - */ - int MASK_REPLY = 0x1200; - - - // marker indicating index of largest ICMP message type code - int LAST_MAJOR_CODE = 0x12; -} diff --git a/javasrc/net/sourceforge/jpcap/net/ICMPPacket.java b/javasrc/net/sourceforge/jpcap/net/ICMPPacket.java deleted file mode 100644 index ac90023..0000000 --- a/javasrc/net/sourceforge/jpcap/net/ICMPPacket.java +++ /dev/null @@ -1,168 +0,0 @@ -// $Id: ICMPPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.AnsiEscapeSequences; -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * An ICMP packet. - *

    - * Extends an IP packet, adding an ICMP header and ICMP data payload. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.19 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class ICMPPacket extends IPPacket implements ICMPFields, Serializable -{ - public ICMPPacket(int lLen, byte [] bytes) { - super(lLen, bytes); - } - - public ICMPPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - private byte[] _icmpHeaderBytes = null; - /** - * Fetch the ICMP header a byte array. - */ - public byte[] getICMPHeader() { - if(_icmpHeaderBytes == null) { - _icmpHeaderBytes = - PacketEncoding.extractHeader(_ipOffset, ICMP_HEADER_LEN, _bytes); - } - return _icmpHeaderBytes; - } - - /** - * Fetch the ICMP header as a byte array. - */ - public byte[] getHeader() { - return getICMPHeader(); - } - - private byte[] _icmpDataBytes = null; - /** - * Fetch the ICMP data as a byte array. - */ - public byte[] getICMPData() { - if(_icmpDataBytes == null) { - // set data length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - int dataLen = _bytes.length - _ipOffset - ICMP_HEADER_LEN; - - _icmpDataBytes = - PacketEncoding.extractData(_ipOffset, ICMP_HEADER_LEN, - _bytes, dataLen); - } - return _icmpDataBytes; - } - - /** - * Fetch the ICMP data as a byte array. - */ - public byte[] getData() { - return getICMPData(); - } - - /** - * Fetch the ICMP message type, including subcode. Return value can be - * used with ICMPMessage.getDescription(). - * @return a 2-byte value containing the message type in the high byte - * and the message type subcode in the low byte. - */ - public int getMessageCode() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CODE_POS, - ICMP_CODE_LEN * 2); - } - - /** - * Fetch the ICMP message type code. Formerly .getMessageType(). - */ - public int getMessageMajorCode() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CODE_POS, - ICMP_CODE_LEN); - } - - /** - * For backward compatibility. @deprecated use getMessageMajorCode(). - */ - public int getMessageType() { - return getMessageMajorCode(); - } - - /** - * Fetch the ICMP message subcode. - */ - public int getMessageMinorCode() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CODE_POS + 1, - ICMP_CODE_LEN); - } - - /** - * Fetch the ICMP header checksum. - */ - public int getChecksum() { - return getICMPChecksum(); - } - - /** - * Fetch the ICMP header checksum. - */ - public int getICMPChecksum() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + ICMP_CSUM_POS, - ICMP_CSUM_LEN); - } - - /** - * Convert this ICMP packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this ICMP packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("ICMPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(ICMPMessage.getDescription(getMessageCode())); - buffer.append(", "); - buffer.append(getSourceAddress() + " -> " + - getDestinationAddress()); - buffer.append(" l=" + ICMP_HEADER_LEN + "," + - (_bytes.length - _ipOffset - ICMP_HEADER_LEN)); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.LIGHT_BLUE; - } - - private String _rcsid = - "$Id: ICMPPacket.java,v 1.19 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPFields.java b/javasrc/net/sourceforge/jpcap/net/IGMPFields.java deleted file mode 100644 index 3ce01b7..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IGMPFields.java +++ /dev/null @@ -1,73 +0,0 @@ -// $Id: IGMPFields.java,v 1.1 2001/07/30 00:00:02 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * IGMP protocol field encoding information. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/07/30 00:00:02 $ - */ -public interface IGMPFields -{ - // field lengths - - /** - * Length of the IGMP message type code in bytes. - */ - int IGMP_CODE_LEN = 1; - - /** - * Length of the IGMP max response code in bytes. - */ - int IGMP_MRSP_LEN = 1; - - /** - * Length of the IGMP header checksum in bytes. - */ - int IGMP_CSUM_LEN = 2; - - /** - * Length of group address in bytes. - */ - int IGMP_GADDR_LEN = IPAddress.WIDTH; - - - // field positions - - /** - * Position of the IGMP message type. - */ - int IGMP_CODE_POS = 0; - - /** - * Position of the IGMP max response code. - */ - int IGMP_MRSP_POS = IGMP_CODE_POS + IGMP_CODE_LEN; - - /** - * Position of the IGMP header checksum. - */ - int IGMP_CSUM_POS = IGMP_MRSP_POS + IGMP_MRSP_LEN; - - /** - * Position of the IGMP group address. - */ - int IGMP_GADDR_POS = IGMP_CSUM_POS + IGMP_CSUM_LEN; - - - // complete header length - - /** - * Length in bytes of an IGMP header. - */ - int IGMP_HEADER_LEN = IGMP_GADDR_POS + IGMP_GADDR_LEN; // 8 -} diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPMessage.java b/javasrc/net/sourceforge/jpcap/net/IGMPMessage.java deleted file mode 100644 index 9517199..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IGMPMessage.java +++ /dev/null @@ -1,52 +0,0 @@ -// $Id: IGMPMessage.java,v 1.2 2004/10/02 01:23:19 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import java.util.HashMap; - - -/** - * IGMP message utility class. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.2 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ - */ -public class IGMPMessage implements IGMPMessages -{ - /** - * Fetch an IGMP message. - * @param code the code associated with the message. - * @return a message describing the significance of the IGMP code. - */ - public static String getDescription(int code) { - Integer c = new Integer(code); - if(messages.containsKey(c)) - return (String)messages.get(c); - else - return "unknown"; - } - - /** - * 'Human-readable' IGMP messages. - */ - //jdk1.5: private static HashMap messages = new HashMap(); - private static HashMap messages = new HashMap(); - static { - messages.put(new Integer(LEAVE), "leave group"); - messages.put(new Integer(V1_REPORT), "v1 membership report"); - messages.put(new Integer(V2_REPORT), "v2 membership report"); - messages.put(new Integer(QUERY), "membership query"); - } - - - private String _rcsid = - "$Id: IGMPMessage.java,v 1.2 2004/10/02 01:23:19 pcharles Exp $"; -} - diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPMessages.java b/javasrc/net/sourceforge/jpcap/net/IGMPMessages.java deleted file mode 100644 index b5ab4a0..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IGMPMessages.java +++ /dev/null @@ -1,42 +0,0 @@ -// $Id: IGMPMessages.java,v 1.1 2001/07/30 00:00:02 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Code constants for IGMP message types. - * - * From RFC #2236. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/07/30 00:00:02 $ - */ -public interface IGMPMessages -{ - /** - * membership query. - */ - int QUERY = 0x11; - - /** - * v1 membership report. - */ - int V1_REPORT = 0x12; - - /** - * v2 membership report. - */ - int V2_REPORT = 0x16; - - /** - * Leave group. - */ - int LEAVE = 0x17; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IGMPPacket.java b/javasrc/net/sourceforge/jpcap/net/IGMPPacket.java deleted file mode 100644 index 113524f..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IGMPPacket.java +++ /dev/null @@ -1,163 +0,0 @@ -// $Id: IGMPPacket.java,v 1.7 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.AnsiEscapeSequences; -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * An IGMP packet. - *

    - * Extends an IP packet, adding an IGMP header and IGMP data payload. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.7 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class IGMPPacket extends IPPacket implements IGMPFields, Serializable -{ - public IGMPPacket(int lLen, byte [] bytes) { - super(lLen, bytes); - } - - public IGMPPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - private byte[] _igmpHeaderBytes = null; - /** - * Fetch the IGMP header a byte array. - */ - public byte[] getIGMPHeader() { - if(_igmpHeaderBytes == null) { - _igmpHeaderBytes = - PacketEncoding.extractHeader(_ethOffset,IGMP_HEADER_LEN, _bytes); - } - return _igmpHeaderBytes; - } - - /** - * Fetch the IGMP header as a byte array. - */ - public byte[] getHeader() { - return getIGMPHeader(); - } - - private byte[] _igmpDataBytes = null; - /** - * Fetch the IGMP data as a byte array. - */ - public byte[] getIGMPData() { - if(_igmpDataBytes == null) { - // set data length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - int dataLen = _bytes.length - _ethOffset - IGMP_HEADER_LEN; - - _igmpDataBytes = - PacketEncoding.extractData(_ethOffset, IGMP_HEADER_LEN, - _bytes, dataLen); - } - return _igmpDataBytes; - } - - /** - * Fetch the IGMP data as a byte array. - */ - public byte[] getData() { - return getIGMPData(); - } - - /** - * Fetch the IGMP message type, including subcode. Return value can be - * used with IGMPMessage.getDescription(). - * @return a 2-byte value containing the message type in the high byte - * and the message type subcode in the low byte. - */ - public int getMessageType() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + IGMP_CODE_POS, - IGMP_CODE_LEN); - } - - /** - * Fetch the IGMP max response time. - */ - public int getMaxResponseTime() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + IGMP_MRSP_POS, - IGMP_MRSP_LEN); - } - - /** - * Fetch the IGMP header checksum. - */ - public int getIGMPChecksum() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + IGMP_CSUM_POS, - IGMP_CSUM_LEN); - } - - /** - * Fetch the IGMP header checksum. - */ - public int getChecksum() { - return getIGMPChecksum(); - } - - /** - * Fetch the IGMP group address. - */ - public String getGroupAddress() { - return IPAddress.extract(_ipOffset + IGMP_GADDR_POS, _bytes); - } - - - /** - * Convert this IGMP packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this IGMP packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("IGMPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(IGMPMessage.getDescription(getMessageType())); - buffer.append(", "); - buffer.append(getGroupAddress() + ": "); - buffer.append(getSourceAddress() + " -> " + - getDestinationAddress()); - buffer.append(" l=" + IGMP_HEADER_LEN + "," + - (_bytes.length-_ipOffset-IGMP_HEADER_LEN)); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.BROWN; - } - - - private String _rcsid = - "$Id: IGMPPacket.java,v 1.7 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IPAddress.java b/javasrc/net/sourceforge/jpcap/net/IPAddress.java deleted file mode 100644 index 1ff3ba5..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IPAddress.java +++ /dev/null @@ -1,107 +0,0 @@ -// $Id: IPAddress.java,v 1.5 2002/11/07 23:23:38 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.ArrayHelper; - - -/** - * IP address. - *

    - * This class doesn't store IP addresses. There's a java class for that, - * and it is too big and cumbersome for our purposes. - *

    - * This class contains a utility method for extracting an IP address - * from a big-endian byte array. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2002/11/07 23:23:38 $ - */ -public class IPAddress -{ - /** - * Convert an IP address stored in an int to its string representation. - */ - private static String toString(int address) { - StringBuffer sa = new StringBuffer(); - for(int i=0; i> 24); - address <<= 8; - if(i != WIDTH - 1) - sa.append('.'); - } - return sa.toString(); - } - - /** - * Extract a string describing an IP address from an array of bytes. - * - * @param offset the offset of the address data. - * @param bytes an array of bytes containing the IP address. - * @return a string of the form "255.255.255.255" - */ - public static String extract(int offset, byte [] bytes) { - return toString(ArrayHelper.extractInteger(bytes, offset, WIDTH)); - /* - StringBuffer sa = new StringBuffer(); - for(int i=offset; i - * Extends an ethernet packet, adding IP header information and an IP - * data payload. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.24 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class IPPacket extends EthernetPacket implements IPFields, Serializable -{ - // offset from beginning of byte array where IP header ends (i.e., - // size of ethernet frame header and IP header - protected int _ipOffset; - - /** - * Create a new IP packet. - */ - public IPPacket(int lLen, byte [] bytes) { - super(lLen, bytes); - // fetch the actual header length from the incoming bytes - _ipHeaderLength = - (ArrayHelper.extractInteger(_bytes,_ethOffset+IP_VER_POS, - IP_VER_LEN) & 0xf) * 4; - // set offset into _bytes of previous layers - _ipOffset = _ethOffset + _ipHeaderLength; - } - - /** - * Create a new IP packet. - */ - public IPPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - private int _version; - private boolean _versionSet = false; // have to use a boolean, int!=Object - /** - * Get the IP version code. - */ - public int getVersion() { - if(! _versionSet) { - _version = - (ArrayHelper.extractInteger(_bytes, _ethOffset + IP_VER_POS, - IP_VER_LEN) >> 4) & 0xf; - _versionSet = true; - } - return _version; - } - - // set in constructor - private int _ipHeaderLength; - /** - * Fetch the IP header length in bytes. - */ - public int getIPHeaderLength() { - return _ipHeaderLength; - } - - /** - * Fetch the IP header length in bytes. - */ - public int getIpHeaderLength() { - // this is the old method call, but everything else uses all caps for - // TCP, so in the interest of consistency... - return getIPHeaderLength(); - } - - /** - * Fetch the packet IP header length. - */ - public int getHeaderLength() { - return getIPHeaderLength(); - } - - private int _typeOfService; - private boolean _typeOfServiceSet = false; - /** - * Fetch the type of service. - * For more information refer to the TypesOfService interface. - */ - public int getTypeOfService() { - if(! _typeOfServiceSet) { - _typeOfService = - ArrayHelper.extractInteger(_bytes, _ethOffset + IP_TOS_POS, - IP_TOS_LEN); - _typeOfServiceSet = true; - } - return _typeOfService; - } - - private int _length; - private boolean _lengthSet = false; - /** - * Fetch the IP length in bytes. - */ - public int getLength() { - if(! _lengthSet) { - _length = - ArrayHelper.extractInteger(_bytes, _ethOffset + IP_LEN_POS, - IP_LEN_LEN); - _lengthSet = true; - } - return _length; - } - - private int _id; - private boolean _idSet = false; - /** - * Fetch the unique ID of this IP datagram. The ID normally - * increments by one each time a datagram is sent by a host. - */ - public int getId() { - if(! _idSet) { - _id = - ArrayHelper.extractInteger(_bytes, _ethOffset + IP_ID_POS, IP_ID_LEN); - _idSet = true; - } - return _id; - } - - private int _fragmentFlags; - private boolean _fragmentFlagsSet = false; - /** - * Fetch fragmentation flags. - */ - public int getFragmentFlags() { - if(! _fragmentFlagsSet) { - // fragment flags are the high 3 bits - int huh = ArrayHelper.extractInteger(_bytes, - _ethOffset + IP_FRAG_POS, - IP_FRAG_LEN); - _fragmentFlags = - (ArrayHelper.extractInteger(_bytes, _ethOffset + IP_FRAG_POS, - IP_FRAG_LEN) >> 13) & 0x7; - _fragmentFlagsSet = true; - } - return _fragmentFlags; - } - - private int _fragmentOffset; - private boolean _fragmentOffsetSet = false; - /** - * Fetch fragmentation offset. - */ - public int getFragmentOffset() { - if(! _fragmentOffsetSet) { - // offset is the low 13 bits - _fragmentOffset = - ArrayHelper.extractInteger(_bytes, _ethOffset + IP_FRAG_POS, - IP_FRAG_LEN) & 0x1fff; - _fragmentOffsetSet = true; - } - return _fragmentOffset; - } - - private int _timeToLive; - private boolean _timeToLiveSet = false; - /** - * Fetch the time to live. TTL sets the upper limit on the number of - * routers through which this IP datagram is allowed to pass. - */ - public int getTimeToLive() { - if(! _timeToLiveSet) { - _timeToLive = - ArrayHelper.extractInteger(_bytes, _ethOffset + IP_TTL_POS, - IP_TTL_LEN); - _timeToLiveSet = true; - } - return _timeToLive; - } - - private int _ipProtocol; - private boolean _ipProtocolSet = false; - /** - * Fetch the code indicating the type of protocol embedded in the IP - * datagram. @see IPProtocols. - */ - public int getIPProtocol() { - if(! _ipProtocolSet) { - _ipProtocol = - ArrayHelper.extractInteger(_bytes, _ethOffset + IP_CODE_POS, - IP_CODE_LEN); - _ipProtocolSet = true; - } - return _ipProtocol; - } - /** - * Fetch the code indicating the type of protocol embedded in the IP - * datagram. @see IPProtocols. - */ - public int getProtocol() { - return getIPProtocol(); - } - - private int _ipChecksum; - private boolean _ipChecksumSet = false; - /** - * Fetch the header checksum. - */ - public int getIPChecksum() { - if(! _ipChecksumSet) { - _ipChecksum = - ArrayHelper.extractInteger(_bytes, _ethOffset + IP_CSUM_POS, - IP_CSUM_LEN); - _ipChecksumSet = true; - } - return _ipChecksum; - } - - /** - * Fetch the header checksum. - */ - public int getChecksum() { - return getIPChecksum(); - } - - private String _sourceAddress = null; - /** - * Fetch the IP address of the host where the packet originated from. - */ - public String getSourceAddress() { - if(_sourceAddress == null) { - _sourceAddress = IPAddress.extract(_ethOffset + IP_SRC_POS, _bytes); - } - return _sourceAddress; - } - - private byte[] _sourceAddressBytes = null; - /** - * Fetch the source address as a byte array. - */ - public byte[] getSourceAddressBytes() { - if(_sourceAddressBytes == null) { - _sourceAddressBytes = new byte[4]; - System.arraycopy(_bytes, _ethOffset + IP_SRC_POS, - _sourceAddressBytes, 0, 4); - } - return _sourceAddressBytes; - } - - private long _sourceAddressAsLong; - private boolean _sourceAddressAsLongSet = false; - /** - * Fetch the source address as a long. - */ - public long getSourceAddressAsLong() { - if(! _sourceAddressAsLongSet) { - _sourceAddressAsLong = - ArrayHelper.extractLong(_bytes, _ethOffset + IP_SRC_POS, 4); - _sourceAddressAsLongSet = true; - } - return _sourceAddressAsLong; - } - - private String _destinationAddress = null; - /** - * Fetch the IP address of the host where the packet is destined. - */ - public String getDestinationAddress() { - if(_destinationAddress == null) { - _destinationAddress = - IPAddress.extract(_ethOffset + IP_DST_POS, _bytes); - } - return _destinationAddress; - } - - private byte[] _destinationAddressBytes = null; - /** - * Fetch the destination address as a byte array. - */ - public byte[] getDestinationAddressBytes() { - if(_destinationAddressBytes == null) { - _destinationAddressBytes = new byte[4]; - System.arraycopy(_bytes,_ethOffset+IP_DST_POS, - _destinationAddressBytes,0,4); - } - return _destinationAddressBytes; - } - - private long _destinationAddressAsLong; - private boolean _destinationAddressAsLongSet = false; - /** - * Fetch the destination address as a long. - */ - public long getDestinationAddressAsLong() { - if(! _destinationAddressAsLongSet) { - _destinationAddressAsLong = - ArrayHelper.extractLong(_bytes, _ethOffset + IP_DST_POS, 4); - _destinationAddressAsLongSet = true; - } - return _destinationAddressAsLong; - } - - private byte[] _ipHeaderBytes = null; - /** - * Fetch the IP header a byte array. - */ - public byte[] getIPHeader() { - if(_ipHeaderBytes == null) { - _ipHeaderBytes = - PacketEncoding.extractHeader(_ethOffset, getIPHeaderLength(), - _bytes); - } - return _ipHeaderBytes; - } - - /** - * Fetch the IP header as a byte array. - */ - public byte[] getHeader() { - return getIPHeader(); - } - - private byte[] _ipDataBytes = null; - /** - * Fetch the IP data as a byte array. - */ - public byte[] getIPData() { - if(_ipDataBytes == null) { - // set data length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - int tmpLen = getLength() - getIPHeaderLength(); - _ipDataBytes = - PacketEncoding.extractData(_ethOffset, getIPHeaderLength(), - _bytes, tmpLen); - } - return _ipDataBytes; - } - - /** - * Fetch the IP data as a byte array. - */ - public byte[] getData() { - return getIPData(); - } - - private boolean _isValidChecksum; - private boolean _isValidChecksumSet = false; - /** - * Check if the IP packet is valid, checksum-wise. - */ - public boolean isValidChecksum() { - if(! _isValidChecksumSet) { - // first validate other information about the packet. if this stuff - // is not true, the packet (and therefore the checksum) is invalid - // - ip_hl >= 5 (ip_hl is the length in 4-byte words) - if( getIPHeaderLength() < IP_HEADER_LEN ) { - _isValidChecksum = false; - } else { - _isValidChecksum = (computeReceiverIPChecksum() == 0xffff); - } - _isValidChecksumSet = true; - } - return _isValidChecksum; - } - - /** - * Check if the IP packet is valid, checksum-wise. - */ - public boolean isValidIPChecksum() { - return isValidChecksum(); - } - protected int computeReceiverIPChecksum() { - return computeReceiverChecksum(_ethOffset, getIPHeaderLength()); - } - protected int computeReceiverChecksum(int start, int len) { - // checksum should come out to -1 if checksum is correct - return onesCompSum(_bytes,start,len); - } - protected int computeSenderIPChecksum() { - return computeSenderChecksum(_ethOffset, getIPHeaderLength(), 10); - } - protected int computeSenderChecksum(int start, int len, int csumPos) { - // quick bad-data check - if( csumPos >= len) return 0; // bad data, header too short - // copy bytes, zero out checksum - byte[] sbytes = new byte[len]; - System.arraycopy(_bytes, start, sbytes, 0, len); - // zero out any current checksum - sbytes[csumPos] = sbytes[csumPos+1] = 0; - // checksum should come out to -1 if checksum is correct - return onesCompSum(sbytes,0,len); - } - protected int onesCompSum(byte[] bytes, int start, int len) { - int sum = 0; - // basically, IP checksums are done by taking the 16 bit ones- - // complement sum of the IP header. This means summing two bytes - // at a time. no error checking is done (e.g. bounds checking) - int i; - for(i = 0; i < len; i+=2) { - // put bytes in ints so we can forget about sign-extension - int i1 = bytes[start + i] & 0xff; - // zero-pad, maybe - int i2 = (start + i + 1 < len ? bytes[start + i + 1] & 0xff : 0); - sum += ((i1 << 8) + i2); - while( (sum & 0xffff) != sum ) { - sum &= 0xffff; - sum += 1; - } - } - return sum; - } - - /** - * Convert this IP packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this IP packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("IPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(getSourceAddress() + " -> " + - getDestinationAddress()); - buffer.append(" proto=" + getProtocol()); - buffer.append(" l=" + getIPHeaderLength() + "," + getLength()); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Convert this IP packet to a more verbose string. - */ - public String toColoredVerboseString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("IPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append("version=" + getVersion() + ", "); - buffer.append("hlen=" + getHeaderLength() + ", "); - buffer.append("tos=" + getTypeOfService() + ", "); - buffer.append("length=" + getLength() + ", "); - buffer.append("id=" + getId() + ", "); - buffer.append("flags=0x" + Integer.toHexString(getFragmentFlags()) + ", "); - buffer.append("offset=" + getFragmentOffset() + ", "); - buffer.append("ttl=" + getTimeToLive() + ", "); - buffer.append("proto=" + getProtocol() + ", "); - buffer.append("sum=0x" + Integer.toHexString(getChecksum()) + ", "); - buffer.append("src=" + getSourceAddress() + ", "); - buffer.append("dest=" + getDestinationAddress()); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.WHITE; - } - - /** - * This inner class provides access to private methods for unit testing. - */ - public class TestProbe { - public int getComputedReceiverIPChecksum() { - return IPPacket.this.computeReceiverIPChecksum(); - } - public int getComputedSenderIPChecksum() { - return IPPacket.this.computeSenderIPChecksum(); - } - } - - - private String _rcsid = - "$Id: IPPacket.java,v 1.24 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IPPort.java b/javasrc/net/sourceforge/jpcap/net/IPPort.java deleted file mode 100644 index a2db14c..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IPPort.java +++ /dev/null @@ -1,1447 +0,0 @@ -// $Id: IPPort.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import java.util.HashMap; - - -/** - * IP port utility class. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ - */ -public class IPPort implements IPPorts -{ - /** - * Fetch a well-known IP port description. - * @param port the port associated with the description. - * @return a description of the ip port. - */ - public static String getDescription(int port) { - Integer c = new Integer(port); - if(descriptions.containsKey(c)) - return (String)descriptions.get(c); - else - if(port >= X11_BEGIN && port <= X11_END) - return (String)descriptions.get(new Integer(X11)); - else - return UNKNOWN; - } - - /** - * Fetch a well-known IP port name. - * @param port the port associated with the name. - * @return the name of the ip port. - */ - public static String getName(int port) { - Integer c = new Integer(port); - if(names.containsKey(c)) - return (String)names.get(c); - else - if(port >= X11_BEGIN && port <= X11_END) - return (String)names.get(new Integer(X11)); - else - return c.toString(); - } - - /** - * 'Human-readable' IP port descriptions. - */ - //jdk1.5: private static HashMap descriptions = new HashMap(); - private static HashMap descriptions = new HashMap(); - static { - // todo: descriptions aren't descriptions - descriptions.put(new Integer(IPPort.NONE), "no port specified"); - descriptions.put(new Integer(IPPort.RESERVED_0), "port 0 is reserved!"); - descriptions.put(new Integer(IPPort.TCPMUX), "tcpmux"); - descriptions.put(new Integer(IPPort.COMPRESSNET2), "compressnet2"); - descriptions.put(new Integer(IPPort.COMPRESSNET), "compressnet"); - descriptions.put(new Integer(IPPort.RJE), "rje"); - descriptions.put(new Integer(IPPort.ECHO), "echo"); - descriptions.put(new Integer(IPPort.DISCARD), "discard"); - descriptions.put(new Integer(IPPort.SYSTAT), "systat"); - descriptions.put(new Integer(IPPort.DAYTIME), "daytime"); - descriptions.put(new Integer(IPPort.QOTD), "qotd"); - descriptions.put(new Integer(IPPort.MSP), "msp"); - descriptions.put(new Integer(IPPort.CHARGEN), "chargen"); - descriptions.put(new Integer(IPPort.FTP_DATA), "ftp_data"); - descriptions.put(new Integer(IPPort.FTP), "file transfer protocol"); - descriptions.put(new Integer(IPPort.SSH), "secure shell protocol"); - descriptions.put(new Integer(IPPort.TELNET), "remote terminal protocol"); - descriptions.put(new Integer(IPPort.PRIV_MAIL), "priv_mail"); - descriptions.put(new Integer(IPPort.SMTP), "simple mail xfer protocol"); - descriptions.put(new Integer(IPPort.NSW_FE), "nsw_fe"); - descriptions.put(new Integer(IPPort.MSG_ICP), "msg_icp"); - descriptions.put(new Integer(IPPort.MSG_AUTH), "msg_auth"); - descriptions.put(new Integer(IPPort.DSP), "dsp"); - descriptions.put(new Integer(IPPort.PRIV_PRINT), "priv_print"); - descriptions.put(new Integer(IPPort.TIME), "time"); - descriptions.put(new Integer(IPPort.RAP), "rap"); - descriptions.put(new Integer(IPPort.RLP), "rlp"); - descriptions.put(new Integer(IPPort.GRAPHICS), "graphics"); - descriptions.put(new Integer(IPPort.NAME), "name"); - descriptions.put(new Integer(IPPort.NAMESERVER), "nameserver"); - descriptions.put(new Integer(IPPort.NICNAME), "nicname"); - descriptions.put(new Integer(IPPort.MPM_FLAGS), "mpm_flags"); - descriptions.put(new Integer(IPPort.MPM), "mpm"); - descriptions.put(new Integer(IPPort.MPM_SND), "mpm_snd"); - descriptions.put(new Integer(IPPort.NI_FTP), "ni_ftp"); - descriptions.put(new Integer(IPPort.AUDITD), "auditd"); - descriptions.put(new Integer(IPPort.TACACS), "tacacs"); - descriptions.put(new Integer(IPPort.RE_MAIL_CK), "re_mail_ck"); - descriptions.put(new Integer(IPPort.LA_MAINT), "la_maint"); - descriptions.put(new Integer(IPPort.XNS_TIME), "xns_time"); - descriptions.put(new Integer(IPPort.DOMAIN), "domain"); - descriptions.put(new Integer(IPPort.XNS_CH), "xns_ch"); - descriptions.put(new Integer(IPPort.ISI_GL), "isi_gl"); - descriptions.put(new Integer(IPPort.XNS_AUTH), "xns_auth"); - descriptions.put(new Integer(IPPort.PRIV_TERMINAL), "priv_terminal"); - descriptions.put(new Integer(IPPort.XNS_MAIL), "xns_mail"); - descriptions.put(new Integer(IPPort.PRIV_FILE), "priv_file"); - descriptions.put(new Integer(IPPort.NI_MAIL), "ni_mail"); - descriptions.put(new Integer(IPPort.ACAS), "acas"); - descriptions.put(new Integer(IPPort.WHOIS), "whois++"); - descriptions.put(new Integer(IPPort.COVIA), "covia"); - descriptions.put(new Integer(IPPort.TACACS_DS), "tacacs_ds"); - descriptions.put(new Integer(IPPort.SQLSNET), "sql*net"); - descriptions.put(new Integer(IPPort.BOOTPS), "bootps"); - descriptions.put(new Integer(IPPort.BOOTPC), "bootpc"); - descriptions.put(new Integer(IPPort.TFTP), "tftp"); - descriptions.put(new Integer(IPPort.GOPHER), "gopher"); - descriptions.put(new Integer(IPPort.NETRJS_1), "netrjs_1"); - descriptions.put(new Integer(IPPort.NETRJS_2), "netrjs_2"); - descriptions.put(new Integer(IPPort.NETRJS_3), "netrjs_3"); - descriptions.put(new Integer(IPPort.NETRJS_4), "netrjs_4"); - descriptions.put(new Integer(IPPort.PRIV_DIALOUT), "priv_dialout"); - descriptions.put(new Integer(IPPort.DEOS), "deos"); - descriptions.put(new Integer(IPPort.PRIV_RJE), "priv_rje"); - descriptions.put(new Integer(IPPort.VETTCP), "vettcp"); - descriptions.put(new Integer(IPPort.FINGER), "finger"); - descriptions.put(new Integer(IPPort.HTTP), "http"); - descriptions.put(new Integer(IPPort.WWW), "www"); - descriptions.put(new Integer(IPPort.HOSTS2_NS), "hosts2_ns"); - descriptions.put(new Integer(IPPort.XFER), "xfer"); - descriptions.put(new Integer(IPPort.MIT_ML_DEV), "mit_ml_dev"); - descriptions.put(new Integer(IPPort.CTF), "ctf"); - descriptions.put(new Integer(IPPort.MIT_ML_DEV2), "mit_ml_dev"); - descriptions.put(new Integer(IPPort.MFCOBOL), "mfcobol"); - descriptions.put(new Integer(IPPort.PRIV_TERMLINK), "priv_termlink"); - descriptions.put(new Integer(IPPort.KERBEROS), "kerberos"); - descriptions.put(new Integer(IPPort.SU_MIT_TG), "su_mit_tg"); - descriptions.put(new Integer(IPPort.DNSIX), "dnsix"); - descriptions.put(new Integer(IPPort.MIT_DOV), "mit_dov"); - descriptions.put(new Integer(IPPort.NPP), "npp"); - descriptions.put(new Integer(IPPort.DCP), "dcp"); - descriptions.put(new Integer(IPPort.OBJCALL), "objcall"); - descriptions.put(new Integer(IPPort.SUPDUP), "supdup"); - descriptions.put(new Integer(IPPort.DIXIE), "dixie"); - descriptions.put(new Integer(IPPort.SWIFT_RVF), "swift_rvf"); - descriptions.put(new Integer(IPPort.TACNEWS), "tacnews"); - descriptions.put(new Integer(IPPort.METAGRAM), "metagram"); - descriptions.put(new Integer(IPPort.NEWACCT), "newacct"); - descriptions.put(new Integer(IPPort.HOSTNAME), "hostname"); - descriptions.put(new Integer(IPPort.ISO_TSAP), "iso_tsap"); - descriptions.put(new Integer(IPPort.GPPITNP), "gppitnp"); - descriptions.put(new Integer(IPPort.ACR_NEMA), "acr_nema"); - descriptions.put(new Integer(IPPort.CSO), "cso"); - descriptions.put(new Integer(IPPort.CSNET_NS), "csnet_ns"); - descriptions.put(new Integer(IPPort.TSMUX_3COM), "3com_tsmux"); - descriptions.put(new Integer(IPPort.RTELNET), "rtelnet"); - descriptions.put(new Integer(IPPort.SNAGAS), "snagas"); - descriptions.put(new Integer(IPPort.POP2), "pop2"); - descriptions.put(new Integer(IPPort.POP3), "pop3"); - descriptions.put(new Integer(IPPort.SUNRPC), "sunrpc"); - descriptions.put(new Integer(IPPort.MCIDAS), "mcidas"); - descriptions.put(new Integer(IPPort.IDENT), "ident"); - descriptions.put(new Integer(IPPort.AUTH), "auth"); - descriptions.put(new Integer(IPPort.AUDIONEWS), "audionews"); - descriptions.put(new Integer(IPPort.SFTP), "sftp"); - descriptions.put(new Integer(IPPort.ANSANOTIFY), "ansanotify"); - descriptions.put(new Integer(IPPort.UUCP_PATH), "uucp_path"); - descriptions.put(new Integer(IPPort.SQLSERV), "sqlserv"); - descriptions.put(new Integer(IPPort.NNTP), "nntp"); - descriptions.put(new Integer(IPPort.CFDPTKT), "cfdptkt"); - descriptions.put(new Integer(IPPort.ERPC), "erpc"); - descriptions.put(new Integer(IPPort.SMAKYNET), "smakynet"); - descriptions.put(new Integer(IPPort.NTP), "ntp"); - descriptions.put(new Integer(IPPort.ANSATRADER), "ansatrader"); - descriptions.put(new Integer(IPPort.LOCUS_MAP), "locus_map"); - descriptions.put(new Integer(IPPort.NXEDIT), "nxedit"); - descriptions.put(new Integer(IPPort.LOCUS_CON), "locus_con"); - descriptions.put(new Integer(IPPort.GSS_XLICEN), "gss_xlicen"); - descriptions.put(new Integer(IPPort.PWDGEN), "pwdgen"); - descriptions.put(new Integer(IPPort.CISCO_FNA), "cisco_fna"); - descriptions.put(new Integer(IPPort.CISCO_TNA), "cisco_tna"); - descriptions.put(new Integer(IPPort.CISCO_SYS), "cisco_sys"); - descriptions.put(new Integer(IPPort.STATSRV), "statsrv"); - descriptions.put(new Integer(IPPort.INGRES_NET), "ingres_net"); - descriptions.put(new Integer(IPPort.EPMAP), "epmap"); - descriptions.put(new Integer(IPPort.PROFILE), "profile"); - descriptions.put(new Integer(IPPort.NETBIOS_NS), "netbios_ns"); - descriptions.put(new Integer(IPPort.NETBIOS_DGM), "netbios_dgm"); - descriptions.put(new Integer(IPPort.NETBIOS_SSN), "netbios_ssn"); - descriptions.put(new Integer(IPPort.EMFIS_DATA), "emfis_data"); - descriptions.put(new Integer(IPPort.EMFIS_CNTL), "emfis_cntl"); - descriptions.put(new Integer(IPPort.BL_IDM), "bl_idm"); - descriptions.put(new Integer(IPPort.IMAP), "imap"); - descriptions.put(new Integer(IPPort.UMA), "uma"); - descriptions.put(new Integer(IPPort.UAAC), "uaac"); - descriptions.put(new Integer(IPPort.ISO_TP0), "iso_tp0"); - descriptions.put(new Integer(IPPort.ISO_IP), "iso_ip"); - descriptions.put(new Integer(IPPort.JARGON), "jargon"); - descriptions.put(new Integer(IPPort.AED_512), "aed_512"); - descriptions.put(new Integer(IPPort.SQL_NET), "sql_net"); - descriptions.put(new Integer(IPPort.HEMS), "hems"); - descriptions.put(new Integer(IPPort.BFTP), "bftp"); - descriptions.put(new Integer(IPPort.SGMP), "sgmp"); - descriptions.put(new Integer(IPPort.NETSC_PROD), "netsc_prod"); - descriptions.put(new Integer(IPPort.NETSC_DEV), "netsc_dev"); - descriptions.put(new Integer(IPPort.SQLSRV), "sqlsrv"); - descriptions.put(new Integer(IPPort.KNET_CMP), "knet_cmp"); - descriptions.put(new Integer(IPPort.PCMAIL_SRV), "pcmail_srv"); - descriptions.put(new Integer(IPPort.NSS_ROUTING), "nss_routing"); - descriptions.put(new Integer(IPPort.SGMP_TRAPS), "sgmp_traps"); - descriptions.put(new Integer(IPPort.SNMP), "snmp"); - descriptions.put(new Integer(IPPort.SNMPTRAP), "snmptrap"); - descriptions.put(new Integer(IPPort.CMIP_MAN), "cmip_man"); - descriptions.put(new Integer(IPPort.CMIP_AGENT), "cmip_agent"); - descriptions.put(new Integer(IPPort.XNS_COURIER), "xns_courier"); - descriptions.put(new Integer(IPPort.S_NET), "s_net"); - descriptions.put(new Integer(IPPort.NAMP), "namp"); - descriptions.put(new Integer(IPPort.RSVD), "rsvd"); - descriptions.put(new Integer(IPPort.SEND), "send"); - descriptions.put(new Integer(IPPort.PRINT_SRV), "print_srv"); - descriptions.put(new Integer(IPPort.MULTIPLEX), "multiplex"); - descriptions.put(new Integer(IPPort.CL1), "cl1"); - descriptions.put(new Integer(IPPort.XYPLEX_MUX), "xyplex_mux"); - descriptions.put(new Integer(IPPort.MAILQ), "mailq"); - descriptions.put(new Integer(IPPort.VMNET), "vmnet"); - descriptions.put(new Integer(IPPort.GENRAD_MUX), "genrad_mux"); - descriptions.put(new Integer(IPPort.XDMCP), "xdmcp"); - descriptions.put(new Integer(IPPort.NEXTSTEP), "nextstep"); - descriptions.put(new Integer(IPPort.BGP), "bgp"); - descriptions.put(new Integer(IPPort.RIS), "ris"); - descriptions.put(new Integer(IPPort.UNIFY), "unify"); - descriptions.put(new Integer(IPPort.AUDIT), "audit"); - descriptions.put(new Integer(IPPort.OCBINDER), "ocbinder"); - descriptions.put(new Integer(IPPort.OCSERVER), "ocserver"); - descriptions.put(new Integer(IPPort.REMOTE_KIS), "remote_kis"); - descriptions.put(new Integer(IPPort.KIS), "kis"); - descriptions.put(new Integer(IPPort.ACI), "aci"); - descriptions.put(new Integer(IPPort.MUMPS), "mumps"); - descriptions.put(new Integer(IPPort.QFT), "qft"); - descriptions.put(new Integer(IPPort.GACP), "gacp"); - descriptions.put(new Integer(IPPort.PROSPERO), "prospero"); - descriptions.put(new Integer(IPPort.OSU_NMS), "osu_nms"); - descriptions.put(new Integer(IPPort.SRMP), "srmp"); - descriptions.put(new Integer(IPPort.IRC), "irc"); - descriptions.put(new Integer(IPPort.DN6_NLM_AUD), "dn6_nlm_aud"); - descriptions.put(new Integer(IPPort.DN6_SMM_RED), "dn6_smm_red"); - descriptions.put(new Integer(IPPort.DLS), "dls"); - descriptions.put(new Integer(IPPort.DLS_MON), "dls_mon"); - descriptions.put(new Integer(IPPort.SMUX), "smux"); - descriptions.put(new Integer(IPPort.SRC), "src"); - descriptions.put(new Integer(IPPort.AT_RTMP), "at_rtmp"); - descriptions.put(new Integer(IPPort.AT_NBP), "at_nbp"); - descriptions.put(new Integer(IPPort.AT_3), "at_3"); - descriptions.put(new Integer(IPPort.AT_ECHO), "at_echo"); - descriptions.put(new Integer(IPPort.AT_5), "at_5"); - descriptions.put(new Integer(IPPort.AT_ZIS), "at_zis"); - descriptions.put(new Integer(IPPort.AT_7), "at_7"); - descriptions.put(new Integer(IPPort.AT_8), "at_8"); - descriptions.put(new Integer(IPPort.QMTP), "qmtp"); - descriptions.put(new Integer(IPPort.Z39_50), "z39.50"); - descriptions.put(new Integer(IPPort.N914C), "914c_g"); - descriptions.put(new Integer(IPPort.ANET), "anet"); - descriptions.put(new Integer(IPPort.IPX), "ipx"); - descriptions.put(new Integer(IPPort.VMPWSCS), "vmpwscs"); - descriptions.put(new Integer(IPPort.SOFTPC), "softpc"); - descriptions.put(new Integer(IPPort.CAILIC), "CAIlic"); - descriptions.put(new Integer(IPPort.DBASE), "dbase"); - descriptions.put(new Integer(IPPort.MPP), "mpp"); - descriptions.put(new Integer(IPPort.UARPS), "uarps"); - descriptions.put(new Integer(IPPort.IMAP3), "imap3"); - descriptions.put(new Integer(IPPort.FLN_SPX), "fln_spx"); - descriptions.put(new Integer(IPPort.RSH_SPX), "rsh_spx"); - descriptions.put(new Integer(IPPort.CDC), "cdc"); - descriptions.put(new Integer(IPPort.MASQDIALER), "masqdialer"); - descriptions.put(new Integer(IPPort.DIRECT), "direct"); - descriptions.put(new Integer(IPPort.SUR_MEAS), "sur_meas"); - descriptions.put(new Integer(IPPort.INBUSINESS), "inbusiness"); - descriptions.put(new Integer(IPPort.LINK), "link"); - descriptions.put(new Integer(IPPort.DSP3270), "dsp3270"); - descriptions.put(new Integer(IPPort.SUBNTBCST_TFTP), "subntbcst_tftp"); - descriptions.put(new Integer(IPPort.BHFHS), "bhfhs"); - descriptions.put(new Integer(IPPort.RAP2), "rap2"); - descriptions.put(new Integer(IPPort.SET), "set"); - descriptions.put(new Integer(IPPort.YAK_CHAT), "yak_chat"); - descriptions.put(new Integer(IPPort.ESRO_GEN), "esro_gen"); - descriptions.put(new Integer(IPPort.OPENPORT), "openport"); - descriptions.put(new Integer(IPPort.NSIIOPS), "nsiiops"); - descriptions.put(new Integer(IPPort.ARCISDMS), "arcisdms"); - descriptions.put(new Integer(IPPort.HDAP), "hdap"); - descriptions.put(new Integer(IPPort.BGMP), "bgmp"); - descriptions.put(new Integer(IPPort.X_BONE_CTL), "x_bone_ctl"); - descriptions.put(new Integer(IPPort.SST), "sst"); - descriptions.put(new Integer(IPPort.TD_SERVICE), "td_service"); - descriptions.put(new Integer(IPPort.TD_REPLICA), "td_replica"); - descriptions.put(new Integer(IPPort.HTTP_MGMT), "http_mgmt"); - descriptions.put(new Integer(IPPort.PERSONAL_LINK), "personal_link"); - descriptions.put(new Integer(IPPort.CABLEPORT_AX), "cableport_ax"); - descriptions.put(new Integer(IPPort.RESCAP), "rescap"); - descriptions.put(new Integer(IPPort.CORERJD), "corerjd"); - descriptions.put(new Integer(IPPort.FXP_1), "fxp_1"); - descriptions.put(new Integer(IPPort.K_BLOCK), "k_block"); - descriptions.put(new Integer(IPPort.NOVASTORBAKCUP), "novastorbakcup"); - descriptions.put(new Integer(IPPort.ENTRUSTTIME), "entrusttime"); - descriptions.put(new Integer(IPPort.BHMDS), "bhmds"); - descriptions.put(new Integer(IPPort.ASIP_WEBADMIN), "asip_webadmin"); - descriptions.put(new Integer(IPPort.VSLMP), "vslmp"); - descriptions.put(new Integer(IPPort.MAGENTA_LOGIC), "magenta_logic"); - descriptions.put(new Integer(IPPort.OPALIS_ROBOT), "opalis_robot"); - descriptions.put(new Integer(IPPort.DPSI), "dpsi"); - descriptions.put(new Integer(IPPort.DECAUTH), "decauth"); - descriptions.put(new Integer(IPPort.ZANNET), "zannet"); - descriptions.put(new Integer(IPPort.PKIX_TIMESTAMP), "pkix_timestamp"); - descriptions.put(new Integer(IPPort.PTP_EVENT), "ptp_event"); - descriptions.put(new Integer(IPPort.PTP_GENERAL), "ptp_general"); - descriptions.put(new Integer(IPPort.PIP), "pip"); - descriptions.put(new Integer(IPPort.RTSPS), "rtsps"); - descriptions.put(new Integer(IPPort.TEXAR), "texar"); - descriptions.put(new Integer(IPPort.PDAP), "pdap"); - descriptions.put(new Integer(IPPort.PAWSERV), "pawserv"); - descriptions.put(new Integer(IPPort.ZSERV), "zserv"); - descriptions.put(new Integer(IPPort.FATSERV), "fatserv"); - descriptions.put(new Integer(IPPort.CSI_SGWP), "csi_sgwp"); - descriptions.put(new Integer(IPPort.MFTP), "mftp"); - descriptions.put(new Integer(IPPort.MATIP_TYPE_A), "matip_type_a"); - descriptions.put(new Integer(IPPort.MATIP_TYPE_B), "matip_type_b"); - descriptions.put(new Integer(IPPort.BHOETTY), "bhoetty"); - descriptions.put(new Integer(IPPort.DTAG_STE_SB), "dtag_ste_sb"); - descriptions.put(new Integer(IPPort.BHOEDAP4), "bhoedap4"); - descriptions.put(new Integer(IPPort.NDSAUTH), "ndsauth"); - descriptions.put(new Integer(IPPort.BH611), "bh611"); - descriptions.put(new Integer(IPPort.DATEX_ASN), "datex_asn"); - descriptions.put(new Integer(IPPort.CLOANTO_NET), "cloanto_net"); - descriptions.put(new Integer(IPPort.BHEVENT), "bhevent"); - descriptions.put(new Integer(IPPort.SHRINKWRAP), "shrinkwrap"); - descriptions.put(new Integer(IPPort.NSRMP), "nsrmp"); - descriptions.put(new Integer(IPPort.SCOI2ODIALOG), "scoi2odialog"); - descriptions.put(new Integer(IPPort.SEMANTIX), "semantix"); - descriptions.put(new Integer(IPPort.SRSSEND), "srssend"); - descriptions.put(new Integer(IPPort.RSVP_TUNNEL), "rsvp_tunnel"); - descriptions.put(new Integer(IPPort.AURORA_CMGR), "aurora_cmgr"); - descriptions.put(new Integer(IPPort.DTK), "dtk"); - descriptions.put(new Integer(IPPort.ODMR), "odmr"); - descriptions.put(new Integer(IPPort.MORTGAGEWARE), "mortgageware"); - descriptions.put(new Integer(IPPort.QBIKGDP), "qbikgdp"); - descriptions.put(new Integer(IPPort.RPC2PORTMAP), "rpc2portmap"); - descriptions.put(new Integer(IPPort.CODAAUTH), "codaauth"); - descriptions.put(new Integer(IPPort.CLEARCASE), "clearcase"); - descriptions.put(new Integer(IPPort.ULISTPROC), "ulistproc"); - descriptions.put(new Integer(IPPort.LEGENT_1), "legent_1"); - descriptions.put(new Integer(IPPort.LEGENT_2), "legent_2"); - descriptions.put(new Integer(IPPort.HASSLE), "hassle"); - descriptions.put(new Integer(IPPort.NIP), "nip"); - descriptions.put(new Integer(IPPort.TNETOS), "tnETOS"); - descriptions.put(new Integer(IPPort.DSETOS), "dsETOS"); - descriptions.put(new Integer(IPPort.IS99C), "is99c"); - descriptions.put(new Integer(IPPort.IS99S), "is99s"); - descriptions.put(new Integer(IPPort.HP_COLLECTOR), "hp_collector"); - descriptions.put(new Integer(IPPort.HP_MANAGED_NODE), "hp_managed_node"); - descriptions.put(new Integer(IPPort.HP_ALARM_MGR), "hp_alarm_mgr"); - descriptions.put(new Integer(IPPort.ARNS), "arns"); - descriptions.put(new Integer(IPPort.IBM_APP), "ibm_app"); - descriptions.put(new Integer(IPPort.ASA), "asa"); - descriptions.put(new Integer(IPPort.AURP), "aurp"); - descriptions.put(new Integer(IPPort.UNIDATA_LDM), "unidata_ldm"); - descriptions.put(new Integer(IPPort.UIS), "uis"); - descriptions.put(new Integer(IPPort.SYNOTICS_RELAY), "synotics_relay"); - descriptions.put(new Integer(IPPort.SYNOTICS_BROKER), "synotics_broker"); - descriptions.put(new Integer(IPPort.META5), "meta5"); - descriptions.put(new Integer(IPPort.EMBL_NDT), "embl_ndt"); - descriptions.put(new Integer(IPPort.NETCP), "netcp"); - descriptions.put(new Integer(IPPort.NETWARE_IP), "netware_ip"); - descriptions.put(new Integer(IPPort.MPTN), "mptn"); - descriptions.put(new Integer(IPPort.KRYPTOLAN), "kryptolan"); - descriptions.put(new Integer(IPPort.ISO_TSAP_C2), "iso_tsap_c2"); - descriptions.put(new Integer(IPPort.WORK_SOL), "work_sol"); - descriptions.put(new Integer(IPPort.UPS), "ups"); - descriptions.put(new Integer(IPPort.GENIE), "genie"); - descriptions.put(new Integer(IPPort.DECAP), "decap"); - descriptions.put(new Integer(IPPort.NCED), "nced"); - descriptions.put(new Integer(IPPort.NCLD), "ncld"); - descriptions.put(new Integer(IPPort.IMSP), "imsp"); - descriptions.put(new Integer(IPPort.TIMBUKTU), "timbuktu"); - descriptions.put(new Integer(IPPort.PRM_SM), "prm_sm"); - descriptions.put(new Integer(IPPort.PRM_NM), "prm_nm"); - descriptions.put(new Integer(IPPort.DECLADEBUG), "decladebug"); - descriptions.put(new Integer(IPPort.RMT), "rmt"); - descriptions.put(new Integer(IPPort.SYNOPTICS_TRAP), "synoptics_trap"); - descriptions.put(new Integer(IPPort.SMSP), "smsp"); - descriptions.put(new Integer(IPPort.INFOSEEK), "infoseek"); - descriptions.put(new Integer(IPPort.BNET), "bnet"); - descriptions.put(new Integer(IPPort.SILVERPLATTER), "silverplatter"); - descriptions.put(new Integer(IPPort.ONMUX), "onmux"); - descriptions.put(new Integer(IPPort.HYPER_G), "hyper_g"); - descriptions.put(new Integer(IPPort.ARIEL1), "ariel1"); - descriptions.put(new Integer(IPPort.SMPTE), "smpte"); - descriptions.put(new Integer(IPPort.ARIEL2), "ariel2"); - descriptions.put(new Integer(IPPort.ARIEL3), "ariel3"); - descriptions.put(new Integer(IPPort.OPC_JOB_START), "opc_job_start"); - descriptions.put(new Integer(IPPort.OPC_JOB_TRACK), "opc_job_track"); - descriptions.put(new Integer(IPPort.ICAD_EL), "icad_el"); - descriptions.put(new Integer(IPPort.SMARTSDP), "smartsdp"); - descriptions.put(new Integer(IPPort.SVRLOC), "svrloc"); - descriptions.put(new Integer(IPPort.OCS_CMU), "ocs_cmu"); - descriptions.put(new Integer(IPPort.OCS_AMU), "ocs_amu"); - descriptions.put(new Integer(IPPort.UTMPSD), "utmpsd"); - descriptions.put(new Integer(IPPort.UTMPCD), "utmpcd"); - descriptions.put(new Integer(IPPort.IASD), "iasd"); - descriptions.put(new Integer(IPPort.NNSP), "nnsp"); - descriptions.put(new Integer(IPPort.MOBILEIP_AGENT), "mobileip_agent"); - descriptions.put(new Integer(IPPort.MOBILIP_MN), "mobilip_mn"); - descriptions.put(new Integer(IPPort.DNA_CML), "dna_cml"); - descriptions.put(new Integer(IPPort.COMSCM), "comscm"); - descriptions.put(new Integer(IPPort.DSFGW), "dsfgw"); - descriptions.put(new Integer(IPPort.DASP), "dasp"); - descriptions.put(new Integer(IPPort.SGCP), "sgcp"); - descriptions.put(new Integer(IPPort.DECVMS_SYSMGT), "decvms_sysmgt"); - descriptions.put(new Integer(IPPort.CVC_HOSTD), "cvc_hostd"); - descriptions.put(new Integer(IPPort.HTTPS), "https"); - descriptions.put(new Integer(IPPort.SNPP), "snpp"); - descriptions.put(new Integer(IPPort.MICROSOFT_DS), "microsoft_ds"); - descriptions.put(new Integer(IPPort.DDM_RDB), "ddm_rdb"); - descriptions.put(new Integer(IPPort.DDM_DFM), "ddm_dfm"); - descriptions.put(new Integer(IPPort.DDM_SSL), "ddm_ssl"); - descriptions.put(new Integer(IPPort.AS_SERVERMAP), "as_servermap"); - descriptions.put(new Integer(IPPort.TSERVER), "tserver"); - descriptions.put(new Integer(IPPort.SFS_SMP_NET), "sfs_smp_net"); - descriptions.put(new Integer(IPPort.SFS_CONFIG), "sfs_config"); - descriptions.put(new Integer(IPPort.CREATIVESERVER), "creativeserver"); - descriptions.put(new Integer(IPPort.CONTENTSERVER), "contentserver"); - descriptions.put(new Integer(IPPort.CREATIVEPARTNR), "creativepartnr"); - descriptions.put(new Integer(IPPort.MACON_TCP), "macon_tcp"); - descriptions.put(new Integer(IPPort.SCOHELP), "scohelp"); - descriptions.put(new Integer(IPPort.APPLEQTC), "appleqtc"); - descriptions.put(new Integer(IPPort.AMPR_RCMD), "ampr_rcmd"); - descriptions.put(new Integer(IPPort.SKRONK), "skronk"); - descriptions.put(new Integer(IPPort.DATASURFSRV), "datasurfsrv"); - descriptions.put(new Integer(IPPort.DATASURFSRVSEC), "datasurfsrvsec"); - descriptions.put(new Integer(IPPort.ALPES), "alpes"); - descriptions.put(new Integer(IPPort.KPASSWD), "kpasswd"); - descriptions.put(new Integer(IPPort.DIGITAL_VRC), "digital_vrc"); - descriptions.put(new Integer(IPPort.MYLEX_MAPD), "mylex_mapd"); - descriptions.put(new Integer(IPPort.PHOTURIS), "photuris"); - descriptions.put(new Integer(IPPort.RCP), "rcp"); - descriptions.put(new Integer(IPPort.SCX_PROXY), "scx_proxy"); - descriptions.put(new Integer(IPPort.MONDEX), "mondex"); - descriptions.put(new Integer(IPPort.LJK_LOGIN), "ljk_login"); - descriptions.put(new Integer(IPPort.HYBRID_POP), "hybrid_pop"); - descriptions.put(new Integer(IPPort.TN_TL_W1), "tn_tl_w1"); - descriptions.put(new Integer(IPPort.TCPNETHASPSRV), "tcpnethaspsrv"); - descriptions.put(new Integer(IPPort.TN_TL_FD1), "tn_tl_fd1"); - descriptions.put(new Integer(IPPort.SS7NS), "ss7ns"); - descriptions.put(new Integer(IPPort.SPSC), "spsc"); - descriptions.put(new Integer(IPPort.IAFSERVER), "iafserver"); - descriptions.put(new Integer(IPPort.IAFDBASE), "iafdbase"); - descriptions.put(new Integer(IPPort.PH), "ph"); - descriptions.put(new Integer(IPPort.BGS_NSI), "bgs_nsi"); - descriptions.put(new Integer(IPPort.ULPNET), "ulpnet"); - descriptions.put(new Integer(IPPort.INTEGRA_SME), "integra_sme"); - descriptions.put(new Integer(IPPort.POWERBURST), "powerburst"); - descriptions.put(new Integer(IPPort.AVIAN), "avian"); - descriptions.put(new Integer(IPPort.SAFT), "saft"); - descriptions.put(new Integer(IPPort.GSS_HTTP), "gss_http"); - descriptions.put(new Integer(IPPort.NEST_PROTOCOL), "nest_protocol"); - descriptions.put(new Integer(IPPort.MICOM_PFS), "micom_pfs"); - descriptions.put(new Integer(IPPort.GO_LOGIN), "go_login"); - descriptions.put(new Integer(IPPort.TICF_1), "ticf_1"); - descriptions.put(new Integer(IPPort.TICF_2), "ticf_2"); - descriptions.put(new Integer(IPPort.POV_RAY), "pov_ray"); - descriptions.put(new Integer(IPPort.INTECOURIER), "intecourier"); - descriptions.put(new Integer(IPPort.PIM_RP_DISC), "pim_rp_disc"); - descriptions.put(new Integer(IPPort.DANTZ), "dantz"); - descriptions.put(new Integer(IPPort.SIAM), "siam"); - descriptions.put(new Integer(IPPort.ISO_ILL), "iso_ill"); - descriptions.put(new Integer(IPPort.ISAKMP), "isakmp"); - descriptions.put(new Integer(IPPort.STMF), "stmf"); - descriptions.put(new Integer(IPPort.ASA_APPL_PROTO), "asa_appl_proto"); - descriptions.put(new Integer(IPPort.INTRINSA), "intrinsa"); - descriptions.put(new Integer(IPPort.CITADEL), "citadel"); - descriptions.put(new Integer(IPPort.MAILBOX_LM), "mailbox_lm"); - descriptions.put(new Integer(IPPort.OHIMSRV), "ohimsrv"); - descriptions.put(new Integer(IPPort.CRS), "crs"); - descriptions.put(new Integer(IPPort.XVTTP), "xvttp"); - descriptions.put(new Integer(IPPort.SNARE), "snare"); - descriptions.put(new Integer(IPPort.FCP), "fcp"); - descriptions.put(new Integer(IPPort.PASSGO), "passgo"); - descriptions.put(new Integer(IPPort.EXEC), "exec"); - descriptions.put(new Integer(IPPort.LOGIN), "login"); - descriptions.put(new Integer(IPPort.SHELL), "shell"); - descriptions.put(new Integer(IPPort.PRINTER), "printer"); - descriptions.put(new Integer(IPPort.VIDEOTEX), "videotex"); - descriptions.put(new Integer(IPPort.TALK), "talk"); - descriptions.put(new Integer(IPPort.NTALK), "ntalk"); - descriptions.put(new Integer(IPPort.UTIME), "utime"); - descriptions.put(new Integer(IPPort.EFS), "efs"); - descriptions.put(new Integer(IPPort.RIPNG), "ripng"); - descriptions.put(new Integer(IPPort.ULP), "ulp"); - descriptions.put(new Integer(IPPort.IBM_DB2), "ibm_db2"); - descriptions.put(new Integer(IPPort.NCP), "ncp"); - descriptions.put(new Integer(IPPort.TIMED), "timed"); - descriptions.put(new Integer(IPPort.TEMPO ), "tempo"); - descriptions.put(new Integer(IPPort.STX), "stx"); - descriptions.put(new Integer(IPPort.CUSTIX), "custix"); - descriptions.put(new Integer(IPPort.IRC_SERV), "irc_serv"); - descriptions.put(new Integer(IPPort.COURIER), "courier"); - descriptions.put(new Integer(IPPort.CONFERENCE), "conference"); - descriptions.put(new Integer(IPPort.NETNEWS), "netnews"); - descriptions.put(new Integer(IPPort.NETWALL ), "netwall"); - descriptions.put(new Integer(IPPort.MM_ADMIN), "mm_admin"); - descriptions.put(new Integer(IPPort.IIOP), "iiop"); - descriptions.put(new Integer(IPPort.OPALIS_RDV), "opalis_rdv"); - descriptions.put(new Integer(IPPort.NMSP), "nmsp"); - descriptions.put(new Integer(IPPort.GDOMAP), "gdomap"); - descriptions.put(new Integer(IPPort.APERTUS_LDP), "apertus_ldp"); - descriptions.put(new Integer(IPPort.UUCP ), "uucp"); - descriptions.put(new Integer(IPPort.UUCP_RLOGIN), "uucp_rlogin"); - descriptions.put(new Integer(IPPort.COMMERCE), "commerce"); - descriptions.put(new Integer(IPPort.KLOGIN), "klogin"); - descriptions.put(new Integer(IPPort.KSHELL), "kshell"); - descriptions.put(new Integer(IPPort.APPLEQTCSRVR), "appleqtcsrvr"); - descriptions.put(new Integer(IPPort.DHCPV6_CLIENT), "dhcpv6_client"); - descriptions.put(new Integer(IPPort.DHCPV6_SERVER), "dhcpv6_server"); - descriptions.put(new Integer(IPPort.AFPOVERTCP), "afpovertcp"); - descriptions.put(new Integer(IPPort.IDFP), "idfp"); - descriptions.put(new Integer(IPPort.NEW_RWHO), "new_rwho"); - descriptions.put(new Integer(IPPort.CYBERCASH), "cybercash"); - descriptions.put(new Integer(IPPort.DEVICESHARE), "deviceshare"); - descriptions.put(new Integer(IPPort.PIRP), "pirp"); - descriptions.put(new Integer(IPPort.RTSP), "rtsp"); - descriptions.put(new Integer(IPPort.DSF), "dsf"); - descriptions.put(new Integer(IPPort.REMOTEFS), "remotefs"); - descriptions.put(new Integer(IPPort.OPENVMS_SYSIPC), "openvms_sysipc"); - descriptions.put(new Integer(IPPort.SDNSKMP), "sdnskmp"); - descriptions.put(new Integer(IPPort.TEEDTAP), "teedtap"); - descriptions.put(new Integer(IPPort.RMONITOR), "rmonitor"); - descriptions.put(new Integer(IPPort.MONITOR), "monitor"); - descriptions.put(new Integer(IPPort.CHSHELL), "chshell"); - descriptions.put(new Integer(IPPort.NNTPS), "nntps"); - descriptions.put(new Integer(IPPort.N9PFS), "9pfs"); - descriptions.put(new Integer(IPPort.WHOAMI), "whoami"); - descriptions.put(new Integer(IPPort.STREETTALK), "streettalk"); - descriptions.put(new Integer(IPPort.BANYAN_RPC), "banyan_rpc"); - descriptions.put(new Integer(IPPort.MS_SHUTTLE), "ms_shuttle"); - descriptions.put(new Integer(IPPort.MS_ROME), "ms_rome"); - descriptions.put(new Integer(IPPort.METER), "meter"); - descriptions.put(new Integer(IPPort.METER2), "meter2"); - descriptions.put(new Integer(IPPort.SONAR), "sonar"); - descriptions.put(new Integer(IPPort.BANYAN_VIP), "banyan_vip"); - descriptions.put(new Integer(IPPort.FTP_AGENT), "ftp_agent"); - descriptions.put(new Integer(IPPort.VEMMI), "vemmi"); - descriptions.put(new Integer(IPPort.IPCD), "ipcd"); - descriptions.put(new Integer(IPPort.VNAS), "vnas"); - descriptions.put(new Integer(IPPort.IPDD), "ipdd"); - descriptions.put(new Integer(IPPort.DECBSRV), "decbsrv"); - descriptions.put(new Integer(IPPort.SNTP_HEARTBEAT), "sntp_heartbeat"); - descriptions.put(new Integer(IPPort.BDP), "bdp"); - descriptions.put(new Integer(IPPort.SCC_SECURITY), "scc_security"); - descriptions.put(new Integer(IPPort.PHILIPS_VC), "philips_vc"); - descriptions.put(new Integer(IPPort.KEYSERVER), "keyserver"); - descriptions.put(new Integer(IPPort.IMAP4_SSL), "imap4_ssl"); - descriptions.put(new Integer(IPPort.PASSWORD_CHG), "password_chg"); - descriptions.put(new Integer(IPPort.SUBMISSION), "submission"); - descriptions.put(new Integer(IPPort.CAL), "cal"); - descriptions.put(new Integer(IPPort.EYELINK), "eyelink"); - descriptions.put(new Integer(IPPort.TNS_CML), "tns_cml"); - descriptions.put(new Integer(IPPort.HTTP_ALT), "http_alt"); - descriptions.put(new Integer(IPPort.EUDORA_SET), "eudora_set"); - descriptions.put(new Integer(IPPort.HTTP_RPC_EPMAP), "http_rpc_epmap"); - descriptions.put(new Integer(IPPort.TPIP), "tpip"); - descriptions.put(new Integer(IPPort.CAB_PROTOCOL), "cab_protocol"); - descriptions.put(new Integer(IPPort.SMSD), "smsd"); - descriptions.put(new Integer(IPPort.PTCNAMESERVICE), "ptcnameservice"); - descriptions.put(new Integer(IPPort.SCO_WEBSRVRMG3), "sco_websrvrmg3"); - descriptions.put(new Integer(IPPort.ACP), "acp"); - descriptions.put(new Integer(IPPort.IPCSERVER), "ipcserver"); - descriptions.put(new Integer(IPPort.URM), "urm"); - descriptions.put(new Integer(IPPort.NQS), "nqs"); - descriptions.put(new Integer(IPPort.SIFT_UFT), "sift_uft"); - descriptions.put(new Integer(IPPort.NPMP_TRAP), "npmp_trap"); - descriptions.put(new Integer(IPPort.NPMP_LOCAL), "npmp_local"); - descriptions.put(new Integer(IPPort.NPMP_GUI), "npmp_gui"); - descriptions.put(new Integer(IPPort.HMMP_IND), "hmmp_ind"); - descriptions.put(new Integer(IPPort.HMMP_OP), "hmmp_op"); - descriptions.put(new Integer(IPPort.SSHELL), "sshell"); - descriptions.put(new Integer(IPPort.SCO_INETMGR), "sco_inetmgr"); - descriptions.put(new Integer(IPPort.SCO_SYSMGR), "sco_sysmgr"); - descriptions.put(new Integer(IPPort.SCO_DTMGR), "sco_dtmgr"); - descriptions.put(new Integer(IPPort.DEI_ICDA), "dei_icda"); - descriptions.put(new Integer(IPPort.DIGITAL_EVM), "digital_evm"); - descriptions.put(new Integer(IPPort.SCO_WEBSRVRMGR), "sco_websrvrmgr"); - descriptions.put(new Integer(IPPort.ESCP_IP), "escp_ip"); - descriptions.put(new Integer(IPPort.COLLABORATOR), "collaborator"); - descriptions.put(new Integer(IPPort.AUX_BUS_SHUNT), "aux_bus_shunt"); - descriptions.put(new Integer(IPPort.CRYPTOADMIN), "cryptoadmin"); - descriptions.put(new Integer(IPPort.DEC_DLM), "dec_dlm"); - descriptions.put(new Integer(IPPort.ASIA), "asia"); - descriptions.put(new Integer(IPPort.PASSGO_TIVOLI), "passgo_tivoli"); - descriptions.put(new Integer(IPPort.QMQP), "qmqp"); - descriptions.put(new Integer(IPPort.AMP3_3COM), "3com_amp3"); - descriptions.put(new Integer(IPPort.RDA), "rda"); - descriptions.put(new Integer(IPPort.IPP), "ipp"); - descriptions.put(new Integer(IPPort.BMPP), "bmpp"); - descriptions.put(new Integer(IPPort.SERVSTAT), "servstat"); - descriptions.put(new Integer(IPPort.GINAD), "ginad"); - descriptions.put(new Integer(IPPort.RLZDBASE), "rlzdbase"); - descriptions.put(new Integer(IPPort.LDAPS), "ldaps"); - descriptions.put(new Integer(IPPort.LANSERVER), "lanserver"); - descriptions.put(new Integer(IPPort.MCNS_SEC), "mcns_sec"); - descriptions.put(new Integer(IPPort.MSDP), "msdp"); - descriptions.put(new Integer(IPPort.ENTRUST_SPS), "entrust_sps"); - descriptions.put(new Integer(IPPort.REPCMD), "repcmd"); - descriptions.put(new Integer(IPPort.ESRO_EMSDP), "esro_emsdp"); - descriptions.put(new Integer(IPPort.SANITY), "sanity"); - descriptions.put(new Integer(IPPort.DWR), "dwr"); - descriptions.put(new Integer(IPPort.PSSC), "pssc"); - descriptions.put(new Integer(IPPort.LDP), "ldp"); - descriptions.put(new Integer(IPPort.DHCP_FAILOVER), "dhcp_failover"); - descriptions.put(new Integer(IPPort.RRP), "rrp"); - descriptions.put(new Integer(IPPort.AMINET), "aminet"); - descriptions.put(new Integer(IPPort.OBEX), "obex"); - descriptions.put(new Integer(IPPort.IEEE_MMS), "ieee_mms"); - descriptions.put(new Integer(IPPort.HELLO_PORT), "hello_port"); - descriptions.put(new Integer(IPPort.REPSCMD ), "repscmd"); - descriptions.put(new Integer(IPPort.AODV), "aodv"); - descriptions.put(new Integer(IPPort.TINC), "tinc"); - descriptions.put(new Integer(IPPort.SPMP), "spmp"); - descriptions.put(new Integer(IPPort.RMC), "rmc"); - descriptions.put(new Integer(IPPort.TENFOLD), "tenfold"); - descriptions.put(new Integer(IPPort.URL_RENDEZVOUS), "url_rendezvous"); - descriptions.put(new Integer(IPPort.MAC_SRVR_ADMIN), "mac_srvr_admin"); - descriptions.put(new Integer(IPPort.HAP), "hap"); - descriptions.put(new Integer(IPPort.PFTP), "pftp"); - descriptions.put(new Integer(IPPort.PURENOISE), "purenoise"); - descriptions.put(new Integer(IPPort.SECURE_AUX_BUS), "secure_aux_bus"); - descriptions.put(new Integer(IPPort.SUN_DR), "sun_dr"); - descriptions.put(new Integer(IPPort.MDQS), "mdqs"); - descriptions.put(new Integer(IPPort.DOOM), "doom"); - descriptions.put(new Integer(IPPort.DISCLOSE), "disclose"); - descriptions.put(new Integer(IPPort.MECOMM), "mecomm"); - descriptions.put(new Integer(IPPort.MEREGISTER), "meregister"); - descriptions.put(new Integer(IPPort.VACDSM_SWS), "vacdsm_sws"); - descriptions.put(new Integer(IPPort.VACDSM_APP), "vacdsm_app"); - descriptions.put(new Integer(IPPort.VPPS_QUA), "vpps_qua"); - descriptions.put(new Integer(IPPort.CIMPLEX), "cimplex"); - descriptions.put(new Integer(IPPort.ACAP), "acap"); - descriptions.put(new Integer(IPPort.DCTP), "dctp"); - descriptions.put(new Integer(IPPort.VPPS_VIA), "vpps_via"); - descriptions.put(new Integer(IPPort.VPP), "vpp"); - descriptions.put(new Integer(IPPort.GGF_NCP), "ggf_ncp"); - descriptions.put(new Integer(IPPort.MRM), "mrm"); - descriptions.put(new Integer(IPPort.ENTRUST_AAAS), "entrust_aaas"); - descriptions.put(new Integer(IPPort.ENTRUST_AAMS), "entrust_aams"); - descriptions.put(new Integer(IPPort.XFR), "xfr"); - descriptions.put(new Integer(IPPort.CORBA_IIOP), "corba_iiop"); - descriptions.put(new Integer(IPPort.CORBA_IIOP_SSL), "corba_iiop_ssl"); - descriptions.put(new Integer(IPPort.MDC_PORTMAPPER), "mdc_portmapper"); - descriptions.put(new Integer(IPPort.HCP_WISMAR), "hcp_wismar"); - descriptions.put(new Integer(IPPort.ASIPREGISTRY), "asipregistry"); - descriptions.put(new Integer(IPPort.REALM_RUSD), "realm_rusd"); - descriptions.put(new Integer(IPPort.NMAP), "nmap"); - descriptions.put(new Integer(IPPort.VATP), "vatp"); - descriptions.put(new Integer(IPPort.MSEXCH_ROUTING), "msexch_routing"); - descriptions.put(new Integer(IPPort.HYPERWAVE_ISP), "hyperwave_isp"); - descriptions.put(new Integer(IPPort.CONNENDP), "connendp"); - descriptions.put(new Integer(IPPort.HA_CLUSTER), "ha_cluster"); - descriptions.put(new Integer(IPPort.IEEE_MMS_SSL), "ieee_mms_ssl"); - descriptions.put(new Integer(IPPort.RUSHD), "rushd"); - descriptions.put(new Integer(IPPort.UUIDGEN), "uuidgen"); - descriptions.put(new Integer(IPPort.OLSR), "olsr"); - descriptions.put(new Integer(IPPort.ACCESSNETWORK), "accessnetwork"); - descriptions.put(new Integer(IPPort.ELCSD), "elcsd"); - descriptions.put(new Integer(IPPort.AGENTX), "agentx"); - descriptions.put(new Integer(IPPort.SILC), "silc"); - descriptions.put(new Integer(IPPort.BORLAND_DSJ), "borland_dsj"); - descriptions.put(new Integer(IPPort.ENTRUST_KMSH), "entrust_kmsh"); - descriptions.put(new Integer(IPPort.ENTRUST_ASH), "entrust_ash"); - descriptions.put(new Integer(IPPort.CISCO_TDP), "cisco_tdp"); - descriptions.put(new Integer(IPPort.NETVIEWDM1), "netviewdm1"); - descriptions.put(new Integer(IPPort.NETVIEWDM2), "netviewdm2"); - descriptions.put(new Integer(IPPort.NETVIEWDM3), "netviewdm3"); - descriptions.put(new Integer(IPPort.NETGW), "netgw"); - descriptions.put(new Integer(IPPort.NETRCS), "netrcs"); - descriptions.put(new Integer(IPPort.FLEXLM), "flexlm"); - descriptions.put(new Integer(IPPort.FUJITSU_DEV), "fujitsu_dev"); - descriptions.put(new Integer(IPPort.RIS_CM), "ris_cm"); - descriptions.put(new Integer(IPPort.KERBEROS_ADM), "kerberos_adm"); - descriptions.put(new Integer(IPPort.RFILE), "rfile"); - descriptions.put(new Integer(IPPort.PUMP), "pump"); - descriptions.put(new Integer(IPPort.QRH), "qrh"); - descriptions.put(new Integer(IPPort.RRH), "rrh"); - descriptions.put(new Integer(IPPort.TELL), "tell"); - descriptions.put(new Integer(IPPort.NLOGIN), "nlogin"); - descriptions.put(new Integer(IPPort.CON), "con"); - descriptions.put(new Integer(IPPort.NS), "ns"); - descriptions.put(new Integer(IPPort.RXE), "rxe"); - descriptions.put(new Integer(IPPort.QUOTAD), "quotad"); - descriptions.put(new Integer(IPPort.CYCLESERV), "cycleserv"); - descriptions.put(new Integer(IPPort.OMSERV), "omserv"); - descriptions.put(new Integer(IPPort.WEBSTER), "webster"); - descriptions.put(new Integer(IPPort.PHONEBOOK), "phonebook"); - descriptions.put(new Integer(IPPort.VID), "vid"); - descriptions.put(new Integer(IPPort.CADLOCK), "cadlock"); - descriptions.put(new Integer(IPPort.RTIP), "rtip"); - descriptions.put(new Integer(IPPort.CYCLESERV2), "cycleserv2"); - descriptions.put(new Integer(IPPort.SUBMIT), "submit"); - descriptions.put(new Integer(IPPort.RPASSWD), "rpasswd"); - descriptions.put(new Integer(IPPort.ENTOMB), "entomb"); - descriptions.put(new Integer(IPPort.WPAGES), "wpages"); - descriptions.put(new Integer(IPPort.WPGS), "wpgs"); - descriptions.put(new Integer(IPPort.QSC), "qsc"); - descriptions.put(new Integer(IPPort.MDBS_DAEMON), "mdbs_daemon"); - descriptions.put(new Integer(IPPort.ITM_MCELL_S), "itm_mcell_s"); - descriptions.put(new Integer(IPPort.PKIX_3_CA_RA), "pkix_3_ca_ra"); - descriptions.put(new Integer(IPPort.DHCP_FAILOVER2), "dhcp_failover2"); - descriptions.put(new Integer(IPPort.RSYNC), "rsync"); - descriptions.put(new Integer(IPPort.ICLCNET_LOCATE), "iclcnet_locate"); - descriptions.put(new Integer(IPPort.ICLCNET_SVINFO), "iclcnet_svinfo"); - descriptions.put(new Integer(IPPort.ACCESSBUILDER), "accessbuilder"); - descriptions.put(new Integer(IPPort.CDDBP), "cddbp"); - descriptions.put(new Integer(IPPort.OMGINITIALREFS), "omginitialrefs"); - descriptions.put(new Integer(IPPort.SMPNAMERES), "smpnameres"); - descriptions.put(new Integer(IPPort.IDEAFARM_CHAT), "ideafarm_chat"); - descriptions.put(new Integer(IPPort.IDEAFARM_CATCH), "ideafarm_catch"); - descriptions.put(new Integer(IPPort.XACT_BACKUP), "xact_backup"); - descriptions.put(new Integer(IPPort.FTPS_DATA), "ftps_data"); - descriptions.put(new Integer(IPPort.FTPS), "ftps"); - descriptions.put(new Integer(IPPort.NAS), "nas"); - descriptions.put(new Integer(IPPort.TELNETS), "telnets"); - descriptions.put(new Integer(IPPort.IMAPS), "imaps"); - descriptions.put(new Integer(IPPort.IRCS), "ircs"); - descriptions.put(new Integer(IPPort.POP3S), "pop3s"); - descriptions.put(new Integer(IPPort.VSINET), "vsinet"); - descriptions.put(new Integer(IPPort.MAITRD), "maitrd"); - descriptions.put(new Integer(IPPort.BUSBOY), "busboy"); - descriptions.put(new Integer(IPPort.GARCON), "garcon"); - descriptions.put(new Integer(IPPort.PUPROUTER), "puprouter"); - descriptions.put(new Integer(IPPort.CADLOCK2), "cadlock2"); - descriptions.put(new Integer(IPPort.SURF), "surf"); - descriptions.put(new Integer(IPPort.RESERVED_1023), "1023_RESERVED"); - descriptions.put(new Integer(IPPort.RESERVED_1024), "1024_RESERVED"); - descriptions.put(new Integer(IPPort.SOCKS), "socks"); - descriptions.put(new Integer(IPPort.HSRP), "hot standby router"); - descriptions.put(new Integer(IPPort.AISES), "aises"); - descriptions.put(new Integer(IPPort.CVS), "concurrent version system"); - descriptions.put(new Integer(IPPort.X11), "X-Windows"); - - // todo: table is incomplete - } - - /** - * 'Human-readable' TCP port names. - */ - //jdk1.5: private static HashMap names = new HashMap(); - private static HashMap names = new HashMap(); - static { - names.put(new Integer(IPPort.NONE), "."); - names.put(new Integer(IPPort.RESERVED_0), "0r"); - names.put(new Integer(IPPort.TCPMUX), "tcpmux"); - names.put(new Integer(IPPort.COMPRESSNET2), "compressnet2"); - names.put(new Integer(IPPort.COMPRESSNET), "compressnet"); - names.put(new Integer(IPPort.RJE), "rje"); - names.put(new Integer(IPPort.ECHO), "echo"); - names.put(new Integer(IPPort.DISCARD), "discard"); - names.put(new Integer(IPPort.SYSTAT), "systat"); - names.put(new Integer(IPPort.DAYTIME), "daytime"); - names.put(new Integer(IPPort.QOTD), "qotd"); - names.put(new Integer(IPPort.MSP), "msp"); - names.put(new Integer(IPPort.CHARGEN), "chargen"); - names.put(new Integer(IPPort.FTP_DATA), "ftp_data"); - names.put(new Integer(IPPort.FTP), "ftp"); - names.put(new Integer(IPPort.SSH), "ssh"); - names.put(new Integer(IPPort.TELNET), "telnet"); - names.put(new Integer(IPPort.PRIV_MAIL), "priv_mail"); - names.put(new Integer(IPPort.SMTP), "smtp"); - names.put(new Integer(IPPort.NSW_FE), "nsw_fe"); - names.put(new Integer(IPPort.MSG_ICP), "msg_icp"); - names.put(new Integer(IPPort.MSG_AUTH), "msg_auth"); - names.put(new Integer(IPPort.DSP), "dsp"); - names.put(new Integer(IPPort.PRIV_PRINT), "priv_print"); - names.put(new Integer(IPPort.TIME), "time"); - names.put(new Integer(IPPort.RAP), "rap"); - names.put(new Integer(IPPort.RLP), "rlp"); - names.put(new Integer(IPPort.GRAPHICS), "graphics"); - names.put(new Integer(IPPort.NAME), "name"); - names.put(new Integer(IPPort.NAMESERVER), "nameserver"); - names.put(new Integer(IPPort.NICNAME), "nicname"); - names.put(new Integer(IPPort.MPM_FLAGS), "mpm_flags"); - names.put(new Integer(IPPort.MPM), "mpm"); - names.put(new Integer(IPPort.MPM_SND), "mpm_snd"); - names.put(new Integer(IPPort.NI_FTP), "ni_ftp"); - names.put(new Integer(IPPort.AUDITD), "auditd"); - names.put(new Integer(IPPort.TACACS), "tacacs"); - names.put(new Integer(IPPort.RE_MAIL_CK), "re_mail_ck"); - names.put(new Integer(IPPort.LA_MAINT), "la_maint"); - names.put(new Integer(IPPort.XNS_TIME), "xns_time"); - names.put(new Integer(IPPort.DOMAIN), "domain"); - names.put(new Integer(IPPort.XNS_CH), "xns_ch"); - names.put(new Integer(IPPort.ISI_GL), "isi_gl"); - names.put(new Integer(IPPort.XNS_AUTH), "xns_auth"); - names.put(new Integer(IPPort.PRIV_TERMINAL), "priv_terminal"); - names.put(new Integer(IPPort.XNS_MAIL), "xns_mail"); - names.put(new Integer(IPPort.PRIV_FILE), "priv_file"); - names.put(new Integer(IPPort.NI_MAIL), "ni_mail"); - names.put(new Integer(IPPort.ACAS), "acas"); - names.put(new Integer(IPPort.WHOIS), "whois++"); - names.put(new Integer(IPPort.COVIA), "covia"); - names.put(new Integer(IPPort.TACACS_DS), "tacacs_ds"); - names.put(new Integer(IPPort.SQLSNET), "sql*net"); - names.put(new Integer(IPPort.BOOTPS), "bootps"); - names.put(new Integer(IPPort.BOOTPC), "bootpc"); - names.put(new Integer(IPPort.TFTP), "tftp"); - names.put(new Integer(IPPort.GOPHER), "gopher"); - names.put(new Integer(IPPort.NETRJS_1), "netrjs_1"); - names.put(new Integer(IPPort.NETRJS_2), "netrjs_2"); - names.put(new Integer(IPPort.NETRJS_3), "netrjs_3"); - names.put(new Integer(IPPort.NETRJS_4), "netrjs_4"); - names.put(new Integer(IPPort.PRIV_DIALOUT), "priv_dialout"); - names.put(new Integer(IPPort.DEOS), "deos"); - names.put(new Integer(IPPort.PRIV_RJE), "priv_rje"); - names.put(new Integer(IPPort.VETTCP), "vettcp"); - names.put(new Integer(IPPort.FINGER), "finger"); - names.put(new Integer(IPPort.HTTP), "http"); - names.put(new Integer(IPPort.WWW), "www"); - names.put(new Integer(IPPort.HOSTS2_NS), "hosts2_ns"); - names.put(new Integer(IPPort.XFER), "xfer"); - names.put(new Integer(IPPort.MIT_ML_DEV), "mit_ml_dev"); - names.put(new Integer(IPPort.CTF), "ctf"); - names.put(new Integer(IPPort.MIT_ML_DEV2), "mit_ml_dev"); - names.put(new Integer(IPPort.MFCOBOL), "mfcobol"); - names.put(new Integer(IPPort.PRIV_TERMLINK), "priv_termlink"); - names.put(new Integer(IPPort.KERBEROS), "kerberos"); - names.put(new Integer(IPPort.SU_MIT_TG), "su_mit_tg"); - names.put(new Integer(IPPort.DNSIX), "dnsix"); - names.put(new Integer(IPPort.MIT_DOV), "mit_dov"); - names.put(new Integer(IPPort.NPP), "npp"); - names.put(new Integer(IPPort.DCP), "dcp"); - names.put(new Integer(IPPort.OBJCALL), "objcall"); - names.put(new Integer(IPPort.SUPDUP), "supdup"); - names.put(new Integer(IPPort.DIXIE), "dixie"); - names.put(new Integer(IPPort.SWIFT_RVF), "swift_rvf"); - names.put(new Integer(IPPort.TACNEWS), "tacnews"); - names.put(new Integer(IPPort.METAGRAM), "metagram"); - names.put(new Integer(IPPort.NEWACCT), "newacct"); - names.put(new Integer(IPPort.HOSTNAME), "hostname"); - names.put(new Integer(IPPort.ISO_TSAP), "iso_tsap"); - names.put(new Integer(IPPort.GPPITNP), "gppitnp"); - names.put(new Integer(IPPort.ACR_NEMA), "acr_nema"); - names.put(new Integer(IPPort.CSO), "cso"); - names.put(new Integer(IPPort.CSNET_NS), "csnet_ns"); - names.put(new Integer(IPPort.TSMUX_3COM), "3com_tsmux"); - names.put(new Integer(IPPort.RTELNET), "rtelnet"); - names.put(new Integer(IPPort.SNAGAS), "snagas"); - names.put(new Integer(IPPort.POP2), "pop2"); - names.put(new Integer(IPPort.POP3), "pop3"); - names.put(new Integer(IPPort.SUNRPC), "sunrpc"); - names.put(new Integer(IPPort.MCIDAS), "mcidas"); - names.put(new Integer(IPPort.IDENT), "ident"); - names.put(new Integer(IPPort.AUTH), "auth"); - names.put(new Integer(IPPort.AUDIONEWS), "audionews"); - names.put(new Integer(IPPort.SFTP), "sftp"); - names.put(new Integer(IPPort.ANSANOTIFY), "ansanotify"); - names.put(new Integer(IPPort.UUCP_PATH), "uucp_path"); - names.put(new Integer(IPPort.SQLSERV), "sqlserv"); - names.put(new Integer(IPPort.NNTP), "nntp"); - names.put(new Integer(IPPort.CFDPTKT), "cfdptkt"); - names.put(new Integer(IPPort.ERPC), "erpc"); - names.put(new Integer(IPPort.SMAKYNET), "smakynet"); - names.put(new Integer(IPPort.NTP), "ntp"); - names.put(new Integer(IPPort.ANSATRADER), "ansatrader"); - names.put(new Integer(IPPort.LOCUS_MAP), "locus_map"); - names.put(new Integer(IPPort.NXEDIT), "nxedit"); - names.put(new Integer(IPPort.LOCUS_CON), "locus_con"); - names.put(new Integer(IPPort.GSS_XLICEN), "gss_xlicen"); - names.put(new Integer(IPPort.PWDGEN), "pwdgen"); - names.put(new Integer(IPPort.CISCO_FNA), "cisco_fna"); - names.put(new Integer(IPPort.CISCO_TNA), "cisco_tna"); - names.put(new Integer(IPPort.CISCO_SYS), "cisco_sys"); - names.put(new Integer(IPPort.STATSRV), "statsrv"); - names.put(new Integer(IPPort.INGRES_NET), "ingres_net"); - names.put(new Integer(IPPort.EPMAP), "epmap"); - names.put(new Integer(IPPort.PROFILE), "profile"); - names.put(new Integer(IPPort.NETBIOS_NS), "netbios_ns"); - names.put(new Integer(IPPort.NETBIOS_DGM), "netbios_dgm"); - names.put(new Integer(IPPort.NETBIOS_SSN), "netbios_ssn"); - names.put(new Integer(IPPort.EMFIS_DATA), "emfis_data"); - names.put(new Integer(IPPort.EMFIS_CNTL), "emfis_cntl"); - names.put(new Integer(IPPort.BL_IDM), "bl_idm"); - names.put(new Integer(IPPort.IMAP), "imap"); - names.put(new Integer(IPPort.UMA), "uma"); - names.put(new Integer(IPPort.UAAC), "uaac"); - names.put(new Integer(IPPort.ISO_TP0), "iso_tp0"); - names.put(new Integer(IPPort.ISO_IP), "iso_ip"); - names.put(new Integer(IPPort.JARGON), "jargon"); - names.put(new Integer(IPPort.AED_512), "aed_512"); - names.put(new Integer(IPPort.SQL_NET), "sql_net"); - names.put(new Integer(IPPort.HEMS), "hems"); - names.put(new Integer(IPPort.BFTP), "bftp"); - names.put(new Integer(IPPort.SGMP), "sgmp"); - names.put(new Integer(IPPort.NETSC_PROD), "netsc_prod"); - names.put(new Integer(IPPort.NETSC_DEV), "netsc_dev"); - names.put(new Integer(IPPort.SQLSRV), "sqlsrv"); - names.put(new Integer(IPPort.KNET_CMP), "knet_cmp"); - names.put(new Integer(IPPort.PCMAIL_SRV), "pcmail_srv"); - names.put(new Integer(IPPort.NSS_ROUTING), "nss_routing"); - names.put(new Integer(IPPort.SGMP_TRAPS), "sgmp_traps"); - names.put(new Integer(IPPort.SNMP), "snmp"); - names.put(new Integer(IPPort.SNMPTRAP), "snmptrap"); - names.put(new Integer(IPPort.CMIP_MAN), "cmip_man"); - names.put(new Integer(IPPort.CMIP_AGENT), "cmip_agent"); - names.put(new Integer(IPPort.XNS_COURIER), "xns_courier"); - names.put(new Integer(IPPort.S_NET), "s_net"); - names.put(new Integer(IPPort.NAMP), "namp"); - names.put(new Integer(IPPort.RSVD), "rsvd"); - names.put(new Integer(IPPort.SEND), "send"); - names.put(new Integer(IPPort.PRINT_SRV), "print_srv"); - names.put(new Integer(IPPort.MULTIPLEX), "multiplex"); - names.put(new Integer(IPPort.CL1), "cl1"); - names.put(new Integer(IPPort.XYPLEX_MUX), "xyplex_mux"); - names.put(new Integer(IPPort.MAILQ), "mailq"); - names.put(new Integer(IPPort.VMNET), "vmnet"); - names.put(new Integer(IPPort.GENRAD_MUX), "genrad_mux"); - names.put(new Integer(IPPort.XDMCP), "xdmcp"); - names.put(new Integer(IPPort.NEXTSTEP), "nextstep"); - names.put(new Integer(IPPort.BGP), "bgp"); - names.put(new Integer(IPPort.RIS), "ris"); - names.put(new Integer(IPPort.UNIFY), "unify"); - names.put(new Integer(IPPort.AUDIT), "audit"); - names.put(new Integer(IPPort.OCBINDER), "ocbinder"); - names.put(new Integer(IPPort.OCSERVER), "ocserver"); - names.put(new Integer(IPPort.REMOTE_KIS), "remote_kis"); - names.put(new Integer(IPPort.KIS), "kis"); - names.put(new Integer(IPPort.ACI), "aci"); - names.put(new Integer(IPPort.MUMPS), "mumps"); - names.put(new Integer(IPPort.QFT), "qft"); - names.put(new Integer(IPPort.GACP), "gacp"); - names.put(new Integer(IPPort.PROSPERO), "prospero"); - names.put(new Integer(IPPort.OSU_NMS), "osu_nms"); - names.put(new Integer(IPPort.SRMP), "srmp"); - names.put(new Integer(IPPort.IRC), "irc"); - names.put(new Integer(IPPort.DN6_NLM_AUD), "dn6_nlm_aud"); - names.put(new Integer(IPPort.DN6_SMM_RED), "dn6_smm_red"); - names.put(new Integer(IPPort.DLS), "dls"); - names.put(new Integer(IPPort.DLS_MON), "dls_mon"); - names.put(new Integer(IPPort.SMUX), "smux"); - names.put(new Integer(IPPort.SRC), "src"); - names.put(new Integer(IPPort.AT_RTMP), "at_rtmp"); - names.put(new Integer(IPPort.AT_NBP), "at_nbp"); - names.put(new Integer(IPPort.AT_3), "at_3"); - names.put(new Integer(IPPort.AT_ECHO), "at_echo"); - names.put(new Integer(IPPort.AT_5), "at_5"); - names.put(new Integer(IPPort.AT_ZIS), "at_zis"); - names.put(new Integer(IPPort.AT_7), "at_7"); - names.put(new Integer(IPPort.AT_8), "at_8"); - names.put(new Integer(IPPort.QMTP), "qmtp"); - names.put(new Integer(IPPort.Z39_50), "z39.50"); - names.put(new Integer(IPPort.N914C), "914c_g"); - names.put(new Integer(IPPort.ANET), "anet"); - names.put(new Integer(IPPort.IPX), "ipx"); - names.put(new Integer(IPPort.VMPWSCS), "vmpwscs"); - names.put(new Integer(IPPort.SOFTPC), "softpc"); - names.put(new Integer(IPPort.CAILIC), "CAIlic"); - names.put(new Integer(IPPort.DBASE), "dbase"); - names.put(new Integer(IPPort.MPP), "mpp"); - names.put(new Integer(IPPort.UARPS), "uarps"); - names.put(new Integer(IPPort.IMAP3), "imap3"); - names.put(new Integer(IPPort.FLN_SPX), "fln_spx"); - names.put(new Integer(IPPort.RSH_SPX), "rsh_spx"); - names.put(new Integer(IPPort.CDC), "cdc"); - names.put(new Integer(IPPort.MASQDIALER), "masqdialer"); - names.put(new Integer(IPPort.DIRECT), "direct"); - names.put(new Integer(IPPort.SUR_MEAS), "sur_meas"); - names.put(new Integer(IPPort.INBUSINESS), "inbusiness"); - names.put(new Integer(IPPort.LINK), "link"); - names.put(new Integer(IPPort.DSP3270), "dsp3270"); - names.put(new Integer(IPPort.SUBNTBCST_TFTP), "subntbcst_tftp"); - names.put(new Integer(IPPort.BHFHS), "bhfhs"); - names.put(new Integer(IPPort.RAP2), "rap2"); - names.put(new Integer(IPPort.SET), "set"); - names.put(new Integer(IPPort.YAK_CHAT), "yak_chat"); - names.put(new Integer(IPPort.ESRO_GEN), "esro_gen"); - names.put(new Integer(IPPort.OPENPORT), "openport"); - names.put(new Integer(IPPort.NSIIOPS), "nsiiops"); - names.put(new Integer(IPPort.ARCISDMS), "arcisdms"); - names.put(new Integer(IPPort.HDAP), "hdap"); - names.put(new Integer(IPPort.BGMP), "bgmp"); - names.put(new Integer(IPPort.X_BONE_CTL), "x_bone_ctl"); - names.put(new Integer(IPPort.SST), "sst"); - names.put(new Integer(IPPort.TD_SERVICE), "td_service"); - names.put(new Integer(IPPort.TD_REPLICA), "td_replica"); - names.put(new Integer(IPPort.HTTP_MGMT), "http_mgmt"); - names.put(new Integer(IPPort.PERSONAL_LINK), "personal_link"); - names.put(new Integer(IPPort.CABLEPORT_AX), "cableport_ax"); - names.put(new Integer(IPPort.RESCAP), "rescap"); - names.put(new Integer(IPPort.CORERJD), "corerjd"); - names.put(new Integer(IPPort.FXP_1), "fxp_1"); - names.put(new Integer(IPPort.K_BLOCK), "k_block"); - names.put(new Integer(IPPort.NOVASTORBAKCUP), "novastorbakcup"); - names.put(new Integer(IPPort.ENTRUSTTIME), "entrusttime"); - names.put(new Integer(IPPort.BHMDS), "bhmds"); - names.put(new Integer(IPPort.ASIP_WEBADMIN), "asip_webadmin"); - names.put(new Integer(IPPort.VSLMP), "vslmp"); - names.put(new Integer(IPPort.MAGENTA_LOGIC), "magenta_logic"); - names.put(new Integer(IPPort.OPALIS_ROBOT), "opalis_robot"); - names.put(new Integer(IPPort.DPSI), "dpsi"); - names.put(new Integer(IPPort.DECAUTH), "decauth"); - names.put(new Integer(IPPort.ZANNET), "zannet"); - names.put(new Integer(IPPort.PKIX_TIMESTAMP), "pkix_timestamp"); - names.put(new Integer(IPPort.PTP_EVENT), "ptp_event"); - names.put(new Integer(IPPort.PTP_GENERAL), "ptp_general"); - names.put(new Integer(IPPort.PIP), "pip"); - names.put(new Integer(IPPort.RTSPS), "rtsps"); - names.put(new Integer(IPPort.TEXAR), "texar"); - names.put(new Integer(IPPort.PDAP), "pdap"); - names.put(new Integer(IPPort.PAWSERV), "pawserv"); - names.put(new Integer(IPPort.ZSERV), "zserv"); - names.put(new Integer(IPPort.FATSERV), "fatserv"); - names.put(new Integer(IPPort.CSI_SGWP), "csi_sgwp"); - names.put(new Integer(IPPort.MFTP), "mftp"); - names.put(new Integer(IPPort.MATIP_TYPE_A), "matip_type_a"); - names.put(new Integer(IPPort.MATIP_TYPE_B), "matip_type_b"); - names.put(new Integer(IPPort.BHOETTY), "bhoetty"); - names.put(new Integer(IPPort.DTAG_STE_SB), "dtag_ste_sb"); - names.put(new Integer(IPPort.BHOEDAP4), "bhoedap4"); - names.put(new Integer(IPPort.NDSAUTH), "ndsauth"); - names.put(new Integer(IPPort.BH611), "bh611"); - names.put(new Integer(IPPort.DATEX_ASN), "datex_asn"); - names.put(new Integer(IPPort.CLOANTO_NET), "cloanto_net"); - names.put(new Integer(IPPort.BHEVENT), "bhevent"); - names.put(new Integer(IPPort.SHRINKWRAP), "shrinkwrap"); - names.put(new Integer(IPPort.NSRMP), "nsrmp"); - names.put(new Integer(IPPort.SCOI2ODIALOG), "scoi2odialog"); - names.put(new Integer(IPPort.SEMANTIX), "semantix"); - names.put(new Integer(IPPort.SRSSEND), "srssend"); - names.put(new Integer(IPPort.RSVP_TUNNEL), "rsvp_tunnel"); - names.put(new Integer(IPPort.AURORA_CMGR), "aurora_cmgr"); - names.put(new Integer(IPPort.DTK), "dtk"); - names.put(new Integer(IPPort.ODMR), "odmr"); - names.put(new Integer(IPPort.MORTGAGEWARE), "mortgageware"); - names.put(new Integer(IPPort.QBIKGDP), "qbikgdp"); - names.put(new Integer(IPPort.RPC2PORTMAP), "rpc2portmap"); - names.put(new Integer(IPPort.CODAAUTH), "codaauth"); - names.put(new Integer(IPPort.CLEARCASE), "clearcase"); - names.put(new Integer(IPPort.ULISTPROC), "ulistproc"); - names.put(new Integer(IPPort.LEGENT_1), "legent_1"); - names.put(new Integer(IPPort.LEGENT_2), "legent_2"); - names.put(new Integer(IPPort.HASSLE), "hassle"); - names.put(new Integer(IPPort.NIP), "nip"); - names.put(new Integer(IPPort.TNETOS), "tnETOS"); - names.put(new Integer(IPPort.DSETOS), "dsETOS"); - names.put(new Integer(IPPort.IS99C), "is99c"); - names.put(new Integer(IPPort.IS99S), "is99s"); - names.put(new Integer(IPPort.HP_COLLECTOR), "hp_collector"); - names.put(new Integer(IPPort.HP_MANAGED_NODE), "hp_managed_node"); - names.put(new Integer(IPPort.HP_ALARM_MGR), "hp_alarm_mgr"); - names.put(new Integer(IPPort.ARNS), "arns"); - names.put(new Integer(IPPort.IBM_APP), "ibm_app"); - names.put(new Integer(IPPort.ASA), "asa"); - names.put(new Integer(IPPort.AURP), "aurp"); - names.put(new Integer(IPPort.UNIDATA_LDM), "unidata_ldm"); - names.put(new Integer(IPPort.UIS), "uis"); - names.put(new Integer(IPPort.SYNOTICS_RELAY), "synotics_relay"); - names.put(new Integer(IPPort.SYNOTICS_BROKER), "synotics_broker"); - names.put(new Integer(IPPort.META5), "meta5"); - names.put(new Integer(IPPort.EMBL_NDT), "embl_ndt"); - names.put(new Integer(IPPort.NETCP), "netcp"); - names.put(new Integer(IPPort.NETWARE_IP), "netware_ip"); - names.put(new Integer(IPPort.MPTN), "mptn"); - names.put(new Integer(IPPort.KRYPTOLAN), "kryptolan"); - names.put(new Integer(IPPort.ISO_TSAP_C2), "iso_tsap_c2"); - names.put(new Integer(IPPort.WORK_SOL), "work_sol"); - names.put(new Integer(IPPort.UPS), "ups"); - names.put(new Integer(IPPort.GENIE), "genie"); - names.put(new Integer(IPPort.DECAP), "decap"); - names.put(new Integer(IPPort.NCED), "nced"); - names.put(new Integer(IPPort.NCLD), "ncld"); - names.put(new Integer(IPPort.IMSP), "imsp"); - names.put(new Integer(IPPort.TIMBUKTU), "timbuktu"); - names.put(new Integer(IPPort.PRM_SM), "prm_sm"); - names.put(new Integer(IPPort.PRM_NM), "prm_nm"); - names.put(new Integer(IPPort.DECLADEBUG), "decladebug"); - names.put(new Integer(IPPort.RMT), "rmt"); - names.put(new Integer(IPPort.SYNOPTICS_TRAP), "synoptics_trap"); - names.put(new Integer(IPPort.SMSP), "smsp"); - names.put(new Integer(IPPort.INFOSEEK), "infoseek"); - names.put(new Integer(IPPort.BNET), "bnet"); - names.put(new Integer(IPPort.SILVERPLATTER), "silverplatter"); - names.put(new Integer(IPPort.ONMUX), "onmux"); - names.put(new Integer(IPPort.HYPER_G), "hyper_g"); - names.put(new Integer(IPPort.ARIEL1), "ariel1"); - names.put(new Integer(IPPort.SMPTE), "smpte"); - names.put(new Integer(IPPort.ARIEL2), "ariel2"); - names.put(new Integer(IPPort.ARIEL3), "ariel3"); - names.put(new Integer(IPPort.OPC_JOB_START), "opc_job_start"); - names.put(new Integer(IPPort.OPC_JOB_TRACK), "opc_job_track"); - names.put(new Integer(IPPort.ICAD_EL), "icad_el"); - names.put(new Integer(IPPort.SMARTSDP), "smartsdp"); - names.put(new Integer(IPPort.SVRLOC), "svrloc"); - names.put(new Integer(IPPort.OCS_CMU), "ocs_cmu"); - names.put(new Integer(IPPort.OCS_AMU), "ocs_amu"); - names.put(new Integer(IPPort.UTMPSD), "utmpsd"); - names.put(new Integer(IPPort.UTMPCD), "utmpcd"); - names.put(new Integer(IPPort.IASD), "iasd"); - names.put(new Integer(IPPort.NNSP), "nnsp"); - names.put(new Integer(IPPort.MOBILEIP_AGENT), "mobileip_agent"); - names.put(new Integer(IPPort.MOBILIP_MN), "mobilip_mn"); - names.put(new Integer(IPPort.DNA_CML), "dna_cml"); - names.put(new Integer(IPPort.COMSCM), "comscm"); - names.put(new Integer(IPPort.DSFGW), "dsfgw"); - names.put(new Integer(IPPort.DASP), "dasp"); - names.put(new Integer(IPPort.SGCP), "sgcp"); - names.put(new Integer(IPPort.DECVMS_SYSMGT), "decvms_sysmgt"); - names.put(new Integer(IPPort.CVC_HOSTD), "cvc_hostd"); - names.put(new Integer(IPPort.HTTPS), "https"); - names.put(new Integer(IPPort.SNPP), "snpp"); - names.put(new Integer(IPPort.MICROSOFT_DS), "microsoft_ds"); - names.put(new Integer(IPPort.DDM_RDB), "ddm_rdb"); - names.put(new Integer(IPPort.DDM_DFM), "ddm_dfm"); - names.put(new Integer(IPPort.DDM_SSL), "ddm_ssl"); - names.put(new Integer(IPPort.AS_SERVERMAP), "as_servermap"); - names.put(new Integer(IPPort.TSERVER), "tserver"); - names.put(new Integer(IPPort.SFS_SMP_NET), "sfs_smp_net"); - names.put(new Integer(IPPort.SFS_CONFIG), "sfs_config"); - names.put(new Integer(IPPort.CREATIVESERVER), "creativeserver"); - names.put(new Integer(IPPort.CONTENTSERVER), "contentserver"); - names.put(new Integer(IPPort.CREATIVEPARTNR), "creativepartnr"); - names.put(new Integer(IPPort.MACON_TCP), "macon_tcp"); - names.put(new Integer(IPPort.SCOHELP), "scohelp"); - names.put(new Integer(IPPort.APPLEQTC), "appleqtc"); - names.put(new Integer(IPPort.AMPR_RCMD), "ampr_rcmd"); - names.put(new Integer(IPPort.SKRONK), "skronk"); - names.put(new Integer(IPPort.DATASURFSRV), "datasurfsrv"); - names.put(new Integer(IPPort.DATASURFSRVSEC), "datasurfsrvsec"); - names.put(new Integer(IPPort.ALPES), "alpes"); - names.put(new Integer(IPPort.KPASSWD), "kpasswd"); - names.put(new Integer(IPPort.DIGITAL_VRC), "digital_vrc"); - names.put(new Integer(IPPort.MYLEX_MAPD), "mylex_mapd"); - names.put(new Integer(IPPort.PHOTURIS), "photuris"); - names.put(new Integer(IPPort.RCP), "rcp"); - names.put(new Integer(IPPort.SCX_PROXY), "scx_proxy"); - names.put(new Integer(IPPort.MONDEX), "mondex"); - names.put(new Integer(IPPort.LJK_LOGIN), "ljk_login"); - names.put(new Integer(IPPort.HYBRID_POP), "hybrid_pop"); - names.put(new Integer(IPPort.TN_TL_W1), "tn_tl_w1"); - names.put(new Integer(IPPort.TCPNETHASPSRV), "tcpnethaspsrv"); - names.put(new Integer(IPPort.TN_TL_FD1), "tn_tl_fd1"); - names.put(new Integer(IPPort.SS7NS), "ss7ns"); - names.put(new Integer(IPPort.SPSC), "spsc"); - names.put(new Integer(IPPort.IAFSERVER), "iafserver"); - names.put(new Integer(IPPort.IAFDBASE), "iafdbase"); - names.put(new Integer(IPPort.PH), "ph"); - names.put(new Integer(IPPort.BGS_NSI), "bgs_nsi"); - names.put(new Integer(IPPort.ULPNET), "ulpnet"); - names.put(new Integer(IPPort.INTEGRA_SME), "integra_sme"); - names.put(new Integer(IPPort.POWERBURST), "powerburst"); - names.put(new Integer(IPPort.AVIAN), "avian"); - names.put(new Integer(IPPort.SAFT), "saft"); - names.put(new Integer(IPPort.GSS_HTTP), "gss_http"); - names.put(new Integer(IPPort.NEST_PROTOCOL), "nest_protocol"); - names.put(new Integer(IPPort.MICOM_PFS), "micom_pfs"); - names.put(new Integer(IPPort.GO_LOGIN), "go_login"); - names.put(new Integer(IPPort.TICF_1), "ticf_1"); - names.put(new Integer(IPPort.TICF_2), "ticf_2"); - names.put(new Integer(IPPort.POV_RAY), "pov_ray"); - names.put(new Integer(IPPort.INTECOURIER), "intecourier"); - names.put(new Integer(IPPort.PIM_RP_DISC), "pim_rp_disc"); - names.put(new Integer(IPPort.DANTZ), "dantz"); - names.put(new Integer(IPPort.SIAM), "siam"); - names.put(new Integer(IPPort.ISO_ILL), "iso_ill"); - names.put(new Integer(IPPort.ISAKMP), "isakmp"); - names.put(new Integer(IPPort.STMF), "stmf"); - names.put(new Integer(IPPort.ASA_APPL_PROTO), "asa_appl_proto"); - names.put(new Integer(IPPort.INTRINSA), "intrinsa"); - names.put(new Integer(IPPort.CITADEL), "citadel"); - names.put(new Integer(IPPort.MAILBOX_LM), "mailbox_lm"); - names.put(new Integer(IPPort.OHIMSRV), "ohimsrv"); - names.put(new Integer(IPPort.CRS), "crs"); - names.put(new Integer(IPPort.XVTTP), "xvttp"); - names.put(new Integer(IPPort.SNARE), "snare"); - names.put(new Integer(IPPort.FCP), "fcp"); - names.put(new Integer(IPPort.PASSGO), "passgo"); - names.put(new Integer(IPPort.EXEC), "exec"); - names.put(new Integer(IPPort.LOGIN), "login"); - names.put(new Integer(IPPort.SHELL), "shell"); - names.put(new Integer(IPPort.PRINTER), "printer"); - names.put(new Integer(IPPort.VIDEOTEX), "videotex"); - names.put(new Integer(IPPort.TALK), "talk"); - names.put(new Integer(IPPort.NTALK), "ntalk"); - names.put(new Integer(IPPort.UTIME), "utime"); - names.put(new Integer(IPPort.EFS), "efs"); - names.put(new Integer(IPPort.RIPNG), "ripng"); - names.put(new Integer(IPPort.ULP), "ulp"); - names.put(new Integer(IPPort.IBM_DB2), "ibm_db2"); - names.put(new Integer(IPPort.NCP), "ncp"); - names.put(new Integer(IPPort.TIMED), "timed"); - names.put(new Integer(IPPort.TEMPO ), "tempo"); - names.put(new Integer(IPPort.STX), "stx"); - names.put(new Integer(IPPort.CUSTIX), "custix"); - names.put(new Integer(IPPort.IRC_SERV), "irc_serv"); - names.put(new Integer(IPPort.COURIER), "courier"); - names.put(new Integer(IPPort.CONFERENCE), "conference"); - names.put(new Integer(IPPort.NETNEWS), "netnews"); - names.put(new Integer(IPPort.NETWALL ), "netwall"); - names.put(new Integer(IPPort.MM_ADMIN), "mm_admin"); - names.put(new Integer(IPPort.IIOP), "iiop"); - names.put(new Integer(IPPort.OPALIS_RDV), "opalis_rdv"); - names.put(new Integer(IPPort.NMSP), "nmsp"); - names.put(new Integer(IPPort.GDOMAP), "gdomap"); - names.put(new Integer(IPPort.APERTUS_LDP), "apertus_ldp"); - names.put(new Integer(IPPort.UUCP ), "uucp"); - names.put(new Integer(IPPort.UUCP_RLOGIN), "uucp_rlogin"); - names.put(new Integer(IPPort.COMMERCE), "commerce"); - names.put(new Integer(IPPort.KLOGIN), "klogin"); - names.put(new Integer(IPPort.KSHELL), "kshell"); - names.put(new Integer(IPPort.APPLEQTCSRVR), "appleqtcsrvr"); - names.put(new Integer(IPPort.DHCPV6_CLIENT), "dhcpv6_client"); - names.put(new Integer(IPPort.DHCPV6_SERVER), "dhcpv6_server"); - names.put(new Integer(IPPort.AFPOVERTCP), "afpovertcp"); - names.put(new Integer(IPPort.IDFP), "idfp"); - names.put(new Integer(IPPort.NEW_RWHO), "new_rwho"); - names.put(new Integer(IPPort.CYBERCASH), "cybercash"); - names.put(new Integer(IPPort.DEVICESHARE), "deviceshare"); - names.put(new Integer(IPPort.PIRP), "pirp"); - names.put(new Integer(IPPort.RTSP), "rtsp"); - names.put(new Integer(IPPort.DSF), "dsf"); - names.put(new Integer(IPPort.REMOTEFS), "remotefs"); - names.put(new Integer(IPPort.OPENVMS_SYSIPC), "openvms_sysipc"); - names.put(new Integer(IPPort.SDNSKMP), "sdnskmp"); - names.put(new Integer(IPPort.TEEDTAP), "teedtap"); - names.put(new Integer(IPPort.RMONITOR), "rmonitor"); - names.put(new Integer(IPPort.MONITOR), "monitor"); - names.put(new Integer(IPPort.CHSHELL), "chshell"); - names.put(new Integer(IPPort.NNTPS), "nntps"); - names.put(new Integer(IPPort.N9PFS), "9pfs"); - names.put(new Integer(IPPort.WHOAMI), "whoami"); - names.put(new Integer(IPPort.STREETTALK), "streettalk"); - names.put(new Integer(IPPort.BANYAN_RPC), "banyan_rpc"); - names.put(new Integer(IPPort.MS_SHUTTLE), "ms_shuttle"); - names.put(new Integer(IPPort.MS_ROME), "ms_rome"); - names.put(new Integer(IPPort.METER), "meter"); - names.put(new Integer(IPPort.METER2), "meter2"); - names.put(new Integer(IPPort.SONAR), "sonar"); - names.put(new Integer(IPPort.BANYAN_VIP), "banyan_vip"); - names.put(new Integer(IPPort.FTP_AGENT), "ftp_agent"); - names.put(new Integer(IPPort.VEMMI), "vemmi"); - names.put(new Integer(IPPort.IPCD), "ipcd"); - names.put(new Integer(IPPort.VNAS), "vnas"); - names.put(new Integer(IPPort.IPDD), "ipdd"); - names.put(new Integer(IPPort.DECBSRV), "decbsrv"); - names.put(new Integer(IPPort.SNTP_HEARTBEAT), "sntp_heartbeat"); - names.put(new Integer(IPPort.BDP), "bdp"); - names.put(new Integer(IPPort.SCC_SECURITY), "scc_security"); - names.put(new Integer(IPPort.PHILIPS_VC), "philips_vc"); - names.put(new Integer(IPPort.KEYSERVER), "keyserver"); - names.put(new Integer(IPPort.IMAP4_SSL), "imap4_ssl"); - names.put(new Integer(IPPort.PASSWORD_CHG), "password_chg"); - names.put(new Integer(IPPort.SUBMISSION), "submission"); - names.put(new Integer(IPPort.CAL), "cal"); - names.put(new Integer(IPPort.EYELINK), "eyelink"); - names.put(new Integer(IPPort.TNS_CML), "tns_cml"); - names.put(new Integer(IPPort.HTTP_ALT), "http_alt"); - names.put(new Integer(IPPort.EUDORA_SET), "eudora_set"); - names.put(new Integer(IPPort.HTTP_RPC_EPMAP), "http_rpc_epmap"); - names.put(new Integer(IPPort.TPIP), "tpip"); - names.put(new Integer(IPPort.CAB_PROTOCOL), "cab_protocol"); - names.put(new Integer(IPPort.SMSD), "smsd"); - names.put(new Integer(IPPort.PTCNAMESERVICE), "ptcnameservice"); - names.put(new Integer(IPPort.SCO_WEBSRVRMG3), "sco_websrvrmg3"); - names.put(new Integer(IPPort.ACP), "acp"); - names.put(new Integer(IPPort.IPCSERVER), "ipcserver"); - names.put(new Integer(IPPort.URM), "urm"); - names.put(new Integer(IPPort.NQS), "nqs"); - names.put(new Integer(IPPort.SIFT_UFT), "sift_uft"); - names.put(new Integer(IPPort.NPMP_TRAP), "npmp_trap"); - names.put(new Integer(IPPort.NPMP_LOCAL), "npmp_local"); - names.put(new Integer(IPPort.NPMP_GUI), "npmp_gui"); - names.put(new Integer(IPPort.HMMP_IND), "hmmp_ind"); - names.put(new Integer(IPPort.HMMP_OP), "hmmp_op"); - names.put(new Integer(IPPort.SSHELL), "sshell"); - names.put(new Integer(IPPort.SCO_INETMGR), "sco_inetmgr"); - names.put(new Integer(IPPort.SCO_SYSMGR), "sco_sysmgr"); - names.put(new Integer(IPPort.SCO_DTMGR), "sco_dtmgr"); - names.put(new Integer(IPPort.DEI_ICDA), "dei_icda"); - names.put(new Integer(IPPort.DIGITAL_EVM), "digital_evm"); - names.put(new Integer(IPPort.SCO_WEBSRVRMGR), "sco_websrvrmgr"); - names.put(new Integer(IPPort.ESCP_IP), "escp_ip"); - names.put(new Integer(IPPort.COLLABORATOR), "collaborator"); - names.put(new Integer(IPPort.AUX_BUS_SHUNT), "aux_bus_shunt"); - names.put(new Integer(IPPort.CRYPTOADMIN), "cryptoadmin"); - names.put(new Integer(IPPort.DEC_DLM), "dec_dlm"); - names.put(new Integer(IPPort.ASIA), "asia"); - names.put(new Integer(IPPort.PASSGO_TIVOLI), "passgo_tivoli"); - names.put(new Integer(IPPort.QMQP), "qmqp"); - names.put(new Integer(IPPort.AMP3_3COM), "3com_amp3"); - names.put(new Integer(IPPort.RDA), "rda"); - names.put(new Integer(IPPort.IPP), "ipp"); - names.put(new Integer(IPPort.BMPP), "bmpp"); - names.put(new Integer(IPPort.SERVSTAT), "servstat"); - names.put(new Integer(IPPort.GINAD), "ginad"); - names.put(new Integer(IPPort.RLZDBASE), "rlzdbase"); - names.put(new Integer(IPPort.LDAPS), "ldaps"); - names.put(new Integer(IPPort.LANSERVER), "lanserver"); - names.put(new Integer(IPPort.MCNS_SEC), "mcns_sec"); - names.put(new Integer(IPPort.MSDP), "msdp"); - names.put(new Integer(IPPort.ENTRUST_SPS), "entrust_sps"); - names.put(new Integer(IPPort.REPCMD), "repcmd"); - names.put(new Integer(IPPort.ESRO_EMSDP), "esro_emsdp"); - names.put(new Integer(IPPort.SANITY), "sanity"); - names.put(new Integer(IPPort.DWR), "dwr"); - names.put(new Integer(IPPort.PSSC), "pssc"); - names.put(new Integer(IPPort.LDP), "ldp"); - names.put(new Integer(IPPort.DHCP_FAILOVER), "dhcp_failover"); - names.put(new Integer(IPPort.RRP), "rrp"); - names.put(new Integer(IPPort.AMINET), "aminet"); - names.put(new Integer(IPPort.OBEX), "obex"); - names.put(new Integer(IPPort.IEEE_MMS), "ieee_mms"); - names.put(new Integer(IPPort.HELLO_PORT), "hello_port"); - names.put(new Integer(IPPort.REPSCMD ), "repscmd"); - names.put(new Integer(IPPort.AODV), "aodv"); - names.put(new Integer(IPPort.TINC), "tinc"); - names.put(new Integer(IPPort.SPMP), "spmp"); - names.put(new Integer(IPPort.RMC), "rmc"); - names.put(new Integer(IPPort.TENFOLD), "tenfold"); - names.put(new Integer(IPPort.URL_RENDEZVOUS), "url_rendezvous"); - names.put(new Integer(IPPort.MAC_SRVR_ADMIN), "mac_srvr_admin"); - names.put(new Integer(IPPort.HAP), "hap"); - names.put(new Integer(IPPort.PFTP), "pftp"); - names.put(new Integer(IPPort.PURENOISE), "purenoise"); - names.put(new Integer(IPPort.SECURE_AUX_BUS), "secure_aux_bus"); - names.put(new Integer(IPPort.SUN_DR), "sun_dr"); - names.put(new Integer(IPPort.MDQS), "mdqs"); - names.put(new Integer(IPPort.DOOM), "doom"); - names.put(new Integer(IPPort.DISCLOSE), "disclose"); - names.put(new Integer(IPPort.MECOMM), "mecomm"); - names.put(new Integer(IPPort.MEREGISTER), "meregister"); - names.put(new Integer(IPPort.VACDSM_SWS), "vacdsm_sws"); - names.put(new Integer(IPPort.VACDSM_APP), "vacdsm_app"); - names.put(new Integer(IPPort.VPPS_QUA), "vpps_qua"); - names.put(new Integer(IPPort.CIMPLEX), "cimplex"); - names.put(new Integer(IPPort.ACAP), "acap"); - names.put(new Integer(IPPort.DCTP), "dctp"); - names.put(new Integer(IPPort.VPPS_VIA), "vpps_via"); - names.put(new Integer(IPPort.VPP), "vpp"); - names.put(new Integer(IPPort.GGF_NCP), "ggf_ncp"); - names.put(new Integer(IPPort.MRM), "mrm"); - names.put(new Integer(IPPort.ENTRUST_AAAS), "entrust_aaas"); - names.put(new Integer(IPPort.ENTRUST_AAMS), "entrust_aams"); - names.put(new Integer(IPPort.XFR), "xfr"); - names.put(new Integer(IPPort.CORBA_IIOP), "corba_iiop"); - names.put(new Integer(IPPort.CORBA_IIOP_SSL), "corba_iiop_ssl"); - names.put(new Integer(IPPort.MDC_PORTMAPPER), "mdc_portmapper"); - names.put(new Integer(IPPort.HCP_WISMAR), "hcp_wismar"); - names.put(new Integer(IPPort.ASIPREGISTRY), "asipregistry"); - names.put(new Integer(IPPort.REALM_RUSD), "realm_rusd"); - names.put(new Integer(IPPort.NMAP), "nmap"); - names.put(new Integer(IPPort.VATP), "vatp"); - names.put(new Integer(IPPort.MSEXCH_ROUTING), "msexch_routing"); - names.put(new Integer(IPPort.HYPERWAVE_ISP), "hyperwave_isp"); - names.put(new Integer(IPPort.CONNENDP), "connendp"); - names.put(new Integer(IPPort.HA_CLUSTER), "ha_cluster"); - names.put(new Integer(IPPort.IEEE_MMS_SSL), "ieee_mms_ssl"); - names.put(new Integer(IPPort.RUSHD), "rushd"); - names.put(new Integer(IPPort.UUIDGEN), "uuidgen"); - names.put(new Integer(IPPort.OLSR), "olsr"); - names.put(new Integer(IPPort.ACCESSNETWORK), "accessnetwork"); - names.put(new Integer(IPPort.ELCSD), "elcsd"); - names.put(new Integer(IPPort.AGENTX), "agentx"); - names.put(new Integer(IPPort.SILC), "silc"); - names.put(new Integer(IPPort.BORLAND_DSJ), "borland_dsj"); - names.put(new Integer(IPPort.ENTRUST_KMSH), "entrust_kmsh"); - names.put(new Integer(IPPort.ENTRUST_ASH), "entrust_ash"); - names.put(new Integer(IPPort.CISCO_TDP), "cisco_tdp"); - names.put(new Integer(IPPort.NETVIEWDM1), "netviewdm1"); - names.put(new Integer(IPPort.NETVIEWDM2), "netviewdm2"); - names.put(new Integer(IPPort.NETVIEWDM3), "netviewdm3"); - names.put(new Integer(IPPort.NETGW), "netgw"); - names.put(new Integer(IPPort.NETRCS), "netrcs"); - names.put(new Integer(IPPort.FLEXLM), "flexlm"); - names.put(new Integer(IPPort.FUJITSU_DEV), "fujitsu_dev"); - names.put(new Integer(IPPort.RIS_CM), "ris_cm"); - names.put(new Integer(IPPort.KERBEROS_ADM), "kerberos_adm"); - names.put(new Integer(IPPort.RFILE), "rfile"); - names.put(new Integer(IPPort.PUMP), "pump"); - names.put(new Integer(IPPort.QRH), "qrh"); - names.put(new Integer(IPPort.RRH), "rrh"); - names.put(new Integer(IPPort.TELL), "tell"); - names.put(new Integer(IPPort.NLOGIN), "nlogin"); - names.put(new Integer(IPPort.CON), "con"); - names.put(new Integer(IPPort.NS), "ns"); - names.put(new Integer(IPPort.RXE), "rxe"); - names.put(new Integer(IPPort.QUOTAD), "quotad"); - names.put(new Integer(IPPort.CYCLESERV), "cycleserv"); - names.put(new Integer(IPPort.OMSERV), "omserv"); - names.put(new Integer(IPPort.WEBSTER), "webster"); - names.put(new Integer(IPPort.PHONEBOOK), "phonebook"); - names.put(new Integer(IPPort.VID), "vid"); - names.put(new Integer(IPPort.CADLOCK), "cadlock"); - names.put(new Integer(IPPort.RTIP), "rtip"); - names.put(new Integer(IPPort.CYCLESERV2), "cycleserv2"); - names.put(new Integer(IPPort.SUBMIT), "submit"); - names.put(new Integer(IPPort.RPASSWD), "rpasswd"); - names.put(new Integer(IPPort.ENTOMB), "entomb"); - names.put(new Integer(IPPort.WPAGES), "wpages"); - names.put(new Integer(IPPort.WPGS), "wpgs"); - names.put(new Integer(IPPort.QSC), "qsc"); - names.put(new Integer(IPPort.MDBS_DAEMON), "mdbs_daemon"); - names.put(new Integer(IPPort.ITM_MCELL_S), "itm_mcell_s"); - names.put(new Integer(IPPort.PKIX_3_CA_RA), "pkix_3_ca_ra"); - names.put(new Integer(IPPort.DHCP_FAILOVER2), "dhcp_failover2"); - names.put(new Integer(IPPort.RSYNC), "rsync"); - names.put(new Integer(IPPort.ICLCNET_LOCATE), "iclcnet_locate"); - names.put(new Integer(IPPort.ICLCNET_SVINFO), "iclcnet_svinfo"); - names.put(new Integer(IPPort.ACCESSBUILDER), "accessbuilder"); - names.put(new Integer(IPPort.CDDBP), "cddbp"); - names.put(new Integer(IPPort.OMGINITIALREFS), "omginitialrefs"); - names.put(new Integer(IPPort.SMPNAMERES), "smpnameres"); - names.put(new Integer(IPPort.IDEAFARM_CHAT), "ideafarm_chat"); - names.put(new Integer(IPPort.IDEAFARM_CATCH), "ideafarm_catch"); - names.put(new Integer(IPPort.XACT_BACKUP), "xact_backup"); - names.put(new Integer(IPPort.FTPS_DATA), "ftps_data"); - names.put(new Integer(IPPort.FTPS), "ftps"); - names.put(new Integer(IPPort.NAS), "nas"); - names.put(new Integer(IPPort.TELNETS), "telnets"); - names.put(new Integer(IPPort.IMAPS), "imaps"); - names.put(new Integer(IPPort.IRCS), "ircs"); - names.put(new Integer(IPPort.POP3S), "pop3s"); - names.put(new Integer(IPPort.VSINET), "vsinet"); - names.put(new Integer(IPPort.MAITRD), "maitrd"); - names.put(new Integer(IPPort.BUSBOY), "busboy"); - names.put(new Integer(IPPort.GARCON), "garcon"); - names.put(new Integer(IPPort.PUPROUTER), "puprouter"); - names.put(new Integer(IPPort.CADLOCK2), "cadlock2"); - names.put(new Integer(IPPort.SURF), "surf"); - names.put(new Integer(IPPort.RESERVED_1023), "1023r"); - names.put(new Integer(IPPort.RESERVED_1024), "1024r"); - names.put(new Integer(IPPort.SOCKS), "socks"); - names.put(new Integer(IPPort.HSRP), "hsrp"); - names.put(new Integer(IPPort.CVS), "cvs"); - names.put(new Integer(IPPort.AISES), "aises"); - names.put(new Integer(IPPort.X11), "X11"); - } - - - public static String UNKNOWN = "unknown"; - - private String _rcsid = - "$Id: IPPort.java,v 1.5 2004/10/02 01:23:19 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IPPorts.java b/javasrc/net/sourceforge/jpcap/net/IPPorts.java deleted file mode 100644 index e2b24ec..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IPPorts.java +++ /dev/null @@ -1,721 +0,0 @@ -// $Id: IPPorts.java,v 1.4 2004/02/24 19:21:31 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Code constants for ip ports. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.4 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/02/24 19:21:31 $ - */ -public interface IPPorts -{ - int NONE = -1; // dummy value for protocols that don't use ports - int RESERVED_0 = 0; - int TCPMUX = 1; - int COMPRESSNET2 = 2; - int COMPRESSNET = 3; - int RJE = 5; - int ECHO = 7; - int DISCARD = 9; - int SYSTAT = 11; - int DAYTIME = 13; - int QOTD = 17; - int MSP = 18; - int CHARGEN = 19; - int FTP_DATA = 20; - int FTP = 21; - int SSH = 22; - int TELNET = 23; - int PRIV_MAIL = 24; - int SMTP = 25; - int NSW_FE = 27; - int MSG_ICP = 29; - int MSG_AUTH = 31; - int DSP = 33; - int PRIV_PRINT = 35; - int TIME = 37; - int RAP = 38; - int RLP = 39; - int GRAPHICS = 41; - int NAME = 42; - int NAMESERVER = 42; - int NICNAME = 43; - int MPM_FLAGS = 44; - int MPM = 45; - int MPM_SND = 46; - int NI_FTP = 47; - int AUDITD = 48; - int TACACS = 49; - int RE_MAIL_CK = 50; - int LA_MAINT = 51; - int XNS_TIME = 52; - int DOMAIN = 53; - int XNS_CH = 54; - int ISI_GL = 55; - int XNS_AUTH = 56; - int PRIV_TERMINAL = 57; - int XNS_MAIL = 58; - int PRIV_FILE = 59; - int NI_MAIL = 61; - int ACAS = 62; - int WHOIS = 63; - int COVIA = 64; - int TACACS_DS = 65; - int SQLSNET = 66; - int BOOTPS = 67; - int BOOTPC = 68; - int TFTP = 69; - int GOPHER = 70; - int NETRJS_1 = 71; - int NETRJS_2 = 72; - int NETRJS_3 = 73; - int NETRJS_4 = 74; - int PRIV_DIALOUT = 75; - int DEOS = 76; - int PRIV_RJE = 77; - int VETTCP = 78; - int FINGER = 79; - int HTTP = 80; - int WWW = 80; - int HOSTS2_NS = 81; - int XFER = 82; - int MIT_ML_DEV = 83; - int CTF = 84; - int MIT_ML_DEV2 = 85; - int MFCOBOL = 86; - int PRIV_TERMLINK = 87; - int KERBEROS = 88; - int SU_MIT_TG = 89; - int DNSIX = 90; - int MIT_DOV = 91; - int NPP = 92; - int DCP = 93; - int OBJCALL = 94; - int SUPDUP = 95; - int DIXIE = 96; - int SWIFT_RVF = 97; - int TACNEWS = 98; - int METAGRAM = 99; - int NEWACCT = 100; - int HOSTNAME = 101; - int ISO_TSAP = 102; - int GPPITNP = 103; - int ACR_NEMA = 104; - int CSO = 105; - int CSNET_NS = 105; - int TSMUX_3COM = 106; - int RTELNET = 107; - int SNAGAS = 108; - int POP2 = 109; - int POP3 = 110; - int SUNRPC = 111; - int MCIDAS = 112; - int IDENT = 113; - int AUTH = 113; - int AUDIONEWS = 114; - int SFTP = 115; - int ANSANOTIFY = 116; - int UUCP_PATH = 117; - int SQLSERV = 118; - int NNTP = 119; - int CFDPTKT = 120; - int ERPC = 121; - int SMAKYNET = 122; - int NTP = 123; - int ANSATRADER = 124; - int LOCUS_MAP = 125; - int NXEDIT = 126; - int LOCUS_CON = 127; - int GSS_XLICEN = 128; - int PWDGEN = 129; - int CISCO_FNA = 130; - int CISCO_TNA = 131; - int CISCO_SYS = 132; - int STATSRV = 133; - int INGRES_NET = 134; - int EPMAP = 135; - int PROFILE = 136; - int NETBIOS_NS = 137; - int NETBIOS_DGM = 138; - int NETBIOS_SSN = 139; - int EMFIS_DATA = 140; - int EMFIS_CNTL = 141; - int BL_IDM = 142; - int IMAP = 143; - int UMA = 144; - int UAAC = 145; - int ISO_TP0 = 146; - int ISO_IP = 147; - int JARGON = 148; - int AED_512 = 149; - int SQL_NET = 150; - int HEMS = 151; - int BFTP = 152; - int SGMP = 153; - int NETSC_PROD = 154; - int NETSC_DEV = 155; - int SQLSRV = 156; - int KNET_CMP = 157; - int PCMAIL_SRV = 158; - int NSS_ROUTING = 159; - int SGMP_TRAPS = 160; - int SNMP = 161; - int SNMPTRAP = 162; - int CMIP_MAN = 163; - int CMIP_AGENT = 164; - int XNS_COURIER = 165; - int S_NET = 166; - int NAMP = 167; - int RSVD = 168; - int SEND = 169; - int PRINT_SRV = 170; - int MULTIPLEX = 171; - int CL1 = 172; - int XYPLEX_MUX = 173; - int MAILQ = 174; - int VMNET = 175; - int GENRAD_MUX = 176; - int XDMCP = 177; - int NEXTSTEP = 178; - int BGP = 179; - int RIS = 180; - int UNIFY = 181; - int AUDIT = 182; - int OCBINDER = 183; - int OCSERVER = 184; - int REMOTE_KIS = 185; - int KIS = 186; - int ACI = 187; - int MUMPS = 188; - int QFT = 189; - int GACP = 190; - int PROSPERO = 191; - int OSU_NMS = 192; - int SRMP = 193; - int IRC = 194; - int DN6_NLM_AUD = 195; - int DN6_SMM_RED = 196; - int DLS = 197; - int DLS_MON = 198; - int SMUX = 199; - int SRC = 200; - int AT_RTMP = 201; - int AT_NBP = 202; - int AT_3 = 203; - int AT_ECHO = 204; - int AT_5 = 205; - int AT_ZIS = 206; - int AT_7 = 207; - int AT_8 = 208; - int QMTP = 209; - int Z39_50 = 210; - int N914C = 211; - int ANET = 212; - int IPX = 213; - int VMPWSCS = 214; - int SOFTPC = 215; - int CAILIC = 216; - int DBASE = 217; - int MPP = 218; - int UARPS = 219; - int IMAP3 = 220; - int FLN_SPX = 221; - int RSH_SPX = 222; - int CDC = 223; - int MASQDIALER = 224; - int DIRECT = 242; - int SUR_MEAS = 243; - int INBUSINESS = 244; - int LINK = 245; - int DSP3270 = 246; - int SUBNTBCST_TFTP = 247; - int BHFHS = 248; - int RAP2 = 256; - int SET = 257; - int YAK_CHAT = 258; - int ESRO_GEN = 259; - int OPENPORT = 260; - int NSIIOPS = 261; - int ARCISDMS = 262; - int HDAP = 263; - int BGMP = 264; - int X_BONE_CTL = 265; - int SST = 266; - int TD_SERVICE = 267; - int TD_REPLICA = 268; - int HTTP_MGMT = 280; - int PERSONAL_LINK = 281; - int CABLEPORT_AX = 282; - int RESCAP = 283; - int CORERJD = 284; - int FXP_1 = 286; - int K_BLOCK = 287; - int NOVASTORBAKCUP = 308; - int ENTRUSTTIME = 309; - int BHMDS = 310; - int ASIP_WEBADMIN = 311; - int VSLMP = 312; - int MAGENTA_LOGIC = 313; - int OPALIS_ROBOT = 314; - int DPSI = 315; - int DECAUTH = 316; - int ZANNET = 317; - int PKIX_TIMESTAMP = 318; - int PTP_EVENT = 319; - int PTP_GENERAL = 320; - int PIP = 321; - int RTSPS = 322; - int TEXAR = 333; - int PDAP = 344; - int PAWSERV = 345; - int ZSERV = 346; - int FATSERV = 347; - int CSI_SGWP = 348; - int MFTP = 349; - int MATIP_TYPE_A = 350; - int MATIP_TYPE_B = 351; - int BHOETTY = 351; - int DTAG_STE_SB = 352; - int BHOEDAP4 = 352; - int NDSAUTH = 353; - int BH611 = 354; - int DATEX_ASN = 355; - int CLOANTO_NET = 356; - int BHEVENT = 357; - int SHRINKWRAP = 358; - int NSRMP = 359; - int SCOI2ODIALOG = 360; - int SEMANTIX = 361; - int SRSSEND = 362; - int RSVP_TUNNEL = 363; - int AURORA_CMGR = 364; - int DTK = 365; - int ODMR = 366; - int MORTGAGEWARE = 367; - int QBIKGDP = 368; - int RPC2PORTMAP = 369; - int CODAAUTH = 370; - int CLEARCASE = 371; - int ULISTPROC = 372; - int LEGENT_1 = 373; - int LEGENT_2 = 374; - int HASSLE = 375; - int NIP = 376; - int TNETOS = 377; - int DSETOS = 378; - int IS99C = 379; - int IS99S = 380; - int HP_COLLECTOR = 381; - int HP_MANAGED_NODE = 382; - int HP_ALARM_MGR = 383; - int ARNS = 384; - int IBM_APP = 385; - int ASA = 386; - int AURP = 387; - int UNIDATA_LDM = 388; - int UIS = 390; - int SYNOTICS_RELAY = 391; - int SYNOTICS_BROKER = 392; - int META5 = 393; - int EMBL_NDT = 394; - int NETCP = 395; - int NETWARE_IP = 396; - int MPTN = 397; - int KRYPTOLAN = 398; - int ISO_TSAP_C2 = 399; - int WORK_SOL = 400; - int UPS = 401; - int GENIE = 402; - int DECAP = 403; - int NCED = 404; - int NCLD = 405; - int IMSP = 406; - int TIMBUKTU = 407; - int PRM_SM = 408; - int PRM_NM = 409; - int DECLADEBUG = 410; - int RMT = 411; - int SYNOPTICS_TRAP = 412; - int SMSP = 413; - int INFOSEEK = 414; - int BNET = 415; - int SILVERPLATTER = 416; - int ONMUX = 417; - int HYPER_G = 418; - int ARIEL1 = 419; - int SMPTE = 420; - int ARIEL2 = 421; - int ARIEL3 = 422; - int OPC_JOB_START = 423; - int OPC_JOB_TRACK = 424; - int ICAD_EL = 425; - int SMARTSDP = 426; - int SVRLOC = 427; - int OCS_CMU = 428; - int OCS_AMU = 429; - int UTMPSD = 430; - int UTMPCD = 431; - int IASD = 432; - int NNSP = 433; - int MOBILEIP_AGENT = 434; - int MOBILIP_MN = 435; - int DNA_CML = 436; - int COMSCM = 437; - int DSFGW = 438; - int DASP = 439; - int SGCP = 440; - int DECVMS_SYSMGT = 441; - int CVC_HOSTD = 442; - int HTTPS = 443; - int SNPP = 444; - int MICROSOFT_DS = 445; - int DDM_RDB = 446; - int DDM_DFM = 447; - int DDM_SSL = 448; - int AS_SERVERMAP = 449; - int TSERVER = 450; - int SFS_SMP_NET = 451; - int SFS_CONFIG = 452; - int CREATIVESERVER = 453; - int CONTENTSERVER = 454; - int CREATIVEPARTNR = 455; - int MACON_TCP = 456; - int SCOHELP = 457; - int APPLEQTC = 458; - int AMPR_RCMD = 459; - int SKRONK = 460; - int DATASURFSRV = 461; - int DATASURFSRVSEC = 462; - int ALPES = 463; - int KPASSWD = 464; - int DIGITAL_VRC = 466; - int MYLEX_MAPD = 467; - int PHOTURIS = 468; - int RCP = 469; - int SCX_PROXY = 470; - int MONDEX = 471; - int LJK_LOGIN = 472; - int HYBRID_POP = 473; - int TN_TL_W1 = 474; - int TCPNETHASPSRV = 475; - int TN_TL_FD1 = 476; - int SS7NS = 477; - int SPSC = 478; - int IAFSERVER = 479; - int IAFDBASE = 480; - int PH = 481; - int BGS_NSI = 482; - int ULPNET = 483; - int INTEGRA_SME = 484; - int POWERBURST = 485; - int AVIAN = 486; - int SAFT = 487; - int GSS_HTTP = 488; - int NEST_PROTOCOL = 489; - int MICOM_PFS = 490; - int GO_LOGIN = 491; - int TICF_1 = 492; - int TICF_2 = 493; - int POV_RAY = 494; - int INTECOURIER = 495; - int PIM_RP_DISC = 496; - int DANTZ = 497; - int SIAM = 498; - int ISO_ILL = 499; - int ISAKMP = 500; - int STMF = 501; - int ASA_APPL_PROTO = 502; - int INTRINSA = 503; - int CITADEL = 504; - int MAILBOX_LM = 505; - int OHIMSRV = 506; - int CRS = 507; - int XVTTP = 508; - int SNARE = 509; - int FCP = 510; - int PASSGO = 511; - int EXEC = 512; - int LOGIN = 513; - int SHELL = 514; - int PRINTER = 515; - int VIDEOTEX = 516; - int TALK = 517; - int NTALK = 518; - int UTIME = 519; - int EFS = 520; - int RIPNG = 521; - int ULP = 522; - int IBM_DB2 = 523; - int NCP = 524; - int TIMED = 525; - int TEMPO = 526; - int STX = 527; - int CUSTIX = 528; - int IRC_SERV = 529; - int COURIER = 530; - int CONFERENCE = 531; - int NETNEWS = 532; - int NETWALL = 533; - int MM_ADMIN = 534; - int IIOP = 535; - int OPALIS_RDV = 536; - int NMSP = 537; - int GDOMAP = 538; - int APERTUS_LDP = 539; - int UUCP = 540; - int UUCP_RLOGIN = 541; - int COMMERCE = 542; - int KLOGIN = 543; - int KSHELL = 544; - int APPLEQTCSRVR = 545; - int DHCPV6_CLIENT = 546; - int DHCPV6_SERVER = 547; - int AFPOVERTCP = 548; - int IDFP = 549; - int NEW_RWHO = 550; - int CYBERCASH = 551; - int DEVICESHARE = 552; - int PIRP = 553; - int RTSP = 554; - int DSF = 555; - int REMOTEFS = 556; - int OPENVMS_SYSIPC = 557; - int SDNSKMP = 558; - int TEEDTAP = 559; - int RMONITOR = 560; - int MONITOR = 561; - int CHSHELL = 562; - int NNTPS = 563; - int N9PFS = 564; - int WHOAMI = 565; - int STREETTALK = 566; - int BANYAN_RPC = 567; - int MS_SHUTTLE = 568; - int MS_ROME = 569; - int METER = 570; - int METER2 = 571; - int SONAR = 572; - int BANYAN_VIP = 573; - int FTP_AGENT = 574; - int VEMMI = 575; - int IPCD = 576; - int VNAS = 577; - int IPDD = 578; - int DECBSRV = 579; - int SNTP_HEARTBEAT = 580; - int BDP = 581; - int SCC_SECURITY = 582; - int PHILIPS_VC = 583; - int KEYSERVER = 584; - int IMAP4_SSL = 585; - int PASSWORD_CHG = 586; - int SUBMISSION = 587; - int CAL = 588; - int EYELINK = 589; - int TNS_CML = 590; - int HTTP_ALT = 591; - int EUDORA_SET = 592; - int HTTP_RPC_EPMAP = 593; - int TPIP = 594; - int CAB_PROTOCOL = 595; - int SMSD = 596; - int PTCNAMESERVICE = 597; - int SCO_WEBSRVRMG3 = 598; - int ACP = 599; - int IPCSERVER = 600; - int URM = 606; - int NQS = 607; - int SIFT_UFT = 608; - int NPMP_TRAP = 609; - int NPMP_LOCAL = 610; - int NPMP_GUI = 611; - int HMMP_IND = 612; - int HMMP_OP = 613; - int SSHELL = 614; - int SCO_INETMGR = 615; - int SCO_SYSMGR = 616; - int SCO_DTMGR = 617; - int DEI_ICDA = 618; - int DIGITAL_EVM = 619; - int SCO_WEBSRVRMGR = 620; - int ESCP_IP = 621; - int COLLABORATOR = 622; - int AUX_BUS_SHUNT = 623; - int CRYPTOADMIN = 624; - int DEC_DLM = 625; - int ASIA = 626; - int PASSGO_TIVOLI = 627; - int QMQP = 628; - int AMP3_3COM = 629; - int RDA = 630; - int IPP = 631; - int BMPP = 632; - int SERVSTAT = 633; - int GINAD = 634; - int RLZDBASE = 635; - int LDAPS = 636; - int LANSERVER = 637; - int MCNS_SEC = 638; - int MSDP = 639; - int ENTRUST_SPS = 640; - int REPCMD = 641; - int ESRO_EMSDP = 642; - int SANITY = 643; - int DWR = 644; - int PSSC = 645; - int LDP = 646; - int DHCP_FAILOVER = 647; - int RRP = 648; - int AMINET = 649; - int OBEX = 650; - int IEEE_MMS = 651; - int HELLO_PORT = 652; - int REPSCMD = 653; - int AODV = 654; - int TINC = 655; - int SPMP = 656; - int RMC = 657; - int TENFOLD = 658; - int URL_RENDEZVOUS = 659; - int MAC_SRVR_ADMIN = 660; - int HAP = 661; - int PFTP = 662; - int PURENOISE = 663; - int SECURE_AUX_BUS = 664; - int SUN_DR = 665; - int MDQS = 666; - int DOOM = 666; - int DISCLOSE = 667; - int MECOMM = 668; - int MEREGISTER = 669; - int VACDSM_SWS = 670; - int VACDSM_APP = 671; - int VPPS_QUA = 672; - int CIMPLEX = 673; - int ACAP = 674; - int DCTP = 675; - int VPPS_VIA = 676; - int VPP = 677; - int GGF_NCP = 678; - int MRM = 679; - int ENTRUST_AAAS = 680; - int ENTRUST_AAMS = 681; - int XFR = 682; - int CORBA_IIOP = 683; - int CORBA_IIOP_SSL = 684; - int MDC_PORTMAPPER = 685; - int HCP_WISMAR = 686; - int ASIPREGISTRY = 687; - int REALM_RUSD = 688; - int NMAP = 689; - int VATP = 690; - int MSEXCH_ROUTING = 691; - int HYPERWAVE_ISP = 692; - int CONNENDP = 693; - int HA_CLUSTER = 694; - int IEEE_MMS_SSL = 695; - int RUSHD = 696; - int UUIDGEN = 697; - int OLSR = 698; - int ACCESSNETWORK = 699; - int ELCSD = 704; - int AGENTX = 705; - int SILC = 706; - int BORLAND_DSJ = 707; - int ENTRUST_KMSH = 709; - int ENTRUST_ASH = 710; - int CISCO_TDP = 711; - int NETVIEWDM1 = 729; - int NETVIEWDM2 = 730; - int NETVIEWDM3 = 731; - int NETGW = 741; - int NETRCS = 742; - int FLEXLM = 744; - int FUJITSU_DEV = 747; - int RIS_CM = 748; - int KERBEROS_ADM = 749; - int RFILE = 750; - int PUMP = 751; - int QRH = 752; - int RRH = 753; - int TELL = 754; - int NLOGIN = 758; - int CON = 759; - int NS = 760; - int RXE = 761; - int QUOTAD = 762; - int CYCLESERV = 763; - int OMSERV = 764; - int WEBSTER = 765; - int PHONEBOOK = 767; - int VID = 769; - int CADLOCK = 770; - int RTIP = 771; - int CYCLESERV2 = 772; - int SUBMIT = 773; - int RPASSWD = 774; - int ENTOMB = 775; - int WPAGES = 776; - int MULTILING_HTTP = 777; - int WPGS = 780; - int CONCERT = 786; - int QSC = 787; - int MDBS_DAEMON = 800; - int DEVICE = 801; - int FCP_UDP = 810; - int ITM_MCELL_S = 828; - int PKIX_3_CA_RA = 829; - int DHCP_FAILOVER2 = 847; - int RSYNC = 873; - int ICLCNET_LOCATE = 886; - int ICLCNET_SVINFO = 887; - int ACCESSBUILDER = 888; - int CDDBP = 888; - int OMGINITIALREFS = 900; - int SMPNAMERES = 901; - int IDEAFARM_CHAT = 902; - int IDEAFARM_CATCH = 903; - int XACT_BACKUP = 911; - int FTPS_DATA = 989; - int FTPS = 990; - int NAS = 991; - int TELNETS = 992; - int IMAPS = 993; - int IRCS = 994; - int POP3S = 995; - int VSINET = 996; - int MAITRD = 997; - int BUSBOY = 998; - int GARCON = 999; - int PUPROUTER = 999; - int CADLOCK2 = 1000; - int SURF = 1010; - int RESERVED_1023 = 1023; - int RESERVED_1024 = 1024; - int SOCKS = 1080; - int HSRP = 1985; - int CVS = 2401; - int AISES = 2783; - int X11 = 6000; int X11_BEGIN = 6000; - int X11_END = 6063; - - - /** - * Number of well-known (aka privileged) ports. - */ - int LIMIT_PRIVILEGED = 1024; - - /** - * IP port mask. - */ - int MASK = 0xffff; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IPProtocol.java b/javasrc/net/sourceforge/jpcap/net/IPProtocol.java deleted file mode 100644 index be33881..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IPProtocol.java +++ /dev/null @@ -1,89 +0,0 @@ -// $Id: IPProtocol.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import java.util.HashMap; - - -/** - * IPProtocol utility class. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.6 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ - */ -public class IPProtocol implements IPProtocols -{ - /** - * Fetch a protocol description. - * @param code the code associated with the message. - * @return a message describing the significance of the IP protocol. - */ - public static String getDescription(int code) { - Integer c = new Integer(code); - if(messages.containsKey(c)) - return (String)messages.get(c); - else - return "unknown"; - } - - /** - * 'Human-readable' IP protocol descriptions. - */ - //jdk1.5: private static HashMap messages = new HashMap(); - private static HashMap messages = new HashMap(); - static { - messages.put(new Integer(IP), "Dummy protocol for TCP"); - messages.put(new Integer(HOPOPTS), "IPv6 Hop-by-Hop options"); - messages.put(new Integer(ICMP), "Internet Control Message Protocol"); - messages.put(new Integer(IGMP), "Internet Group Management Protocol"); - messages.put(new Integer(IPIP), "IPIP tunnels"); - messages.put(new Integer(TCP), "Transmission Control Protocol"); - messages.put(new Integer(EGP), "Exterior Gateway Protocol"); - messages.put(new Integer(PUP), "PUP protocol"); - messages.put(new Integer(UDP), "User Datagram Protocol"); - messages.put(new Integer(IDP), "XNS IDP protocol"); - messages.put(new Integer(TP), "SO Transport Protocol Class 4"); - messages.put(new Integer(IPV6), "IPv6 header"); - messages.put(new Integer(ROUTING), "IPv6 routing header"); - messages.put(new Integer(FRAGMENT), "IPv6 fragmentation header"); - messages.put(new Integer(RSVP), "Reservation Protocol"); - messages.put(new Integer(GRE), "General Routing Encapsulation"); - messages.put(new Integer(ESP), "encapsulating security payload"); - messages.put(new Integer(AH), "authentication header"); - messages.put(new Integer(ICMPV6), "ICMPv6"); - messages.put(new Integer(NONE), "IPv6 no next header"); - messages.put(new Integer(DSTOPTS), "IPv6 destination options"); - messages.put(new Integer(MTP), "Multicast Transport Protocol"); - messages.put(new Integer(ENCAP), "Encapsulation Header"); - messages.put(new Integer(PIM), "Protocol Independent Multicast"); - messages.put(new Integer(COMP), "Compression Header Protocol"); - messages.put(new Integer(SCTP), "Stream Control Transmission Protocol"); - messages.put(new Integer(RAW), "Raw IP Packet"); - messages.put(new Integer(INVALID), "INVALID IP"); - } - - /** - * Extract the protocol code from packet data. The packet data - * must contain an IP datagram. - * The protocol code specifies what kind of information is contained in the - * data block of the ip datagram. - * - * @param lLen the length of the link-level header. - * @param packetBytes packet bytes, including the link-layer header. - * @return the IP protocol code. i.e. 0x06 signifies TCP protocol. - */ - public static int extractProtocol(int lLen, byte [] packetBytes) { - return packetBytes[lLen + IPFields.IP_CODE_POS]; - } - - - private String _rcsid = - "$Id: IPProtocol.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IPProtocols.java b/javasrc/net/sourceforge/jpcap/net/IPProtocols.java deleted file mode 100644 index ace569f..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IPProtocols.java +++ /dev/null @@ -1,170 +0,0 @@ -// $Id: IPProtocols.java,v 1.4 2001/06/27 02:15:49 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Code constants for well-defined IP protocols. - *

    - * Taken from netinet/in.h - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.4 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/27 02:15:49 $ - */ -public interface IPProtocols -{ - /** - * Dummy protocol for TCP. - */ - int IP = 0; - - /** - * IPv6 Hop-by-Hop options. - */ - int HOPOPTS = 0; - - /** - * Internet Control Message Protocol. - */ - int ICMP = 1; - - /** - * Internet Group Management Protocol. - */ - int IGMP = 2; - - /** - * IPIP tunnels (older KA9Q tunnels use 94). - */ - int IPIP = 4; - - /** - * Transmission Control Protocol. - */ - int TCP = 6; - - /** - * Exterior Gateway Protocol. - */ - int EGP = 8; - - /** - * PUP protocol. - */ - int PUP = 12; - - /** - * User Datagram Protocol. - */ - int UDP = 17; - - /** - * XNS IDP protocol. - */ - int IDP = 22; - - /** - * SO Transport Protocol Class 4. - */ - int TP = 29; - - /** - * IPv6 header. - */ - int IPV6 = 41; - - /** - * IPv6 routing header. - */ - int ROUTING = 43; - - /** - * IPv6 fragmentation header. - */ - int FRAGMENT = 44; - - /** - * Reservation Protocol. - */ - int RSVP = 46; - - /** - * General Routing Encapsulation. - */ - int GRE = 47; - - /** - * encapsulating security payload. - */ - int ESP = 50; - - /** - * authentication header. - */ - int AH = 51; - - /** - * ICMPv6. - */ - int ICMPV6 = 58; - - /** - * IPv6 no next header. - */ - int NONE = 59; - - /** - * IPv6 destination options. - */ - int DSTOPTS = 60; - - /** - * Multicast Transport Protocol. - */ - int MTP = 92; - - /** - * Encapsulation Header. - */ - int ENCAP = 98; - - /** - * Protocol Independent Multicast. - */ - int PIM = 103; - - /** - * Compression Header Protocol. - */ - int COMP = 108; - - /** - * Stream Control Transmission Protocol. - */ - int SCTP = -124; //132; - - /** - * Raw IP packets. - */ - int RAW = 255; - - - /** - * Unrecognized IP protocol. - * WARNING: this only works because the int storage for the protocol - * code has more bits than the field in the IP header where it is stored. - */ - int INVALID = -1; - - /** - * IP protocol mask. - */ - int MASK = 0xff; -} diff --git a/javasrc/net/sourceforge/jpcap/net/IPVersions.java b/javasrc/net/sourceforge/jpcap/net/IPVersions.java deleted file mode 100644 index b38fdbf..0000000 --- a/javasrc/net/sourceforge/jpcap/net/IPVersions.java +++ /dev/null @@ -1,30 +0,0 @@ -// $Id: IPVersions.java,v 1.1 2001/05/23 02:42:22 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Code constants for internet protocol versions. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/05/23 02:42:22 $ - */ -public interface IPVersions -{ - /** - * Internet protocol version 4. - */ - int IPV4 = 4; - - /** - * Internet protocol version 6. - */ - int IPV6 = 6; -} diff --git a/javasrc/net/sourceforge/jpcap/net/LinkLayer.java b/javasrc/net/sourceforge/jpcap/net/LinkLayer.java deleted file mode 100644 index 045c003..0000000 --- a/javasrc/net/sourceforge/jpcap/net/LinkLayer.java +++ /dev/null @@ -1,150 +0,0 @@ -// $Id: LinkLayer.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import java.util.HashMap; - - -/** - * Information about network link layers. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.6 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/10/02 01:23:19 $ - */ -public class LinkLayer implements LinkLayers -{ - /** - * Fetch the header length associated with various link-layer types. - * @param layerType the link-layer code - * @return the length of the header for the specified link-layer - */ - public static int getLinkLayerLength(int layerType) { - switch(layerType) { - case ARCNET: - return 6; - case SLIP: - return 16; - case SLIP_BSDOS: - return 24; - case NULL: - case LOOP: - return 4; - case PPP: - case CHDLC: - case PPP_SERIAL: - return 4; - case PPP_BSDOS: - return 24; - case FDDI: - return 21; - case IEEE802_11: - return 22; - case ATM_RFC1483: - return 8; - case RAW: - return 0; - case ATM_CLIP: - return 8; - case LINUX_SLL: - return 16; - case EN10MB: - default: - return 14; - } - } - - /** - * Fetch the offset into the link-layer header where the protocol code - * can be found. Returns -1 if there is no embedded protocol code. - * @param layerType the link-layer code - * @return the offset in bytes - */ - public static int getProtoOffset(int layerType) { - switch(layerType) { - case ARCNET: - return 2; - case SLIP: - return -1; - case SLIP_BSDOS: - return -1; - case NULL: - case LOOP: - return 0; - case PPP: - case CHDLC: - case PPP_SERIAL: - return 2; - case PPP_BSDOS: - return 5; - case FDDI: - return 13; - case IEEE802_11: - return 14; - case ATM_RFC1483: - return 6; - case RAW: - return -1; - case ATM_CLIP: - return 6; - case LINUX_SLL: - return 14; - case EN10MB: - default: - return 12; - } - } - - /** - * Fetch a link-layer type description. - * @param code the code associated with the description. - * @return a description of the link-layer type. - */ - public static String getDescription(int code) { - Integer c = new Integer(code); - if(descriptions.containsKey(c)) - return (String)descriptions.get(c); - else - return "unknown"; - } - - /** - * 'Human-readable' link-layer type descriptions. - */ - //jdk1.5: private static HashMap descriptions = new HashMap(); - private static HashMap descriptions = new HashMap(); - static { - descriptions.put(new Integer(NULL), "no link-layer encapsulation"); - descriptions.put(new Integer(EN10MB), "10/100Mb ethernet"); - descriptions.put(new Integer(EN3MB), "3Mb experimental ethernet"); - descriptions.put(new Integer(AX25), "AX.25 amateur radio"); - descriptions.put(new Integer(PRONET), "proteon pronet token ring"); - descriptions.put(new Integer(CHAOS), "chaos"); - descriptions.put(new Integer(IEEE802), "IEEE802 network"); - descriptions.put(new Integer(ARCNET), "ARCNET"); - descriptions.put(new Integer(SLIP), "serial line IP"); - descriptions.put(new Integer(PPP), "point-to-point protocol"); - descriptions.put(new Integer(FDDI), "FDDI"); - descriptions.put(new Integer(ATM_RFC1483), "LLC/SNAP encapsulated ATM"); - descriptions.put(new Integer(RAW), "raw IP"); - descriptions.put(new Integer(SLIP_BSDOS), "BSD SLIP"); - descriptions.put(new Integer(PPP_BSDOS), "BSD PPP"); - descriptions.put(new Integer(ATM_CLIP), "IP over ATM"); - descriptions.put(new Integer(PPP_SERIAL), "PPP over HDLC"); - descriptions.put(new Integer(CHDLC), "Cisco HDLC"); - descriptions.put(new Integer(IEEE802_11), "802.11 wireless"); - descriptions.put(new Integer(LOOP), "OpenBSD loopback"); - descriptions.put(new Integer(LINUX_SLL), "Linux cooked sockets"); - descriptions.put(new Integer(UNKNOWN), "unknown link-layer type"); - } - - - private String _rcsid = - "$Id: LinkLayer.java,v 1.6 2004/10/02 01:23:19 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/LinkLayers.java b/javasrc/net/sourceforge/jpcap/net/LinkLayers.java deleted file mode 100644 index 6deecf2..0000000 --- a/javasrc/net/sourceforge/jpcap/net/LinkLayers.java +++ /dev/null @@ -1,143 +0,0 @@ -// $Id: LinkLayers.java,v 1.3 2001/07/02 02:45:46 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Link-layer type codes. - *

    - * Taken from libpcap/bpf/net/bpf.h and pcap/net/bpf.h. - *

    - * The link-layer type is used to determine what data-structure the - * IP protocol bits will be encapsulated inside of. - *

    - * On a 10/100mbps network, packets are encapsulated inside of ethernet. - * 14-byte ethernet headers which contain MAC addresses and an ethernet type - * field. - *

    - * On ethernet over ppp, the link-layer type is raw, and packets - * are not encapsulated in any ethernet header. - *

    - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/07/02 02:45:46 $ - */ -public interface LinkLayers -{ - /** - * no link-layer encapsulation - */ - int NULL = 0; - - /** - * Ethernet (10Mb) - */ - int EN10MB = 1; - - /** - * Experimental Ethernet (3Mb) - */ - int EN3MB = 2; - - /** - * Amateur Radio AX.25 - */ - int AX25 = 3; - - /** - * Proteon ProNET Token Ring - */ - int PRONET = 4; - - /** - * Chaos - */ - int CHAOS = 5; - - /** - * IEEE 802 Networks - */ - int IEEE802 = 6; - - /** - * ARCNET - */ - int ARCNET = 7; - - /** - * Serial Line IP - */ - int SLIP = 8; - - /** - * Point-to-point Protocol - */ - int PPP = 9; - - /** - * FDDI - */ - int FDDI = 10; - - /** - * LLC/SNAP encapsulated atm - */ - int ATM_RFC1483 = 11; - - /** - * raw IP - */ - int RAW = 12; - - /** - * BSD Slip. - */ - int SLIP_BSDOS = 15; - - /** - * BSD PPP. - */ - int PPP_BSDOS = 16; - - /** - * IP over ATM. - */ - int ATM_CLIP = 19; - - /** - * PPP over HDLC. - */ - int PPP_SERIAL = 50; - - /** - * Cisco HDLC. - */ - int CHDLC = 104; - - /** - * IEEE 802.11 wireless. - */ - int IEEE802_11 = 105; - - /** - * OpenBSD loopback. - */ - int LOOP = 108; - - /** - * Linux cooked sockets. - */ - int LINUX_SLL = 113; - - /** - * unknown link-layer type - */ - int UNKNOWN = -1; -} diff --git a/javasrc/net/sourceforge/jpcap/net/MACAddress.java b/javasrc/net/sourceforge/jpcap/net/MACAddress.java deleted file mode 100644 index e1da67c..0000000 --- a/javasrc/net/sourceforge/jpcap/net/MACAddress.java +++ /dev/null @@ -1,56 +0,0 @@ -// $Id: MACAddress.java,v 1.4 2002/11/07 23:23:46 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.HexHelper; - - -/** - * MAC address. - *

    - * This class doesn't yet store MAC addresses. Only a utility method - * to extract a MAC address from a big-endian byte array is implemented. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.4 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2002/11/07 23:23:46 $ - */ -public class MACAddress -{ - /** - * Extract a MAC address from an array of bytes. - * @param offset the offset of the address data from the start of the - * packet. - * @param bytes an array of bytes containing at least one MAC address. - */ - public static String extract(int offset, byte [] bytes) { - StringBuffer sa = new StringBuffer(); - for(int i=offset; i number - * @param named number - */ -public abstract class NamedNumber> - implements Comparable, Serializable { - - /** */ - private static final long serialVersionUID = 3858426889927624965L; - - private final T value; - private final String name; - - /** - * @param value value - * @param name name - */ - protected NamedNumber(T value, String name) { - if (value == null) { - throw new IllegalArgumentException("value is null."); - } - if (name == null) { - throw new IllegalArgumentException("name is null."); - } - this.value = value; - this.name = name; - } - - /** @return value */ - public T value() { - return value; - } - - /** @return name */ - public String name() { - return name; - } - - /** @return a string representation of this value. */ - public String valueAsString() { - return value.toString(); - } - - @Override - public abstract int compareTo(U o); - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(70); - return sb.append(valueAsString()).append(" (").append(name).append(")").toString(); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + name.hashCode(); - result = prime * result + value.hashCode(); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - NamedNumber other = (NamedNumber) obj; - if (!name.equals(other.name)) { - return false; - } - if (!value.equals(other.value)) { - return false; - } - return true; - } -} \ No newline at end of file diff --git a/javasrc/net/sourceforge/jpcap/net/Packet.java b/javasrc/net/sourceforge/jpcap/net/Packet.java deleted file mode 100644 index ad060ba..0000000 --- a/javasrc/net/sourceforge/jpcap/net/Packet.java +++ /dev/null @@ -1,62 +0,0 @@ -// $Id: Packet.java,v 1.8 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * A network packet. - *

    - * This class currently contains no implementation because only ethernet - * is supported. In other words, all instances of packets returned by - * packet factory will always be at least as specific as EthernetPacket. - *

    - * On large ethernet networks, I sometimes see packets which don't have - * link-level ethernet headers. If and when I figure out what these are, - * maybe this class will be the root node of a packet hierarchy derived - * from something other than ethernet. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.8 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class Packet implements Serializable -{ - public String toColoredString(boolean colored) { - return toString(); - } - - /** - * Fetch data portion of the packet. - */ - public byte [] getHeader() { - return null; - } - - /** - * Fetch data portion of the packet. - */ - public byte [] getData() { - return null; - } - - public String getColor() { - return ""; - } - - public Timeval getTimeval() { - return null; - } - - - private String _rcsid = - "$Id: Packet.java,v 1.8 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/PacketEncoding.java b/javasrc/net/sourceforge/jpcap/net/PacketEncoding.java deleted file mode 100644 index 2990669..0000000 --- a/javasrc/net/sourceforge/jpcap/net/PacketEncoding.java +++ /dev/null @@ -1,113 +0,0 @@ -// $Id: PacketEncoding.java,v 1.4 2002/07/10 23:18:20 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Packet encoding. - *

    - * Contains utility methods for decoding generic packets. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.4 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2002/07/10 23:18:20 $ - */ -public class PacketEncoding -{ - - // create an empty array to return whenever we need to return an, er, - // empty array. this should be okay, because how can you mutate a - // 0-length array? - private static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; - - /** - * Extract a header from a packet. - * - * @param offset the offset in bytes to the start of the embedded header. - * @param headerLen the length of the header embedded in the packet. - * @param bytes the packet data, including the embedded header and data. - * @return the extracted header data. - */ - public static byte [] extractHeader(int offset, int headerLen, - byte [] bytes) { - // null in = null out ? - if( bytes == null ) return null; - // negative in, empty array out - if( ( offset < 0 ) || ( headerLen < 0 ) ) return EMPTY_BYTE_ARRAY; - - // verify that requested length is in the bounds of the array - int useLen = ( headerLen <= (bytes.length-offset) ? - headerLen : (bytes.length-offset) ); - // verify that requested offset is also in the bounds - if( useLen <= 0 ) return EMPTY_BYTE_ARRAY; - - byte [] header = new byte[useLen]; - System.arraycopy(bytes, offset, header, 0, useLen); - return header; - } - - /** - * Extract data from a packet. - * - * @param offset the offset in bytes to the start of the embedded header. - * @param headerLen the length of the header embedded in the packet. - * @param bytes the packet data, including the embedded header and data. - * @return the extracted packet data. - */ - public static byte [] extractData(int offset, int headerLen, - byte [] bytes) { - // null in = null out ? - if( bytes == null ) return null; - // negative in, empty array out - if( ( offset < 0 ) || ( headerLen < 0 ) ) return EMPTY_BYTE_ARRAY; - - int dataLength = bytes.length - headerLen - offset; - - // check that requested datalength is valid. - // (it may not be if packet values are invalid.) - if(dataLength <= 0) return EMPTY_BYTE_ARRAY; - - // valid length, go for it dude - byte [] data = new byte[dataLength]; - System.arraycopy(bytes, offset + headerLen, data, 0, dataLength); - return data; - } - - /** - * Extract data from a packet. - * - * @param offset the offset in bytes to the start of the embedded header. - * @param headerLen the length of the header embedded in the packet. - * @param bytes the packet data, including the embedded header and data. - * @return the extracted packet data. - */ - public static byte [] extractData(int offset, int headerLen, - byte [] bytes,int dataLength) { - // null in = null out ? - if( bytes == null ) return null; - // negative in, empty array out. request for no-data in, empty array out - if( ( offset < 0 ) || ( headerLen < 0 ) || - ( dataLength <= 0 ) || ( (offset+headerLen) > bytes.length ) ) - return EMPTY_BYTE_ARRAY; - - //-- make sure dataLength + offset + headerLen <= bytes.length - if((dataLength + offset + headerLen) > bytes.length) { - //-- adjust dataLength - dataLength = bytes.length - headerLen - offset; - } - - //-- valid length, go for it dude - byte [] data = new byte[dataLength]; - System.arraycopy(bytes, offset + headerLen, data, 0, dataLength); - return data; - } - - private String _rcsid = - "$Id: PacketEncoding.java,v 1.4 2002/07/10 23:18:20 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/PacketFactory.java b/javasrc/net/sourceforge/jpcap/net/PacketFactory.java deleted file mode 100644 index 861455c..0000000 --- a/javasrc/net/sourceforge/jpcap/net/PacketFactory.java +++ /dev/null @@ -1,162 +0,0 @@ -// $Id: PacketFactory.java,v 1.12 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; - - -/** - * This factory constructs high-level packet objects from - * captured data streams. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.12 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class PacketFactory -{ - /** - * Convert captured packet data into an object. - */ - public static Packet dataToPacket(int linkType, byte [] bytes) { - int ethProtocol; - - // record the length of the headers associated with this link layer type. - // this length is the offset to the header embedded in the packet. - lLen = LinkLayer.getLinkLayerLength(linkType); - - // extract the protocol code for the type of header embedded in the - // link-layer of the packet - int offset = LinkLayer.getProtoOffset(linkType); - if(offset == -1) - // if there is no embedded protocol, assume IP? - ethProtocol = EthernetProtocols.IP; - else - ethProtocol = ArrayHelper.extractInteger(bytes, offset, - EthernetFields.ETH_CODE_LEN); - - // try to recognize the ethernet type.. - switch(ethProtocol) { - // arp - case EthernetProtocols.ARP: - return new ARPPacket(lLen, bytes); - case EthernetProtocols.IP: - // ethernet level code is recognized as IP, figure out what kind.. - int ipProtocol = IPProtocol.extractProtocol(lLen, bytes); - switch(ipProtocol) { - // icmp - case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes); - // igmp - case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes); - // tcp - case IPProtocols.TCP: return new TCPPacket(lLen, bytes); - // udp - case IPProtocols.UDP: return new UDPPacket(lLen, bytes); - // sctp - case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); - // unidentified ip.. - default: return new IPPacket(lLen, bytes); - } - case EthernetProtocols.N8021Q: - lLen = lLen+4; //skip vlan ID - ipProtocol = IPProtocol.extractProtocol(lLen, bytes); - switch(ipProtocol) { - // icmp - case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes); - // igmp - case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes); - // tcp - case IPProtocols.TCP: return new TCPPacket(lLen, bytes); - // udp - case IPProtocols.UDP: return new UDPPacket(lLen, bytes); - // sctp - case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); - // unidentified ip.. - default: return new IPPacket(lLen, bytes); - } - // ethernet level code not recognized, default to anonymous packet.. - default: return new EthernetPacket(lLen, bytes); - } - } - - /** - * Convert captured packet data into an object. - */ - public static Packet dataToPacket(int linkType, byte [] bytes, Timeval tv) { - int ethProtocol; - - // record the length of the headers associated with this link layer type. - // this length is the offset to the header embedded in the packet. - lLen = LinkLayer.getLinkLayerLength(linkType); - - // extract the protocol code for the type of header embedded in the - // link-layer of the packet - int offset = LinkLayer.getProtoOffset(linkType); - if(offset == -1) - // if there is no embedded protocol, assume IP? - ethProtocol = EthernetProtocols.IP; - else - ethProtocol = ArrayHelper.extractInteger(bytes, offset, - EthernetFields.ETH_CODE_LEN); - - // try to recognize the ethernet type.. - switch(ethProtocol) { - // arp - case EthernetProtocols.ARP: - return new ARPPacket(lLen, bytes, tv); - case EthernetProtocols.IP: - // ethernet level code is recognized as IP, figure out what kind.. - int ipProtocol = IPProtocol.extractProtocol(lLen, bytes); - switch(ipProtocol) { - // icmp - case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes, tv); - // igmp - case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes, tv); - // tcp - case IPProtocols.TCP: return new TCPPacket(lLen, bytes, tv); - // udp - case IPProtocols.UDP: return new UDPPacket(lLen, bytes, tv); - // sctp - case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); - // unidentified ip.. - default: return new IPPacket(lLen, bytes, tv); - } - case EthernetProtocols.N8021Q: - lLen = lLen+4; //skip vlan ID - ipProtocol = IPProtocol.extractProtocol(lLen, bytes); - switch(ipProtocol) { - // icmp - case IPProtocols.ICMP: return new ICMPPacket(lLen, bytes); - // igmp - case IPProtocols.IGMP: return new IGMPPacket(lLen, bytes); - // tcp - case IPProtocols.TCP: return new TCPPacket(lLen, bytes); - // udp - case IPProtocols.UDP: return new UDPPacket(lLen, bytes); - // sctp - case IPProtocols.SCTP: return new SCTPPacket(lLen, bytes); - // unidentified ip.. - default: return new IPPacket(lLen, bytes); - } - // ethernet level code not recognized, default to anonymous packet.. - default: return new EthernetPacket(lLen, bytes, tv); - } - } - - - /** - * Length in bytes of the link-level headers that this factory is - * decoding packets for. - */ - private static int lLen; - - private String _rcsid = - "$Id: PacketFactory.java,v 1.12 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/RawPacket.java b/javasrc/net/sourceforge/jpcap/net/RawPacket.java deleted file mode 100644 index 5756e48..0000000 --- a/javasrc/net/sourceforge/jpcap/net/RawPacket.java +++ /dev/null @@ -1,95 +0,0 @@ -// $Id: RawPacket.java,v 1.3 2003/06/24 23:09:49 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.HexHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * A captured packet containing raw data. - *

    - * Encapsulation for data captured on a network device by PacketCapture's - * raw capture interface. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/06/24 23:09:49 $ - */ -public class RawPacket implements Serializable -{ - /** - * Create a new raw packet. - * - * @param timeval the time the packet arrived on the device where it was - * captured. - * @param bytes the raw packet data, including headers. - * @param droplen the number of bytes dropped (if any) when the packet - * was captured. - */ - public RawPacket(Timeval timeval, byte [] bytes, int droplen) { - this.timeval = timeval; - this.bytes = bytes; - this.droplen = droplen; - } - - /** - * Fetch the timeval containing the time the packet arrived on the - * device where it was captured. - */ - public Timeval getTimeval() { - return timeval; - } - - /** - * Fetch the raw packet data. - */ - public byte [] getData() { - return bytes; - } - - /** - * Fetch the number of bytes dropped (if any) when the packet - * was captured. - *

    - * Bytes are dropped when the snapshot length (a ceiling on the number of - * bytes per packet to capture) is smaller than the actual number of bytes - * in the packet on the wire. In other words, when caplen exceeds snaplen, - * bytes are dropped and droplen will be nonzero. Otherwise, all the - * packet bytes were captured and droplen is zero. - */ - public int getDroplen() { - return droplen; - } - - /** - * Convert this packet to a readable string. - */ - public String toString() { - StringBuffer buffer = new StringBuffer(); - int length = bytes.length; - buffer.append("[RawPacket: "); - buffer.append("l = " + length + " of " + (length + droplen) + ", "); - buffer.append("t = " + timeval + ", "); - buffer.append("d = "); - buffer.append(HexHelper.toString(bytes)); - buffer.append(']'); - - return buffer.toString(); - } - - - private Timeval timeval; - private byte [] bytes; - private int droplen; - - private String _rcsid = - "$Id: RawPacket.java,v 1.3 2003/06/24 23:09:49 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java b/javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java deleted file mode 100644 index 7e56c5b..0000000 --- a/javasrc/net/sourceforge/jpcap/net/SCTPChunkType.java +++ /dev/null @@ -1,168 +0,0 @@ -// $Id: SCTPChunkType.java,v 1.00 2021/01/10 $ - -/*************************************************************************** - * * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import java.util.HashMap; -import java.util.Map; - -/** - * SCTP Chunk Type - * - * @see RFC 4960 - * @author - * @since - */ -public final class SCTPChunkType extends NamedNumber { - - /** */ - static final long serialVersionUID = -5598298520049931819L; - - /** Payload Data: 0 */ - public static final SCTPChunkType DATA = new SCTPChunkType((byte) 0, "Payload Data"); - - /** Initiation: 1 */ - public static final SCTPChunkType INIT = new SCTPChunkType((byte) 1, "Initiation"); - - /** Initiation Acknowledgement: 2 */ - public static final SCTPChunkType INIT_ACK = new SCTPChunkType((byte) 2, "Initiation Acknowledgement"); - - /** Selective Acknowledgement: 3 */ - public static final SCTPChunkType SACK = new SCTPChunkType((byte) 3, "Selective Acknowledgement"); - - /** Heartbeat Request: 4 */ - public static final SCTPChunkType HEARTBEAT = new SCTPChunkType((byte) 4, "Heartbeat Request"); - - /** Heartbeat Acknowledgement: 5 */ - public static final SCTPChunkType HEARTBEAT_ACK = new SCTPChunkType((byte) 5, "Heartbeat Acknowledgement"); - - /** Abort: 6 */ - public static final SCTPChunkType ABORT = new SCTPChunkType((byte) 6, "Abort"); - - /** Shutdown: 7 */ - public static final SCTPChunkType SHUTDOWN = new SCTPChunkType((byte) 7, "Shutdown"); - - /** Shutdown Acknowledgement: 8 */ - public static final SCTPChunkType SHUTDOWN_ACK = new SCTPChunkType((byte) 8, "Shutdown Acknowledgement"); - - /** Operation Error: 9 */ - public static final SCTPChunkType ERROR = new SCTPChunkType((byte) 9, "Operation Error"); - - /** State Cookie: 10 */ - public static final SCTPChunkType COOKIE_ECHO = new SCTPChunkType((byte) 10, "State Cookie"); - - /** Cookie Acknowledgement: 11 */ - public static final SCTPChunkType COOKIE_ACK = new SCTPChunkType((byte) 11, "Cookie Acknowledgement"); - - /** Explicit Congestion Notification Echo: 12 */ - public static final SCTPChunkType ECNE = new SCTPChunkType((byte) 12, "Explicit Congestion Notification Echo"); - - /** Congestion Window Reduced: 13 */ - public static final SCTPChunkType CWR = new SCTPChunkType((byte) 13, "Congestion Window Reduced"); - - /** Shutdown Complete: 14 */ - public static final SCTPChunkType SHUTDOWN_COMPLETE = new SCTPChunkType((byte) 14, "Shutdown Complete"); - - private static final Map registry = new HashMap(); - - static { - registry.put(DATA.value(), DATA); - registry.put(INIT.value(), INIT); - registry.put(INIT_ACK.value(), INIT_ACK); - registry.put(SACK.value(), SACK); - registry.put(HEARTBEAT.value(), HEARTBEAT); - registry.put(HEARTBEAT_ACK.value(), HEARTBEAT_ACK); - registry.put(ABORT.value(), ABORT); - registry.put(SHUTDOWN.value(), SHUTDOWN); - registry.put(SHUTDOWN_ACK.value(), SHUTDOWN_ACK); - registry.put(ERROR.value(), ERROR); - registry.put(COOKIE_ECHO.value(), COOKIE_ECHO); - registry.put(COOKIE_ACK.value(), COOKIE_ACK); - registry.put(ECNE.value(), ECNE); - registry.put(CWR.value(), CWR); - registry.put(SHUTDOWN_COMPLETE.value(), SHUTDOWN_COMPLETE); - } - - /** @return an ActionForUnkownType object. */ - public ActionForUnkownType getActionForUnkownType() { - int val = (value() >> 6) & 0x03; - return ActionForUnkownType.values()[val]; - } - - /** - * @param value value - * @param name name - */ - public SCTPChunkType(Byte value, String name) { - super(value, name); - } - - /** - * @param value value - * @return a SCTPChunkType object. - */ - public static SCTPChunkType getInstance(Byte value) { - if (registry.containsKey(value)) { - return registry.get(value); - } else { - return new SCTPChunkType(value, "unknown"); - } - } - - /** - * @param type type - * @return a SCTPChunkType object. - */ - public static SCTPChunkType register(SCTPChunkType type) { - return registry.put(type.value(), type); - } - - /** @return the value of this object as an int. */ - public int valueAsInt() { - return 0xFF & value(); - } - - /** @return a string representation of this value. */ - @Override - public String valueAsString() { - return String.valueOf(valueAsInt()); - } - - @Override - public int compareTo(SCTPChunkType o) { - return value().compareTo(o.value()); - } - - /** - * Action that must be taken if the processing endpoint does not recognize the Chunk Type. - * (highest-order 2 bits of the Chunk Type) - * - * @see RFC 4960 - * @author Kaito Yamada - * @since pcap4j 1.6.6 - */ - public static enum ActionForUnkownType { - - /** - * Stop processing this SCTP packet and discard it, do not process any further chunks within it. - */ - DISCARD, - - /** - * Stop processing this SCTP packet and discard it, do not process any further chunks within it, - * and report the unrecognized chunk in an 'Unrecognized Chunk Type'. - */ - DISCARD_AND_REPORT, - - /** Skip this chunk and continue processing. */ - SKIP, - - /** - * Skip this chunk and continue processing, but report in an ERROR chunk using the 'Unrecognized - * Chunk Type' cause of error. - */ - SKIP_AND_REPORT, - } -} \ No newline at end of file diff --git a/javasrc/net/sourceforge/jpcap/net/SCTPFields.java b/javasrc/net/sourceforge/jpcap/net/SCTPFields.java deleted file mode 100644 index 8839e18..0000000 --- a/javasrc/net/sourceforge/jpcap/net/SCTPFields.java +++ /dev/null @@ -1,97 +0,0 @@ -// $Id: SCTPFields.java,v 1.00 2021/01/10 $ - -/*************************************************************************** - * * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * SCTP protocol field encoding information. - * - * @author - * @version - * @lastModifiedBy - * @lastModifiedAt $Date: 2021/01/25 $ - */ -public interface SCTPFields -{ - - /** - * SCTP header - * - *

    -	   *  0                              16                            31
    -	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -	   * |           Src Port            |           Dst Port            |
    -	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -	   * |                        Verification Tag                       |
    -	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -	   * |                            Checksum                           |
    -	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -	   * |                          Chunk #1                             |
    -	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -	   * |                           ...                                 |
    -	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -	   * |                          Chunk #n                             |
    -	   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -	   * 
    - * - * @see RFC 4960 - */ - int SRC_PORT_OFFSET = 0; - int SRC_PORT_SIZE = 2; - int DST_PORT_OFFSET = SRC_PORT_OFFSET + SRC_PORT_SIZE; - int DST_PORT_SIZE = 2; - int VERIFICATION_TAG_OFFSET = DST_PORT_OFFSET + DST_PORT_SIZE; - int VERIFICATION_TAG_SIZE = 4; - int CHECKSUM_OFFSET = VERIFICATION_TAG_OFFSET + VERIFICATION_TAG_SIZE; - int CHECKSUM_SIZE = 4; - int CHUNKS_OFFSET = CHECKSUM_OFFSET + CHECKSUM_SIZE; - - - /** - * SCTP Chunk - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Chunk Type | Chunk Flags | Chunk Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - \ \ - / Chunk Value / - \ \ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - **/ - - int CHUNK_TYPE_OFFSET = 0; - int CHUNK_TYPE_SIZE = 1; - int CHUNK_FLAGS_OFFSET = CHUNK_TYPE_OFFSET + CHUNK_TYPE_SIZE; - int CHUNK_FLAGS_SIZE = 1; - int CHUNK_LEN_OFFSET = CHUNK_FLAGS_OFFSET + CHUNK_FLAGS_SIZE; - int CHUNK_LEN_SIZE = 2; - int CHUNK_RAWDATA_OFFSET = CHUNK_LEN_OFFSET + CHUNK_LEN_SIZE; - - /** - * 3.3.1 Payload Data (DATA) (0) - The following format MUST be used for the DATA chunk: - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type = 0 | Reserved|U|B|E| Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TSN | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Stream Identifier S | Stream Sequence Number n | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Payload Protocol Identifier | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - \ \ - / User Data (seq n of Stream S) / - \ \ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - int CHUNK_USERDATA_OFFSET = CHUNK_RAWDATA_OFFSET + 12; //Only USER Data from DATA chunk is interesting -} diff --git a/javasrc/net/sourceforge/jpcap/net/SCTPPacket.java b/javasrc/net/sourceforge/jpcap/net/SCTPPacket.java deleted file mode 100644 index 8f466c2..0000000 --- a/javasrc/net/sourceforge/jpcap/net/SCTPPacket.java +++ /dev/null @@ -1,358 +0,0 @@ -// $Id: SCTPPacket.java,v 1.00 21/01/10 $ - -/*************************************************************************** - * * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.AnsiEscapeSequences; -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - -import java.util.ArrayList; -import java.util.List; - - -/** - * A SCTP packet. - *

    - * Extends an IP packet, adding a SCTP header and SCTP data payload. - * - * @author - * @version - * @lastModifiedBy - * @lastModifiedAt $Date: 2021/01/25 $ - */ -public class SCTPPacket extends IPPacket implements SCTPFields, Serializable -{ - int srcPort; - int dstPort; - int verificationTag; - int checksum; - - /** - * Create a new SCTP packet. - */ - public SCTPPacket(int lLen, byte [] bytes) { - super(lLen,bytes); - // set SCTP header length - _sctpHeaderLength = CHUNKS_OFFSET; - - // set data (payload) length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - int tmpLen = getLength() - getIpHeaderLength() - _sctpHeaderLength; - _payloadDataLength = (tmpLen < 0) ? 0 : tmpLen; - } - - /** - * Create a new SCTP packet. - */ - public SCTPPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - private int _sourcePort; - private boolean _sourcePortSet = false; - /** - * Fetch the port number on the source host. - */ - public int getSourcePort() { - if(! _sourcePortSet) { - _sourcePort = - ArrayHelper.extractInteger(_bytes, _ipOffset + SRC_PORT_OFFSET, SRC_PORT_SIZE); - _sourcePortSet = true; - } - return _sourcePort; - } - - private int _destinationPort; - private boolean _destinationPortSet = false; - /** - * Fetches the port number on the destination host. - */ - public int getDestinationPort() { - if(! _destinationPortSet) { - _destinationPort = - ArrayHelper.extractInteger(_bytes, _ipOffset + DST_PORT_OFFSET, DST_PORT_SIZE); - _destinationPortSet = true; - } - return _destinationPort; - } - - private long _verificationtag; - private boolean _verificationtagSet = false; - /** - * Fetch the packet verification tag. - */ - public long getVerificationTag() { - if(! _verificationtagSet) { - _verificationtag = - ArrayHelper.extractLong(_bytes, _ipOffset + VERIFICATION_TAG_OFFSET, VERIFICATION_TAG_SIZE); - _verificationtagSet = true; - } - return _verificationtag; - } - - private int _checksum; - private boolean _checksumSet = false; - /** - * Fetch the packet acknowledgment number. - */ - public int getSCTPChecksum() { - if(! _checksumSet) { - _checksum = - ArrayHelper.extractInteger/*extractLong*/(_bytes, _ipOffset + CHECKSUM_OFFSET, CHECKSUM_SIZE); - _checksumSet = true; - } - return _checksum; - } - - /** - * Fetch the header checksum. - */ - public int getChecksum() { - return getSCTPChecksum(); - } - - // this gets set by the constructor - private int _sctpHeaderLength; - - /** - * Fetch the SCTP header length in bytes. - */ - public int getSCTPHeaderLength() { - return _sctpHeaderLength; - } - - /** - * Fetch the SCTP header length in bytes. - */ - public int getSctpHeaderLength() { - // this is the old method call, but everything else uses all caps for - // SCTP, so in the interest of consistency... - return getSCTPHeaderLength(); - } - - /** - * Fetches the packet SCTP header length. - */ - public int getHeaderLength() { - return getSCTPHeaderLength(); - } - - // this gets set by the constructor - private int _payloadDataLength; - /** - * Fetches the length of the payload data. - */ - public int getPayloadDataLength() { - return _payloadDataLength; - } - - - private byte[] _sctpHeaderBytes = null; - /** - * Fetch the SCTP header a byte array. - */ - public byte[] getSCTPHeader() { - if(_sctpHeaderBytes == null) { - _sctpHeaderBytes = - PacketEncoding.extractHeader(_ipOffset, getSctpHeaderLength(), _bytes); - } - return _sctpHeaderBytes; - } - - /** - * Fetch the SCTP header as a byte array. - */ - public byte[] getHeader() { - return getSCTPHeader(); - } - - private byte[] _sctpDataBytes = null; - /** - * Fetch the SCTP data as a byte array. - */ - public byte[] getSCTPData() { - if(_sctpDataBytes == null) { - // set data length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - _sctpDataBytes = PacketEncoding.extractData(_ipOffset, getSctpHeaderLength(), _bytes, getPayloadDataLength()); - } - return _sctpDataBytes; - } - - /** - * Fetch the SCTP data as a byte array. - */ - public byte[] getData() { - return getSCTPData(); - } - - private List _chunks=null; - /** @return chunks */ - public List getChunks() { - - if(_chunks == null) { - // set data length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - _chunks = new ArrayList(); - int length = getPayloadDataLength(); - int offset = 0; - - while (length != 0) { - SCTPChunkType type = SCTPChunkType.getInstance(this.getData()[offset]); - SctpChunk newOne = new SctpChunk(this.getData(), offset, length, type); - - if (type == SCTPChunkType.DATA) {//keep only userdata chunks - _chunks.add(newOne); - } - - int newOneLen = newOne.length(); - offset += newOneLen; - length -= newOneLen; - } - } - return new ArrayList(_chunks); - } - - /** - * Convert this SCTP packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this SCTP packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("SCTPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(getSourceAddress()); - buffer.append('.'); - buffer.append(IPPort.getName(getSourcePort())); - buffer.append(" -> "); - buffer.append(getDestinationAddress()); - buffer.append('.'); - buffer.append(IPPort.getName(getDestinationPort())); - - buffer.append(" l=" + getSCTPHeaderLength() + "," + getPayloadDataLength()); - - int i=0; - while(i < getChunks().size()) { - buffer.append(getChunks().get(i).toString()); - i++; - } - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Convert this SCTP packet to a verbose. - */ - public String toColoredVerboseString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("SCTPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append("sport=" + getSourcePort() + ", "); - buffer.append("dport=" + getDestinationPort() + ", "); - buffer.append("hlen=" + getHeaderLength() + ", "); - - buffer.append("wsize=" + getVerificationTag() + ", "); - buffer.append("sum=0x" + Integer.toHexString(getChecksum()) + ", "); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.YELLOW; - } - - private String _rcsid = - "$Id: SCTPPacket.java,v 1.00 2021/01/10 $"; - - /** - * The interface representing an SCTP Chunk Field. - * @see RFC 4960 - */ - public class SctpChunk /*extends Serializable*/ { - - SCTPChunkType _SCTPChunkType; - int _chunkFlags; - int _chunkLen; - byte[] _chunkRawData; - - SctpChunk(byte[] _bytes, int _offset, int length, SCTPChunkType type){ - _SCTPChunkType=type; - _chunkFlags=ArrayHelper.extractInteger(_bytes, _offset + CHUNK_FLAGS_OFFSET, CHUNK_FLAGS_SIZE); - _chunkLen=ArrayHelper.extractInteger(_bytes, _offset + CHUNK_LEN_OFFSET, CHUNK_LEN_SIZE); - _chunkRawData=PacketEncoding.extractData(_offset, CHUNK_RAWDATA_OFFSET, _bytes, length()-CHUNK_RAWDATA_OFFSET); - if (_SCTPChunkType == SCTPChunkType.DATA) {//keep only userdata - _chunkRawData=PacketEncoding.extractData(_offset, CHUNK_USERDATA_OFFSET, _bytes, length()-CHUNK_USERDATA_OFFSET); - } - } - - /** @return type */ - public SCTPChunkType getType() { - return _SCTPChunkType; - } - - /** @return length */ - public int length() { - return _chunkLen; - } - - /** @return raw data */ - public byte[] getRawData() { - return _chunkRawData; - } - - /** @return user data */ - public byte[] getUserData() { - return _chunkRawData; - } - - public String toString() { - return toColoredString(false); - } - - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("SCTP Chunk"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(getType().toString()); - buffer.append(':'); - buffer.append(" l=" + length() ); - buffer.append(']'); - - return buffer.toString(); - } - - public String getColor() { - return AnsiEscapeSequences.YELLOW; - } - } - -} - - diff --git a/javasrc/net/sourceforge/jpcap/net/TCPFields.java b/javasrc/net/sourceforge/jpcap/net/TCPFields.java deleted file mode 100644 index aa07361..0000000 --- a/javasrc/net/sourceforge/jpcap/net/TCPFields.java +++ /dev/null @@ -1,118 +0,0 @@ -// $Id: TCPFields.java,v 1.5 2003/10/29 02:38:27 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * IP protocol field encoding information. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/10/29 02:38:27 $ - */ -public interface TCPFields -{ - // flag bitmasks - - int TCP_URG_MASK = 0x0020; - int TCP_ACK_MASK = 0x0010; - int TCP_PSH_MASK = 0x0008; - int TCP_RST_MASK = 0x0004; - int TCP_SYN_MASK = 0x0002; - int TCP_FIN_MASK = 0x0001; - - - // field lengths - - /** - * Length of a TCP port in bytes. - */ - int TCP_PORT_LEN = 2; - - /** - * Length of the sequence number in bytes. - */ - int TCP_SEQ_LEN = 4; - - /** - * Length of the acknowledgment number in bytes. - */ - int TCP_ACK_LEN = 4; - - /** - * Length of the header length and flags field in bytes. - */ - int TCP_FLAG_LEN = 2; - - /** - * Length of the window size field in bytes. - */ - int TCP_WIN_LEN = 2; - - /** - * Length of the checksum field in bytes. - */ - int TCP_CSUM_LEN = 2; - - /** - * Length of the urgent field in bytes. - */ - int TCP_URG_LEN = 2; - - - // field positions - - /** - * Position of the source port field. - */ - int TCP_SP_POS = 0; - - /** - * Position of the destination port field. - */ - int TCP_DP_POS = TCP_PORT_LEN; - - /** - * Position of the sequence number field. - */ - int TCP_SEQ_POS = TCP_DP_POS + TCP_PORT_LEN; - - /** - * Position of the acknowledgment number field. - */ - int TCP_ACK_POS = TCP_SEQ_POS + TCP_SEQ_LEN; - - /** - * Position of the header length and flags field. - */ - int TCP_FLAG_POS = TCP_ACK_POS + TCP_ACK_LEN; - - /** - * Position of the window size field. - */ - int TCP_WIN_POS = TCP_FLAG_POS + TCP_FLAG_LEN; - - /** - * Position of the checksum field. - */ - int TCP_CSUM_POS = TCP_WIN_POS + TCP_WIN_LEN; - - /** - * Position of the urgent pointer field. - */ - int TCP_URG_POS = TCP_CSUM_POS + TCP_CSUM_LEN; - - - // complete header length - - /** - * Length in bytes of a TCP header. - */ - int TCP_HEADER_LEN = TCP_URG_POS + TCP_URG_LEN; // == 20 -} diff --git a/javasrc/net/sourceforge/jpcap/net/TCPPacket.java b/javasrc/net/sourceforge/jpcap/net/TCPPacket.java deleted file mode 100644 index 618d02f..0000000 --- a/javasrc/net/sourceforge/jpcap/net/TCPPacket.java +++ /dev/null @@ -1,427 +0,0 @@ -// $Id: TCPPacket.java,v 1.22 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.AnsiEscapeSequences; -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * A TCP packet. - *

    - * Extends an IP packet, adding a TCP header and TCP data payload. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.22 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class TCPPacket extends IPPacket implements TCPFields, Serializable -{ - /** - * Create a new TCP packet. - */ - public TCPPacket(int lLen, byte [] bytes) { - super(lLen,bytes); - // set TCP header length - _tcpHeaderLength = - ((ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_FLAG_POS, - TCP_FLAG_LEN) >> 12) & 0xf) * 4; - // set data (payload) length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - int tmpLen = - getLength() - getIpHeaderLength() - _tcpHeaderLength; - _payloadDataLength = (tmpLen < 0) ? 0 : tmpLen; - } - - /** - * Create a new TCP packet. - */ - public TCPPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - private int _sourcePort; - private boolean _sourcePortSet = false; - /** - * Fetch the port number on the source host. - */ - public int getSourcePort() { - if(! _sourcePortSet) { - _sourcePort = - ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_SP_POS, - TCP_PORT_LEN); - _sourcePortSet = true; - } - return _sourcePort; - } - - private int _destinationPort; - private boolean _destinationPortSet = false; - /** - * Fetches the port number on the destination host. - */ - public int getDestinationPort() { - if(! _destinationPortSet) { - _destinationPort = - ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_DP_POS, - TCP_PORT_LEN); - _destinationPortSet = true; - } - return _destinationPort; - } - - private long _sequenceNumber; - private boolean _sequenceNumberSet = false; - /** - * Fetch the packet sequence number. - */ - public long getSequenceNumber() { - if(! _sequenceNumberSet) { - _sequenceNumber = - ArrayHelper.extractLong(_bytes, _ipOffset + TCP_SEQ_POS, - TCP_SEQ_LEN); - _sequenceNumberSet = true; - } - return _sequenceNumber; - } - - private long _acknowledgmentNumber; - private boolean _acknowledgmentNumberSet = false; - /** - * Fetch the packet acknowledgment number. - */ - public long getAcknowledgmentNumber() { - if(! _acknowledgmentNumberSet) { - _acknowledgmentNumber = - ArrayHelper.extractLong(_bytes, _ipOffset + TCP_ACK_POS, - TCP_ACK_LEN); - _acknowledgmentNumberSet = true; - } - return _acknowledgmentNumber; - } - - /** - * Fetch the packet acknowledgment number. - */ - public long getAcknowledgementNumber() { - return getAcknowledgmentNumber(); - } - - // this gets set by the constructor - private int _tcpHeaderLength; - - /** - * Fetch the TCP header length in bytes. - */ - public int getTCPHeaderLength() { - return _tcpHeaderLength; - } - - /** - * Fetch the TCP header length in bytes. - */ - public int getTcpHeaderLength() { - // this is the old method call, but everything else uses all caps for - // TCP, so in the interest of consistency... - return getTCPHeaderLength(); - } - - /** - * Fetches the packet TCP header length. - */ - public int getHeaderLength() { - return getTCPHeaderLength(); - } - - // this gets set by the constructor - private int _payloadDataLength; - /** - * Fetches the length of the payload data. - */ - public int getPayloadDataLength() { - return _payloadDataLength; - } - - private int _windowSize; - private boolean _windowSizeSet = false; - /** - * Fetch the window size. - */ - public int getWindowSize() { - if(! _windowSizeSet) { - _windowSize = - ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_WIN_POS, - TCP_WIN_LEN); - _windowSizeSet = true; - } - return _windowSize; - } - - private int _tcpChecksum; - private boolean _tcpChecksumSet = false; - /** - * Fetch the header checksum. - */ - public int getTCPChecksum() { - if(! _tcpChecksumSet) { - _tcpChecksum = - ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_CSUM_POS, - TCP_CSUM_LEN); - _tcpChecksumSet = true; - } - return _tcpChecksum; - } - - /** - * Fetch the header checksum. - */ - public int getChecksum() { - return getTCPChecksum(); - } - - private int _urgentPointer; - private boolean _urgentPointerSet = false; - /** - * Fetch the urgent pointer. - */ - public int getUrgentPointer() { - if(! _urgentPointerSet) { - _urgentPointer = - ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_URG_POS, - TCP_URG_LEN); - _urgentPointerSet = true; - } - return _urgentPointer; - } - - // next value holds all the flags - private int _allFlags; - private boolean _allFlagsSet = false; - private int getAllFlags() { - if(! _allFlagsSet) { - _allFlags = - ArrayHelper.extractInteger(_bytes, _ipOffset + TCP_FLAG_POS, - TCP_FLAG_LEN); - } - return _allFlags; - } - - private boolean _isUrg; - private boolean _isUrgSet = false; - /** - * Check the URG flag, flag indicates if the urgent pointer is valid. - */ - public boolean isUrg() { - if(! _isUrgSet) { - _isUrg = (getAllFlags() & TCP_URG_MASK) != 0; - _isUrgSet = true; - } - return _isUrg; - } - - private boolean _isAck; - private boolean _isAckSet = false; - /** - * Check the ACK flag, flag indicates if the ack number is valid. - */ - public boolean isAck() { - if(! _isAckSet) { - _isAck = (getAllFlags () & TCP_ACK_MASK) != 0; - _isAckSet = true; - } - return _isAck; - } - - private boolean _isPsh; - private boolean _isPshSet = false; - /** - * Check the PSH flag, flag indicates the receiver should pass the - * data to the application as soon as possible. - */ - public boolean isPsh() { - if(! _isPshSet) { - _isPsh = (getAllFlags() & TCP_PSH_MASK) != 0; - _isPshSet = true; - } - return _isPsh; - } - - private boolean _isRst; - private boolean _isRstSet = false; - /** - * Check the RST flag, flag indicates the session should be reset between - * the sender and the receiver. - */ - public boolean isRst() { - if(! _isRstSet) { - _isRst = (getAllFlags() & TCP_RST_MASK) != 0; - _isRstSet = true; - } - return _isRst; - } - - private boolean _isSyn; - private boolean _isSynSet = false; - /** - * Check the SYN flag, flag indicates the sequence numbers should - * be synchronized between the sender and receiver to initiate - * a connection. - */ - public boolean isSyn() { - if(! _isSynSet) { - _isSyn = (getAllFlags() & TCP_SYN_MASK) != 0; - _isSynSet = true; - } - return _isSyn; - } - - private boolean _isFin; - private boolean _isFinSet = false; - /** - * Check the FIN flag, flag indicates the sender is finished sending. - */ - public boolean isFin() { - if(! _isFinSet) { - _isFin = (getAllFlags () & TCP_FIN_MASK) != 0; - _isFinSet = true; - } - return _isFin; - } - - private byte[] _tcpHeaderBytes = null; - /** - * Fetch the TCP header a byte array. - */ - public byte[] getTCPHeader() { - if(_tcpHeaderBytes == null) { - _tcpHeaderBytes = - PacketEncoding.extractHeader(_ipOffset, getTcpHeaderLength(), - _bytes); - } - return _tcpHeaderBytes; - } - - /** - * Fetch the TCP header as a byte array. - */ - public byte[] getHeader() { - return getTCPHeader(); - } - - private byte[] _tcpDataBytes = null; - /** - * Fetch the TCP data as a byte array. - */ - public byte[] getTCPData() { - if(_tcpDataBytes == null) { - // set data length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - _tcpDataBytes = - PacketEncoding.extractData(_ipOffset, getTcpHeaderLength(), - _bytes, getPayloadDataLength()); - } - return _tcpDataBytes; - } - - /** - * Fetch the TCP data as a byte array. - */ - public byte[] getData() { - return getTCPData(); - } - - - /** - * Convert this TCP packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this TCP packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("TCPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(getSourceAddress()); - buffer.append('.'); - buffer.append(IPPort.getName(getSourcePort())); - buffer.append(" -> "); - buffer.append(getDestinationAddress()); - buffer.append('.'); - buffer.append(IPPort.getName(getDestinationPort())); - if(isUrg()) - buffer.append(" urg[0x" + Integer.toHexString(getUrgentPointer()) + "]"); - if(isAck()) - buffer.append(" ack[0x" + - Long.toHexString(getAcknowledgmentNumber()) + "]"); - if(isPsh()) buffer.append(" psh"); - if(isRst()) buffer.append(" rst"); - if(isSyn()) - buffer.append(" syn[0x" + - Long.toHexString(getSequenceNumber()) + "]"); - if(isFin()) buffer.append(" fin"); - buffer.append(" l=" + getTCPHeaderLength() + "," + - getPayloadDataLength()); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Convert this TCP packet to a verbose. - */ - public String toColoredVerboseString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("TCPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append("sport=" + getSourcePort() + ", "); - buffer.append("dport=" + getDestinationPort() + ", "); - buffer.append("seqn=0x" + Long.toHexString(getSequenceNumber()) + ", "); - buffer.append("ackn=0x" + - Long.toHexString(getAcknowledgmentNumber()) + ", "); - buffer.append("hlen=" + getHeaderLength() + ", "); - buffer.append("urg=" + isUrg() + ", "); - buffer.append("ack=" + isAck() + ", "); - buffer.append("psh=" + isPsh() + ", "); - buffer.append("rst=" + isRst() + ", "); - buffer.append("syn=" + isSyn() + ", "); - buffer.append("fin=" + isFin() + ", "); - buffer.append("wsize=" + getWindowSize() + ", "); - buffer.append("sum=0x" + Integer.toHexString(getChecksum()) + ", "); - buffer.append("uptr=0x" + Integer.toHexString(getUrgentPointer())); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.YELLOW; - } - - - private String _rcsid = - "$Id: TCPPacket.java,v 1.22 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/TypesOfService.java b/javasrc/net/sourceforge/jpcap/net/TypesOfService.java deleted file mode 100644 index ea97e3a..0000000 --- a/javasrc/net/sourceforge/jpcap/net/TypesOfService.java +++ /dev/null @@ -1,39 +0,0 @@ -// $Id: TypesOfService.java,v 1.2 2001/06/21 07:48:07 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * Type of service code constants for IP. Type of service describes - * how a packet should be handled. - *

    - * TOS is an 8-bit record in an IP header which contains a 3-bit - * precendence field, 4 TOS bit fields and a 0 bit. - *

    - * The following constants are bit masks which can be logically and'ed - * with the 8-bit IP TOS field to determine what type of service is set. - *

    - * Taken from TCP/IP Illustrated V1 by Richard Stevens, p34. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.2 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/21 07:48:07 $ - */ -public interface TypesOfService -{ - int MINIMIZE_DELAY = 0x10; - - int MAXIMIZE_THROUGHPUT = 0x08; - - int MAXIMIZE_RELIABILITY = 0x04; - - int MINIMIZE_MONETARY_COST = 0x02; - - int UNUSED = 0x01; -} diff --git a/javasrc/net/sourceforge/jpcap/net/UDPFields.java b/javasrc/net/sourceforge/jpcap/net/UDPFields.java deleted file mode 100644 index 5d687f7..0000000 --- a/javasrc/net/sourceforge/jpcap/net/UDPFields.java +++ /dev/null @@ -1,68 +0,0 @@ -// $Id: UDPFields.java,v 1.3 2001/06/27 01:47:00 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - - -/** - * IP protocol field encoding information. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/27 01:47:00 $ - */ -public interface UDPFields -{ - // field lengths - - /** - * Length of a UDP port in bytes. - */ - int UDP_PORT_LEN = 2; - - /** - * Length of the header length field in bytes. - */ - int UDP_LEN_LEN = 2; - - /** - * Length of the checksum field in bytes. - */ - int UDP_CSUM_LEN = 2; - - - // field positions - - /** - * Position of the source port. - */ - int UDP_SP_POS = 0; - - /** - * Position of the destination port. - */ - int UDP_DP_POS = UDP_PORT_LEN; - - /** - * Position of the header length. - */ - int UDP_LEN_POS = UDP_DP_POS + UDP_PORT_LEN; - - /** - * Position of the header checksum length. - */ - int UDP_CSUM_POS = UDP_LEN_POS + UDP_LEN_LEN; - - - // complete header length - - /** - * Length of a UDP header in bytes. - */ - int UDP_HEADER_LEN = UDP_CSUM_POS + UDP_CSUM_LEN; // == 8 -} diff --git a/javasrc/net/sourceforge/jpcap/net/UDPPacket.java b/javasrc/net/sourceforge/jpcap/net/UDPPacket.java deleted file mode 100644 index e9eb513..0000000 --- a/javasrc/net/sourceforge/jpcap/net/UDPPacket.java +++ /dev/null @@ -1,168 +0,0 @@ -// $Id: UDPPacket.java,v 1.18 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.net; - -import net.sourceforge.jpcap.util.AnsiEscapeSequences; -import net.sourceforge.jpcap.util.ArrayHelper; -import net.sourceforge.jpcap.util.Timeval; -import java.io.Serializable; - - -/** - * A UDP packet. - *

    - * Extends an IP packet, adding a UDP header and UDP data payload. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.18 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class UDPPacket extends IPPacket implements UDPFields, Serializable -{ - /** - * Create a new UDP packet. - */ - public UDPPacket(int lLen, byte [] bytes) { - super(lLen, bytes); - } - - /** - * Create a new UDP packet. - */ - public UDPPacket(int lLen, byte [] bytes, Timeval tv) { - this(lLen, bytes); - this._timeval = tv; - } - - /** - * Fetch the port number on the source host. - */ - public int getSourcePort() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_SP_POS, - UDP_PORT_LEN); - } - - /** - * Fetch the port number on the target host. - */ - public int getDestinationPort() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_DP_POS, - UDP_PORT_LEN); - } - - /** - * Fetch the total length of the UDP packet, including header and - * data payload, in bytes. - */ - public int getLength() { - // should produce the same value as header.length + data.length - return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_LEN_POS, - UDP_LEN_LEN); - } - - /** - * Fetch the header checksum. - */ - public int getUDPChecksum() { - return ArrayHelper.extractInteger(_bytes, _ipOffset + UDP_CSUM_POS, - UDP_CSUM_LEN); - } - - /** - * Fetch the header checksum. - */ - public int getChecksum() { - return getUDPChecksum(); - } - - private byte[] _udpHeaderBytes = null; - /** - * Fetch the UDP header a byte array. - */ - public byte[] getUDPHeader() { - if(_udpHeaderBytes == null) { - _udpHeaderBytes = - PacketEncoding.extractHeader(_ipOffset, UDP_HEADER_LEN, _bytes); - } - return _udpHeaderBytes; - } - - /** - * Fetch the UDP header as a byte array. - */ - public byte[] getHeader() { - return getUDPHeader(); - } - - private byte[] _udpDataBytes = null; - /** - * Fetch the UDP data as a byte array. - */ - public byte[] getUDPData() { - if(_udpDataBytes == null) { - // set data length based on info in headers (note: tcpdump - // can return extra junk bytes which bubble up to here - int tmpLen = _bytes.length - _ipOffset - UDP_HEADER_LEN; - _udpDataBytes = - PacketEncoding.extractData(_ipOffset, UDP_HEADER_LEN, - _bytes, tmpLen); - } - return _udpDataBytes; - } - - /** - * Fetch the UDP data as a byte array. - */ - public byte[] getData() { - return getUDPData(); - } - - /** - * Convert this UDP packet to a readable string. - */ - public String toString() { - return toColoredString(false); - } - - /** - * Generate string with contents describing this UDP packet. - * @param colored whether or not the string should contain ansi - * color escape sequences. - */ - public String toColoredString(boolean colored) { - StringBuffer buffer = new StringBuffer(); - buffer.append('['); - if(colored) buffer.append(getColor()); - buffer.append("UDPPacket"); - if(colored) buffer.append(AnsiEscapeSequences.RESET); - buffer.append(": "); - buffer.append(getSourceAddress()); - buffer.append('.'); - buffer.append(IPPort.getName(getSourcePort())); - buffer.append(" -> "); - buffer.append(getDestinationAddress()); - buffer.append('.'); - buffer.append(IPPort.getName(getDestinationPort())); - buffer.append(" l=" + UDP_HEADER_LEN + "," + (getLength()-UDP_HEADER_LEN)); - buffer.append(']'); - - return buffer.toString(); - } - - /** - * Fetch ascii escape sequence of the color associated with this packet type. - */ - public String getColor() { - return AnsiEscapeSequences.LIGHT_GREEN; - } - - - private String _rcsid = - "$Id: UDPPacket.java,v 1.18 2004/05/05 23:14:45 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/net/makefile b/javasrc/net/sourceforge/jpcap/net/makefile deleted file mode 100644 index 2abdfa4..0000000 --- a/javasrc/net/sourceforge/jpcap/net/makefile +++ /dev/null @@ -1,68 +0,0 @@ -# $Id: makefile,v 1.16 2002/07/10 23:29:56 pcharles Exp $ -# -# package net.sourceforge.jpcap.capture -# -PKG = net.sourceforge.jpcap.net -PKG_DIR = $(subst .,/, $(PKG)) -PKG_UND = $(subst .,_, $(PKG)) -REL = ../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -WRAPPER = PacketCapture - -JAVA = \ - RawPacket \ - \ - EthernetProtocol \ - EthernetProtocols \ - IPProtocol \ - IPProtocols \ - IPVersions \ - TypesOfService \ - LinkLayer \ - LinkLayers \ - ICMPMessage \ - ICMPMessages \ - IGMPMessage \ - IGMPMessages \ - IPPort \ - IPPorts \ - IPAddress \ - MACAddress \ - \ - \ - PacketEncodingTest \ - EthernetPacketTest \ - IPPacketTest \ - TCPPacketTest \ - PacketEncoding \ - EthernetFields \ - ARPFields \ - IPFields \ - ICMPFields \ - IGMPFields \ - TCPFields \ - UDPFields \ - \ - Packet \ - EthernetPacket \ - ARPPacket \ - IPPacket \ - ICMPPacket \ - IGMPPacket \ - TCPPacket \ - UDPPacket \ - \ - PacketFactory - - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - - -all: $(JAVA_CLASSES) - - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/net/package.html b/javasrc/net/sourceforge/jpcap/net/package.html deleted file mode 100644 index e0e908e..0000000 --- a/javasrc/net/sourceforge/jpcap/net/package.html +++ /dev/null @@ -1,35 +0,0 @@ - - - -net.sourceforge.jpcap.net - - - - -Provides a hierarchical inheritance-based library of -network packet types and protocols. -

    -On an ethernet network, data is nested and encapsulated in headers. -For example, an ethernet link-level header might encapsulate an -IP or ARP header. An IP header can encapsulate a UDP datagram -which contains a DNS protocol message. -

    -In this package, the relationships between these packet types -are expressed via inheritance and the individual packet classes -encapsulate the details of each specific protocol. -

    -The class PacketFactory converts raw byte data into packet instances. -

    -Other utility classes in this package provide store the many port numbers, -message types and codes associated with different protocols. - - - diff --git a/javasrc/net/sourceforge/jpcap/tutorial/README b/javasrc/net/sourceforge/jpcap/tutorial/README deleted file mode 100644 index d2db52a..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/README +++ /dev/null @@ -1,11 +0,0 @@ -$Id: README,v 1.4 2004/09/29 20:13:09 pcharles Exp $ - - example1 - Raw packet counter - example2 - Raw packet capture with data extraction - example3 - Raw packet capture with packet type query - example4 - Packet capture with ICMP filtering - example5 - ICMP packet counter - example6 - ICMP source/destination address query - example7 - Extracts text data from a telnet session - example15 - PacketCapture.endCapture() example - sniffer - Generic Sniffer application diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java b/javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java deleted file mode 100644 index 60f5241..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example1/Example1.java +++ /dev/null @@ -1,73 +0,0 @@ -// $Id: Example1.java,v 1.3 2002/02/18 15:33:00 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.example1; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * jpcap Tutorial - Example 1 - * - * @author Jonas Lehmann and Patrick Charles - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2002/02/18 15:33:00 $ - */ -public class Example1 -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = 10; - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture m_pcap; - private String m_device; - - public Example1() throws Exception { - // Step 1: Instantiate Capturing Engine - m_pcap = new PacketCapture(); - - // Step 2: Check for devices - m_device = m_pcap.findDevice(); - - // Step 3: Open Device for Capturing (requires root) - m_pcap.open(m_device, true); - - // Step 4: Add a BPF Filter (see tcpdump documentation) - m_pcap.setFilter(FILTER, true); - - // Step 5: Register a Listener for Raw Packets - m_pcap.addRawPacketListener(new RawPacketHandler()); - - // Step 6: Capture Data (max. PACKET_COUNT packets) - m_pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) { - try { - Example1 example = new Example1(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } -} - - -class RawPacketHandler implements RawPacketListener -{ - private static int m_counter = 0; - - public void rawPacketArrived(RawPacket data) { - m_counter++; - System.out.println("Received packet (" + m_counter + ")"); - } -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example1/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example1/makefile deleted file mode 100644 index 7c713b1..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example1/makefile +++ /dev/null @@ -1,20 +0,0 @@ -# $Id: makefile,v 1.1 2001/05/30 11:45:20 freecoder Exp $ -# -# package net.sourceforge.jpcap.tutorial.example1 -# -PKG = net.sourceforge.jpcap.tutorial.example1 -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -JAVA = \ - Example1 - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - -all: $(JAVA_CLASSES) - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java b/javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java deleted file mode 100644 index e1a9534..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example15/Example15.java +++ /dev/null @@ -1,77 +0,0 @@ -/*************************************************************************** - * Christian Tzolov (tzolov@cs.utwente.nl) * - * Nikolay Diakov (diakov@cs.utwnte.nl) * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.example15; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - -/* - * This example utilizes the endCapture() feature. - */ -public class Example15 { - private static final int INFINITE = -1; - private static final int PACKET_COUNT = INFINITE; - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture m_pcap; - private String m_device; - - - public Example15() throws Exception { - // Step 1: Instantiate Capturing Engine - m_pcap = new PacketCapture(); - - // Step 2: Check for devices - m_device = m_pcap.findDevice(); - - // Step 3: Open Device for Capturing (requires root) - m_pcap.open(m_device, true); - - // Step 4: Add a BPF Filter (see tcpdump documentation) - m_pcap.setFilter(FILTER, true); - - // Step 5: Register a Listener for Raw Packets - m_pcap.addRawPacketListener(new RawPacketHandler(m_pcap)); - - // Step 6: Capture Data (max. PACKET_COUNT packets) - m_pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) { - try { - Example15 example = new Example15(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } -} - - -class RawPacketHandler implements RawPacketListener -{ - private static int m_counter = 0; - private PacketCapture m_pcap = null; - - public RawPacketHandler(PacketCapture pcap) { - m_counter = 0; - m_pcap = pcap; - } - - public synchronized void rawPacketArrived(RawPacket data) { - m_counter++; - System.out.println("Packet " + m_counter + "\n" + data + "\n"); - - if(condition()) - m_pcap.endCapture(); - } - - private boolean condition() { - return (m_counter == 5) ? true : false; - } -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example15/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example15/makefile deleted file mode 100644 index 1746ee9..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example15/makefile +++ /dev/null @@ -1,20 +0,0 @@ -# $Id: makefile,v 1.1 2002/07/10 23:05:26 pcharles Exp $ -# -# package net.sourceforge.jpcap.tutorial.example15 -# -PKG = net.sourceforge.jpcap.tutorial.example15 -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -JAVA = \ - Example15 - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - -all: $(JAVA_CLASSES) - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java b/javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java deleted file mode 100644 index 0413d2e..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example2/Example2.java +++ /dev/null @@ -1,73 +0,0 @@ -// $Id: Example2.java,v 1.3 2002/02/18 15:33:00 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.example2; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * jpcap Tutorial - Example 2 - * - * @author Jonas Lehmann and Patrick Charles - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2002/02/18 15:33:00 $ - */ -public class Example2 -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = 10; - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture m_pcap; - private String m_device; - - public Example2() throws Exception { - // Step 1: Instantiate Capturing Engine - m_pcap = new PacketCapture(); - - // Step 2: Check for devices - m_device = m_pcap.findDevice(); - - // Step 3: Open Device for Capturing (requires root) - m_pcap.open(m_device, true); - - // Step 4: Add a BPF Filter (see tcpdump documentation) - m_pcap.setFilter(FILTER, true); - - // Step 5: Register a Listener for Raw Packets - m_pcap.addRawPacketListener(new RawPacketHandler()); - - // Step 6: Capture Data (max. PACKET_COUNT packets) - m_pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) { - try { - Example2 example = new Example2(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } -} - - -class RawPacketHandler implements RawPacketListener -{ - private static int m_counter = 0; - - public void rawPacketArrived(RawPacket data) { - m_counter++; - System.out.println("Packet " + m_counter + "\n" + data + "\n"); - } -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example2/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example2/makefile deleted file mode 100644 index bec62d8..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example2/makefile +++ /dev/null @@ -1,20 +0,0 @@ -# $Id: makefile,v 1.1 2001/05/30 11:48:28 freecoder Exp $ -# -# package net.sourceforge.jpcap.tutorial.example1 -# -PKG = net.sourceforge.jpcap.tutorial.example2 -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -JAVA = \ - Example2 - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - -all: $(JAVA_CLASSES) - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java deleted file mode 100644 index 96a2dd1..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3.java +++ /dev/null @@ -1,75 +0,0 @@ -// $Id: Example3.java,v 1.6 2004/05/05 23:14:45 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.example3; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * jpcap Tutorial - Example 3 - * - * @author Jonas Lehmann and Patrick Charles - * @version $Revision: 1.6 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/05/05 23:14:45 $ - */ -public class Example3 -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = INFINITE; - private static int m_counter = 0; - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture m_pcap; - private String m_device; - - public Example3() throws Exception { - // Step 1: Instantiate Capturing Engine - m_pcap = new PacketCapture(); - - // Step 2: Check for devices - m_device = m_pcap.findDevice(); - - // Step 3: Open Device for Capturing (requires root) - m_pcap.open(m_device, true); - - // Step 4: Add a BPF Filter (see tcpdump documentation) - m_pcap.setFilter(FILTER, true); - - // Step 5: Register a Listener for jpcap Packets - m_pcap.addPacketListener(new PacketHandler()); - - // Step 6: Capture Data (max. PACKET_COUNT packets) - m_pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) { - try { - Example3 example = new Example3(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } - -class PacketHandler implements PacketListener -{ - - public void packetArrived(Packet packet) { - m_counter++; - String type = packet.getClass().getName(); - System.out.println("Packet(" + m_counter + ") is of type " + type + "."); - //System.out.println("Packet(" + m_counter + ") time = " + packet.getTimeval()); - //packet.getTimeval(); - } -} -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java deleted file mode 100644 index 25f2203..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3b.java +++ /dev/null @@ -1,120 +0,0 @@ -// $Id: Example3b.java,v 1.5 2004/02/22 22:29:06 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.tutorial.example3; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * jpcap Tutorial - Example 3 - * - * Same as Example 3, but includes multiple listeners. - * - * This class works by default on Linux. For other platforms, change - * the device names 'lo' and 'eth0' below to the devices you'd like to test. - * - * For a multiple, simultaneous capture example that works on any platform, - * see Example3c. - * - * @author Jonas Lehmann and Patrick Charles - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2004/02/22 22:29:06 $ - */ -public class Example3b -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = 10; // INFINITE - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture pcapLo; - private PacketCapture pcapE0; - - PacketHandler phLo; - PacketHandler phE0; - - public Example3b() throws Exception { - // instantiate capture engine - pcapLo = new PacketCapture(); - pcapE0 = new PacketCapture(); - - // open devices for capturing (requires root) - pcapLo.open("lo", true); - pcapE0.open("eth0", true); - - // add a BPF filter (see tcpdump documentation) - pcapLo.setFilter(FILTER, true); - pcapE0.setFilter(FILTER, true); - - // create multiple handlers, each with a separate listener - phLo = new PacketHandler("lo"); - pcapLo.addPacketListener(phLo); - - phE0 = new PacketHandler("eth0"); - pcapE0.addPacketListener(phE0); - - // create a separate thread for each capture instance - CaptureThread ctLo = new CaptureThread(pcapLo, PACKET_COUNT); - CaptureThread ctE0 = new CaptureThread(pcapE0, PACKET_COUNT); - - // capture packets - ctLo.start(); - ctE0.start(); - } - - public static void main(String[] args) { - try { - Example3b example = new Example3b(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } - -class CaptureThread extends Thread -{ - public CaptureThread(PacketCapture pc, int count) { - this.pc = pc; - this.count = count; - } - - public void run() { - try { - pc.capture(count); - } - catch(CapturePacketException cpe) { - cpe.printStackTrace(); - } - } - - PacketCapture pc; - int count; -} - -class PacketHandler implements PacketListener -{ - private int counter = 0; - - public PacketHandler(String name) { - this.name = name; - } - - public void packetArrived(Packet packet) { - counter++; - String type = packet.getClass().getName(); - System.out.println(name + ": Packet(" + counter + - ") is of type " + type + "."); - System.err.println(packet); - } - - String name; -} -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java b/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java deleted file mode 100644 index 65de57d..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example3/Example3c.java +++ /dev/null @@ -1,101 +0,0 @@ -// $Id: Example3c.java,v 1.1 2004/02/22 20:38:34 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2004, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.tutorial.example3; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * Capture packets simultaneously on all detected ethernet devices. - * - * Modifications to Example3 submitted by Anatol Novchenko. - */ -public class Example3c -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = -1; // INFINITE - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture pcap; - private PacketHandler ph; - private CaptureThread ct; - - public Example3c() throws Exception { - // instantiate capture engine - String[] devices = PacketCapture.lookupDevices(); - - // capture packets on all detected devices - for(int i=0;i to <"+dstHost+">"); - } catch( Exception e ) { - e.printStackTrace(); - } - } -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example6/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example6/makefile deleted file mode 100644 index 2f6a4c8..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example6/makefile +++ /dev/null @@ -1,20 +0,0 @@ -# $Id: makefile,v 1.1 2001/05/30 11:54:12 freecoder Exp $ -# -# package net.sourceforge.jpcap.tutorial.example1 -# -PKG = net.sourceforge.jpcap.tutorial.example6 -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -JAVA = \ - Example6 - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - -all: $(JAVA_CLASSES) - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java b/javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java deleted file mode 100644 index c6b39db..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example7/Example7.java +++ /dev/null @@ -1,79 +0,0 @@ -// $Id: Example7.java,v 1.2 2001/07/02 16:44:21 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.example7; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * jpcap Tutorial - Example 7 - * - * @author Jonas Lehmann and Patrick Charles - * @version $Revision: 1.2 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/07/02 16:44:21 $ - * - * First modify the HOST constant to an IP address of a host to sniff. - * The host HOST must support telnet logins for example to work properly. - * - * Run example and telnet to the host HOST. - * All TCP connections to/from the host HOST and the data contents of each - * packet will be displayed. - */ -public class Example7 -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = INFINITE; - private static final String HOST = "172.16.32.32"; - private static final String FILTER = - "host " + HOST + " and proto TCP and port 23"; - - public Example7() throws Exception { - // Initialize jpcap - PacketCapture pcap = new PacketCapture(); - String device = pcap.findDevice(); - pcap.open(device, true); - pcap.setFilter(FILTER, true); - pcap.addPacketListener(new PacketHandler()); - - // Start capturing packets... - pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) { - try { - Example7 example = new Example7(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } -} - - -class PacketHandler implements PacketListener -{ - public void packetArrived(Packet packet) { - try { - TCPPacket tcpPacket = (TCPPacket)packet; - - byte[] data = tcpPacket.getData(); - - String srcHost = tcpPacket.getSourceAddress(); - String dstHost = tcpPacket.getDestinationAddress(); - String isoData = new String(data, "ISO-8859-1"); - - System.out.println(srcHost+" -> " + dstHost + ": " + isoData); - } - catch( Exception e ) { - e.printStackTrace(); - } - } -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/example7/makefile b/javasrc/net/sourceforge/jpcap/tutorial/example7/makefile deleted file mode 100644 index ecfb594..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/example7/makefile +++ /dev/null @@ -1,20 +0,0 @@ -# $Id: makefile,v 1.1 2001/05/30 11:55:00 freecoder Exp $ -# -# package net.sourceforge.jpcap.tutorial.example1 -# -PKG = net.sourceforge.jpcap.tutorial.example7 -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -JAVA = \ - Example7 - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - -all: $(JAVA_CLASSES) - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/makefile b/javasrc/net/sourceforge/jpcap/tutorial/makefile deleted file mode 100644 index 8460309..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/makefile +++ /dev/null @@ -1,22 +0,0 @@ -# $Id: makefile,v 1.4 2003/06/24 22:34:22 pcharles Exp $ -# -# package net.sourceforge -# -TARGETS = \ - example1 \ - example2 \ - example3 \ - example4 \ - example5 \ - example6 \ - example7 \ - example15 \ - sniffer \ - misc - -# default target and tree traversal for standard targets -include ${MAKE_HOME}/chain_default.makefile -include ${MAKE_HOME}/chain_release.makefile -include ${MAKE_HOME}/chain_install.makefile -include ${MAKE_HOME}/chain_depend.makefile -include ${MAKE_HOME}/chain_clean.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java deleted file mode 100644 index ec6bb10..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/misc/ICMPTest.java +++ /dev/null @@ -1,95 +0,0 @@ -// $Id: ICMPTest.java,v 1.1 2003/07/02 18:52:34 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.misc; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; -import net.sourceforge.jpcap.util.HexHelper; - - -/** - * jpcap Tutorial - icmp test - * - * @author Patrick Charles - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/07/02 18:52:34 $ - * - */ -public class ICMPTest -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = 1; - - // BPF filter for only capturing ICMP packets - private static final String FILTER = "proto ICMP"; - - private PacketCapture m_pcap; - private String m_device; - - public ICMPTest() throws Exception { - // instantiate capture engine - m_pcap = new PacketCapture(); - - // open device for capturing (requires root) - m_pcap.open("lo", true); - - // add a BPF Filter (see tcpdump documentation) - m_pcap.setFilter(FILTER, true); - - // register a listener - m_pcap.addPacketListener(new PacketHandler()); - - // capture data - m_pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) { - try { - System.err.println("waiting for an icmp packet.. "); - ICMPTest icmpTest = new ICMPTest(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } -} - - -class PacketHandler implements PacketListener -{ - public void packetArrived(Packet packet) { - try { - ICMPPacket icmpPacket = (ICMPPacket) packet; - - String srcHost = icmpPacket.getSourceAddress(); - String dstHost = icmpPacket.getDestinationAddress(); - - System.out.println(icmpPacket.toColoredString(true)); - System.out.println("message code: " + icmpPacket.getMessageCode()); - System.out.println("message major: " + icmpPacket.getMessageMajorCode()); - System.out.println("message minor: " + icmpPacket.getMessageMinorCode()); - System.out.println("checksum: " + icmpPacket.getChecksum()); - - System.out.println(""); - System.out.println("ethernet header: " + - HexHelper.toString(icmpPacket.getEthernetHeader())); - System.out.println("ethernet data: " + - HexHelper.toString(icmpPacket.getEthernetData())); - System.out.println(""); - - System.out.println("header: " + - HexHelper.toString(icmpPacket.getHeader())); - - System.err.println("data: " + HexHelper.toString(icmpPacket.getData())); - } catch( Exception e ) { - e.printStackTrace(); - } - } -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java deleted file mode 100644 index bd187a3..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/misc/MemoryTest.java +++ /dev/null @@ -1,76 +0,0 @@ -// $Id: MemoryTest.java,v 1.3 2003/11/19 17:44:55 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.misc; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * Memory Test. - * - * @author Jonas Lehmann and Patrick Charles - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/11/19 17:44:55 $ - */ -public class MemoryTest -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = 10; - private static int m_counter = 0; - - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture m_pcap; - private String m_device; - - public MemoryTest() throws Exception { - // Step 1: Instantiate Capturing Engine - m_pcap = new PacketCapture(); - - // Step 2: Check for devices - m_device = m_pcap.findDevice(); - - // Step 3: Open Device for Capturing (requires root) - m_pcap.open(m_device, true); - - // Step 4: Add a BPF Filter (see tcpdump documentation) - m_pcap.setFilter(FILTER, true); - - // Step 5: Register a Listener for Raw Packets - m_pcap.addRawPacketListener(new RawPacketHandler()); - - // Step 6: Capture Data - m_pcap.capture(INFINITE); - } - - public static void main(String[] args) { - try { - MemoryTest memoryTest = new MemoryTest(); - } catch(Exception e) { - e.printStackTrace(); - System.exit(1); - } - } - - -class RawPacketHandler implements RawPacketListener -{ - String string; - public void rawPacketArrived(RawPacket data) { - System.err.println("vm total memory: " + Runtime.getRuntime().totalMemory()); - m_counter++; - System.out.println("Received packet (" + m_counter + ")"); - // System.err.println(string); - } -} -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java deleted file mode 100644 index 3448ad7..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/misc/OfflineTest.java +++ /dev/null @@ -1,135 +0,0 @@ -// $Id: OfflineTest.java,v 1.4 2003/11/19 17:44:55 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2003, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.misc; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; -import net.sourceforge.jpcap.util.HexHelper; - - -/** - * jpcap Tutorial - openOffline() test - * - * @author Patrick Charles - * @version $Revision: 1.4 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/11/19 17:44:55 $ - */ -public class OfflineTest -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = INFINITE; - - // BPF filter for capturing any packet - private static final String FILTER = "proto UDP"; - - private PacketCapture pcap; - PacketHandler ph; - RawPacketHandler rph; - - public OfflineTest(String fileName) throws Exception { - // instantiate capture engine - pcap = new PacketCapture(); - - // open devices for capturing (requires root) - pcap.openOffline(fileName); - - // add a BPF filter (see tcpdump documentation) - pcap.setFilter(FILTER, true); - - // create a handler - - // packet - ph = new PacketHandler("offline"); - pcap.addPacketListener(ph); - - // raw - //rph = new RawPacketHandler("offline"); - //pcap.addRawPacketListener(rph); - - // capture packets - pcap.capture(PACKET_COUNT); - } - - public OfflineTest(String fileName,String filter) throws Exception { - // instantiate capture engine - pcap = new PacketCapture(); - - // open devices for capturing (requires root) - pcap.openOffline(fileName); - - // add a BPF filter (see tcpdump documentation) - pcap.setFilter(filter, true); - - // create a handler - - // packet - ph = new PacketHandler("offline"); - pcap.addPacketListener(ph); - - // raw - //rph = new RawPacketHandler("offline"); - //pcap.addRawPacketListener(rph); - - // capture packets - pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) throws Exception { - if(args.length < 1) { - System.err.println(" usage: OfflineTest filename"); - System.exit(2); - } - if(args.length == 1) { - OfflineTest offlineTest = new OfflineTest(args[0]); - } - if(args.length == 2) { - OfflineTest offlineTest = new OfflineTest(args[0],args[0]); - } - - } - -class PacketHandler implements PacketListener -{ - private int counter = 0; - - public PacketHandler(String name) { - this.name = name; - } - - public void packetArrived(Packet packet) { - counter++; - String type = packet.getClass().getName(); - System.out.println(name + ": Packet(" + counter + - ") is of type " + type + "."); - System.err.println(HexHelper.toString(packet.getData())); - - //if (packet instanceof UDPPacket) - // System.err.println((((UDPPacket)(packet)).getData().toString())); - } - - String name; -} - -class RawPacketHandler implements RawPacketListener -{ - private int counter = 0; - - public RawPacketHandler(String name) { - this.name = name; - } - - public void rawPacketArrived(RawPacket rawPacket) { - counter++; - System.err.println(rawPacket); - } - - String name; -} -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java b/javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java deleted file mode 100644 index 9b17e13..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/misc/SerializationTest.java +++ /dev/null @@ -1,123 +0,0 @@ -// $Id: SerializationTest.java,v 1.3 2003/11/19 17:44:55 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.misc; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; -import java.io.*; - - -/** - * jpcap Tutorial - serialization test - * - * @author Patrick Charles - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2003/11/19 17:44:55 $ - */ -public class SerializationTest -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = 100; - - // BPF filter for capturing any packet - private static final String FILTER = ""; - - private PacketCapture pcap; - PacketHandler ph; - RawPacketHandler rph; - - public SerializationTest() throws Exception { - // instantiate capture engine - pcap = new PacketCapture(); - - // open devices for capturing (requires root) - pcap.open("eth0", true); - - // add a BPF filter (see tcpdump documentation) - pcap.setFilter(FILTER, true); - - // create a handler - - // packet - ph = new PacketHandler("packet"); - pcap.addPacketListener(ph); - - // raw - //rph = new RawPacketHandler("raw"); - //pcap.addRawPacketListener(rph); - - // capture packets - pcap.capture(PACKET_COUNT); - } - - public static void main(String[] args) throws Exception { - SerializationTest sTest = new SerializationTest(); - } - -class PacketHandler implements PacketListener -{ - private int counter = 0; - - public PacketHandler(String name) { - this.name = name; - } - - public void packetArrived(Packet packet) { - counter++; - String type = packet.getClass().getName(); - System.out.println(name + ": Packet(" + counter + - ") is of type " + type + "."); - - try { - System.err.print("serializing the packet.. "); - ByteArrayOutputStream bostr = new ByteArrayOutputStream(); - ObjectOutputStream oostr = new ObjectOutputStream(bostr); - oostr.writeObject(packet); - oostr.close(); - bostr.close(); - System.err.println("ok"); - } - catch(IOException e) { - e.printStackTrace(); - } - } - - String name; -} - -class RawPacketHandler implements RawPacketListener -{ - private int counter = 0; - - public RawPacketHandler(String name) { - this.name = name; - } - - public void rawPacketArrived(RawPacket rawPacket) { - counter++; - System.err.println(rawPacket); - - try { - System.err.print("serializing the packet.. "); - ByteArrayOutputStream bostr = new ByteArrayOutputStream(); - ObjectOutputStream oostr = new ObjectOutputStream(bostr); - oostr.writeObject(rawPacket); - oostr.close(); - bostr.close(); - System.err.println("ok"); - } - catch(IOException e) { - e.printStackTrace(); - } - } - - String name; -} -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/misc/makefile b/javasrc/net/sourceforge/jpcap/tutorial/misc/makefile deleted file mode 100644 index ad8b7a7..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/misc/makefile +++ /dev/null @@ -1,23 +0,0 @@ -# $Id: makefile,v 1.4 2003/07/02 18:52:34 pcharles Exp $ -# -# package net.sourceforge.jpcap.tutorial.misc -# -PKG = net.sourceforge.jpcap.tutorial.misc -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -JAVA = \ - MemoryTest \ - OfflineTest \ - SerializationTest \ - ICMPTest - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - -all: $(JAVA_CLASSES) - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/tutorial/package.html b/javasrc/net/sourceforge/jpcap/tutorial/package.html deleted file mode 100644 index ff30006..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/package.html +++ /dev/null @@ -1,22 +0,0 @@ - - - -net.sourceforge.jpcap.tutorial - - - - -Provides tutorials and samples which teach someone how -to use the packet capture service provided by classes -in the jpcap capture package. - - - diff --git a/javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java b/javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java deleted file mode 100644 index a80c6e4..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/sniffer/Sniffer.java +++ /dev/null @@ -1,87 +0,0 @@ -// $Id: Sniffer.java,v 1.1 2002/02/18 21:49:49 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Rex Tsai * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ - -package net.sourceforge.jpcap.tutorial.sniffer; - -import net.sourceforge.jpcap.capture.*; -import net.sourceforge.jpcap.net.*; - - -/** - * jpcap Tutorial - Sniffer example - * - * @author Rex Tsai - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2002/02/18 21:49:49 $ - */ -public class Sniffer -{ - private static final int INFINITE = -1; - private static final int PACKET_COUNT = INFINITE; - /* - private static final String HOST = "203.239.110.20"; - private static final String FILTER = - "host " + HOST + " and proto TCP and port 23"; - */ - - private static final String FILTER = - // "port 23"; - ""; - - public static void main(String[] args) { - try { - if(args.length == 1){ - Sniffer sniffer = new Sniffer(args[0]); - } else { - System.out.println("Usage: java Sniffer [device name]"); - System.out.println("Available network devices on your machine:"); - String[] devs = PacketCapture.lookupDevices(); - for(int i = 0; i < devs.length ; i++) - System.out.println("\t" + devs[i]); - } - } catch(Exception e) { - e.printStackTrace(); - } - } - - public Sniffer(String device) throws Exception { - // Initialize jpcap - PacketCapture pcap = new PacketCapture(); - System.out.println("Using device '" + device + "'"); - pcap.open(device, true); - pcap.setFilter(FILTER, true); - pcap.addPacketListener(new PacketHandler()); - - System.out.println("Capturing packets..."); - pcap.capture(PACKET_COUNT); - } -} - - -class PacketHandler implements PacketListener -{ - public void packetArrived(Packet packet) { - try { - // only handle TCP packets - - if(packet instanceof TCPPacket) { - TCPPacket tcpPacket = (TCPPacket)packet; - byte[] data = tcpPacket.getTCPData(); - - String srcHost = tcpPacket.getSourceAddress(); - String dstHost = tcpPacket.getDestinationAddress(); - String isoData = new String(data, "ISO-8859-1"); - - System.out.println(srcHost+" -> " + dstHost + ": " + isoData); - } - } catch( Exception e ) { - e.printStackTrace(); - } - } -} diff --git a/javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile b/javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile deleted file mode 100644 index 819a742..0000000 --- a/javasrc/net/sourceforge/jpcap/tutorial/sniffer/makefile +++ /dev/null @@ -1,20 +0,0 @@ -# $Id: makefile,v 1.1 2002/02/18 21:49:49 pcharles Exp $ -# -# package net.sourceforge.jpcap.tutorial.sniffer -# -PKG = net.sourceforge.jpcap.tutorial.sniffer -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - -JAVA = \ - Sniffer - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - -all: $(JAVA_CLASSES) - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java b/javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java deleted file mode 100644 index 2ada59a..0000000 --- a/javasrc/net/sourceforge/jpcap/util/AnsiEscapeSequences.java +++ /dev/null @@ -1,55 +0,0 @@ -// $Id: AnsiEscapeSequences.java,v 1.1 2001/06/01 06:24:44 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.util; - -/** - * String constants for color console output. - *

    - * This file contains control sequences to print color text on a text - * console capable of interpreting and displaying control sequences. - *

    - * A capable console would be - * unix bash, os/2 shell, or command.com w/ ansi.sys loaded - * - * @author Chris Cheetham - */ -public interface AnsiEscapeSequences -{ - String ESCAPE_BEGIN = "" + (char)033 + "["; - String ESCAPE_END = "m"; - String RESET = ESCAPE_BEGIN + "0" + ESCAPE_END; - - String BOLD = ESCAPE_BEGIN + "0;1" + ESCAPE_END; - String UNDERLINE = ESCAPE_BEGIN + "0;4" + ESCAPE_END; - String INVERSE = ESCAPE_BEGIN + "0;7" + ESCAPE_END; - - String BLACK = ESCAPE_BEGIN + "0;30" + ESCAPE_END; - String BLUE = ESCAPE_BEGIN + "0;34" + ESCAPE_END; - String GREEN = ESCAPE_BEGIN + "0;32" + ESCAPE_END; - String CYAN = ESCAPE_BEGIN + "0;36" + ESCAPE_END; - String RED = ESCAPE_BEGIN + "0;31" + ESCAPE_END; - String PURPLE = ESCAPE_BEGIN + "0;35" + ESCAPE_END; - String BROWN = ESCAPE_BEGIN + "0;33" + ESCAPE_END; - String LIGHT_GRAY = ESCAPE_BEGIN + "0;37" + ESCAPE_END; - String DARK_GRAY = ESCAPE_BEGIN + "1;30" + ESCAPE_END; - String LIGHT_BLUE = ESCAPE_BEGIN + "1;34" + ESCAPE_END; - String LIGHT_GREEN = ESCAPE_BEGIN + "1;32" + ESCAPE_END; - String LIGHT_CYAN = ESCAPE_BEGIN + "1;36" + ESCAPE_END; - String LIGHT_RED = ESCAPE_BEGIN + "1;31" + ESCAPE_END; - String LIGHT_PURPLE = ESCAPE_BEGIN + "1;35" + ESCAPE_END; - String YELLOW = ESCAPE_BEGIN + "1;33" + ESCAPE_END; - String WHITE = ESCAPE_BEGIN + "1;37" + ESCAPE_END; - - String RED_BACKGROUND = ESCAPE_BEGIN + "0;41" + ESCAPE_END; - String GREEN_BACKGROUND = ESCAPE_BEGIN + "0;42" + ESCAPE_END; - String YELLOW_BACKGROUND = ESCAPE_BEGIN + "0;43" + ESCAPE_END; - String BLUE_BACKGROUND = ESCAPE_BEGIN + "0;44" + ESCAPE_END; - String PURPLE_BACKGROUND = ESCAPE_BEGIN + "0;45" + ESCAPE_END; - String CYAN_BACKGROUND = ESCAPE_BEGIN + "0;46" + ESCAPE_END; - String LIGHT_GRAY_BACKGROUND = ESCAPE_BEGIN + "0;47" + ESCAPE_END; -} diff --git a/javasrc/net/sourceforge/jpcap/util/ArrayHelper.java b/javasrc/net/sourceforge/jpcap/util/ArrayHelper.java deleted file mode 100644 index 057193d..0000000 --- a/javasrc/net/sourceforge/jpcap/util/ArrayHelper.java +++ /dev/null @@ -1,97 +0,0 @@ -// $Id: ArrayHelper.java,v 1.5 2001/12/30 23:07:00 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.util; - - -/** - * Utility functions for populating and manipulating arrays. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.5 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/12/30 23:07:00 $ - */ -public class ArrayHelper -{ - /** - * Join two arrays. - */ - public static byte [] join(byte [] a, byte [] b) { - byte [] bytes = new byte[a.length + b.length]; - - System.arraycopy(a, 0, bytes, 0, a.length); - System.arraycopy(b, 0, bytes, a.length, b.length); - - return bytes; - } - - /** - * Extract a long from a byte array. - * - * @param bytes an array. - * @param pos the starting position where the integer is stored. - * @param cnt the number of bytes which contain the integer. - */ - public static long extractLong(byte[] bytes, int pos, int cnt) { - long value = 0; - for(int i=0; i>= 8; - } - } - - /** - * Convert a long integer into an array of bytes. - * - * @param value the long to convert. - * @param cnt the number of bytes to convert. - */ - public static byte [] toBytes(long value, int cnt) { - byte [] bytes = new byte[cnt]; - for(int i=0; i>= 8; - } - - return bytes; - } - - - static final String _rcsid = - "$Id: ArrayHelper.java,v 1.5 2001/12/30 23:07:00 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/util/AsciiHelper.java b/javasrc/net/sourceforge/jpcap/util/AsciiHelper.java deleted file mode 100644 index 7f20524..0000000 --- a/javasrc/net/sourceforge/jpcap/util/AsciiHelper.java +++ /dev/null @@ -1,70 +0,0 @@ -// $Id: AsciiHelper.java,v 1.1 2001/06/14 21:19:58 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.util; - -import java.io.StringWriter; - - -/** - * Functions for formatting and printing binary data as ascii. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/14 21:19:58 $ - */ -public class AsciiHelper -{ - /** - * Returns a text representation of a byte array. - * Bytes in the array which don't convert to text in the range a..Z - * are dropped. - * - * @param bytes a byte array - * @return a string containing the text equivalent of the bytes. - */ - public static String toText(byte [] bytes) { - StringWriter sw = new StringWriter(); - - int length = bytes.length; - if(length > 0) { - for(int i = 0; i < length; i++) { - byte b = bytes [i]; - if(b > 64 && b < 91 || b > 96 && b < 123) - sw.write((char)b); - } - } - return(sw.toString()); - } - - /** - * Returns a text representation of a byte array. - * Bytes in the array which don't convert to printable ascii characters - * are dropped. - * - * @param bytes a byte array - * @return a string containing the ascii equivalent of the bytes. - */ - public static String toString(byte [] bytes) { - StringWriter sw = new StringWriter(); - - int length = bytes.length; - if(length > 0) { - for(int i = 0; i < length; i++) { - byte b = bytes [i]; - if(b > 32 && b < 127) - sw.write((char)b); - } - } - return(sw.toString()); - } - - - static final String _rcsid = - "$Id: AsciiHelper.java,v 1.1 2001/06/14 21:19:58 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/util/ByteArrays.java b/javasrc/net/sourceforge/jpcap/util/ByteArrays.java deleted file mode 100644 index bfb7df5..0000000 --- a/javasrc/net/sourceforge/jpcap/util/ByteArrays.java +++ /dev/null @@ -1,1033 +0,0 @@ -/*_########################################################################## - _## - _## Copyright (C) 2011-2019 Pcap4J.org - _## - _########################################################################## -*/ - -package net.sourceforge.jpcap.util; - - -import static java.nio.ByteOrder.*; - -import java.net.Inet4Address; -import java.net.Inet6Address; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.nio.ByteOrder; -import java.util.List; -import java.util.regex.Pattern; -import java.util.zip.Adler32; -import java.util.zip.CRC32; - -/** - * @author Kaito Yamada - * @since pcap4j 0.9.1 - */ -public final class ByteArrays { - - /** */ - public static final int BYTE_SIZE_IN_BYTES = 1; - - /** */ - public static final int SHORT_SIZE_IN_BYTES = 2; - - /** */ - public static final int INT_SIZE_IN_BYTES = 4; - - /** */ - public static final int LONG_SIZE_IN_BYTES = 8; - - /** */ - public static final int INET4_ADDRESS_SIZE_IN_BYTES = 4; - - /** */ - public static final int INET6_ADDRESS_SIZE_IN_BYTES = 16; - - /** */ - public static final int BYTE_SIZE_IN_BITS = 8; - - private static final Pattern NO_SEPARATOR_HEX_STRING_PATTERN = - Pattern.compile("\\A([0-9a-fA-F][0-9a-fA-F])+\\z"); - - private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray(); - - private static final int[] CRC32C_TABLE = - new int[] { - 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, 0x26a1e7e8, - 0xd4ca64eb, - 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, - 0x5e133c24, - 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, 0xd7c45070, 0x25afd373, 0x36ff2087, - 0xc494a384, - 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 0x5d1d08bf, 0xaf768bbc, 0xbc267848, - 0x4e4dfb4b, - 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, 0xe72719c1, 0x154c9ac2, 0x061c6936, - 0xf477ea35, - 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, - 0x7eaeb2fa, - 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 0xf779deae, 0x05125dad, 0x1642ae59, - 0xe4292d5a, - 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, 0x7da08661, 0x8fcb0562, 0x9c9bf696, - 0x6ef07595, - 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, 0x86e18aa3, 0x748a09a0, 0x67dafa54, - 0x95b17957, - 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 0x0c38d26c, 0xfe53516f, 0xed03a29b, - 0x1f682198, - 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, - 0x85efbe38, - 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, 0x1c661503, 0xee0d9600, 0xfd5d65f4, - 0x0f36e6f7, - 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 0xa65c047d, 0x5437877e, 0x4767748a, - 0xb50cf789, - 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, - 0x3fd5af46, - 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, 0xb602c312, 0x44694011, 0x5739b3e5, - 0xa55230e6, - 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, - 0x2f8b6829, - 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, 0x456cac67, 0xb7072f64, 0xa457dc90, - 0x563c5f93, - 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, - 0xdce5075c, - 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 0x55326b08, 0xa759e80b, 0xb4091bff, - 0x466298fc, - 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, - 0xccbbc033, - 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, 0x65d122b9, 0x97baa1ba, 0x84ea524e, - 0x7681d14d, - 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 0xef087a76, 0x1d63f975, 0x0e330a81, - 0xfc588982, - 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, 0x758fe5d6, 0x87e466d5, 0x94b49521, - 0x66df1622, - 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, - 0xec064eed, - 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 0x0417b1db, 0xf67c32d8, 0xe52cc12c, - 0x1747422f, - 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, 0x8ecee914, 0x7ca56a17, 0x6ff599e3, - 0x9d9e1ae0, - 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, 0x144976b4, 0xe622f5b7, 0xf5720643, - 0x07198540, - 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, - 0x8dc0dd8f, - 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, - 0x37faccf1, - 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, 0xae7367ca, 0x5c18e4c9, 0x4f48173d, - 0xbd23943e, - 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, - 0x27a40b9e, - 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, - 0xad7d5351, - }; - - private ByteArrays() { - throw new AssertionError(); - } - - /** - * @param array array - * @return a new array containing specified array's elements in reverse order. - */ - public static byte[] reverse(byte[] array) { - byte[] rarray = new byte[array.length]; - for (int i = 0; i < array.length; i++) { - rarray[i] = array[array.length - i - 1]; - } - return rarray; - } - - /** - * @param array array - * @param offset offset - * @return byte value. - */ - public static byte getByte(byte[] array, int offset) { - validateBounds(array, offset, BYTE_SIZE_IN_BYTES); - return array[offset]; - } - - /** - * @param value value - * @return byte array - */ - public static byte[] toByteArray(byte value) { - return new byte[] {value}; - } - - /** - * @param value value - * @param separator separator - * @return hex string - */ - public static String toHexString(byte value, String separator) { - return toHexString(toByteArray(value), separator); - } - - /** - * @param array array - * @param offset offset - * @return short value - */ - public static short getShort(byte[] array, int offset) { - return getShort(array, offset, ByteOrder.BIG_ENDIAN); - } - - /** - * @param array array - * @param offset offset - * @param bo bo - * @return short value - */ - public static short getShort(byte[] array, int offset, ByteOrder bo) { - validateBounds(array, offset, SHORT_SIZE_IN_BYTES); - - if (bo == null) { - throw new NullPointerException(" bo: " + bo); - } - - if (bo.equals(LITTLE_ENDIAN)) { - return (short) (((array[offset + 1]) << (BYTE_SIZE_IN_BITS * 1)) | ((0xFF & array[offset]))); - } else { - return (short) (((array[offset]) << (BYTE_SIZE_IN_BITS * 1)) | ((0xFF & array[offset + 1]))); - } - } - - /** - * @param value value - * @return byte array - */ - public static byte[] toByteArray(short value) { - return toByteArray(value, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param bo bo - * @return byte array - */ - public static byte[] toByteArray(short value, ByteOrder bo) { - if (bo.equals(LITTLE_ENDIAN)) { - return new byte[] {(byte) (value), (byte) (value >> BYTE_SIZE_IN_BITS * 1)}; - } else { - return new byte[] {(byte) (value >> BYTE_SIZE_IN_BITS * 1), (byte) (value)}; - } - } - - /** - * @param value value - * @param separator separator - * @return hex string - */ - public static String toHexString(short value, String separator) { - return toHexString(value, separator, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param separator separator - * @param bo bo - * @return hex string - */ - public static String toHexString(short value, String separator, ByteOrder bo) { - return toHexString(toByteArray(value, bo), separator); - } - - /** - * @param array array - * @param offset offset - * @return int value. - */ - public static int getInt(byte[] array, int offset) { - return getInt(array, offset, ByteOrder.BIG_ENDIAN); - } - - /** - * @param array array - * @param offset offset - * @param bo bo - * @return int value. - */ - public static int getInt(byte[] array, int offset, ByteOrder bo) { - validateBounds(array, offset, INT_SIZE_IN_BYTES); - - if (bo == null) { - throw new NullPointerException(" bo: " + bo); - } - - if (bo.equals(LITTLE_ENDIAN)) { - return ((array[offset + 3]) << (BYTE_SIZE_IN_BITS * 3)) - | ((0xFF & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 2)) - | ((0xFF & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 1)) - | ((0xFF & array[offset])); - } else { - return ((array[offset]) << (BYTE_SIZE_IN_BITS * 3)) - | ((0xFF & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 2)) - | ((0xFF & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 1)) - | ((0xFF & array[offset + 3])); - } - } - - /** - * @param array array - * @param offset offset - * @param length length - * @return int value. - */ - public static int getInt(byte[] array, int offset, int length) { - return getInt(array, offset, length, ByteOrder.BIG_ENDIAN); - } - - /** - * @param array array - * @param offset offset - * @param length length - * @param bo bo - * @return int value. - */ - public static int getInt(byte[] array, int offset, int length, ByteOrder bo) { - validateBounds(array, offset, length); - if (length > INT_SIZE_IN_BYTES) { - StringBuilder sb = - new StringBuilder(30) - .append("length must be equal or less than ") - .append(INT_SIZE_IN_BYTES) - .append(", but is: ") - .append(length); - throw new IllegalArgumentException(sb.toString()); - } - - if (bo == null) { - throw new NullPointerException(" bo: " + bo); - } - - int value = 0; - if (bo.equals(LITTLE_ENDIAN)) { - for (int i = offset + length - 1; i >= offset; i--) { - value <<= BYTE_SIZE_IN_BITS; - value |= 0xFF & array[i]; - } - } else { - for (int i = offset; i < offset + length; i++) { - value <<= BYTE_SIZE_IN_BITS; - value |= 0xFF & array[i]; - } - } - return value; - } - - /** - * @param value value - * @return byte array - */ - public static byte[] toByteArray(int value) { - return toByteArray(value, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param bo bo - * @return byte array - */ - public static byte[] toByteArray(int value, ByteOrder bo) { - if (bo.equals(LITTLE_ENDIAN)) { - return new byte[] { - (byte) (value), - (byte) (value >> BYTE_SIZE_IN_BITS * 1), - (byte) (value >> BYTE_SIZE_IN_BITS * 2), - (byte) (value >> BYTE_SIZE_IN_BITS * 3), - }; - } else { - return new byte[] { - (byte) (value >> BYTE_SIZE_IN_BITS * 3), - (byte) (value >> BYTE_SIZE_IN_BITS * 2), - (byte) (value >> BYTE_SIZE_IN_BITS * 1), - (byte) (value) - }; - } - } - - /** - * @param value value - * @param length length - * @return byte array - */ - public static byte[] toByteArray(int value, int length) { - return toByteArray(value, length, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param length length - * @param bo bo - * @return byte array - */ - public static byte[] toByteArray(int value, int length, ByteOrder bo) { - if (length > INT_SIZE_IN_BYTES) { - StringBuilder sb = - new StringBuilder(30) - .append("length must be equal or less than ") - .append(INT_SIZE_IN_BYTES) - .append(", but is: ") - .append(length); - throw new IllegalArgumentException(sb.toString()); - } - - byte[] arr = new byte[length]; - if (bo.equals(LITTLE_ENDIAN)) { - for (int i = 0; i < length; i++) { - arr[length - i - 1] = (byte) (value >> BYTE_SIZE_IN_BITS * i); - } - } else { - for (int i = 0; i < length; i++) { - arr[i] = (byte) (value >> BYTE_SIZE_IN_BITS * i); - } - } - - return arr; - } - - /** - * @param value value - * @param separator separator - * @return hex string - */ - public static String toHexString(int value, String separator) { - return toHexString(value, separator, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param separator separator - * @param bo bo - * @return hex string - */ - public static String toHexString(int value, String separator, ByteOrder bo) { - return toHexString(toByteArray(value, bo), separator); - } - - /** - * @param array array - * @param offset offset - * @return long value - */ - public static long getLong(byte[] array, int offset) { - return getLong(array, offset, ByteOrder.BIG_ENDIAN); - } - - /** - * @param array array - * @param offset offset - * @param bo bo - * @return long value - */ - public static long getLong(byte[] array, int offset, ByteOrder bo) { - validateBounds(array, offset, LONG_SIZE_IN_BYTES); - - if (bo == null) { - throw new NullPointerException(" bo: " + bo); - } - - if (bo.equals(LITTLE_ENDIAN)) { - return (((long) array[offset + 7]) << (BYTE_SIZE_IN_BITS * 7)) - | ((0xFFL & array[offset + 6]) << (BYTE_SIZE_IN_BITS * 6)) - | ((0xFFL & array[offset + 5]) << (BYTE_SIZE_IN_BITS * 5)) - | ((0xFFL & array[offset + 4]) << (BYTE_SIZE_IN_BITS * 4)) - | ((0xFFL & array[offset + 3]) << (BYTE_SIZE_IN_BITS * 3)) - | ((0xFFL & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 2)) - | ((0xFFL & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 1)) - | ((0xFFL & array[offset])); - } else { - return (((long) array[offset]) << (BYTE_SIZE_IN_BITS * 7)) - | ((0xFFL & array[offset + 1]) << (BYTE_SIZE_IN_BITS * 6)) - | ((0xFFL & array[offset + 2]) << (BYTE_SIZE_IN_BITS * 5)) - | ((0xFFL & array[offset + 3]) << (BYTE_SIZE_IN_BITS * 4)) - | ((0xFFL & array[offset + 4]) << (BYTE_SIZE_IN_BITS * 3)) - | ((0xFFL & array[offset + 5]) << (BYTE_SIZE_IN_BITS * 2)) - | ((0xFFL & array[offset + 6]) << (BYTE_SIZE_IN_BITS * 1)) - | ((0xFFL & array[offset + 7])); - } - } - - /** - * @param value value - * @return byte array - */ - public static byte[] toByteArray(long value) { - return toByteArray(value, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param bo bo - * @return byte array - */ - public static byte[] toByteArray(long value, ByteOrder bo) { - if (bo.equals(LITTLE_ENDIAN)) { - return new byte[] { - (byte) (value), - (byte) (value >> BYTE_SIZE_IN_BITS * 1), - (byte) (value >> BYTE_SIZE_IN_BITS * 2), - (byte) (value >> BYTE_SIZE_IN_BITS * 3), - (byte) (value >> BYTE_SIZE_IN_BITS * 4), - (byte) (value >> BYTE_SIZE_IN_BITS * 5), - (byte) (value >> BYTE_SIZE_IN_BITS * 6), - (byte) (value >> BYTE_SIZE_IN_BITS * 7) - }; - } else { - return new byte[] { - (byte) (value >> BYTE_SIZE_IN_BITS * 7), - (byte) (value >> BYTE_SIZE_IN_BITS * 6), - (byte) (value >> BYTE_SIZE_IN_BITS * 5), - (byte) (value >> BYTE_SIZE_IN_BITS * 4), - (byte) (value >> BYTE_SIZE_IN_BITS * 3), - (byte) (value >> BYTE_SIZE_IN_BITS * 2), - (byte) (value >> BYTE_SIZE_IN_BITS * 1), - (byte) (value) - }; - } - } - - /** - * @param value value - * @param separator separator - * @return hex string - */ - public static String toHexString(long value, String separator) { - return toHexString(value, separator, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param separator separator - * @param bo bo - * @return hex string - */ - public static String toHexString(long value, String separator, ByteOrder bo) { - return toHexString(toByteArray(value, bo), separator); - } - -// /** -// * @param array array -// * @param offset offset -// * @return a new MacAddress object. -// */ -// public static MacAddress getMacAddress(byte[] array, int offset) { -// return getMacAddress(array, offset, ByteOrder.BIG_ENDIAN); -// } -// -// /** -// * @param array array -// * @param offset offset -// * @param bo bo -// * @return a new MacAddress object. -// */ -// public static MacAddress getMacAddress(byte[] array, int offset, ByteOrder bo) { -// validateBounds(array, offset, MacAddress.SIZE_IN_BYTES); -// -// if (bo == null) { -// throw new NullPointerException(" bo: " + bo); -// } -// -// if (bo.equals(LITTLE_ENDIAN)) { -// return MacAddress.getByAddress(reverse(getSubArray(array, offset, MacAddress.SIZE_IN_BYTES))); -// } else { -// return MacAddress.getByAddress(getSubArray(array, offset, MacAddress.SIZE_IN_BYTES)); -// } -// } -// -// /** -// * @param value value -// * @return byte array -// */ -// public static byte[] toByteArray(MacAddress value) { -// return toByteArray(value, ByteOrder.BIG_ENDIAN); -// } -// -// /** -// * @param value value -// * @param bo bo -// * @return byte array -// */ -// public static byte[] toByteArray(MacAddress value, ByteOrder bo) { -// if (bo.equals(LITTLE_ENDIAN)) { -// return reverse(value.getAddress()); -// } else { -// return value.getAddress(); -// } -// } -// -// /** -// * @param array array -// * @param offset offset -// * @param length length -// * @return a new LinkLayerAddress object. -// */ -// public static LinkLayerAddress getLinkLayerAddress(byte[] array, int offset, int length) { -// return getLinkLayerAddress(array, offset, length, ByteOrder.BIG_ENDIAN); -// } -// -// /** -// * @param array array -// * @param offset offset -// * @param length length -// * @param bo bo -// * @return a new LinkLayerAddress object. -// */ -// public static LinkLayerAddress getLinkLayerAddress( -// byte[] array, int offset, int length, ByteOrder bo) { -// validateBounds(array, offset, length); -// -// if (bo == null) { -// throw new NullPointerException(" bo: " + bo); -// } -// -// if (bo.equals(LITTLE_ENDIAN)) { -// return LinkLayerAddress.getByAddress(reverse(getSubArray(array, offset, length))); -// } else { -// return LinkLayerAddress.getByAddress(getSubArray(array, offset, length)); -// } -// } -// -// /** -// * @param value value -// * @return byte array -// */ -// public static byte[] toByteArray(LinkLayerAddress value) { -// return toByteArray(value, ByteOrder.BIG_ENDIAN); -// } -// -// /** -// * @param value value -// * @param bo bo -// * @return byte array -// */ -// public static byte[] toByteArray(LinkLayerAddress value, ByteOrder bo) { -// if (bo.equals(LITTLE_ENDIAN)) { -// return reverse(value.getAddress()); -// } else { -// return value.getAddress(); -// } -// } - - /** - * @param array array - * @param offset offset - * @return a new Inet4Address object. - */ - public static Inet4Address getInet4Address(byte[] array, int offset) { - return getInet4Address(array, offset, ByteOrder.BIG_ENDIAN); - } - - /** - * @param array array - * @param offset offset - * @param bo bo - * @return a new Inet4Address object. - */ - public static Inet4Address getInet4Address(byte[] array, int offset, ByteOrder bo) { - validateBounds(array, offset, INET4_ADDRESS_SIZE_IN_BYTES); - - if (bo == null) { - throw new NullPointerException(" bo: " + bo); - } - - try { - if (bo.equals(LITTLE_ENDIAN)) { - return (Inet4Address) - InetAddress.getByAddress( - reverse(getSubArray(array, offset, INET4_ADDRESS_SIZE_IN_BYTES))); - } else { - return (Inet4Address) - InetAddress.getByAddress(getSubArray(array, offset, INET4_ADDRESS_SIZE_IN_BYTES)); - } - } catch (UnknownHostException e) { - throw new AssertionError(e); - } - } - - /** - * @param addr a string representation of an IPv4 address. (e.g. "192.168.0.100") - * @return a byte array representation of the IPv4 address. - * @throws IllegalArgumentException if failed to parse addr. - */ - public static byte[] parseInet4Address(String addr) { - String[] octetStrs = addr.split("\\.", 4); - if (octetStrs.length != INET4_ADDRESS_SIZE_IN_BYTES) { - throw new IllegalArgumentException("Couldn't get an Inet4Address from " + addr); - } - - byte[] octets = new byte[4]; - for (int i = 0; i < octets.length; i++) { - String octetStr = octetStrs[i]; - try { - int octet = Integer.parseInt(octetStr); - if (octet < 0 || octet > 255) { - throw new IllegalArgumentException("Couldn't get an Inet4Address from " + addr); - } - octets[i] = (byte) octet; - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Couldn't get an Inet4Address from " + addr); - } - } - - return octets; - } - - /** - * @param array array - * @param offset offset - * @return a new Inet6Address object. - */ - public static Inet6Address getInet6Address(byte[] array, int offset) { - return getInet6Address(array, offset, ByteOrder.BIG_ENDIAN); - } - - /** - * @param array array - * @param offset offset - * @param bo bo - * @return a new Inet6Address object. - */ - public static Inet6Address getInet6Address(byte[] array, int offset, ByteOrder bo) { - validateBounds(array, offset, INET6_ADDRESS_SIZE_IN_BYTES); - - if (bo == null) { - throw new NullPointerException(" bo: " + bo); - } - - try { - if (bo.equals(LITTLE_ENDIAN)) { - return Inet6Address.getByAddress( - null, reverse(getSubArray(array, offset, INET6_ADDRESS_SIZE_IN_BYTES)), -1); - } else { - return Inet6Address.getByAddress( - null, getSubArray(array, offset, INET6_ADDRESS_SIZE_IN_BYTES), -1); - } - } catch (UnknownHostException e) { - throw new AssertionError(e); - } - } - - /** - * @param value value - * @return byte array - */ - public static byte[] toByteArray(InetAddress value) { - return toByteArray(value, ByteOrder.BIG_ENDIAN); - } - - /** - * @param value value - * @param bo bo - * @return byte array - */ - public static byte[] toByteArray(InetAddress value, ByteOrder bo) { - if (bo.equals(LITTLE_ENDIAN)) { - return reverse(value.getAddress()); - } else { - return value.getAddress(); - } - } - - /** - * @param array array - * @param offset offset - * @param length length - * @return sub array - */ - public static byte[] getSubArray(byte[] array, int offset, int length) { - validateBounds(array, offset, length); - - byte[] subArray = new byte[length]; - System.arraycopy(array, offset, subArray, 0, length); - return subArray; - } - - /** - * @param array array - * @param offset offset - * @return sub array - */ - public static byte[] getSubArray(byte[] array, int offset) { - return getSubArray(array, offset, array.length - offset); - } - - /** - * @param array array - * @param separator separator - * @return hex string - */ - public static String toHexString(byte[] array, String separator) { - return toHexString(array, separator, 0, array.length); - } - - /** - * @param array array - * @param separator separator - * @param offset offset - * @param length length - * @return hex string - */ - public static String toHexString(byte[] array, String separator, int offset, int length) { - validateBounds(array, offset, length); - - char[] hexChars; - if (separator.length() != 0) { - char[] sepChars = separator.toCharArray(); - hexChars = new char[length * 2 + sepChars.length * (length - 1)]; - int cur = 0; - int i = 0; - for (; i < length - 1; i++) { - int v = array[offset + i] & 0xFF; - hexChars[cur] = HEX_CHARS[v >>> 4]; - cur++; - hexChars[cur] = HEX_CHARS[v & 0x0F]; - cur++; - for (int j = 0; j < sepChars.length; j++) { - hexChars[cur] = sepChars[j]; - cur++; - } - } - int v = array[offset + i] & 0xFF; - hexChars[cur] = HEX_CHARS[v >>> 4]; - hexChars[cur + 1] = HEX_CHARS[v & 0x0F]; - } else { - hexChars = new char[length * 2]; - int cur = 0; - for (int i = 0; i < length; i++) { - int v = array[offset + i] & 0xFF; - hexChars[cur] = HEX_CHARS[v >>> 4]; - cur++; - hexChars[cur] = HEX_CHARS[v & 0x0F]; - cur++; - } - } - - return new String(hexChars); - } - - /** - * A utility method to calculate the Internet checksum. - * - * @see RFC 1071 - * @param data data - * @return checksum - */ - public static short calcChecksum(byte[] data) { - long sum = 0; - for (int i = 1; i < data.length; i += SHORT_SIZE_IN_BYTES) { - sum += 0xFFFFL & getShort(data, i - 1); - } - if (data.length % 2 != 0) { - sum += 0xFFFFL & (data[data.length - 1] << BYTE_SIZE_IN_BITS); - } - - while ((sum >> (BYTE_SIZE_IN_BITS * SHORT_SIZE_IN_BYTES)) != 0) { - sum = (0xFFFFL & sum) + (sum >>> (BYTE_SIZE_IN_BITS * SHORT_SIZE_IN_BYTES)); - } - - return (short) ~sum; - } - - /** - * A utility method to calculate CRC-32 checksum. - * - * @param data data - * @return checksum - */ - public static int calcCrc32Checksum(byte[] data) { - CRC32 crc32 = new CRC32(); - crc32.update(data); - return (int) crc32.getValue(); - } - - /** - * A utility method to calculate CRC-32C checksum. - * - * @param data data - * @return checksum - */ - public static int calcCrc32cChecksum(byte[] data) { - int c = 0xFFFFFFFF; - for (int i = 0; i < data.length; i++) { - c = CRC32C_TABLE[(c ^ data[i]) & 0xFF] ^ (c >>> 8); - } - return c ^ 0xFFFFFFFF; - } - - /** - * A utility method to calculate Adler-32 checksum. - * - * @param data data - * @return checksum - */ - public static int calcAdler32Checksum(byte[] data) { - Adler32 adler32 = new Adler32(); - adler32.update(data); - return (int) adler32.getValue(); - } - - /** - * @param hexString hexString - * @param separator separator - * @return a new byte array. - */ - public static byte[] parseByteArray(String hexString, String separator) { - if (hexString == null || separator == null) { - StringBuilder sb = new StringBuilder(); - sb.append("hexString: ").append(hexString).append(" separator: ").append(separator); - throw new NullPointerException(sb.toString()); - } - - if (hexString.startsWith("0x")) { - hexString = hexString.substring(2); - } - - String noSeparatorHexString; - if (separator.length() == 0) { - if (!NO_SEPARATOR_HEX_STRING_PATTERN.matcher(hexString).matches()) { - StringBuilder sb = new StringBuilder(100); - sb.append("invalid hex string(") - .append(hexString) - .append("), not match pattern(") - .append(NO_SEPARATOR_HEX_STRING_PATTERN.pattern()) - .append(")"); - throw new IllegalArgumentException(sb.toString()); - } - noSeparatorHexString = hexString; - } else { - StringBuilder patternSb = new StringBuilder(60); - patternSb - .append("\\A[0-9a-fA-F][0-9a-fA-F](") - .append(Pattern.quote(separator)) - .append("[0-9a-fA-F][0-9a-fA-F])*\\z"); - String patternString = patternSb.toString(); - - Pattern pattern = Pattern.compile(patternString); - if (!pattern.matcher(hexString).matches()) { - StringBuilder sb = new StringBuilder(150); - sb.append("invalid hex string(") - .append(hexString) - .append("), not match pattern(") - .append(patternString) - .append(")"); - throw new IllegalArgumentException(sb.toString()); - } - noSeparatorHexString = hexString.replaceAll(Pattern.quote(separator), ""); - } - - int arrayLength = noSeparatorHexString.length() / 2; - byte[] array = new byte[arrayLength]; - for (int i = 0; i < arrayLength; i++) { - array[i] = (byte) Integer.parseInt(noSeparatorHexString.substring(i * 2, i * 2 + 2), 16); - } - - return array; - } - - /** - * @param array array - * @return a clone of array - */ - public static byte[] clone(byte[] array) { - byte[] clone = new byte[array.length]; - System.arraycopy(array, 0, clone, 0, array.length); - return clone; - } - - /** - * A utility method to validate arguments which indicate a part of an array. - * - * @param arr arr - * @param offset offset - * @param len len - * @throws NullPointerException if the {@code arr} is null. - * @throws IllegalArgumentException if {@code arr} is empty or {@code len} is zero. - * @throws ArrayIndexOutOfBoundsException if {@code offset} or {@code len} is negative, or ({@code - * offset} + {@code len}) is greater than or equal to {@code arr.length}. - */ - public static void validateBounds(byte[] arr, int offset, int len) { - if (arr == null) { - throw new NullPointerException("arr must not be null."); - } - if (arr.length == 0) { - throw new IllegalArgumentException("arr is empty."); - } - if (len == 0) { - StringBuilder sb = new StringBuilder(100); - sb.append("length is zero. offset: ") - .append(offset) - .append(", arr: ") - .append(toHexString(arr, "")); - throw new IllegalArgumentException(sb.toString()); - } - if (offset < 0 || len < 0 || offset + len > arr.length) { - StringBuilder sb = new StringBuilder(100); - sb.append("arr.length: ") - .append(arr.length) - .append(", offset: ") - .append(offset) - .append(", len: ") - .append(len) - .append(", arr: ") - .append(toHexString(arr, "")); - throw new ArrayIndexOutOfBoundsException(sb.toString()); - } - } - - /** - * @param arr1 arr1 - * @param arr2 arr2 - * @return arr1 xor arr2 - */ - public static byte[] xor(byte[] arr1, byte[] arr2) { - if (arr1 == null) { - throw new NullPointerException("arr1 must not be null."); - } - if (arr2 == null) { - throw new NullPointerException("arr2 must not be null."); - } - if (arr1.length != arr2.length) { - throw new IllegalArgumentException("arr1.length must equal to arr2.length."); - } - - byte[] result = new byte[arr1.length]; - for (int i = 0; i < arr1.length; i++) { - result[i] = (byte) (arr1[i] ^ arr2[i]); - } - - return result; - } - - /** - * @param arr1 arr1 - * @param arr2 arr2 - * @return arr1 + arr2 - */ - public static byte[] concatenate(byte[] arr1, byte[] arr2) { - byte[] result = new byte[arr1.length + arr2.length]; - System.arraycopy(arr1, 0, result, 0, arr1.length); - System.arraycopy(arr2, 0, result, arr1.length, arr2.length); - return result; - } - - /** - * @param arrs arrays - * @return the concatenated array. - */ - public static byte[] concatenate(List arrs) { - int length = 0; - for (byte[] arr : arrs) { - length += arr.length; - } - - byte[] result = new byte[length]; - int destPos = 0; - for (byte[] arr : arrs) { - System.arraycopy(arr, 0, result, destPos, arr.length); - destPos += arr.length; - } - - return result; - } -} \ No newline at end of file diff --git a/javasrc/net/sourceforge/jpcap/util/CVS/Entries b/javasrc/net/sourceforge/jpcap/util/CVS/Entries deleted file mode 100644 index 51c0b47..0000000 --- a/javasrc/net/sourceforge/jpcap/util/CVS/Entries +++ /dev/null @@ -1,9 +0,0 @@ -/AnsiEscapeSequences.java/1.1/Fri Jun 1 06:24:44 2001// -/HexHelper.java/1.3/Mon Jun 4 05:07:06 2001// -/Timeval.java/1.1/Fri Jun 1 06:25:30 2001// -/package.html/1.1/Thu Jun 14 01:21:53 2001// -/AsciiHelper.java/1.1/Thu Jun 14 21:19:58 2001// -/makefile/1.4/Tue Jun 26 18:46:05 2001// -/PropertyHelper.java/1.2/Tue Jun 26 23:07:05 2001// -/ArrayHelper.java/1.5/Thu Jan 10 00:16:59 2002// -D diff --git a/javasrc/net/sourceforge/jpcap/util/CVS/Repository b/javasrc/net/sourceforge/jpcap/util/CVS/Repository deleted file mode 100644 index 6b2ac42..0000000 --- a/javasrc/net/sourceforge/jpcap/util/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -src/java/net/sourceforge/jpcap/util diff --git a/javasrc/net/sourceforge/jpcap/util/CVS/Root b/javasrc/net/sourceforge/jpcap/util/CVS/Root deleted file mode 100644 index f84ccad..0000000 --- a/javasrc/net/sourceforge/jpcap/util/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.jpcap.sourceforge.net:/cvsroot/jpcap diff --git a/javasrc/net/sourceforge/jpcap/util/HexHelper.java b/javasrc/net/sourceforge/jpcap/util/HexHelper.java deleted file mode 100644 index f162f11..0000000 --- a/javasrc/net/sourceforge/jpcap/util/HexHelper.java +++ /dev/null @@ -1,100 +0,0 @@ -// $Id: HexHelper.java,v 1.3 2001/06/04 05:07:06 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.util; - -import java.io.StringWriter; - - -/** - * Functions for formatting and printing binary data in hexadecimal. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.3 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/04 05:07:06 $ - */ -public class HexHelper -{ - /** - * Convert an int (32 bits in Java) to a decimal quad of the form - * aaa.bbb.ccc.ddd. - */ - public static String toQuadString(int i) { - StringBuffer sb = new StringBuffer(); - for(int p=0; p<4; p++) { - int q = (int)(i & 0xff); - sb.append(q); - if(p < 3) - sb.append('.'); - i >>= 8; - } - - return sb.toString(); - } - - /** - * Convert an int to a hexadecimal string. - */ - public static String toString(int i) { - StringBuffer sb = new StringBuffer(); - for(int p=0; p<8; p++) { - byte b = (byte)(i & 0xf); - sb.append(nibbleToDigit(b)); - i >>= 4; - } - - return sb.toString(); - } - - /** - * Converts the lower four bits of a byte into the ascii digit - * which represents its hex value. For example: - * nibbleToDigit(10) produces 'a'. - */ - public static char nibbleToDigit(byte x) { - char c = (char)(x & 0xf); // mask low nibble - return(c > 9 ? (char)(c - 10 + 'a') : (char)(c + '0')); // int to hex char - } - - /** - * Convert a single byte into a string representing its hex value. - * i.e. -1 -> "ff" - * @param b the byte to convert. - * @return a string containing the hex equivalent. - */ - public static String toString(byte b) { - StringBuffer sb = new StringBuffer(); - sb.append(nibbleToDigit((byte)(b >> 4))); - sb.append(nibbleToDigit(b)); - return sb.toString(); - } - - /** - * Returns a text representation of a byte array. - * - * @param bytes a byte array - * @return a string containing the hex equivalent of the bytes. - */ - public static String toString(byte [] bytes) { - StringWriter sw = new StringWriter(); - - int length = bytes.length; - if(length > 0) { - for(int i = 0; i < length; i++) { - sw.write(toString(bytes[i])); - if(i != length - 1) - sw.write(" "); - } - } - return(sw.toString()); - } - - - static final String _rcsid = - "$Id: HexHelper.java,v 1.3 2001/06/04 05:07:06 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/util/PropertyHelper.java b/javasrc/net/sourceforge/jpcap/util/PropertyHelper.java deleted file mode 100644 index 8974cd8..0000000 --- a/javasrc/net/sourceforge/jpcap/util/PropertyHelper.java +++ /dev/null @@ -1,222 +0,0 @@ -// $Id: PropertyHelper.java,v 1.2 2001/06/26 22:52:16 pcharles Exp $ - -/*************************************************************************** - * Copyright (C) 2001, Patrick Charles and Jonas Lehmann * - * Distributed under the Mozilla Public License * - * http://www.mozilla.org/NPL/MPL-1.1.txt * - ***************************************************************************/ -package net.sourceforge.jpcap.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.Properties; -import java.util.StringTokenizer; -import java.util.NoSuchElementException; -import java.awt.Color; - - -/** - * Property helper utility methods. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.2 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/26 22:52:16 $ - */ -public class PropertyHelper -{ - /** - * Read the specified float property. - *

    - * Throws an exception if the property value isn't a floating-point number. - * - * @param key the name of the property - * @return the float value of the property - */ - public static float getFloatProperty(Properties properties, Object key) { - String string = (String)properties.get(key); - - if(string == null) - System.err.println("WARN: couldn't find float value under '" + - key + "'"); - - return Float.parseFloat((String)properties.get(key)); - } - - /** - * Read the specified integer property. - *

    - * Throws an exception if the property value isn't an integer. - * - * @param key the name of the property - * @return the integer value of the property - */ - public static int getIntProperty(Properties properties, Object key) { - String string = (String)properties.get(key); - - if(string == null) - System.err.println("WARN: couldn't find integer value under '" + - key + "'"); - - return Integer.parseInt((String)properties.get(key)); - } - - /** - * Convert a space delimited color tuple string to a color. - *

    - * Converts a string value like "255 255 0" to a color constant, - * in this case, yellow. - * - * @param key the name of the property - * @return a Color object equivalent to the provided string contents. - * Returns white if the string is null or can't be converted. - */ - public static Color getColorProperty(Properties properties, Object key) { - String string = (String)properties.get(key); - - if(string == null) { - System.err.println("WARN: couldn't find color tuplet under '" + - key + "'"); - return Color.white; - } - - StringTokenizer st = new StringTokenizer(string, " "); - Color c; - try { - c = new Color(Integer.parseInt(st.nextToken()), - Integer.parseInt(st.nextToken()), - Integer.parseInt(st.nextToken())); - } - catch(NoSuchElementException e) { - c = Color.white; - System.err.println("WARN: invalid color spec '" + string + - "' in property file"); - } - - return c; - } - - /** - * Convert a dot-delimited IP address to an integer - *

    - * Converts a string value like "10.0.0.5" to an integer. - * - * @param key the name of the property - * @return the integer value of the specified IP number. - * returns zero if the IP number is not valid. - */ - public static int getIpProperty(Properties properties, Object key) { - String string = (String)properties.get(key); - - if(string == null) { - System.err.println("WARN: couldn't find IP value under '" + - key + "'"); - return 0; - } - - StringTokenizer st = new StringTokenizer(string, "."); - int address; - try { - address = - Integer.parseInt(st.nextToken()) << 24 | - Integer.parseInt(st.nextToken()) << 16 | - Integer.parseInt(st.nextToken()) << 8 | - Integer.parseInt(st.nextToken()); - } - catch(NoSuchElementException e) { - address = 0; - System.err.println("WARN: invalid color spec '" + string + - "' in property file"); - } - - return address; - } - - /** - * Read the specified boolean property. - * Converts a property value like "true" or "1" to its boolean value. - *

    - * Returns false if the property doesn't exist or can't be converted to a - * boolean. - * - * @param key the name of the property - * @return the property value - */ - public static boolean getBooleanProperty(Properties properties, Object key) { - String string = (String)properties.get(key); - - if(string == null) { - System.err.println("WARN: couldn't find boolean value under '" + - key + "'"); - return false; - } - - if(string.toLowerCase().equals("true") || - string.toLowerCase().equals("on") || - string.toLowerCase().equals("yes") || - string.toLowerCase().equals("1")) - return true; - else - return false; - } - - /** - * Refresh property settings from disk. - */ - public static Properties refresh(String name, FileInputStream fis) - throws IOException { - System.err.println("INFO: loading properties from " + name); - Properties properties = new Properties(); - properties.load(fis); - - return properties; - } - - /** - * Load the specified properties file from one of the specified set of - * paths. - * - * @param paths an array of strings containing target paths. - * @param fileName the name of the property file. - * @return a populated set of properties loaded from the first file - * found in the set of supplied paths. If no property file is found, - * returns null. - */ - public static Properties load(String [] paths, String fileName) { - Properties properties = null; - File propertiesFile = null; - try { - String path = null; - for(int i=0; i - * Container for java equivalent of c's struct timeval. - * - * @author Patrick Charles and Jonas Lehmann - * @version $Revision: 1.1 $ - * @lastModifiedBy $Author: pcharles $ - * @lastModifiedAt $Date: 2001/06/01 06:25:30 $ - */ -public class Timeval -{ - public Timeval(long seconds, int microseconds) { - this.seconds = seconds; - this.microseconds = microseconds; - } - - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append(seconds); - sb.append('.'); - sb.append(microseconds); - sb.append('s'); - - return sb.toString(); - } - - /** - * Convert this timeval to a java Date. - */ - public Date getDate() { - return new Date(seconds * 1000 + microseconds / 1000); - } - - long seconds; - int microseconds; - - private String _rcsid = - "$Id: Timeval.java,v 1.1 2001/06/01 06:25:30 pcharles Exp $"; -} diff --git a/javasrc/net/sourceforge/jpcap/util/makefile b/javasrc/net/sourceforge/jpcap/util/makefile deleted file mode 100644 index 40ce611..0000000 --- a/javasrc/net/sourceforge/jpcap/util/makefile +++ /dev/null @@ -1,29 +0,0 @@ -# $Id: makefile,v 1.4 2001/06/26 18:44:25 pcharles Exp $ -# -# package net.sourceforge.jpcap.util -# -PKG = net.sourceforge.jpcap.util -PKG_DIR = $(subst .,/, $(PKG)) -REL = ../../../.. -include ${MAKE_HOME}/os.makefile -include ${MAKE_HOME}/rules.makefile - - -JAVA = \ - Timeval \ - HexHelper \ - AsciiHelper \ - ArrayHelper \ - PropertyHelper \ - AnsiEscapeSequences - - -JAVA_SOURCE = $(addsuffix .java, $(JAVA)) -JAVA_CLASSES = $(addsuffix .class, $(JAVA)) - - -all: $(JAVA_CLASSES) - - -include ${MAKE_HOME}/targets.makefile -include ${MAKE_HOME}/depend.makefile diff --git a/javasrc/net/sourceforge/jpcap/util/package.html b/javasrc/net/sourceforge/jpcap/util/package.html deleted file mode 100644 index 7e111d3..0000000 --- a/javasrc/net/sourceforge/jpcap/util/package.html +++ /dev/null @@ -1,20 +0,0 @@ - - - -net.sourceforge.jpcap.util - - - - -Provides utility classes used by the jpcap packages. - - - diff --git a/ttcn/LibSip b/ttcn/LibSip index 6b82f94..7d79616 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 6b82f94df97af922d648c66777818ae34741704b +Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d -- GitLab From cd00c3a288b4c0d8d77a456df2eee79ef6afd370 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 20 Apr 2021 09:31:57 +0200 Subject: [PATCH 137/176] TA use of jpcap lib from other projects --- ttcn/LibSip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ttcn/LibSip b/ttcn/LibSip index 7d79616..6b82f94 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d +Subproject commit 6b82f94df97af922d648c66777818ae34741704b -- GitLab From 300b16f808ff010937b9c49862a09ffec0d79232 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 20 Apr 2021 09:37:02 +0200 Subject: [PATCH 138/176] TA use of jpcap lib from other projects --- javasrc/jpcap/JpcapCaptor.java | 261 ++++++++++++++ javasrc/jpcap/JpcapInstance.java | 24 ++ javasrc/jpcap/JpcapSender.java | 103 ++++++ javasrc/jpcap/JpcapWriter.java | 55 +++ javasrc/jpcap/JpcapWriterInstance.java | 24 ++ javasrc/jpcap/NetworkInterface.java | 34 ++ javasrc/jpcap/NetworkInterfaceAddress.java | 33 ++ javasrc/jpcap/PacketReceiver.java | 18 + .../loader/DefaultJpcapLibraryLoader.java | 49 +++ javasrc/jpcap/loader/JpcapLibraryLoader.java | 45 +++ .../loader/JpcapLibraryLoaderRegistry.java | 72 ++++ javasrc/jpcap/package.html | 13 + javasrc/jpcap/packet/ARPPacket.java | 180 ++++++++++ .../jpcap/packet/CustomDatalinkPacket.java | 4 + javasrc/jpcap/packet/DatalinkPacket.java | 6 + javasrc/jpcap/packet/EthernetPacket.java | 96 ++++++ javasrc/jpcap/packet/ICMPPacket.java | 322 ++++++++++++++++++ javasrc/jpcap/packet/IPPacket.java | 290 ++++++++++++++++ javasrc/jpcap/packet/IPv6Option.java | 84 +++++ javasrc/jpcap/packet/Packet.java | 61 ++++ javasrc/jpcap/packet/RawIpPacket.java | 5 + javasrc/jpcap/packet/SCTPPacket.java | 141 ++++++++ javasrc/jpcap/packet/TCPPacket.java | 107 ++++++ javasrc/jpcap/packet/TTYPacket.java | 51 +++ javasrc/jpcap/packet/TextPacket.java | 63 ++++ javasrc/jpcap/packet/UDPPacket.java | 38 +++ .../jpcap/packet/UnknownDatalinkPacket.java | 36 ++ javasrc/jpcap/packet/package.html | 11 + 28 files changed, 2226 insertions(+) create mode 100644 javasrc/jpcap/JpcapCaptor.java create mode 100644 javasrc/jpcap/JpcapInstance.java create mode 100644 javasrc/jpcap/JpcapSender.java create mode 100644 javasrc/jpcap/JpcapWriter.java create mode 100644 javasrc/jpcap/JpcapWriterInstance.java create mode 100644 javasrc/jpcap/NetworkInterface.java create mode 100644 javasrc/jpcap/NetworkInterfaceAddress.java create mode 100644 javasrc/jpcap/PacketReceiver.java create mode 100644 javasrc/jpcap/loader/DefaultJpcapLibraryLoader.java create mode 100644 javasrc/jpcap/loader/JpcapLibraryLoader.java create mode 100644 javasrc/jpcap/loader/JpcapLibraryLoaderRegistry.java create mode 100644 javasrc/jpcap/package.html create mode 100644 javasrc/jpcap/packet/ARPPacket.java create mode 100644 javasrc/jpcap/packet/CustomDatalinkPacket.java create mode 100644 javasrc/jpcap/packet/DatalinkPacket.java create mode 100644 javasrc/jpcap/packet/EthernetPacket.java create mode 100644 javasrc/jpcap/packet/ICMPPacket.java create mode 100644 javasrc/jpcap/packet/IPPacket.java create mode 100644 javasrc/jpcap/packet/IPv6Option.java create mode 100644 javasrc/jpcap/packet/Packet.java create mode 100644 javasrc/jpcap/packet/RawIpPacket.java create mode 100644 javasrc/jpcap/packet/SCTPPacket.java create mode 100644 javasrc/jpcap/packet/TCPPacket.java create mode 100644 javasrc/jpcap/packet/TTYPacket.java create mode 100644 javasrc/jpcap/packet/TextPacket.java create mode 100644 javasrc/jpcap/packet/UDPPacket.java create mode 100644 javasrc/jpcap/packet/UnknownDatalinkPacket.java create mode 100644 javasrc/jpcap/packet/package.html diff --git a/javasrc/jpcap/JpcapCaptor.java b/javasrc/jpcap/JpcapCaptor.java new file mode 100644 index 0000000..a708fb3 --- /dev/null +++ b/javasrc/jpcap/JpcapCaptor.java @@ -0,0 +1,261 @@ +package jpcap; + +import jpcap.loader.JpcapLibraryLoaderRegistry; +import jpcap.packet.Packet; + +/** + * This class is used to capture packets or read packets from a captured file. + */ +public class JpcapCaptor extends JpcapInstance { + /** + * Number of received packets + * + * @see #updateStat() + */ + public int received_packets; + + /** + * Number of dropped packets + * + * @see #updateStat() + */ + public int dropped_packets; + + private native String nativeOpenLive(String device, int snaplen, + int promisc, int to_ms); + + private native String nativeOpenOffline(String filename); + + private native void nativeClose(); + + private JpcapCaptor() throws java.io.IOException { + if (reserveID() < 0) + throw new java.io.IOException("Unable to open a device: " + + MAX_NUMBER_OF_INSTANCE + " devices are already opened."); + } + + /** + * Returns the interfaces that can be used for capturing. + * + * @return List of Interface objects + */ + public static native NetworkInterface[] getDeviceList(); + + /** + * Opens the specified network interface, and returns an instance of this class. + * + * @return an instance of this class Jpcap. + * @param intrface + * The network interface to capture packets + * @param snaplen + * Max number of bytes captured at once + * @param promisc + * If true, the inferface becomes promiscuous mode + * @param to_ms + * Timeout of + * {@link #processPacket(int,PacketReceiver) processPacket()}. + * Not all platforms support a timeout; on platforms that don't, + * the timeout is ignored. + * On platforms that support a timeout, a zero value will cause Jpcap + * to wait forever to allow enough packets to arrive, with no timeout. + * @exception java.io.IOException + * Raised when the specified interface cannot be opened + */ + public static JpcapCaptor openDevice(NetworkInterface intrface, + int snaplen, boolean promisc, int to_ms) throws java.io.IOException { + JpcapCaptor jpcap = new JpcapCaptor(); + String ret = jpcap.nativeOpenLive(intrface.name, snaplen, (promisc ? 1 + : 0), to_ms); + + if (ret != null) // error + throw new java.io.IOException(ret); + + return jpcap; + } + + /** + * Opens a dump file created by tcpdump or Ethereal, and returns an instance + * of this class. + * + * @param filename + * File name of the dump file + * @exception java.io.IOException + * If the file cannot be opened + * @return an instance of this class Jpcap + */ + public static JpcapCaptor openFile(String filename) + throws java.io.IOException { + JpcapCaptor jpcap = new JpcapCaptor(); + String ret = jpcap.nativeOpenOffline(filename); + + if (ret != null) // error + throw new java.io.IOException(ret); + + return jpcap; + } + + /** Closes the opened interface of dump file. */ + public void close() { + nativeClose(); + unreserveID(); + } + + /** + * Captures a single packet. + * + * @return a captured packet.
    + * null if an error occured or timeout has elapsed.
    + * Packet.EOF is EOF was reached when reading from a offline file. + */ + public native Packet getPacket(); + + /** + * Captures a single ip packet. + * + * @return a captured packet.
    + * null if an error occured or timeout has elapsed.
    + * Packet.EOF is EOF was reached when reading from a offline file. + */ + public native Packet getIpPacket(); + + /** + * Captures the specified number of packets consecutively.
    + * + * Unlike loopPacket(), this method returns (althrough not guaranteed) + * when the timeout expires. Also, in "non-blocking" mode, this + * method returns immediately when there is no packet to capture. + * + * @param count + * Number of packets to be captured
    + * You can specify -1 to capture packets parmanently until + * timeour, EOF or an error occurs. + * @param handler + * an instnace of JpcapHandler that analyzes the captured packets + * @return Number of captured packets + */ + public native int processPacket(int count, PacketReceiver handler); + + /** + * Captures the specified number of packets consecutively. + *

    + * + * Unlike processPacket(), this method ignores the timeout. + * This method also does not support "non-blocking" mode. + * + * @param count + * Number of packets to be captured
    + * You can specify -1 to capture packets parmanently until EOF or + * an error occurs. + * @param handler + * an instnace of JpcapHandler that analyzes the captured packets + * @return Number of captured packets + */ + public native int loopPacket(int count, PacketReceiver handler); + + /** + * Same as processPacket() + */ + @Deprecated + public int dispatchPacket(int count, PacketReceiver handler){ + return processPacket(count,handler); + } + + /** + * Sets/unsets "non-blocking" mode + * + * @param nonblocking + * TRUE to set "non-blocking" mode. FALSE to set "blocking" mode + */ + public native void setNonBlockingMode(boolean nonblocking); + + /** + * Checks if the current setting is in "non-blocking" mode or not. + * + * @return TRUE if it is in "non-blocking" mode. FALSE otherwise. + */ + public native boolean isNonBlockinMode(); + + /** + * Set a flag that will force processPacket() and loopPacket() to return + * rather than looping. + * + *

    + * + * Note that processPacket() and loopPacket() will not return after this + * flag is set UNTIL a packet is received or a read timeout occurs. By + * default, there is no read timeout. See comments in + * setPacketReadTimeout(). + */ + public native void breakLoop(); + + /** + * Sets the socket read timeout (SO_RCVTIMEO) for the socket used to read + * packets from the kernel. Setting this timeout is useful if using + * processPacket() or loopPacket() in blocking mode and you expect + * breakLoop() to work. breakLoop() will only have an effect if (a) you are + * actually getting packets or (b) if the read on the socket times out + * occasionally. + *

    + * + * This is currently only supported on UNIX. + * + * @param millis + * Timeout in milliseconds; 0 for no timeout. + * @return true upon success; false upon failure or if unsupported. + */ + public native boolean setPacketReadTimeout(int millis); + + /** + * Returns the socket read timeout (SO_RCVTIMEO) for the socket used to read + * packets from the kernel. + *

    + * + * This is currently only supported on UNIX. + * + * @return Read timeout in milliseconds; 0 for no timeout; -1 if an error + * occurred or this feature is unsupported. + */ + public native int getPacketReadTimeout(); + + /** + * Sets a filter. This filter is same as tcpdump. + * + * @param condition + * a string representation of the filter + * @param optimize + * If true, the filter is optimized + * @exception java.io.IOException + * Raised if the filter condition cannot be compiled or + * installed + */ + public native void setFilter(String condition, boolean optimize) + throws java.io.IOException; + + /** + * Updates {@link #received_packets received_packets} and + * {@link #dropped_packets dropped_packets}. + */ + public native void updateStat(); + + /** + * Returns an error message + * + * @return error message + */ + public native String getErrorMessage(); + + /** + * Obtains an instance of JpcapSender that uses the same interface to send + * packets. You can use this method only if you opened an interface with + * openDevice() method. + * + * @return returns an instance of JpcapSender + */ + public JpcapSender getJpcapSenderInstance() { + return new JpcapSender(ID); + } + + static { + JpcapLibraryLoaderRegistry.getInstance().loadLibrary(); + } +} diff --git a/javasrc/jpcap/JpcapInstance.java b/javasrc/jpcap/JpcapInstance.java new file mode 100644 index 0000000..e7907fd --- /dev/null +++ b/javasrc/jpcap/JpcapInstance.java @@ -0,0 +1,24 @@ +package jpcap; + +abstract class JpcapInstance { + protected static final int MAX_NUMBER_OF_INSTANCE = 255; + + protected static boolean[] instanciatedFlag = new boolean[MAX_NUMBER_OF_INSTANCE]; + + protected int ID; + + protected int reserveID(){ + ID = -1; + for (int i = 0; i < MAX_NUMBER_OF_INSTANCE; i++) + if (!instanciatedFlag[i]) { + ID = i; + instanciatedFlag[i] = true; + break; + } + return ID; + } + + protected void unreserveID(){ + instanciatedFlag[ID]=false; + } +} diff --git a/javasrc/jpcap/JpcapSender.java b/javasrc/jpcap/JpcapSender.java new file mode 100644 index 0000000..e7988af --- /dev/null +++ b/javasrc/jpcap/JpcapSender.java @@ -0,0 +1,103 @@ +package jpcap; + +import jpcap.packet.Packet; + +/** This class is used to send a packet. */ +public class JpcapSender extends JpcapInstance { + private native String nativeOpenDevice(String device); + private native void nativeSendPacket(Packet packet); + private native void nativeCloseDevice(); + private native void nativeOpenRawSocket(); + private native void nativeSendPacketViaRawSocket(Packet packet); + private native void nativeCloseRawSocket(); + + private static final int RAW_SOCKET_ID=99999; + + private String f_device = null; + + private JpcapSender() throws java.io.IOException { + if (reserveID() < 0) + throw new java.io.IOException("Unable to open a device: " + + MAX_NUMBER_OF_INSTANCE + " devices are already opened."); + } + + JpcapSender(int ID){ + this.ID=ID; + } + + /** + * Initializes a network interface for sending a packet, and returns an + * instance of this class. + * + * @param device + * Interface for sending a packet + * @throws IOException + * Raised when initialization of the interface failed + * @return intstance of this class (JpcapSender) + */ + public static JpcapSender openDevice(NetworkInterface device) throws java.io.IOException { + JpcapSender sender = new JpcapSender(); + String ret=sender.nativeOpenDevice(device.name); + + sender.f_device = device.name; + + if(ret==null) + return sender; + else + throw new java.io.IOException(ret); + } + + /** + * Open a raw IP socket to send a packet.
    + * When sending a packet via a raw socket, the datalink header of the packet is ignored + * (= automatically generated by OS).

    + * Note: the implementation and behavior of a raw socket may vary in different OS. + * Also, you can only open one raw socket at a time. + * + * @throws IOException + * Raised when initialization of the interface failed + * @return intstance of this class (JpcapSender) + */ + @Deprecated + public static JpcapSender openRawSocket() throws java.io.IOException { + JpcapSender sender = new JpcapSender(); + sender.nativeOpenRawSocket(); + sender.ID=RAW_SOCKET_ID; + + return sender; + } + + /** Closes the interface. */ + public void close() { + if(ID==RAW_SOCKET_ID) + nativeCloseRawSocket(); + else + nativeCloseDevice(); + unreserveID(); + } + + /** + * Sends a packet. + *

    + * If this JpcapSender instance was created by openDevice(), you need to set + * the Datalink layer's header (e.g., Ethernet header) of the packet.

    + * + * If this JpcapSender instance was created by openRawSocket(), you can only + * send IP packets, but you may not need to set the Datalink layer's header + * of the IP packets you want to send.
    + * Note: the implementation and behavior of a raw socket may vary in different OS. + * For example, in Windows 2000/XP, you need to manually set the datalink/IP headers + * of a packet. + * @param packet Packet to be sent + */ + public void sendPacket(Packet packet){ + if(ID==RAW_SOCKET_ID) + nativeSendPacketViaRawSocket(packet); + else + nativeSendPacket(packet); + } + + public String getDeviceId() { + return f_device; + } +} diff --git a/javasrc/jpcap/JpcapWriter.java b/javasrc/jpcap/JpcapWriter.java new file mode 100644 index 0000000..0f76db2 --- /dev/null +++ b/javasrc/jpcap/JpcapWriter.java @@ -0,0 +1,55 @@ +package jpcap; + +import jpcap.loader.JpcapLibraryLoaderRegistry; +import jpcap.packet.Packet; + +/** This class is used to save the captured packets into a file. */ +public class JpcapWriter extends JpcapWriterInstance +{ + private JpcapWriter(JpcapCaptor jpcapCaptor, String filename) + throws java.io.IOException { + if (reserveID() < 0) { + throw new java.io.IOException("Unable to open a writer: " + + MAX_NUMBER_OF_INSTANCE + " writers are already opened."); + } + + String ret = nativeOpenDumpFile(filename, jpcapCaptor.ID, ID); + + if (ret != null) { // error + unreserveID(); + throw new java.io.IOException(ret); + } + } + + /** Opens a file to save the captured packets. + * @param jpcap instance of JpcapCaptor that was used to capture (load) packets + * @param filename filename + * @throws IOException If the file cannot be opened + */ + public static JpcapWriter openDumpFile(JpcapCaptor jpcap,String filename) throws java.io.IOException{ + return new JpcapWriter(jpcap,filename); + } + + public void close() { + nativeClose(ID); + unreserveID(); + } + + public void writePacket(Packet packet) { + nativeWritePacket(packet, ID); + } + + private native String nativeOpenDumpFile(String filename, int captorId, int writerId); + + /** Closes the opened file. */ + private native void nativeClose(int id); + + /** Saves a packet into the file. + * @param packet Packet to be saved + */ + private native void nativeWritePacket(Packet packet, int writerId); + + static { + JpcapLibraryLoaderRegistry.getInstance().loadLibrary(); + } +} diff --git a/javasrc/jpcap/JpcapWriterInstance.java b/javasrc/jpcap/JpcapWriterInstance.java new file mode 100644 index 0000000..021e0c5 --- /dev/null +++ b/javasrc/jpcap/JpcapWriterInstance.java @@ -0,0 +1,24 @@ +package jpcap; + +abstract class JpcapWriterInstance { + protected static final int MAX_NUMBER_OF_INSTANCE = 255; + + protected static boolean[] instanciatedFlag = new boolean[MAX_NUMBER_OF_INSTANCE]; + + protected int ID; + + protected int reserveID(){ + ID = -1; + for (int i = 0; i < MAX_NUMBER_OF_INSTANCE; i++) + if (!instanciatedFlag[i]) { + ID = i; + instanciatedFlag[i] = true; + break; + } + return ID; + } + + protected void unreserveID(){ + instanciatedFlag[ID]=false; + } +} diff --git a/javasrc/jpcap/NetworkInterface.java b/javasrc/jpcap/NetworkInterface.java new file mode 100644 index 0000000..3ff8a55 --- /dev/null +++ b/javasrc/jpcap/NetworkInterface.java @@ -0,0 +1,34 @@ +package jpcap; + + +/** + * This class represents a network interface. + * @author kfujii + */ +public class NetworkInterface { + /** Name of the network interface */ + public String name; + /** Description about the network interface (e.g., "3Com ..."). May be null.*/ + public String description; + /** TRUE if this is a loopback interface */ + public boolean loopback; + /** Name of the datalink of the network interface*/ + public String datalink_name; + /** Description about the datalink of the network interface. May be null. */ + public String datalink_description; + /** Ethernet MAC address of the network interface */ + public byte[] mac_address; + /** Network addresses assigned the network interface. May be null if it is a non-IP (e.g. NetBios) address. */ + public NetworkInterfaceAddress[] addresses; + + public NetworkInterface(String name,String description,boolean loopback, + String datalink_name,String datalink_description,byte[] mac,NetworkInterfaceAddress[] addresses){ + this.name=name; + this.description=description; + this.loopback=loopback; + this.datalink_name=datalink_name; + this.datalink_description=datalink_description; + this.mac_address=mac; + this.addresses=addresses; + } +} diff --git a/javasrc/jpcap/NetworkInterfaceAddress.java b/javasrc/jpcap/NetworkInterfaceAddress.java new file mode 100644 index 0000000..31e58ba --- /dev/null +++ b/javasrc/jpcap/NetworkInterfaceAddress.java @@ -0,0 +1,33 @@ +package jpcap; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * This class represents a network address assigned to a network interface. + * @author kfujii + */ +public class NetworkInterfaceAddress{ + /** Address of the network interface */ + public InetAddress address; + /** Subnet mask of the network interface */ + public InetAddress subnet; + /** Broadcast address of the network interface. May be null. */ + public InetAddress broadcast; + /** Destination address of the network interface (for P2P connection). May be null. */ + public InetAddress destination; + + public NetworkInterfaceAddress(byte[] address,byte[] subnet,byte[] broadcast,byte[] destination){ + try{ + if(address!=null) + this.address=InetAddress.getByAddress(address); + if(subnet!=null) + this.subnet=InetAddress.getByAddress(subnet); + if(broadcast!=null) + this.broadcast=InetAddress.getByAddress(broadcast); + if(destination!=null) + this.destination=InetAddress.getByAddress(destination); + }catch(UnknownHostException e){ + } + } +} \ No newline at end of file diff --git a/javasrc/jpcap/PacketReceiver.java b/javasrc/jpcap/PacketReceiver.java new file mode 100644 index 0000000..c75b944 --- /dev/null +++ b/javasrc/jpcap/PacketReceiver.java @@ -0,0 +1,18 @@ +package jpcap; + +import jpcap.packet.Packet; + +/** This interface is used to define a method to analyze the captured packets, + * which is used in JpcapCaptor.handlePacket() or JpcapCaptor.processPacket() + * @see JpcapCaptor#processPacket(int,PacketReceiver) + * @see JpcapCaptor#loopPacket(int,PacketReceiver) + */ +public interface PacketReceiver +{ + /** Analyzes a packet.
    + *
    + * This method is called everytime a packet is captured. + * @param p A packet to be analyzed + */ + public void receivePacket(Packet p); +} diff --git a/javasrc/jpcap/loader/DefaultJpcapLibraryLoader.java b/javasrc/jpcap/loader/DefaultJpcapLibraryLoader.java new file mode 100644 index 0000000..32cff9e --- /dev/null +++ b/javasrc/jpcap/loader/DefaultJpcapLibraryLoader.java @@ -0,0 +1,49 @@ +/* + * ---------------------------------------------------------------------------- + * (C) Copyright Testing Technologies, 2011. All Rights Reserved. + * + * All copies of this program, whether in whole or in part, and whether + * modified or not, must display this and all other embedded copyright + * and ownership notices in full. + * + * See the file COPYRIGHT for details of redistribution and use. + * + * You should have received a copy of the COPYRIGHT file along with + * this file; if not, write to the Testing Technologies, + * Michaelkirchstr. 17/18, 10179 Berlin, Germany. + * + * TESTING TECHNOLOGIES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE. IN NO EVENT SHALL TESTING TECHNOLOGIES BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + * THIS SOFTWARE. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING ANY KIND OF IMPLIED OR + * EXPRESSED WARRANTY OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES + * OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * ----------------------------------------------------------------------------- + * + * AUTHOR: Bogdan Stanca + * DATE: Aug 22, 2011 + * + * REVISION INFO: + * $Revision: 1.2 $ $Date: 2012/01/02 13:40:11 $ + * $Source: /usr/local/cvs_root/TTworkbench/plugins/com.testingtech.ttworkbench.jpcap/lib-projects/jpcap/src/java/jpcap/loader/DefaultJpcapLibraryLoader.java,v $ + * + * ----------------------------------------------------------------------------- + */ +package jpcap.loader; + +public class DefaultJpcapLibraryLoader implements JpcapLibraryLoader { + public static void load() { + System.loadLibrary("jpcap"); + } + + public void loadLibrary() { + load(); + } +} diff --git a/javasrc/jpcap/loader/JpcapLibraryLoader.java b/javasrc/jpcap/loader/JpcapLibraryLoader.java new file mode 100644 index 0000000..cd9cf37 --- /dev/null +++ b/javasrc/jpcap/loader/JpcapLibraryLoader.java @@ -0,0 +1,45 @@ +/* + * ---------------------------------------------------------------------------- + * (C) Copyright Testing Technologies, 2011. All Rights Reserved. + * + * All copies of this program, whether in whole or in part, and whether + * modified or not, must display this and all other embedded copyright + * and ownership notices in full. + * + * See the file COPYRIGHT for details of redistribution and use. + * + * You should have received a copy of the COPYRIGHT file along with + * this file; if not, write to the Testing Technologies, + * Michaelkirchstr. 17/18, 10179 Berlin, Germany. + * + * TESTING TECHNOLOGIES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE. IN NO EVENT SHALL TESTING TECHNOLOGIES BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + * THIS SOFTWARE. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING ANY KIND OF IMPLIED OR + * EXPRESSED WARRANTY OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES + * OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * ----------------------------------------------------------------------------- + * + * AUTHOR: Bogdan Stanca + * DATE: Aug 22, 2011 + * + * REVISION INFO: + * $Revision: 1.1 $ $Date: 2011/08/22 13:46:22 $ + * $Source: /usr/local/cvs_root/TTworkbench/plugins/com.testingtech.ttworkbench.jpcap/lib-projects/jpcap/src/java/jpcap/loader/JpcapLibraryLoader.java,v $ + * + * ----------------------------------------------------------------------------- + */ +package jpcap.loader; + +public interface JpcapLibraryLoader { + + void loadLibrary(); + +} diff --git a/javasrc/jpcap/loader/JpcapLibraryLoaderRegistry.java b/javasrc/jpcap/loader/JpcapLibraryLoaderRegistry.java new file mode 100644 index 0000000..6ce9156 --- /dev/null +++ b/javasrc/jpcap/loader/JpcapLibraryLoaderRegistry.java @@ -0,0 +1,72 @@ +/* + * ---------------------------------------------------------------------------- + * (C) Copyright Testing Technologies, 2011. All Rights Reserved. + * + * All copies of this program, whether in whole or in part, and whether + * modified or not, must display this and all other embedded copyright + * and ownership notices in full. + * + * See the file COPYRIGHT for details of redistribution and use. + * + * You should have received a copy of the COPYRIGHT file along with + * this file; if not, write to the Testing Technologies, + * Michaelkirchstr. 17/18, 10179 Berlin, Germany. + * + * TESTING TECHNOLOGIES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE. IN NO EVENT SHALL TESTING TECHNOLOGIES BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + * THIS SOFTWARE. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING ANY KIND OF IMPLIED OR + * EXPRESSED WARRANTY OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES + * OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * ----------------------------------------------------------------------------- + * + * AUTHOR: Bogdan Stanca + * DATE: Aug 22, 2011 + * + * REVISION INFO: + * $Revision: 1.1 $ $Date: 2011/08/22 13:46:22 $ + * $Source: /usr/local/cvs_root/TTworkbench/plugins/com.testingtech.ttworkbench.jpcap/lib-projects/jpcap/src/java/jpcap/loader/JpcapLibraryLoaderRegistry.java,v $ + * + * ----------------------------------------------------------------------------- + */ +package jpcap.loader; + + +public class JpcapLibraryLoaderRegistry { + + private static JpcapLibraryLoaderRegistry theInstance; + + private JpcapLibraryLoader loader; + private JpcapLibraryLoader defaultLoader; + + public final void loadLibrary() { + if (loader != null) { + loader.loadLibrary(); + } else { + getDefaultLoader().loadLibrary(); + } + } + + public void register(JpcapLibraryLoader loader) { + this.loader = loader; + } + + private synchronized JpcapLibraryLoader getDefaultLoader() { + if (defaultLoader == null) + defaultLoader = new DefaultJpcapLibraryLoader(); + return defaultLoader; + } + + public static synchronized JpcapLibraryLoaderRegistry getInstance() { + if (theInstance == null) + theInstance = new JpcapLibraryLoaderRegistry(); + return theInstance; + } +} diff --git a/javasrc/jpcap/package.html b/javasrc/jpcap/package.html new file mode 100644 index 0000000..6612163 --- /dev/null +++ b/javasrc/jpcap/package.html @@ -0,0 +1,13 @@ + + + +jpcap package + + + +Provides classes and interfaces for capturing packets from a network interface, +sending packets to a network interface, reading packets from a file, +and writing packets to a local file. + + + diff --git a/javasrc/jpcap/packet/ARPPacket.java b/javasrc/jpcap/packet/ARPPacket.java new file mode 100644 index 0000000..f2202af --- /dev/null +++ b/javasrc/jpcap/packet/ARPPacket.java @@ -0,0 +1,180 @@ +package jpcap.packet; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** This class represents ARP/RARP packet. */ +public class ARPPacket extends Packet +{ + private static final long serialVersionUID = 3271911802471786372L; + + /** Hardware type */ + public short hardtype; + /** Hardware type: Ethernet */ + public static final short HARDTYPE_ETHER=1; + /** Hardware type: Token ring */ + public static final short HARDTYPE_IEEE802=6; + /** Hardware type: Frame relay */ + public static final short HARDTYPE_FRAMERELAY=15; + + /** Protocol type */ + public short prototype; + /** Protocol type: IP */ + public static final short PROTOTYPE_IP=2048; + + /** Hardware address length */ + public short hlen; + + /** Protocol address length */ + public short plen; + + /** Operation */ + public short operation; + /** ARP request */ + public static final short ARP_REQUEST=1; + /** ARP reply */ + public static final short ARP_REPLY=2; + /** Reverse ARP request */ + public static final short RARP_REQUEST=3; + /** Reverse ARP reply */ + public static final short RARP_REPLY=4; + /** Identify peer request */ + public static final short INV_REQUEST=8; + /** Identify peer response */ + public static final short INV_REPLY=9; + + + /** Sender hardware address */ + public byte[] sender_hardaddr; + /** Sender protocol address */ + public byte[] sender_protoaddr; + /** Target hardware address */ + public byte[] target_hardaddr; + /** Target protocol address */ + public byte[] target_protoaddr; + + void setValue(short hardtype,short prototype,short hlen,short plen, + short operation,byte[] sha,byte[] spa,byte[] tha,byte[] tpa){ + this.hardtype=hardtype; + this.prototype=prototype; + this.hlen=hlen;this.plen=plen; + this.operation=operation; + sender_hardaddr=sha; + sender_protoaddr=spa; + target_hardaddr=tha; + target_protoaddr=tpa; + } + + /** Returns the hardware address (MAC address) of the sender. + * @return Hardware address of the sender + */ + public Object getSenderHardwareAddress(){ + switch(hardtype){ + case HARDTYPE_ETHER: + char[] adr=new char[17]; + + for(int i=0;i<5;i++){ + adr[i*3]=hexUpperChar(sender_hardaddr[i]); + adr[i*3+1]=hexLowerChar(sender_hardaddr[i]); + adr[i*3+2]=':'; + } + adr[15]=hexUpperChar(sender_hardaddr[5]); + adr[16]=hexLowerChar(sender_hardaddr[5]); + + return new String(adr); + default: + return "Unknown Protocol"; + } + } + + /** Returns the hardware address (MAC address) of the target. + * @return Hardware address of the target + */ + public Object getTargetHardwareAddress(){ + switch(hardtype){ + case HARDTYPE_ETHER: + char[] adr=new char[17]; + + for(int i=0;i<5;i++){ + adr[i*3]=hexUpperChar(target_hardaddr[i]); + adr[i*3+1]=hexLowerChar(target_hardaddr[i]); + adr[i*3+2]=':'; + } + adr[15]=hexUpperChar(target_hardaddr[5]); + adr[16]=hexLowerChar(target_hardaddr[5]); + + return new String(adr); + default: + return "Unknown Protocol"; + } + } + + /** Returns the protocol address of the sender. + * @return Protocol address of the sender + */ + public Object getSenderProtocolAddress(){ + switch(prototype){ + case PROTOTYPE_IP: + try { + return InetAddress.getByAddress(sender_protoaddr); + } catch (UnknownHostException e) { + return "Unknown Address"; + } + default: + return "Unknown Protocol"; + } + } + + /** Returns the protocol address of the target. + * @return Protocol address of the target + */ + public Object getTargetProtocolAddress(){ + switch(prototype){ + case PROTOTYPE_IP: + try { + return InetAddress.getByAddress(target_protoaddr); + } catch (UnknownHostException e) { + return "Unknown Address"; + } + default: + return "Unknown Protocol"; + } + } + + /** Returns a string representation of this ARP/RARP packet.
    + * + *
    + * Format: ARP(hardtype:prototype) + * @return a string representation of this ARP/RARP packet + */ + public String toString(){ + StringBuffer buf=new StringBuffer(); + + switch(operation){ + case ARP_REQUEST: buf.append("ARP REQUEST ");break; + case ARP_REPLY: buf.append("ARP REPLY ");break; + case RARP_REQUEST: buf.append("RARP REQUEST ");break; + case RARP_REPLY: buf.append("RARP REPLY ");break; + case INV_REQUEST: buf.append("IDENTIFY REQUEST ");break; + case INV_REPLY: buf.append("IDENTIFY REPLY ");break; + default: buf.append("UNKNOWN ");break; + } + + return buf.toString()+getSenderHardwareAddress()+"("+getSenderProtocolAddress()+") -> "+ + getTargetHardwareAddress()+"("+getTargetProtocolAddress()+")"; + } + + private char hexUpperChar(byte b){ + b=(byte)((b>>4)&0xf); + if(b==0) return '0'; + else if(b<10) return (char)('0'+b); + else return (char)('a'+b-10); + } + + private char hexLowerChar(byte b){ + b=(byte)(b&0xf); + if(b==0) return '0'; + else if(b<10) return (char)('0'+b); + else return (char)('a'+b-10); + } +} diff --git a/javasrc/jpcap/packet/CustomDatalinkPacket.java b/javasrc/jpcap/packet/CustomDatalinkPacket.java new file mode 100644 index 0000000..06ef3f5 --- /dev/null +++ b/javasrc/jpcap/packet/CustomDatalinkPacket.java @@ -0,0 +1,4 @@ +package jpcap.packet; + +public abstract class CustomDatalinkPacket extends DatalinkPacket { +} diff --git a/javasrc/jpcap/packet/DatalinkPacket.java b/javasrc/jpcap/packet/DatalinkPacket.java new file mode 100644 index 0000000..7a2be2e --- /dev/null +++ b/javasrc/jpcap/packet/DatalinkPacket.java @@ -0,0 +1,6 @@ +package jpcap.packet; + +/** This class represents datalink layer packet. */ +public abstract class DatalinkPacket implements java.io.Serializable +{ +} diff --git a/javasrc/jpcap/packet/EthernetPacket.java b/javasrc/jpcap/packet/EthernetPacket.java new file mode 100644 index 0000000..f2c1956 --- /dev/null +++ b/javasrc/jpcap/packet/EthernetPacket.java @@ -0,0 +1,96 @@ +package jpcap.packet; + +/** This class represents Ethernet packet. */ +public class EthernetPacket extends DatalinkPacket +{ + private static final long serialVersionUID = 817080364073605844L; + + /** Destination MAC address (6byte) */ + public byte[] dst_mac; + + /** Source MAC address (6byte) */ + public byte[] src_mac; + + /** Frame type */ + public short frametype; + /** PUP protocol */ + public static final short ETHERTYPE_PUP = 0x0200; + /** IP protocol */ + public static final short ETHERTYPE_IP = 0x0800; + /** Addr. resolution protocol */ + public static final short ETHERTYPE_ARP = 0x0806; + /** reverse Addr. resolution protocol */ + public static final short ETHERTYPE_REVARP = (short)0x8035; + /** IEEE 802.1Q VLAN tagging */ + public static final short ETHERTYPE_VLAN = (short)0x8100; + /** IPv6 */ + public static final short ETHERTYPE_IPV6 = (short)0x86dd; + /** used to test interfaces */ + public static final short ETHERTYPE_LOOPBACK = (short)0x9000; + + void setValue(byte[] dst,byte[] src,short frame){ + this.dst_mac=dst; + this.src_mac=src; + this.frametype=frame; + } + + /** Returns the MAC address of the source. + * @return MAC address of the source + */ + public String getSourceAddress(){ + char[] src=new char[17]; + + for(int i=0;i<5;i++){ + src[i*3]=hexUpperChar(src_mac[i]); + src[i*3+1]=hexLowerChar(src_mac[i]); + src[i*3+2]=':'; + } + src[15]=hexUpperChar(src_mac[5]); + src[16]=hexLowerChar(src_mac[5]); + + return new String(src); + } + + /** Returns the MAC address of the destination. + * @return MAC address of the destination + */ + public String getDestinationAddress(){ + char[] dst=new char[17]; + + for(int i=0;i<5;i++){ + dst[i*3]=hexUpperChar(dst_mac[i]); + dst[i*3+1]=hexLowerChar(dst_mac[i]); + dst[i*3+2]=':'; + } + dst[15]=hexUpperChar(dst_mac[5]); + dst[16]=hexLowerChar(dst_mac[5]); + + return new String(dst); + } + + /** Returns a string representation of this Ethernet packet.
    + *
    + * Format: Fsrc_mac -> dst_mac (frametype) + * @return a string representation of this Ethernet packet + */ + public String toString(){ + + + return super.toString()+" "+getSourceAddress()+"->"+ + getDestinationAddress()+" ("+frametype+")"; + } + + private char hexUpperChar(byte b){ + b=(byte)((b>>4)&0xf); + if(b==0) return '0'; + else if(b<10) return (char)('0'+b); + else return (char)('a'+b-10); + } + + private char hexLowerChar(byte b){ + b=(byte)(b&0xf); + if(b==0) return '0'; + else if(b<10) return (char)('0'+b); + else return (char)('a'+b-10); + } +} diff --git a/javasrc/jpcap/packet/ICMPPacket.java b/javasrc/jpcap/packet/ICMPPacket.java new file mode 100644 index 0000000..4f4002e --- /dev/null +++ b/javasrc/jpcap/packet/ICMPPacket.java @@ -0,0 +1,322 @@ +package jpcap.packet; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * This class represents ICMP packet. + */ +public class ICMPPacket extends IPPacket { + private static final long serialVersionUID = 208303875185246732L; + + /** + * echo reply + */ + public static final short ICMP_ECHOREPLY = 0; + + /** + * dest unreachable + */ + public static final short ICMP_UNREACH = 3; + + /** + * dest unreachable code: bad net + */ + public static final short ICMP_UNREACH_NET = 0; + + /** + * dest unreachable code: bad host + */ + public static final short ICMP_UNREACH_HOST = 1; + + /** + * dest unreachable code: bad protocol + */ + public static final short ICMP_UNREACH_PROTOCOL = 2; + + /** + * dest unreachable code: bad port + */ + public static final short ICMP_UNREACH_PORT = 3; + + /** + * dest unreachable code: IP_DF caused drop + */ + public static final short ICMP_UNREACH_NEEDFRAG = 4; + + /** + * dest unreachable code: src route failed + */ + public static final short ICMP_UNREACH_SRCFAIL = 5; + + /** + * dest unreachable code: unknown net + */ + public static final short ICMP_UNREACH_NET_UNKNOWN = 6; + + /** + * dest unreachable code: unknown host + */ + public static final short ICMP_UNREACH_HOST_UNKNOWN = 7; + + /** + * dest unreachable code: src host isolated + */ + public static final short ICMP_UNREACH_ISOLATED = 8; + + /** + * dest unreachable code: prohibited access + */ + public static final short ICMP_UNREACH_NET_PROHIB = 9; + + /** + * dest unreachable code: ditto + */ + public static final short ICMP_UNREACH_HOST_PROHIB = 10; + + /** + * dest unreachable code: bad tos for net + */ + public static final short ICMP_UNREACH_TOSNET = 11; + + /** + * dest unreachable code: bad tos for host + */ + public static final short ICMP_UNREACH_TOSHOST = 12; + + /** + * dest unreachable code: admin prohib + */ + public static final short ICMP_UNREACH_FILTER_PROHIB = 13; + + /** + * dest unreachable code: host prec vio. + */ + public static final short ICMP_UNREACH_HOST_PRECEDENCE = 14; + + /** + * dest unreachable code: prec cutoff + */ + public static final short ICMP_UNREACH_PRECEDENCE_CUTOFF = 15; + + /** + * packet lost, slow down + */ + public static final short ICMP_SOURCEQUENCH = 4; + + /** + * redirect + */ + public static final short ICMP_REDIRECT = 5; + + /** + * redirect code: for network + */ + public static final short ICMP_REDIRECT_NET = 0; + + /** + * redirect code: for host + */ + public static final short ICMP_REDIRECT_HOST = 1; + + /** + * redirect code: for tos and net + */ + public static final short ICMP_REDIRECT_TOSNET = 2; + + /** + * redirect code: for tos and host + */ + public static final short ICMP_REDIRECT_TOSHOST = 3; + + /** + * echo request + */ + public static final short ICMP_ECHO = 8; + + /** + * router advertisement + */ + public static final short ICMP_ROUTERADVERT = 9; + + /** + * router solicitation + */ + public static final short ICMP_ROUTERSOLICIT = 10; + + /** + * time exceeded + */ + public static final short ICMP_TIMXCEED = 11; + + /** + * time exceeded code: ttl==0 in transit + */ + public static final short ICMP_TIMXCEED_INTRANS = 0; + + /** + * time exceeded code: ttl==0 in reass + */ + public static final short ICMP_TIMXCEED_REASS = 1; + + /** + * ip header bad + */ + public static final short ICMP_PARAMPROB = 12; + + /** + * ip header bad code: error at param ptr + */ + public static final short ICMP_PARAMPROB_ERRATPTR = 0; + + /** + * ip header bad code: req. opt. absent + */ + public static final short ICMP_PARAMPROB_OPTABSENT = 1; + + /** + * ip header bad code: bad length + */ + public static final short ICMP_PARAMPROB_LENGTH = 2; + + /** + * timestamp request + */ + public static final short ICMP_TSTAMP = 13; + + /** + * timestamp reply + */ + public static final short ICMP_TSTAMPREPLY = 14; + + /** + * information request + */ + public static final short ICMP_IREQ = 15; + + /** + * information reply + */ + public static final short ICMP_IREQREPLY = 16; + + /** + * address mask request + */ + public static final short ICMP_MASKREQ = 17; + + /** + * address mask reply + */ + public static final short ICMP_MASKREPLY = 18; + + /** ICMP type */ + public byte type; + + /** ICMP code */ + public byte code; + + /** Checksum */ + public short checksum; + + /** + * ID + */ + public short id; + + /** Sequence number */ + public short seq; + + /** Subnet mask */ + public int subnetmask; + + /** Originate timestamp */ + public int orig_timestamp; + + /** Receive timestamp */ + public int recv_timestamp; + + /** Transmit timestamp */ + public int trans_timestamp; + + /** + * MTU + */ + public short mtu; + + /** Returned IP packet */ + public IPPacket ippacket; + + /** Redirect address */ + public InetAddress redir_ip; + + /** The number of advertised addresses */ + public byte addr_num; + + /** Address entry size */ + public byte addr_entry_size; + + /** Address alive time */ + public short alive_time; + + /** Advertised addresses */ + public InetAddress[] router_ip; + + /** Preference */ + public int[] preference; + + void setValue(byte type, byte code, short checksum, short id, short seq) { + this.type = type; + this.code = code; + this.checksum = checksum; + this.id = id; + this.seq = seq; + } + + void setID(short id, short seq) { + this.id = id; + this.seq = seq; + } + + void setTimestampValue(int orig, int recv, int trans) { + this.orig_timestamp = orig; + this.recv_timestamp = recv; + this.trans_timestamp = trans; + } + + void setRedirectIP(byte[] ip) { + try { + redir_ip = InetAddress.getByAddress(ip); + } catch (UnknownHostException e) { + } + } + + byte[] getRedirectIP(){ + return redir_ip.getAddress(); + } + + void setRouterAdValue(byte addr_num, byte entry_size, short alive_time, + String[] addr, int[] pref) { + this.addr_num = addr_num; + this.addr_entry_size = entry_size; + this.alive_time = alive_time; + + for (int i = 0; i < addr_num; i++) { + try { + router_ip[i] = InetAddress.getByName(addr[i]); + } catch (java.net.UnknownHostException e) { + } + preference[i] = pref[i]; + } + } + + /** + * Returns a string representation of this ICMP packet.
    + *
    + * Format: Ftype(type) code(code) + * + * @return string representation of this ICMP packet + */ + public String toString() { + return super.toString() + "type(" + type + ") code(" + code + ")"; + } +} diff --git a/javasrc/jpcap/packet/IPPacket.java b/javasrc/jpcap/packet/IPPacket.java new file mode 100644 index 0000000..c407135 --- /dev/null +++ b/javasrc/jpcap/packet/IPPacket.java @@ -0,0 +1,290 @@ +package jpcap.packet; + +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * This class represents an IP packet. + *

    + * Both IPv4 and IPv6 are supported. + */ +public class IPPacket extends Packet { + private static final long serialVersionUID = 6427030004078082099L; + + /** IP version (v4/v6) */ + public byte version; + + /** Priority (class) (v4/v6) */ + public byte priority; + + /** IP flag bit: [D]elay (v4) */ + public boolean d_flag; + + /** IP flag bit: [T]hrough (v4) */ + public boolean t_flag; + + /** IP flag bit: [R]eliability (v4) */ + public boolean r_flag; + + // added by Damien Daspit 5/7/01 + /** Type of Service (TOS) (v4/v6) */ + public byte rsv_tos; + + // ***************************** + + /** Packet length (v4/v6) */ + public short length; + + /** Fragmentation reservation flag (v4) */ + public boolean rsv_frag; + + /** Don't fragment flag (v4) */ + public boolean dont_frag; + + /** More fragment flag (v4) */ + public boolean more_frag; + + /** Fragment offset (v4) */ + public short offset; + + /** Hop Limit, Time To Live (TTL) (v4/v6) */ + public short hop_limit; + + /** Protocol (v4/v6) */ + public short protocol; + + /** Protocol number for ICMP */ + public static final short IPPROTO_ICMP = 1; + + /** Protocol number for IGMP */ + public static final short IPPROTO_IGMP = 2; + + /** Protocol number for IP in IP */ + public static final short IPPROTO_IP = 4; + + /** Protocol number for TCP */ + public static final short IPPROTO_TCP = 6; + + /** Protocol number for UDP */ + public static final short IPPROTO_UDP = 17; + + /** Protocol number for IPv6 */ + public static final short IPPROTO_IPv6 = 41; + + /** Protocol number for IPv6 hop-by-hop option */ + public static final short IPPROTO_HOPOPT = 0; + + /** Protocol number for routing header for IPv6 */ + public static final short IPPROTO_IPv6_Route = 43; + + /** Protocol number for fragment header for IPv6 */ + public static final short IPPROTO_IPv6_Frag = 44; + + /** Protocol number for IPv6 ICMP */ + public static final short IPPROTO_IPv6_ICMP = 58; + + /** Protocol number for no next header header for IPv6 */ + public static final short IPPROTO_IPv6_NoNxt = 59; + + /** Protocol number for destination option for IPv6 */ + public static final short IPPROTO_IPv6_Opts = 60; + + /** IDENTIFICATION (v4) */ + public int ident; + + /** Flow label (v6) */ + public int flow_label; + + /** Source IP address */ + public InetAddress src_ip; + + /** Destination IP address */ + public InetAddress dst_ip; + + /** Option in IPv4 header (v4) */ + public byte[] option; + + /** Option headers in IPv6Option (v6) */ + public java.util.List options = null; + + /** + * Sets the IPv4 parameters + * + * @param d_flag + * IP flag bit: [D]elay + * @param t_flag + * IP flag bit: [T]hrough + * @param r_flag + * IP flag bit: [R]eliability + * @param rsv_tos + * Type of Service (TOS) + * @param priority + * Priority + * @param rsv_frag + * Fragmentation Reservation flag + * @param dont_frag + * Don't fragment flag + * @param more_frag + * More fragment flag + * @param offset + * Offset + * @param ident + * Identifier + * @param ttl + * Time To Live + * @param protocol + * Protocol
    + * This value is ignored when this packets inherits a higher + * layer protocol(e.g. TCPPacket) + * @param src + * Source IP address + * @param dst + * Destination IP address + */ + public void setIPv4Parameter(int priority, boolean d_flag, boolean t_flag, + boolean r_flag, int rsv_tos, boolean rsv_frag, boolean dont_frag, + boolean more_frag, int offset, int ident, int ttl, int protocol, + InetAddress src, InetAddress dst) { + this.version = 4; + this.priority = (byte) priority; + this.d_flag = d_flag; + this.t_flag = t_flag; + this.r_flag = r_flag; + // added by Damien Daspit 5/7/01 + this.rsv_tos = (byte) rsv_tos; + // ***************************** + this.rsv_frag = rsv_frag; + this.dont_frag = dont_frag; + this.more_frag = more_frag; + offset = (short) offset; + this.ident = ident; + this.hop_limit = (short) ttl; + this.protocol = (short) protocol; + if(src instanceof Inet6Address || dst instanceof Inet6Address) + throw new IllegalArgumentException("Address must be Inet4Address"); + this.src_ip = src; + this.dst_ip = dst; + } + + /** + * Sets the IPv6 parameters + * + * @param cls + * class + * @param flowlabel + * flow label + * @param nxt_hdr + * next header + * @param hop_limit + * hop limit + * @param src + * source address + * @param dst + * destination address + */ + public void setIPv6Parameter(int cls, int flowlabel, int nxt_hdr, + int hop_limit, InetAddress src, InetAddress dst) { + this.version = 6; + this.priority = (byte) cls; + this.flow_label = flowlabel; + this.protocol = (short) nxt_hdr; + this.hop_limit = (short) hop_limit; + if(src instanceof Inet4Address || dst instanceof Inet4Address) + throw new IllegalArgumentException("Address must be Inet6Address"); + this.src_ip = src; + this.dst_ip = dst; + } + + void setIPv4Value(byte ver, byte pri, boolean d, boolean t, boolean r, + byte rsv_tos, boolean rf, boolean df, boolean mf, short offset, + short len, short ident, short ttl, short proto, byte[] src, + byte[] dst) { + + this.version = ver; + this.priority = pri; + d_flag = d; + t_flag = t; + r_flag = r; + // added by Damien Daspit 5/7/01 + this.rsv_tos = rsv_tos; + // ***************************** + rsv_frag = rf; + dont_frag = df; + more_frag = mf; + this.offset = offset; + this.length = len; + this.ident = ident; + this.hop_limit = ttl; + this.protocol = proto; + try { + this.src_ip = InetAddress.getByAddress(src); + this.dst_ip = InetAddress.getByAddress(dst); + } catch (UnknownHostException e) { + } + } + + void setOption(byte[] option) { + this.option = option; + } + + void setIPv6Value(byte ver, byte v6class, int flow, short payload, + byte nxt, short hlim, byte[] src, byte[] dst) { + this.version = ver; + this.priority = v6class; + this.flow_label = flow; + this.length = payload; + this.protocol = nxt; + this.hop_limit = hlim; + try { + this.src_ip = InetAddress.getByAddress(src); + this.dst_ip = InetAddress.getByAddress(dst); + } catch (UnknownHostException e) { + } + } + + void addOptionHeader(IPv6Option header) { + if (options == null) + options = new java.util.ArrayList(); + + options.add(header); + } + + byte[] getSourceAddress() { + return src_ip.getAddress(); + } + + byte[] getDestinationAddress() { + return dst_ip.getAddress(); + } + + /** + * Returns a string represenation of this packet. + *

    + * Format(IPv4): src_ip->dst_ip protocol(protocol) priority(priority) + * [D][T][R] hop(hop_limit) [RF/][DF/][MF] offset(offset) ident(ident) + *

    + * + * Format(IPv6): src_ip->dst_ip protocol(protocol) priority(priority) + * flowlabel(flow_label) hop(hop_limit) + * + * @return a string represenation of this packet + */ + public String toString() { + if (version == 4) { + return super.toString() + " " + src_ip + "->" + dst_ip + + " protocol(" + protocol + ") priority(" + priority + ") " + + (d_flag ? "D" : "") + (t_flag ? "T" : "") + + (r_flag ? "R" : "") + " hop(" + hop_limit + ") " + + (rsv_frag ? "RF/" : "") + (dont_frag ? "DF/" : "") + + (more_frag ? "MF" : "") + " offset(" + offset + + ") len(" + length + + ") ident(" + ident + ")"+ (d_flag ? "DontF/" : ""); + } else { + return super.toString() + " " + src_ip + "->" + dst_ip + + " protocol(" + protocol + ") priority(" + priority + + ") flowlabel(" + flow_label + ") hop(" + hop_limit + ")"; + } + } +} diff --git a/javasrc/jpcap/packet/IPv6Option.java b/javasrc/jpcap/packet/IPv6Option.java new file mode 100644 index 0000000..50e5103 --- /dev/null +++ b/javasrc/jpcap/packet/IPv6Option.java @@ -0,0 +1,84 @@ +package jpcap.packet; + +import java.net.InetAddress; + +/** This class represents IPv6 option headers. */ +public class IPv6Option implements java.io.Serializable{ + private static final long serialVersionUID = 4027393032973499183L; + + /** Hop by hop option */ + public static final byte HOP_BY_HOP_OPTION=0; + /** Routing option */ + public static final byte ROUTING_OPTION=43; + /** Fragment option */ + public static final byte FRAGMENT_OPTION=44; + /** Security payload option */ + public static final byte ESP_OPTION=50; + /** Authentication option */ + public static final byte AH_OPTION=51; + /** No next option header */ + public static final byte NONE_OPTION=59; + /** Destination option */ + public static final byte DESTINATION_OPTION=60; + + /** Type */ + public byte type; + /** Next header */ + public byte next_header; + /** Header length */ + public byte hlen; + + /** Option */ + public byte[] option; + + /** Routing type (Routing option) */ + public byte routing_type; + /** Hop number left (Routing option) */ + public byte hop_left; + /** Route addresses (Routing option) */ + public InetAddress[] addrs; + + /** Offset (Fragment option) */ + public short offset; + /** More flag (fragment option) */ + public boolean m_flag; + /** Identification (fragment option) */ + public int identification; + + /** SPI (AH option) */ + public int spi; + /** Sequence number (AH option) */ + public int sequence; + + void setValue(byte type,byte next,byte hlen){ + this.type=type; + this.next_header=next; + this.hlen=hlen; + } + + void setOptionData(byte[] option){ + this.option=option; + } + + void setRoutingOption(byte type,byte left,byte[][] addrs){ + this.routing_type=type; + this.hop_left=left; + this.addrs=new InetAddress[addrs.length]; + for(int i=0;i + * Format: sec:usec + * @return a string representation of this packet + */ + public String toString(){ + return sec+":"+usec; + } +} diff --git a/javasrc/jpcap/packet/RawIpPacket.java b/javasrc/jpcap/packet/RawIpPacket.java new file mode 100644 index 0000000..a58e92f --- /dev/null +++ b/javasrc/jpcap/packet/RawIpPacket.java @@ -0,0 +1,5 @@ +package jpcap.packet; + +public class RawIpPacket extends DatalinkPacket { + private static final long serialVersionUID = 7087283097735114357L; +} diff --git a/javasrc/jpcap/packet/SCTPPacket.java b/javasrc/jpcap/packet/SCTPPacket.java new file mode 100644 index 0000000..028c056 --- /dev/null +++ b/javasrc/jpcap/packet/SCTPPacket.java @@ -0,0 +1,141 @@ +package jpcap.packet; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.LinkedList; +import java.util.List; + + +public class SCTPPacket extends IPPacket { + private static final long serialVersionUID = 2427280926095446351L; + + private static final int SCTP_PROTOCOL_ID = 0x0084; + + /** Source port number */ + public int src_port; + /** Destination port number */ + public int dst_port; + /** Verification tag */ + public int ver_tag; + /** Checksum */ + public int checksum; + /** Chunks */ + public Chunk[] chunks; + + public SCTPPacket(IPPacket packet) throws IOException { + /* + * Copy Packet data + */ + this.sec = packet.sec; + this.usec = packet.usec; + this.caplen = packet.caplen; + this.len = packet.len; + this.datalink = packet.datalink; + this.header = packet.header; + this.data = packet.data; + + /* + * Copy IP data + */ + this.version = packet.version; + this.priority = packet.priority; + this.d_flag = packet.d_flag; + this.t_flag = packet.t_flag; + this.r_flag = packet.r_flag; + this.rsv_tos = packet.rsv_tos; + this.length = packet.length; + this.rsv_frag = packet.rsv_frag; + this.dont_frag = packet.dont_frag; + this.more_frag = packet.more_frag; + this.offset = packet.offset; + this.hop_limit = packet.hop_limit; + this.protocol = packet.protocol; + this.ident = packet.ident; + this.flow_label = packet.flow_label; + this.src_ip = packet.src_ip; + this.dst_ip = packet.dst_ip; + this.option = packet.option; + this.options = packet.options; + + /* + * Parse SCTP data + */ + + InputStream is = new ByteArrayInputStream(packet.data); + DataInputStream dis = new DataInputStream(is); + + this.src_port = dis.readShort(); + this.dst_port = dis.readShort(); + + this.ver_tag = dis.readInt(); + + this.checksum = dis.readInt(); + + List chunks = new LinkedList(); + while (dis.available() > 0) { + Chunk chunk = readChunk(dis); + chunks.add(chunk); + } + this.chunks = chunks.toArray(new Chunk[chunks.size()]); + } + + public static boolean isSTCPPacket(Packet packet) { + return (packet instanceof IPPacket) && ((IPPacket) packet).protocol == SCTP_PROTOCOL_ID; + } + + private Chunk readChunk(DataInputStream dis) throws IOException { + Chunk chunk = new Chunk(); + chunk.type = dis.readByte(); + chunk.flags = dis.readByte(); + chunk.length = dis.readShort(); + + chunk.data = new byte[chunk.length - 4]; + dis.read(chunk.data); + + // skip padding + for (int i = 0; i < (4 - chunk.length % 4) % 4; i++) + if (dis.available() > 0) + dis.readByte(); + + if (chunk.data.length > 0 && chunk.type == 0) {// DATA + return new DataChunk(chunk); + } else { + return chunk; + } + } + + public static class Chunk { + public byte type; + public byte flags; + public short length; + + public byte[] data; + } + + public static class DataChunk extends Chunk { + public int tsn; + public short stream_id; + public short streaq_seq_nr; + public int protocol_id; + + public byte[] payload; + + public DataChunk(Chunk chunk) throws IOException { + this.type = 0; + this.flags = chunk.flags; + this.length = chunk.length; + this.data = chunk.data; + + DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data)); + this.tsn = dis.readInt(); + this.stream_id = dis.readShort(); + this.streaq_seq_nr = dis.readShort(); + this.protocol_id = dis.readInt(); + + this.payload = new byte[data.length - 12]; + dis.read(payload); + } + } +} diff --git a/javasrc/jpcap/packet/TCPPacket.java b/javasrc/jpcap/packet/TCPPacket.java new file mode 100644 index 0000000..516c0d3 --- /dev/null +++ b/javasrc/jpcap/packet/TCPPacket.java @@ -0,0 +1,107 @@ +package jpcap.packet; + +/** This class represents TCP packet. */ +public class TCPPacket extends IPPacket +{ + private static final long serialVersionUID = -8856988406589484129L; + + /** Source port number */ + public int src_port; + /** Destination port number */ + public int dst_port; + /** Sequence number */ + public long sequence; + /** ACK number */ + public long ack_num; + /** URG flag */ + public boolean urg; + /** ACK flag */ + public boolean ack; + /** PSH flag */ + public boolean psh; + /** RST flag */ + public boolean rst; + /** SYN flag */ + public boolean syn; + /** FIN flag */ + public boolean fin; + + // added by Damien Daspit 5/7/01 + /** RSV1 flag */ + public boolean rsv1; + /** RSV2 flag */ + public boolean rsv2; + // ***************************** + + /** Window size */ + public int window; + /** Urgent pointer */ + public short urgent_pointer; + + /** TCP option */ + public byte[] option; + + /** Creates a TCP packet. + * @param rsv1 RSV1 flag + * @param rsv2 RSV2 flag + * @param src_port Source port number + * @param dst_port Destination port number + * @param sequence sequence number + * @param ack_num ACK number + * @param urg URG flag + * @param ack ACK flag + * @param psh PSH flag + * @param rst RST flag + * @param syn SYN flag + * @param fin FIN flag + * @param window window size + * @param urgent urgent pointer + */ + public TCPPacket(int src_port,int dst_port,long sequence,long ack_num, + boolean urg,boolean ack,boolean psh,boolean rst, + boolean syn,boolean fin,boolean rsv1,boolean rsv2, + int window,int urgent){ + this.src_port=src_port;this.dst_port=dst_port; + this.sequence=sequence; + this.ack_num=ack_num; + this.urg=urg;this.ack=ack;this.psh=psh;this.rst=rst; + this.syn=syn;this.fin=fin; + // added by Damien Daspit 5/7/01 + this.rsv1=rsv1;this.rsv2=rsv2; + // ***************************** + this.window=window; + urgent_pointer=(short)urgent; + } + + void setValue(int src,int dst,long seq,long ack_num,boolean urg,boolean ack, + boolean psh,boolean rst,boolean syn,boolean fin,boolean rsv1, boolean rsv2, + int win,short urp){ + src_port=src;dst_port=dst; + sequence=seq; + this.ack_num=ack_num; + this.urg=urg;this.ack=ack;this.psh=psh;this.rst=rst;this.syn=syn;this.fin=fin; + // added by Damien Daspit 5/7/01 + this.rsv1=rsv1;this.rsv2=rsv2; + // ***************************** + window=win; + urgent_pointer=urp; + } + + void setOption(byte[] option){ + this.option=option; + } + + /** Returns a string representation of this packet
    + * + *
    + * Format: src_port > dst_port seq(sequence) win(window) [ack ack_num] [S][F][P] + * @return a string representation of this packet + */ + public String toString(){ + return super.toString()+" TCP "+ + src_port+" > "+dst_port+" seq("+sequence+ + ") win("+window+")"+(ack?" ack "+ack_num:"")+" "+ + (syn?" S":"")+(fin?" F":"")+(psh?" P":"")+ + (rst?" R":"")+(urg?" U":""); + } +} diff --git a/javasrc/jpcap/packet/TTYPacket.java b/javasrc/jpcap/packet/TTYPacket.java new file mode 100644 index 0000000..071dc76 --- /dev/null +++ b/javasrc/jpcap/packet/TTYPacket.java @@ -0,0 +1,51 @@ +package jpcap.packet; + +public class TTYPacket extends CustomDatalinkPacket { + private static final long serialVersionUID = -3937142561689924849L; + + public static final byte TERMINAL_TO_SERVER = 1; + public static final byte SERVER_TO_TERMINAL = 0; + + public static final byte SSH_CONNECTION = 101; + public static final byte LOCAL_CONNECTION = 102; + public static final byte TELNET_CONNECTION = 103; + + public static final byte VERSION = 1; + public static final byte PACKET_CONT_VERSION = 127; + + public byte version; + public byte connectionType; + public byte direction; + public int terminalWidth; + public int terminalHeight; + public String encoding; + public String sessionId; + public String connectionParameters; + + public TTYPacket() { + } + + public TTYPacket(byte connectionType, byte direction, + int terminalWidth, int terminalHeight, String encoding, + String sessionId, String connectionParameters) + { + // this is the constructor for v1 + setValue((byte)1, connectionType, direction, + terminalWidth, terminalHeight, encoding, + sessionId, connectionParameters); + } + + public void setValue(byte version, byte connectionType, byte direction, + int terminalWidth, int terminalHeight, String encoding, + String sessionId, String connectionParameters) + { + this.version = version; + this.connectionType = connectionType; + this.direction = direction; + this.terminalHeight = terminalHeight; + this.terminalWidth = terminalWidth; + this.encoding = encoding; + this.sessionId = sessionId; + this.connectionParameters = connectionParameters; + } +} diff --git a/javasrc/jpcap/packet/TextPacket.java b/javasrc/jpcap/packet/TextPacket.java new file mode 100644 index 0000000..b86e690 --- /dev/null +++ b/javasrc/jpcap/packet/TextPacket.java @@ -0,0 +1,63 @@ +package jpcap.packet; + +import java.io.UnsupportedEncodingException; + +public class TextPacket extends Packet { + private static final long serialVersionUID = 6199417211903927904L; + + private static final String UNKNOWN_ADDRESS = "Unknown"; + + public String getText() { + if (data == null) + return null; + + try { + return new String(data, "UTF-8"); + } catch (UnsupportedEncodingException e) { + return null; + } + } + + public String getReceiver() { + if (datalink instanceof TTYPacket == false) { + return UNKNOWN_ADDRESS; + } + + TTYPacket ttyPacket = (TTYPacket) datalink; + + if (ttyPacket.direction == TTYPacket.TERMINAL_TO_SERVER) { + return ttyPacket.connectionParameters; + } + + return buildTermAddress(ttyPacket); + } + + public String getSender() { + if (datalink instanceof TTYPacket == false) { + return UNKNOWN_ADDRESS; + } + + TTYPacket ttyPacket = (TTYPacket) datalink; + + if (ttyPacket.direction == TTYPacket.TERMINAL_TO_SERVER) { + return buildTermAddress(ttyPacket); + } + + return ttyPacket.connectionParameters; + } + + private String buildTermAddress(TTYPacket ttyPacket) { + switch (ttyPacket.connectionType) { + case TTYPacket.SSH_CONNECTION: + return "sshterm"; + + case TTYPacket.LOCAL_CONNECTION: + return "localterm"; + + case TTYPacket.TELNET_CONNECTION: + return "telnetterm"; + } + + return ""; + } +} diff --git a/javasrc/jpcap/packet/UDPPacket.java b/javasrc/jpcap/packet/UDPPacket.java new file mode 100644 index 0000000..e479cb2 --- /dev/null +++ b/javasrc/jpcap/packet/UDPPacket.java @@ -0,0 +1,38 @@ +package jpcap.packet; + +/** This class represents UDP packet. */ +public class UDPPacket extends IPPacket +{ + private static final long serialVersionUID = -3170544240823207254L; + + /** Source port number */ + public int src_port; + /** Destination port number */ + public int dst_port; + /** packet length */ + public int length; + + /** Creates a UDP packet. + * @param src_port source port number + * @param dst_port destination port number + */ + public UDPPacket(int src_port,int dst_port){ + this.src_port=src_port; + this.dst_port=dst_port; + } + + void setValue(int src,int dst,int len){ + src_port=src;dst_port=dst; + length=len; + } + + /** Returns a string representation of this packet.
    + * + *
    + * Format: src_port > dst_port + * @return a string representation of this packet + */ + public String toString(){ + return super.toString()+" UDP "+src_port+" > "+dst_port; + } +} diff --git a/javasrc/jpcap/packet/UnknownDatalinkPacket.java b/javasrc/jpcap/packet/UnknownDatalinkPacket.java new file mode 100644 index 0000000..8e906e1 --- /dev/null +++ b/javasrc/jpcap/packet/UnknownDatalinkPacket.java @@ -0,0 +1,36 @@ +package jpcap.packet; + +public class UnknownDatalinkPacket extends DatalinkPacket { + private static final long serialVersionUID = 1653831028738215299L; + + private int datalinkType; + private ByteOrder byteOrder; + + public enum ByteOrder { + BIG_ENDIAN, LITTLE_ENDIAN + } + + public int getDatalinkType() { + return datalinkType; + } + + public void setDatalinkType(int datalinkType) { + this.datalinkType = datalinkType; + } + + public ByteOrder getByteOrder() { + return byteOrder; + } + + public void setByteOrder(int byteOrder) { + switch (byteOrder) { + case 1: + this.byteOrder = ByteOrder.BIG_ENDIAN; + break; + + case 0: + this.byteOrder = ByteOrder.LITTLE_ENDIAN; + break; + } + } +} diff --git a/javasrc/jpcap/packet/package.html b/javasrc/jpcap/packet/package.html new file mode 100644 index 0000000..dd5c3ad --- /dev/null +++ b/javasrc/jpcap/packet/package.html @@ -0,0 +1,11 @@ + + + +jpcap package + + + +Provides classes to represent various packets. + + + -- GitLab From e4d0553935345c0eb20d66b900504d5e8c036991 Mon Sep 17 00:00:00 2001 From: pintar Date: Tue, 20 Apr 2021 17:19:24 +0000 Subject: [PATCH 139/176] File .gitignore updated --- .gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index 4e22650..a2f2b7f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,11 @@ /bin/ /ttcn3build/ /.apt_generated/ + +/lib/ +/tracefiles/ +/build/ +/clf/ +/tt3plugins/ +*log* +taconfig.xml \ No newline at end of file -- GitLab From 8b715762cca8072c44d448f31546fe711c006f0c Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 3 May 2021 13:40:38 +0000 Subject: [PATCH 140/176] Validation untill week17 --- .../ttcn/tri/IotConnectionOffline.java | 507 ++++++----- .../AtsImsIot_Diameter_Templates.ttcn | 149 +++- ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 10 +- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 32 +- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 10 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 407 +++++---- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 196 ++++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 557 +++++++----- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 143 +++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 799 ++++++++++-------- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn | 375 ++++---- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn | 360 ++++---- ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn | 45 +- ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 | 53 ++ ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 | 53 ++ ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 6 + ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn | 4 +- 17 files changed, 2270 insertions(+), 1436 deletions(-) diff --git a/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java index d11e249..653affd 100644 --- a/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java +++ b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java @@ -26,254 +26,254 @@ import java.util.LinkedList; import java.util.List; import java.util.Queue; -public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapterBase { - +public class IotConnectionOffline extends Thread/* PCAP */ implements LocalAdapterBase { + TriCommunicationTE cte = null; TriPortId comPortId = null; TriPortId tsiPortId = null; - protected Logger log = null; - - public static Hashtable ComponentCollection = new Hashtable(); - public static Hashtable ComponentCollectionCompPort = new Hashtable(); - public static Hashtable ComponentCollectionFilter2Port = new Hashtable(); - - private Queue FilterMsgFIFO = new LinkedList<>(); //for selection sequence to which PTC first send resonse - - public String tracefile=""; - - - - public class FilterPackets - { - public List packets; - public String filter; - public TriComponentId componentId; - public TriPortId tsiPortId; - public TriCommunicationTE cte; - final IotConnectionOffline this$0; - - public boolean equals(Object obj) - { - if(obj instanceof FilterPackets) - { - return filter.equals(((FilterPackets)obj).filter); - } else - { - return false; - } - } - - public int hashCode() - { - return filter.hashCode()+componentId.hashCode(); - } - - public FilterPackets(String filter) - { - super(); - this$0 = IotConnectionOffline.this; - this.filter = filter; - } - - public FilterPackets(String filter, TriComponentId componentId, TriPortId tsiPortId, TriCommunicationTE cte) - { - this(filter); - this.componentId = componentId; - this.tsiPortId = tsiPortId; - this.cte = cte; - } - - public void setPackets(List packets){ - this.packets=packets; - } - - public String toString(){ - return (componentId.getComponentName() + " " + tsiPortId.toString() + " " + ((filter != null) ? filter : "(null)"));// + "\n" + "packets count: " + ((packets != null) ? packets.size() : "(null)")); - } - } - - + Logger log = null; + + public static Hashtable ComponentCollection = new Hashtable(); + public static Hashtable ComponentCollectionCompPort = new Hashtable(); + public static Hashtable ComponentCollectionFilter2Port = new Hashtable(); + + private Queue FilterMsgFIFO = new LinkedList<>(); // for selection sequence to which PTC first send + // resonse + + public String tracefile = ""; + + public class FilterPackets { + public List packets; + public String filter; + public TriComponentId componentId; + public TriPortId tsiPortId; + public TriCommunicationTE cte; + final IotConnectionOffline this$0; + + public boolean equals(Object obj) { + if (obj instanceof FilterPackets) { + return filter.equals(((FilterPackets) obj).filter); + } else { + return false; + } + } + + public int hashCode() { + return filter.hashCode() + componentId.hashCode(); + } + + public FilterPackets(String filter) { + super(); + this$0 = IotConnectionOffline.this; + this.filter = filter; + } + + public FilterPackets(String filter, TriComponentId componentId, TriPortId tsiPortId, TriCommunicationTE cte) { + this(filter); + this.componentId = componentId; + this.tsiPortId = tsiPortId; + this.cte = cte; + } + + public void setPackets(List packets) { + this.packets = packets; + } + + public String toString() { + return (componentId.getComponentName() + " " + tsiPortId.toString() + " " + + ((filter != null) ? filter : "(null)"));// + "\n" + "packets count: " + ((packets != null) ? + // packets.size() : "(null)")); + } + } + public IotConnectionOffline(Logger log, TriCommunicationTE cte) { this.cte = cte; this.log = log; } - public synchronized TriStatus triMap(TriPortId comPortId, TriPortId tsiPortId) { try { - boolean result=false; - log.debug("comPortId.getPortName()= " + comPortId.getPortName() + "; tsiPortId.getPortName()= " + tsiPortId.getPortName()); + boolean result = false; + log.debug("comPortId.getPortName()= " + comPortId.getPortName() + "; tsiPortId.getPortName()= " + + tsiPortId.getPortName()); // Save parameters for later usage - //this.comPortId = comPortId; - //this.tsiPortId = tsiPortId; - - if(tsiPortId.getPortName().equals("acPort")){ - if (comPortId.getComponent().getComponentName().equals("MTC")){ - this.comPortId = comPortId; - this.tsiPortId = tsiPortId; - ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); - ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId); - //log.debug(""+ComponentCollection.elements().toString()); - //result = connect(); - result=true; - }else{ - ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); - ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId); - //log.debug(""+ComponentCollection.elements().toString()); - result = true; //assume MTC acport was succesfully conected + // this.comPortId = comPortId; + // this.tsiPortId = tsiPortId; + + if (tsiPortId.getPortName().equals("acPort")) { + if (comPortId.getComponent().getComponentName().equals("MTC")) { + this.comPortId = comPortId; + this.tsiPortId = tsiPortId; + ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId); + // log.debug(""+ComponentCollection.elements().toString()); + // result = connect(); + result = true; + } else { + ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId); + // log.debug(""+ComponentCollection.elements().toString()); + result = true; // assume MTC acport was succesfully conected } - }else - if (tsiPortId.getPortName().equals("sipPort")){ - ComponentCollection.put(comPortId.getComponent().getComponentName()+"-data", tsiPortId); - ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/*+"-sip"*/, comPortId); - //log.debug(""+ComponentCollection.elements().toString()); - result = true; //asuume MTC acport was succesfully conected - }else - if (tsiPortId.getPortName().equals("diameterPort")){ - ComponentCollection.put(comPortId.getComponent().getComponentName()+"-data", tsiPortId); - ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/*+"-diameter"*/, comPortId); - //log.debug(""+ComponentCollection.elements().toString()); - result = true; //asuume MTC acport was succesfully conected - }else - if (tsiPortId.getPortName().equals("dPort")){ - ComponentCollection.put(comPortId.getComponent().getComponentName()+"-d", tsiPortId); - ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()+"-d", comPortId); - //log.debug(""+ComponentCollection.elements().toString()); - result = true; //asuume MTC acport was succesfully conected - }else - if(tsiPortId.getPortName().equals("")){ - result = false; + } else if (tsiPortId.getPortName().equals("sipPort")) { + ComponentCollection.put(comPortId.getComponent().getComponentName() + "-data", tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/* +"-sip" */, comPortId); + // log.debug(""+ComponentCollection.elements().toString()); + result = true; // asuume MTC acport was succesfully conected + } else if (tsiPortId.getPortName().equals("diameterPort")) { + ComponentCollection.put(comPortId.getComponent().getComponentName() + "-data", tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/* +"-diameter" */, + comPortId); + // log.debug(""+ComponentCollection.elements().toString()); + result = true; // asuume MTC acport was succesfully conected + } else if (tsiPortId.getPortName().equals("dPort")) { + ComponentCollection.put(comPortId.getComponent().getComponentName() + "-d", tsiPortId); + ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName() + "-d", comPortId); + // log.debug(""+ComponentCollection.elements().toString()); + result = true; // asuume MTC acport was succesfully conected + } else if (tsiPortId.getPortName().equals("")) { + result = false; } - return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) - : new TriStatusImpl(TriStatus.TRI_ERROR); - //return new TriStatusImpl(TriStatus.TRI_OK); + return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR); + // return new TriStatusImpl(TriStatus.TRI_OK); } catch (Throwable ex) { ex.printStackTrace(); } return new TriStatusImpl(TriStatus.TRI_ERROR); } - //public synchronized TriStatus triSend(TriAddress triAddress, - public TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId,TriAddress triAddress, TriMessage triMessage) { + // public synchronized TriStatus triSend(TriAddress triAddress, + public TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId, TriAddress triAddress, + TriMessage triMessage) { - try { + try { byte[] buffer = triMessage.getEncodedMessage(); - + if (buffer == null) { return new TriStatusImpl(TriStatus.TRI_ERROR); } - log.debug("Send message: "/*+triMessage.getClass() +"// "*/ + triMessage.toString()); - + log.debug("Send message: "/* +triMessage.getClass() +"// " */ + triMessage.toString()); + int recv_reply = 0; - int iotmsgType = buffer[0]&0xFF | buffer[1]&0xFF << 8; - int iotmsgLen = 2+4+(((buffer[2] & 0xFF))|((buffer[3] & 0xFF) << 8)|((buffer[4] & 0xFF) << 16) | ((buffer[5] & 0xFF)<<24)); - - switch (iotmsgType){ - case 7: /*OPEN_DEVICE_REQ = 0x0007; /**< ID of OpenDeviceRequest */ - log.info("ConfigureREQ"); - byte[] confresp= {0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*OPEN_DEVICE_REP = 0x0008; /**< ID of OpenDeviceReply*/ - - log.debug(this.getTraceFile()); - - recv_reply=receiveBuffer(confresp, confresp.length); - break; - - case 2: /*SET_FILTER_REQ = 0x0002; /**< ID of SetFilterRequest */ - log.info("FilterREQ: " + componentId.getComponentName()); - byte[] filterresp= {0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*SET_FILTER_REP = 0x0009; /**< ID of SetFilterReply */ - - String filter = new String(buffer,10,buffer.length-10); - log.debug("FilterREQ: filter=" + filter); - try { - FilterPackets fp = new FilterPackets(filter, componentId,ComponentCollection.get(componentId.getComponentName()+"-data"), this.cte/*tsiPortId*/); - ComponentCollectionFilter2Port.put(componentId.getComponentName(), fp); + int iotmsgType = buffer[0] & 0xFF | buffer[1] & 0xFF << 8; + int iotmsgLen = 2 + 4 + (((buffer[2] & 0xFF)) | ((buffer[3] & 0xFF) << 8) | ((buffer[4] & 0xFF) << 16) + | ((buffer[5] & 0xFF) << 24)); + + switch (iotmsgType) { + case 7: /* OPEN_DEVICE_REQ = 0x0007; /**< ID of OpenDeviceRequest */ + log.info("ConfigureREQ"); + byte[] confresp = { 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00 };/* OPEN_DEVICE_REP = 0x0008; /**< ID of OpenDeviceReply */ + + log.debug(this.getTraceFile()); + + recv_reply = receiveBuffer(confresp, confresp.length); + break; + + case 2: /* SET_FILTER_REQ = 0x0002; /**< ID of SetFilterRequest */ + log.info("FilterREQ: " + componentId.getComponentName()); + byte[] filterresp = { 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00 };/* SET_FILTER_REP = 0x0009; /**< ID of SetFilterReply */ + + String filter = new String(buffer, 10, buffer.length - 10); + log.debug("FilterREQ: filter=" + filter); + try { + FilterPackets fp = new FilterPackets(filter, componentId, + ComponentCollection.get(componentId.getComponentName() + "-data"), this.cte/* tsiPortId */); + ComponentCollectionFilter2Port.put(componentId.getComponentName(), fp); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } + + FilterMsgFIFO.add(componentId); + recv_reply = receiveBuffer(filterresp, filterresp.length); + break; + + case 3:/* START_CAPTURE_REQ = 0x0003; /**< ID of StartCaptureRequest */ + log.info("StartCaptureREQ: " + componentId.getComponentName()); + log.info("StartCaptureREQ: ComponentCollectionFilter2Port=" + ComponentCollectionFilter2Port.size()); + byte[] startcapresp = { 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00 };/* START_CAPTURE_REP = 0x0004; /**< ID of StartCaptureReply */ + + if (!ComponentCollectionFilter2Port.isEmpty()) { + + Enumeration keys = ComponentCollectionFilter2Port.keys(); + // log.info("StartCaptureREQ: keys=" + keys); + + do { + try { + String key = (String) keys.nextElement(); + FilterPackets fp = ComponentCollectionFilter2Port.get(key); + log.info("StartCaptureREQ: launch ReadCaptureThread for component " + + fp.componentId.getComponentName()); + ReadCaptureThread t = new ReadCaptureThread(fp.componentId.getComponentName(), log, + tracefile, fp); + t.join(1000); + Thread.sleep(100); + } catch (Exception e) { + log.debug(e.getMessage()); + e.printStackTrace(); + } + } while (keys.hasMoreElements()); + // adapterCollection.clear(); + } + + recv_reply = receiveBuffer(startcapresp, startcapresp.length); + break; + + case 5:/* STOP_CAPTURE_REQ = 0x0005; /**< ID of StopCaptureRequest */ + log.info("StopCaptureREQ"); + byte[] stopcapresp = { 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00 };/* STOP_CAPTURE_REP = 0x0006; /**< ID of StopCaptureReply */ + + if (!ComponentCollectionFilter2Port.isEmpty()) { + + Enumeration keys = ComponentCollectionFilter2Port.keys(); + + do { + try { + String key = (String) keys.nextElement(); + FilterPackets fp = ComponentCollectionFilter2Port.get(key); + + // Check active capture threads + Thread.sleep(100); + + } catch (Exception e) { + log.debug(e.getMessage()); + } + } while (keys.hasMoreElements()); + // adapterCollection.clear(); + } + + recv_reply = receiveBuffer(stopcapresp, stopcapresp.length); + break; + + default: + + } - recv_reply=receiveBuffer(filterresp, filterresp.length); - break; - - case 3:/*START_CAPTURE_REQ = 0x0003; /**< ID of StartCaptureRequest */ - log.info("StartCaptureREQ: " + componentId.getComponentName()); - log.info("StartCaptureREQ: ComponentCollectionFilter2Port=" + ComponentCollectionFilter2Port.size()); - byte[] startcapresp= {0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*START_CAPTURE_REP = 0x0004; /**< ID of StartCaptureReply */ - - if (!ComponentCollectionFilter2Port.isEmpty()) { - - Enumeration keys = ComponentCollectionFilter2Port.keys(); - //log.info("StartCaptureREQ: keys=" + keys); - - do { - try{ - String key = (String) keys.nextElement(); - FilterPackets fp = ComponentCollectionFilter2Port.get(key); - log.info("StartCaptureREQ: launch ReadCaptureThread for component " + fp.componentId.getComponentName()); - ReadCaptureThread t = new ReadCaptureThread (fp.componentId.getComponentName(),log, tracefile,fp); - t.join(1000); - Thread.sleep(100); - }catch(Exception e){ - log.debug(e.getMessage()); - e.printStackTrace(); - } - } while (keys.hasMoreElements()); - //adapterCollection.clear(); - } - - recv_reply=receiveBuffer(startcapresp, startcapresp.length); - break; - - case 5:/*STOP_CAPTURE_REQ = 0x0005; /**< ID of StopCaptureRequest */ - log.info("StopCaptureREQ"); - byte[] stopcapresp= {0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*STOP_CAPTURE_REP = 0x0006; /**< ID of StopCaptureReply */ - - if (!ComponentCollectionFilter2Port.isEmpty()) { - - Enumeration keys = ComponentCollectionFilter2Port.keys(); - - do { - try{ - String key = (String) keys.nextElement(); - FilterPackets fp = ComponentCollectionFilter2Port.get(key); - - //Check active capture threads - Thread.sleep(100); - - }catch(Exception e){ - log.debug(e.getMessage()); - } - } while (keys.hasMoreElements()); - //adapterCollection.clear(); - } - - recv_reply=receiveBuffer(stopcapresp, stopcapresp.length); - break; - - default: - - } - // int packetSize = message.length; // byte[] packet = new byte[packetSize]; // System.arraycopy(message, 0, packet, 0, message.length); // - boolean result=false; - if(tsiPortId.getPortName().equals("acPort")){ - if (componentId.getComponentName().equals("MTC")){ - //result = send(packet); - result = true; - } - else{ - //for selection sequence to which PTC first send resonse //FILTER_REQ - FILTER_REP - FilterMsgFIFO.add(componentId); - //result = send(packet); + boolean result = false; + if (tsiPortId.getPortName().equals("acPort")) { + if (componentId.getComponentName().equals("MTC")) { + // result = send(packet); + result = true; + } else { + // for selection sequence to which PTC first send resonse //FILTER_REQ - + // FILTER_REP + //log.debug(FilterMsgFIFO.size()); + //FilterMsgFIFO.add(componentId); + // result = send(packet); result = true; } - }else{ - //result = send(packet); + } else { + // result = send(packet); result = true; } @@ -285,57 +285,55 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter } return new TriStatusImpl(TriStatus.TRI_ERROR); } - - public TriStatus triUnmap(){ - return new TriStatusImpl(TriStatus.TRI_OK); - } - - //public synchronized TriStatus triUnmap() { + + public TriStatus triUnmap() { + return new TriStatusImpl(TriStatus.TRI_OK); + } + + // public synchronized TriStatus triUnmap() { public TriStatus triUnmap(TriPortId comPortId, TriPortId tsiPortId) { - //log.info("triUnmap"); + // log.info("triUnmap"); try { boolean result = true; - - if(tsiPortId.getPortName().equals("acPort")){ - if (comPortId.getComponent().getComponentName().equals("MTC")){ - //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); - result = true;//disconnect(); - }else{ - ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); - ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName(), comPortId); - //log.debug(ComponentCollection.elements().toString()); - result = true; //assume MTC acport was successfully connected + + if (tsiPortId.getPortName().equals("acPort")) { + if (comPortId.getComponent().getComponentName().equals("MTC")) { + // ComponentCollection.remove(comPortId.getComponent().getComponentName(), + // tsiPortId); + result = true;// disconnect(); + } else { + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName(), comPortId); + // log.debug(ComponentCollection.elements().toString()); + result = true; // assume MTC acport was successfully connected } - }else - if (tsiPortId.getPortName().equals("sipPort")){ - ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); - ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-data", comPortId); - //log.debug(ComponentCollection.elements().toString()); - result = true; //assume MTC acport was successfully connected - }else - if (tsiPortId.getPortName().equals("diameterPort")){ - ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); - ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-data", comPortId); - //log.debug(ComponentCollection.elements().toString()); - result = true; //assume MTC acport was successfully connected - }else - if (tsiPortId.getPortName().equals("dPort")){ - ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); - ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-d", comPortId); - //log.debug(ComponentCollection.elements().toString()); - result = true; //assume MTC acport was successfully connected - }else{ - result = false;//disconnect(); + } else if (tsiPortId.getPortName().equals("sipPort")) { + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName() + "-data", comPortId); + // log.debug(ComponentCollection.elements().toString()); + result = true; // assume MTC acport was successfully connected + } else if (tsiPortId.getPortName().equals("diameterPort")) { + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName() + "-data", comPortId); + // log.debug(ComponentCollection.elements().toString()); + result = true; // assume MTC acport was successfully connected + } else if (tsiPortId.getPortName().equals("dPort")) { + ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId); + ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName() + "-d", comPortId); + // log.debug(ComponentCollection.elements().toString()); + result = true; // assume MTC acport was successfully connected + } else { + result = false;// disconnect(); } - + return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR); - + } catch (Throwable ex) { log.error("Exception: ", ex); } return new TriStatusImpl(TriStatus.TRI_ERROR); } - + protected int receiveBuffer(byte[] buffer, int bufferSize) { // Try to decode message Packet ippacket = new Packet(); @@ -347,7 +345,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter int iotmsg = ((buffer[0] & 0xFF))|((buffer[1] & 0xFF) << 8);//iot message type byte[] message = new byte[packetLength]; - + log.debug("IOT MSG TYPE "+iotmsg); if (iotmsg==1){ //CAPTURE_DATA_IND byte[] packetb = new byte[packetLength-0x1b]; System.arraycopy(buffer,0x1b, packetb, 0, packetLength-0x1b); @@ -362,7 +360,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter System.arraycopy(buffer,0, message, 0, packetLength); } //base (MTC) component - TriComponentId compid = comPortId.getComponent(); + TriComponentId compid = this.comPortId.getComponent(); //for selection sequence to which PTC first send response - //FILTER_MSG_RSP if (!FilterMsgFIFO.isEmpty()){ compid = FilterMsgFIFO.remove(); @@ -376,6 +374,7 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter //DONE in separate class } else + log.debug("ENQUE"+tsiPortId.toString()+" "+compid.getComponentName().toString()); cte.triEnqueueMsg(tsiPortId, triAddress, compid/*comPortId.getComponent()*/, triMessage); } @@ -384,9 +383,9 @@ public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapter } public void setTraceFile(String tracefile) { - this.tracefile=tracefile; + this.tracefile = tracefile; } - + public String getTraceFile() { return this.tracefile; } diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 751c737..57ad314 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -470,9 +470,49 @@ module AtsImsIot_Diameter_Templates { group DiameterTemplates { group CxMessageTemplates{ + group CxRequestBasicTemplates{ + + template MAR_MSG mw_MAR_basic modifies mw_MAR_dummy := { + header := mw_diameterHeaderReq_dummy(MAR_E, c_applId3GPPCxDx), + mAR_Body :={ + auth_Application_Id := *, + sIP_AOR := *, + sIP_Method := * + } + } + + template UAR_MSG mw_UAR_basic modifies mw_UAR_dummy := { + header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), + uAR_Body :={ + auth_Session_State := mw_authSessionState_noStateMaintained, + user_Name := ?, + sIP_AOR := *, + sIP_Visited_Network_Id := *, + sIP_User_Authorization_Type := * + } + } + + template RTR_MSG mw_RTR_basic modifies mw_RTR_dummy := { + header := mw_diameterHeaderReq_dummy(RTR_E, c_applId3GPPCxDx), + rTR_Body :={ + auth_Application_Id := * + //deregistration_Reason := mw_deregistrationReason + } + } + + template SAR_MSG mw_SAR_basic modifies mw_SAR_dummy := { + header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), + sAR_Body :={ + auth_Application_Id := *, + sIP_Server_Assignment_Type := *, + sIP_User_Data_Already_Available := * + } + } + + } group CxRequestMessageTemplates{ - template MAR_MSG mw_MAR modifies mw_MAR_dummy := { + template MAR_MSG mw_MAR modifies mw_MAR_basic := { header := mw_diameterHeaderReq_dummy(MAR_E, c_applId3GPPCxDx), mAR_Body :={ vendor_Specific_Application_Id := ?, @@ -495,12 +535,23 @@ module AtsImsIot_Diameter_Templates { } } - template SAR_MSG mw_SAR_UnregisteredUser modifies mw_SAR_dummy := { + template SAR_MSG mw_SAR_Registration modifies mw_SAR_basic := { + header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), + sAR_Body :={ + vendor_Specific_Application_Id := ?, + auth_Session_State := mw_authSessionState_noStateMaintained, + public_Identity := ?, + server_Name := ?, + server_Assignment_Type := mw_serverAssignmentType(REGISTRATION_E), + user_Data_Already_Available := ? + } + } + + template SAR_MSG mw_SAR_UnregisteredUser modifies mw_SAR_basic := { header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), sAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - user_Name := omit, public_Identity := ?, server_Name := ?, server_Assignment_Type := mw_serverAssignmentType(UNREGISTERED_USER_E), @@ -508,12 +559,11 @@ module AtsImsIot_Diameter_Templates { } } - template SAR_MSG mw_SAR_UserDeregistration modifies mw_SAR_dummy := { + template SAR_MSG mw_SAR_UserDeregistration modifies mw_SAR_basic := { header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), sAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - user_Name := omit, public_Identity := ?, server_Name := ?, server_Assignment_Type := mw_serverAssignmentType(USER_DEREGISTRATION_E), @@ -521,7 +571,7 @@ module AtsImsIot_Diameter_Templates { } } - template UAR_MSG mw_UAR_Registration modifies mw_UAR_dummy := { + template UAR_MSG mw_UAR_Registration modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, @@ -529,40 +579,31 @@ module AtsImsIot_Diameter_Templates { user_Name := ?, public_Identity := ?, visited_Network_Identifier := ?, - user_Authorization_Type := mw_userAuthorizationType(REGISTRATION), - sIP_AOR := *, - sIP_Visited_Network_Id := *, - sIP_User_Authorization_Type := * + user_Authorization_Type := mw_userAuthorizationType(REGISTRATION) } } - template UAR_MSG mw_UAR modifies mw_UAR_dummy := { + template UAR_MSG mw_UAR modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?, - public_Identity := ?, - sIP_AOR := *, - sIP_Visited_Network_Id := *, - sIP_User_Authorization_Type := * + public_Identity := ? } } - template UAR_MSG mw_UAR_unknownPrivateId modifies mw_UAR_dummy := { + template UAR_MSG mw_UAR_unknownPrivateId modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?,//UNKNOWN PRIVATE USER IDENTITY - public_Identity := ?, - sIP_AOR := *, - sIP_Visited_Network_Id := *, - sIP_User_Authorization_Type := * + public_Identity := ? } } - template UAR_MSG mw_UAR_deRegistration modifies mw_UAR_dummy := { + template UAR_MSG mw_UAR_deRegistration modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, @@ -570,20 +611,60 @@ module AtsImsIot_Diameter_Templates { user_Name := ?, public_Identity := ?, visited_Network_Identifier := ?, - user_Authorization_Type := mw_userAuthorizationType(DE_REGISTRATION), - sIP_AOR := *, - sIP_Visited_Network_Id := *, - sIP_User_Authorization_Type := * + user_Authorization_Type := mw_userAuthorizationType(DE_REGISTRATION) } } }// end group CxRequestMessageTemplates + + group CxAnswertBasicTemplates{ + + template MAA_MSG mw_MAA_basic modifies mw_MAA_dummy := { + header := mw_diameterHeaderAns_dummy(MAA_E, c_applId3GPPCxDx), + mAA_Body :={ + auth_Application_Id := * + } + } + + template RTA_MSG mw_RTA_basic modifies mw_RTA_dummy := { + header := mw_diameterHeaderAns_dummy(RTA_E, c_applId3GPPCxDx), + rTA_Body :={ + auth_Application_Id := * + } + } + + template SAA_MSG mw_SAA_basic modifies mw_SAA_dummy := { + header := mw_diameterHeaderAns_dummy(SAA_E, c_applId3GPPCxDx), + sAA_Body :={ + auth_Application_Id := *, + vendor_Specific_Application_Id := ?, + sIP_User_Data := *, + sIP_Accounting_Information := * + } + } + + template UAA_MSG mw_UAA_basic modifies mw_UAA_dummy := { + header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), + uAA_Body :={ + vendor_Specific_Application_Id := ?, + auth_Application_Id := *, + experimental_Result := *, + supported_Features := *, + server_Name := *, + server_Capabilities := *, + failed := * + } + } + + }// end group CxAnswertBasicTemplates + group CxAnswertMessageTemplates{ template MAA_MSG mw_MAA modifies mw_MAA_dummy := { header := mw_diameterHeaderAns_dummy(MAA_E, c_applId3GPPCxDx), mAA_Body :={ vendor_Specific_Application_Id := ?, + auth_Application_Id := *, auth_Session_State := mw_authSessionState_noStateMaintained, result_Code := mw_resultCode(mw_resultCode_diameterSuccess), experimental_Result := omit, @@ -593,7 +674,7 @@ module AtsImsIot_Diameter_Templates { } } - template RTA_MSG mw_RTA modifies mw_RTA_dummy := { + template RTA_MSG mw_RTA modifies mw_RTA_basic := { header := mw_diameterHeaderAns_dummy(RTA_E, c_applId3GPPCxDx), rTA_Body :={ vendor_Specific_Application_Id := ?, @@ -602,7 +683,7 @@ module AtsImsIot_Diameter_Templates { } } - template SAA_MSG mw_SAA modifies mw_SAA_dummy := { + template SAA_MSG mw_SAA modifies mw_SAA_basic := { header := mw_diameterHeaderAns_dummy(SAA_E, c_applId3GPPCxDx), sAA_Body :={ vendor_Specific_Application_Id := ?, @@ -611,7 +692,7 @@ module AtsImsIot_Diameter_Templates { } } - template SAA_MSG mw_SAA_userData modifies mw_SAA_dummy := { + template SAA_MSG mw_SAA_userData modifies mw_SAA_basic := { header := mw_diameterHeaderAns_dummy(SAA_E, c_applId3GPPCxDx), sAA_Body :={ vendor_Specific_Application_Id := ?, @@ -622,23 +703,21 @@ module AtsImsIot_Diameter_Templates { } } - template UAA_MSG mw_UAA_diamFirstRegistration modifies mw_UAA_dummy := { + template UAA_MSG mw_UAA_diamFirstRegistration modifies mw_UAA_basic := { header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, - auth_Application_Id := *, auth_Session_State := mw_authSessionState_noStateMaintained, result_Code := omit, experimental_Result := mw_experimentalResult(DIAMETER_FIRST_REGISTRATION_E) } } - template UAA_MSG mw_UAA_diamSubsequentRegistration modifies mw_UAA_dummy := { + template UAA_MSG mw_UAA_diamSubsequentRegistration modifies mw_UAA_basic := { header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - auth_Application_Id := *, result_Code := omit, experimental_Result := mw_experimentalResult(DIAMETER_SUBSEQUENT_REGISTRATION_E), server_Name := ?, @@ -646,11 +725,10 @@ module AtsImsIot_Diameter_Templates { } } - template UAA_MSG mw_UAA_diamErrorUserUnknown modifies mw_UAA_dummy := { + template UAA_MSG mw_UAA_diamErrorUserUnknown modifies mw_UAA_basic := { header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, - auth_Application_Id := *, auth_Session_State := mw_authSessionState_noStateMaintained, result_Code := omit, experimental_Result := mw_experimentalResult(DIAMETER_ERROR_USER_UNKNOWN_E), @@ -658,11 +736,10 @@ module AtsImsIot_Diameter_Templates { } } - template UAA_MSG mw_UAA_diamSuccess modifies mw_UAA_dummy := { + template UAA_MSG mw_UAA_diamSuccess modifies mw_UAA_basic := { header := mw_diameterHeaderAns_dummy(UAA_E, c_applId3GPPCxDx), uAA_Body :={ vendor_Specific_Application_Id := ?, - auth_Application_Id := *, auth_Session_State := mw_authSessionState_noStateMaintained, result_Code := mw_resultCode(mw_resultCode_diameterSuccess), experimental_Result := omit, diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 3e5b77a..99705ec 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -2652,18 +2652,16 @@ module AtsImsIot_Functions { * If single is set to true then only CxSH monitor is enabled. If single is set to false this monitor is set to CxIH monitor. * @param p_singleCxInterface true - only one interface Cx with IH-SH/false - two separate interfaces one for SH(S-CSCF HSS) and another for IH(I-CSCF HSS) */ - function f_getCxInterface(boolean p_singleCxInterface) runs on ImsTestCoordinator system IotSystemInterface return DiameterInterfaceMonitor { - var DiameterInterfaceMonitor v_diameterInterfaceMonitor; + function f_getCxInterface(boolean p_singleCxInterface) runs on ImsTestCoordinator return DiameterInterfaceMonitor { if (p_singleCxInterface) { - v_diameterInterfaceMonitor := vc_vxlte_monitor_components.cxSH + return vc_vxlte_monitor_components.cxSH; } else { - v_diameterInterfaceMonitor := vc_vxlte_monitor_components.cxIH + return vc_vxlte_monitor_components.cxIH; } - return v_diameterInterfaceMonitor; - } + }//end f_getCxInterface } //end group diameterComponent diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index 8fda281..b81b882 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -46,8 +46,8 @@ module AtsImsIot_TD_DRG{ testcase TC_VxLTE_INT_DRG_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - + var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, @@ -59,7 +59,7 @@ module AtsImsIot_TD_DRG{ PX_DIAMETER_GX_INTERFACENAME})) { f_cf_createVxLteMonitor(); - + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); @@ -70,16 +70,14 @@ module AtsImsIot_TD_DRG{ // test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_07(vc_vxlte_monitor_components.gmA, false); // Events 1 - //f_mtc_check_TP_MW_PCSCF_REGISTER_07(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 - //f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS, false, true); // Event 5 - //f_mtc_check_TP_MW_SCSCF_REGISTER_07(vc_vxlte_monitor_components.mwIB, false, true); // Event 8 + f_mtc_check_TP_GM_PCSCF_REGISTER_07(vc_vxlte_monitor_components.gmA, true); // Events 1, 10 + f_mtc_check_TP_MW_PCSCF_REGISTER_07(vc_vxlte_monitor_components.mwPS, true); // Event 2 + //f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS, true); // Event 5 + //f_mtc_check_TP_MW_SCSCF_REGISTER_07(vc_vxlte_monitor_components.mwIB, true); // Event 8 - f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 6, 7 - //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, false); // Events 10 - f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 11 f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 12 f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 13, 14 @@ -130,7 +128,7 @@ module AtsImsIot_TD_DRG{ // test body - f_mtc_check_TP_CX_HSS_RTA_01(vc_vxlte_monitor_components.cxIH);// Event 1, 8 + f_mtc_check_TP_CX_HSS_RTA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 1, 8 //f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 //f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA, false); // Events 3 @@ -191,7 +189,7 @@ module AtsImsIot_TD_DRG{ //f_mtc_check_TP_MW_PCSCF_REGISTER_09(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 - f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 3, 4 + f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 //f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS, false, true); // Event 5 @@ -256,7 +254,7 @@ module AtsImsIot_TD_DRG{ //f_mtc_check_TP_MW_PCSCF_REGISTER_10(vc_vxlte_monitor_components.mwPS, false, true); // Event 3, 7 //f_mtc_check_TP_MW_SCSCF_REGISTER_10(vc_vxlte_monitor_components.mwIS, false, true); // Event 6, 7, 8 - f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 4, 5 + f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 4, 5 f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 10, 11 f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx);// Event 12 @@ -331,7 +329,7 @@ module AtsImsIot_TD_DRG{ f_mtc_check_TP_IC_IBCF_REGISTER_03(vc_vxlte_monitor_components.ic, false); // Event 3 //f_mtc_check_TP_MW_ICSCF_REGISTER_08(vc_vxlte_monitor_components.mwIS, false, true); // Event 4 - f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 5, 6 + f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6 f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 8, 9 f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 15 @@ -389,7 +387,7 @@ module AtsImsIot_TD_DRG{ // test body - f_mtc_check_TP_CX_HSS_RTA_01(vc_vxlte_monitor_components.cxIH);// Event 1, 16 + f_mtc_check_TP_CX_HSS_RTA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 1, 16 //f_mtc_check_TP_MW_SCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 9 f_mtc_check_TP_IC_IBCF_NOTIFY_01(vc_vxlte_monitor_components.ic, false); // Events 3, 8 @@ -458,7 +456,7 @@ module AtsImsIot_TD_DRG{ //f_mtc_check_TP_MW_PCSCF_REGISTER_12(vc_vxlte_monitor_components.mwPS, false, true); // Event 3 f_mtc_check_TP_IC_IBCF_REGISTER_04(vc_vxlte_monitor_components.ic, false); // Event 4, 13 - f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 6, 7 + f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 6, 7 //f_mtc_check_TP_MW_SCSCF_REGISTER_12(vc_vxlte_monitor_components.mwIS, false, true); // Event 8 @@ -529,7 +527,7 @@ module AtsImsIot_TD_DRG{ //f_mtc_check_TP_MW_ICSCF_BYE_07(vc_vxlte_monitor_components.mwIS, false, true); // Event 9, 13 f_mtc_check_TP_IC_IBCF_BYE_02(vc_vxlte_monitor_components.ic, false); // Event 10, 24 - f_mtc_check_TP_CX_HSS_UAA_04(vc_vxlte_monitor_components.cxIH);// Event 6, 7 + f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 6, 7 f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 14, 15 f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx);// Event 16 diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index f28127a..b40d57f 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -74,7 +74,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); // Event 2, 9 // FIXME Not on the PCAP traces // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 - + f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false);// Event 3, 4 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 6, 7 @@ -87,10 +87,10 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false);// Event 13, 14 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 16, 17 - // FIXME TD_VxLTE_INT_REG_01 indictes a SUBSCRIBE, we have an INVITE in log, do we have to change the TD_VxLTE_INT_REG_01 - //f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 - //f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 22, 23 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 22, 23 + //FIXME Rx and Gx interfaces not in PCAP traces f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx, false);// Event 25 f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx, false); // Event 26 f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx, false); // Event 27, 28 @@ -124,6 +124,7 @@ module AtsImsIot_TD_REG{ if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, PX_SIP_MW_PI_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, PX_DIAMETER_CX_IH_INTERFACENAME, PX_DIAMETER_RX_INTERFACENAME})) { @@ -329,6 +330,7 @@ module AtsImsIot_TD_REG{ PX_SIP_MW_PI_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME, PX_SIP_IC_INTERFACENAME, + PX_DIAMETER_CX_SH_INTERFACENAME, PX_DIAMETER_CX_IH_INTERFACENAME, PX_DIAMETER_RX_INTERFACENAME})) { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index 1a36e95..d2c997b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -86,24 +86,41 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_MAA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{mAR_MSG := mw_MAR}, - DIAMETER_MSG:{mAA_MSG := mw_MAA} - }, - {}, - {0, omit}, - "TP_CX_HSS_MAA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{mAR_MSG := mw_MAR} + }, + { + DIAMETER_MSG:{mAR_MSG := mw_MAR_basic} + }, + {0, omit}, + "TP_CX_HSS_MAA_01 - MAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{mAA_MSG := mw_MAA} + }, + { + DIAMETER_MSG:{mAA_MSG := mw_MAA_basic} + }, + {0, omit}, + "TP_CX_HSS_MAA_01 - MAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; } } // End of function f_mtc_check_TP_CX_HSS_MAA_01 @@ -157,23 +174,42 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_RTA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{rTR_MSG := mw_RTR}, - DIAMETER_MSG:{rTA_MSG := mw_RTA} - }, - {}, - {0, omit}, - "TP_CX_HSS_RTA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{rTR_MSG := mw_RTR} + }, + { + DIAMETER_MSG:{rTR_MSG := mw_RTR_basic} + }, + {0, omit}, + "TP_CX_HSS_RTA_01 - RTR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{rTA_MSG := mw_RTA} + }, + { + DIAMETER_MSG:{rTA_MSG := mw_RTA_basic} + }, + {0, omit}, + "TP_CX_HSS_RTA_01 - RTA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_RTA_01 @@ -230,25 +266,42 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_SAA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{sAR_MSG := mw_SAR_UnregisteredUser}, - DIAMETER_MSG:{sAA_MSG := mw_SAA_userData} - }, - {}, - {0, omit}, - "TP_CX_HSS_SAA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{sAR_MSG := mw_SAR_Registration/*mw_SAR_UnregisteredUser*/} //TODO_Check TP + }, + { + DIAMETER_MSG:{sAR_MSG := mw_SAR_basic} + }, + {0, omit}, + "TP_CX_HSS_SAA_01 - SAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{sAA_MSG := mw_SAA_userData} + }, + { + DIAMETER_MSG:{sAA_MSG := mw_SAA_basic} + }, + {0, omit}, + "TP_CX_HSS_SAA_01 - SAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_SAA_01 @@ -303,23 +356,42 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_SAA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{sAR_MSG := mw_SAR_UserDeregistration}, - DIAMETER_MSG:{sAA_MSG := mw_SAA} - }, - {}, - {0, omit}, - "TP_CX_HSS_SAA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{sAR_MSG := mw_SAR_UserDeregistration} + }, + { + DIAMETER_MSG:{sAR_MSG := mw_SAR_basic} + }, + {0, omit}, + "TP_CX_HSS_SAA_02 -SAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{sAA_MSG := mw_SAA} + }, + { + DIAMETER_MSG:{sAA_MSG := mw_SAA_basic} + }, + {0, omit}, + "TP_CX_HSS_SAA_02 - SAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_SAA_02 @@ -380,52 +452,40 @@ group g_HSS { function f_mtc_check_TP_CX_HSS_UAA_01( DiameterInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, - in boolean p_forward_to_mtc := true + in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ -// p_monitorCompRef.start ( -// f_Iot_Diameter_receive( -// { -// DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration}, -// DIAMETER_MSG:{uAA_MSG := mw_UAA_diamFirstRegistration} -// }, -// {}, -// {0, omit}, -// "TP_CX_HSS_UAA_01", -// p_forward_to_mtc, -// p_checkMessage -// ) -// ); -// p_monitorCompRef.done; - - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration} - }, - {}, - {0, omit}, - "TP_CX_HSS_UAA_01 - UAR", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration} + }, + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} + }, + {0, omit}, + "TP_CX_HSS_UAA_01 - UAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamFirstRegistration} - }, - {}, - {0, omit}, - "TP_CX_HSS_UAA_01 - UAA", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; - + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAA_MSG := mw_UAA_diamFirstRegistration} + }, + { + DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + }, + {0, omit}, + "TP_CX_HSS_UAA_01 - UAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; } } // End of function f_mtc_check_TP_CX_HSS_UAA_01 @@ -469,25 +529,41 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_UAA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start ( - f_Iot_Diameter_receive( + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAR_MSG := mw_UAR} + }, + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_basic}}, + {0, omit}, + "TP_CX_HSS_UAA_02 - UAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAA_MSG := mw_UAA_diamSuccess/*uAA_MSG := mw_UAA_diamSubsequentRegistration*/}//TODO:Check TP + }, { - DIAMETER_MSG:{uAR_MSG := mw_UAR}, - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamSubsequentRegistration} + DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} }, - {}, {0, omit}, - "TP_CX_HSS_UAA_02", + "TP_CX_HSS_UAA_02 - UAA", p_forward_to_mtc, p_checkMessage - ) - ); - p_monitorCompRef.done; - } + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_UAA_02 /** @@ -529,22 +605,40 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_UAA_03( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{uAR_MSG := mw_UAR_unknownPrivateId}, - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamErrorUserUnknown} - }, - {}, - {0, omit}, - "TP_CX_HSS_UAA_03", - p_forward_to_mtc, - p_checkMessage ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_unknownPrivateId} + }, + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} + }, + {0, omit}, + "TP_CX_HSS_UAA_03 - UAR", + p_forward_to_mtc, + p_checkMessage ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAA_MSG := mw_UAA_diamErrorUserUnknown} + }, + { + DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + }, + {0, omit}, + "TP_CX_HSS_UAA_03 - UAA", + p_forward_to_mtc, + p_checkMessage ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_UAA_03 /** @@ -587,23 +681,42 @@ group g_HSS { */ function f_mtc_check_TP_CX_HSS_UAA_04( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{uAR_MSG := mw_UAR_deRegistration}, - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamSuccess} - }, - {}, - {0, omit}, - "TP_CX_HSS_UAA_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_deRegistration} + }, + { + DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} + }, + {0, omit}, + "TP_CX_HSS_UAA_04 - UAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uAA_MSG := mw_UAA_diamSuccess} + }, + { + DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + }, + {0, omit}, + "TP_CX_HSS_UAA_04 - UAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_CX_HSS_UAA_04 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index b7628f7..e91c0b4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -269,7 +269,7 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_REGISTER_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); @@ -366,20 +366,57 @@ module AtsImsIot_TP_behavior_GM { in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_404NotFound_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_REGISTER_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + v_userInfoA.publicId := v_userInfoA.publicId & "_Unknown"; // PX_UE_A_INVALID_USERNAME + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_REGISTER_01( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_03 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 401 Unauthorized response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_404NotFound_Base), + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_03 - 404 Not Found", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_03 function f_mtc_check_TP_GM_PCSCF_REGISTER_04( // FIXME RMI To be reviewed @@ -448,21 +485,60 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_REGISTER_07( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_REGISTER_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check first DeREGISTER request + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_REGISTER_07( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_07 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check DeREGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_07 - 200 OK", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_07 /** @@ -547,24 +623,52 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_SUBSCRIBE_Request_Base), - mw_SipResponse (mw_200OK_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_SUBSCRIBE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the SUBSCRIBE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_SUBSCRIBE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_SUBSCRIBE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {}, + {0, omit}, + "TP_GM_PCSCF_SUBSCRIBE_01 - 200 Okay", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01 function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index 6bafec3..7684112 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -83,22 +83,24 @@ group g_PGW { */ function f_mtc_check_TP_GX_PGW_CCR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) } - }, - {}, - {0, omit}, - "TP_RX_PGW_CCR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_RX_PGW_CCR_01 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PGW_CCR_01 /** @@ -134,22 +136,24 @@ group g_PGW { */ function f_mtc_check_TP_GX_PGW_CCR_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } - }, - {}, - {0, omit}, - "TP_RX_PGW_CCR_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_RX_PGW_CCR_02 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PGW_CCR_02 @@ -199,25 +203,38 @@ group g_PGW { */ function f_mtc_check_TP_GX_PGW_RAA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)}, - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode} - }, - {}, - {0, omit}, - "TP_RX_PGW_RAA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)} + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_01 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode} + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_01 - RAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PGW_RAA_01 @@ -254,23 +271,38 @@ group g_PGW { */ function f_mtc_check_TP_GX_PGW_RAA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy }, - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PGW_RAA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_02 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_02 - RAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PGW_RAA_02 @@ -307,23 +339,38 @@ group g_PGW { */ function f_mtc_check_TP_GX_PGW_RAA_03( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy}, - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PGW_RAA_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy} + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_03 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_03 - RAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PGW_RAA_03 @@ -362,23 +409,38 @@ group g_PGW { */ function f_mtc_check_TP_GX_PGW_RAA_04( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove }, - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PGW_RAA_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_04 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PGW_RAA_04 - RAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PGW_RAA_04 @@ -461,23 +523,38 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_CCA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }, - DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 } - }, - {}, - {0, omit}, - "TP_RX_PCRF_CCA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_01 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_01 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_CCA_01 @@ -517,23 +594,38 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_CCA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PCRF_CCA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_02 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_02 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_CCA_02 @@ -572,23 +664,38 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_CCA_03( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }, - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PCRF_CCA_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_03 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_03 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_CCA_03 @@ -639,22 +746,24 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_CCA_04( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 } - }, - {}, - {0, omit}, - "TP_RX_PCRF_CCA_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_04 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_CCA_04 @@ -692,22 +801,24 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_CCA_05( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PCRF_CCA_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_CCA_05 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_CCA_05 @@ -764,22 +875,24 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_RAR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)} - }, - {}, - {0, omit}, - "TP_RX_PCRF_RAR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)} + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_01 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_RAR_01 /** @@ -817,22 +930,24 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_RAR_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove} - }, - {}, - {0, omit}, - "TP_RX_PCRF_RAR_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove} + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_02 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_RAR_02 /** @@ -887,22 +1002,24 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_RAR_03( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) } //During validation some additions may be required - }, - {}, - {0, omit}, - "TP_RX_PCRF_RAR_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) } //During validation some additions may be required + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_03 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_RAR_03 /** @@ -939,22 +1056,24 @@ group g_PCRF { */ function f_mtc_check_TP_GX_PCRF_RAR_04( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove } //During validation some additions may be required - }, - {}, - {0, omit}, - "TP_RX_PCRF_RAR_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove } //During validation some additions may be required + }, + {}, + {0, omit}, + "TP_RX_PCRF_RAR_04 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GX_PCRF_RAR_04 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 9f96e39..7f13514 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -281,7 +281,7 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_REGISTER_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); @@ -393,22 +393,59 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_REGISTER_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_404NotFound_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + v_userInfoA.publicId := v_userInfoA.publicId & "_Unknown"; // PX_UE_A_INVALID_USERNAME + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_REGISTER_01( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_03 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check REGISTER 401 Unauthorized response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_404NotFound_Base), + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_03 - 404 Not Found", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_03 function f_mtc_check_TP_MW_PCSCF_REGISTER_04( // FIXME RMI To be reviewed @@ -480,8 +517,60 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_REGISTER_07( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check first DeREGISTER request + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_REGISTER_07( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_07 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + // Check DeREGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_07 - 200 OK", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } p_monitorCompRef.start( f_Iot_Sip_receive( { @@ -627,14 +716,23 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + // Check the SUBSCRIBE p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipRequest(mw_SUBSCRIBE_Request_Base) + mw_SipRequest( + mw_TP_MW_PCSCF_SUBSCRIBE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) }, {}, {0, omit}, @@ -647,8 +745,11 @@ module AtsImsIot_TP_behavior_MW_PS { // Check SUBSCRIBE 200 OK response p_monitorCompRef.start( f_Iot_Sip_receive( - { - mw_SipResponse (mw_200OK_Base) + { + mw_SipResponse(mw_Response_2xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) }, {}, {0, omit}, diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index 9e5b6db..e1a0db6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -63,23 +63,38 @@ group g_PCRF_ASA { */ function f_mtc_check_TP_RX_PCRF_ASA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) }, - DIAMETER_MSG:{ aSA_MSG := mw_ASA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PCRF_ASA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } + }, + {}, + {0, omit}, + "TP_RX_PCRF_ASA_01 - ASR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aSA_MSG := mw_ASA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_ASA_01 - ASA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCRF_ASA_01 } // end group g_PCRF_ASA @@ -126,25 +141,38 @@ group g_PCRF_AAA { */ function f_mtc_check_TP_RX_PCRF_AAA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy }, - DIAMETER_MSG:{ aAA_MSG := mw_AAA_AcceptableService } - }, - {}, - {0, omit}, - "TP_RX_PCRF_AAA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCRF_AAA_01 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_AcceptableService } + }, + {}, + {0, omit}, + "TP_RX_PCRF_AAA_01 - AAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCRF_AAA_01 /** @@ -172,22 +200,24 @@ group g_PCRF_AAA { */ function f_mtc_check_TP_RX_PCRF_AAA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription } - }, - {}, - {0, omit}, - "TP_RX_PCRF_AAA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription } + }, + {}, + {0, omit}, + "TP_RX_PCRF_AAA_02 - AAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCRF_AAA_02 /** @@ -220,22 +250,24 @@ group g_PCRF_AAA { */ function f_mtc_check_TP_RX_PCRF_AAA_03( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode } - }, - {}, - {0, omit}, - "TP_RX_PCRF_AAA_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode } + }, + {}, + {0, omit}, + "TP_RX_PCRF_AAA_03 - AAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCRF_AAA_03 } // end group g_PCRF_AAA @@ -275,22 +307,24 @@ group g_PCRF_STA { */ function f_mtc_check_TP_RX_PCRF_STA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } - }, - {}, - {0, omit}, - "TP_RX_PCRF_STA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_RX_PCRF_STA_01 - STA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCRF_STA_01 /** @@ -325,23 +359,38 @@ group g_PCRF_STA { */ function f_mtc_check_TP_RX_PCRF_STA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy }, - DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } - }, - {}, - {0, omit}, - "TP_RX_PCRF_STA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCRF_STA_02 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_RX_PCRF_STA_02 - STA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCRF_STA_02 } // end group g_PCRF_STA @@ -390,22 +439,24 @@ group g_PCSCF_ASR { */ function f_mtc_check_TP_RX_PCSCF_ASR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_ASR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_ASR_01 - ASR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_ASR_01 } //end group g_PCSCF_ASR { @@ -465,23 +516,23 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_specificActionLossOfBearer } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_specificActionLossOfBearer } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_01 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01 @@ -517,22 +568,26 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy }//TODO:check that AAR is NOT sent - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + //check if nothing received + }, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } //Fail criteria: check if AAR is sent + }, + {0, omit}, + "TP_RX_PCSCF_AAR_02 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_02 /** @@ -584,22 +639,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_03( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_03 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_03 /** @@ -653,22 +710,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_04( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_04 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_04 /** @@ -723,22 +782,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_05( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_05 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_05 /** @@ -791,22 +852,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_06( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_06", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_06 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_06 /** @@ -861,22 +924,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_07( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_07", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_07 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_07 /** @@ -931,22 +996,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_08( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_08", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_08 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_08 /** @@ -1001,22 +1068,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_09( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_09", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_09 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_09 /** @@ -1070,22 +1139,24 @@ group g_PCSCF_AAR { */ function f_mtc_check_TP_RX_PCSCF_AAR_10( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_AAR_10", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_AAR_10 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_AAR_10 } // end group g_PCSCF_AAR @@ -1126,22 +1197,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_01 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_01 /** @@ -1178,22 +1251,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_02 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_02 /** @@ -1229,22 +1304,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_03( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_03 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_03 /** @@ -1280,22 +1357,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_04( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_04 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_04 /** @@ -1331,22 +1410,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_05( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_05 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_05 /** @@ -1382,22 +1463,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_06( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_06", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_06 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_06 /** @@ -1433,22 +1516,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_07( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_07", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_07 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_07 /** @@ -1484,22 +1569,24 @@ group g_PCSCF_STR { */ function f_mtc_check_TP_RX_PCSCF_STR_08( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_RX_PCSCF_STR_08", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_RX_PCSCF_STR_08 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_RX_PCSCF_STR_08 } // end group g_PCSCF_STR diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn index fea4d96..32892ba 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn @@ -61,23 +61,38 @@ group g_HSS { */ function f_mtc_check_TP_S6A_HSS_AIA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aIR_MSG := mw_AIR_dummy }, - DIAMETER_MSG:{ aIA_MSG := mw_AIA_resultCode } - }, - {}, - {0, omit}, - "TP_S6A_HSS_AIA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aIR_MSG := mw_AIR_dummy } + }, + {}, + {0, omit}, + "TP_S6A_HSS_AIA_01 - AIR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aIA_MSG := mw_AIA_resultCode } + }, + {}, + {0, omit}, + "TP_S6A_HSS_AIA_01 - AIA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_HSS_AIA_01 /** @@ -115,22 +130,24 @@ group g_HSS { */ function f_mtc_check_TP_S6A_HSS_CLR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cLR_MSG := mw_CLR_cancelation } - }, - {}, - {0, omit}, - "TP_S6A_HSS_CLR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cLR_MSG := mw_CLR_cancelation } + }, + {}, + {0, omit}, + "TP_S6A_HSS_CLR_01 - CLR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_HSS_CLR_01 /** @@ -166,23 +183,38 @@ group g_HSS { */ function f_mtc_check_TP_S6A_HSS_PUA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ pUER_MSG := mw_PUER_dummy }, - DIAMETER_MSG:{ pUEA_MSG := mw_PUEA_resultCode } - }, - {}, - {0, omit}, - "TP_S6A_HSS_PUA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ pUER_MSG := mw_PUER_dummy } + }, + {}, + {0, omit}, + "TP_S6A_HSS_PUA_01 - PUR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ pUEA_MSG := mw_PUEA_resultCode } + }, + {}, + {0, omit}, + "TP_S6A_HSS_PUA_01 - PUA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_HSS_PUA_01 /** @@ -219,23 +251,38 @@ group g_HSS { */ function f_mtc_check_TP_S6A_HSS_ULA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_dummy }, - DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags } - }, - {}, - {0, omit}, - "TP_S6A_HSS_ULA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ uLR_MSG := mw_ULR_dummy } + }, + {}, + {0, omit}, + "TP_S6A_HSS_ULA_01 - ULR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags } + }, + {}, + {0, omit}, + "TP_S6A_HSS_ULA_01 - ULA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_HSS_ULA_01 /** @@ -272,23 +319,38 @@ group g_HSS { */ function f_mtc_check_TP_S6A_HSS_ULA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_dummy }, - DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags } - }, - {}, - {0, omit}, - "TP_S6A_HSS_ULA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ uLR_MSG := mw_ULR_dummy } + }, + {}, + {0, omit}, + "TP_S6A_HSS_ULA_02 - ULR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags } + }, + {}, + {0, omit}, + "TP_S6A_HSS_ULA_02 - ULA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_HSS_ULA_02 @@ -331,22 +393,24 @@ group g_MME { */ function f_mtc_check_TP_S6A_MME_AIR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aIR_MSG := mw_AIR } - }, - {}, - {0, omit}, - "TP_S6A_MME_AIR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aIR_MSG := mw_AIR } + }, + {}, + {0, omit}, + "TP_S6A_MME_AIR_01 - AIR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_MME_AIR_01 /** @@ -382,23 +446,38 @@ group g_MME { */ function f_mtc_check_TP_S6A_MME_CLA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cLR_MSG := mw_CLR_dummy }, - DIAMETER_MSG:{ cLA_MSG := mw_CLA_resultCode } - }, - {}, - {0, omit}, - "TP_S6A_MME_CLA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cLR_MSG := mw_CLR_dummy } + }, + {}, + {0, omit}, + "TP_S6A_MME_CLA_01 - CLR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cLA_MSG := mw_CLA_resultCode } + }, + {}, + {0, omit}, + "TP_S6A_MME_CLA_01 - CLA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_MME_CLA_01 /** @@ -434,22 +513,24 @@ group g_MME { */ function f_mtc_check_TP_S6A_MME_PUR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ pUER_MSG := mw_PUER_userName } - }, - {}, - {0, omit}, - "TP_S6A_MME_PUR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ pUER_MSG := mw_PUER_userName } + }, + {}, + {0, omit}, + "TP_S6A_MME_PUR_01 - PUR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_MME_PUR_01 /** @@ -488,22 +569,24 @@ group g_MME { */ function f_mtc_check_TP_S6A_MME_ULR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } - }, - {}, - {0, omit}, - "TP_S6A_MME_ULR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } + }, + {}, + {0, omit}, + "TP_S6A_MME_ULR_01 - ULR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_MME_ULR_01 /** @@ -542,22 +625,24 @@ group g_MME { */ function f_mtc_check_TP_S6A_MME_ULR_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } - }, - {}, - {0, omit}, - "TP_S6A_MME_ULR_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } + }, + {}, + {0, omit}, + "TP_S6A_MME_ULR_02 - ULR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S6A_MME_ULR_02 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn index f814927..9a253fd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn @@ -57,22 +57,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_AAR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } - }, - {}, - {0, omit}, - "TP_S9_PCRF_AAR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } + }, + {}, + {0, omit}, + "TP_S9_PCRF_AAR_01 - AAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_AAR_01 @@ -126,22 +128,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_AAA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_AcceptableService } - }, - {}, - {0, omit}, - "TP_S9_PCRF_AAA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_AcceptableService } + }, + {}, + {0, omit}, + "TP_S9_PCRF_AAA_01 - AAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_AAA_01 /** @@ -180,22 +184,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_AAA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription } - }, - {}, - {0, omit}, - "TP_S9_PCRF_AAA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription } + }, + {}, + {0, omit}, + "TP_S9_PCRF_AAA_02 - AAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_AAA_02 /** @@ -231,22 +237,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_ASR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } - }, - {}, - {0, omit}, - "TP_S9_PCRF_ASR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } + }, + {}, + {0, omit}, + "TP_S9_PCRF_ASR_01 - ASR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_ASR_01 /** @@ -279,22 +287,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_ASA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ aSA_MSG := mw_ASA_dummy } - }, - {}, - {0, omit}, - "TP_S9_PCRF_ASA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aSA_MSG := mw_ASA_dummy } + }, + {}, + {0, omit}, + "TP_S9_PCRF_ASA_01 - ASA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_ASA_01 /** @@ -360,22 +370,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_CCR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Establishment(INITIAL_REQUEST_E) } - }, - {}, - {0, omit}, - "TP_S9_PCRF_CCR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Establishment(INITIAL_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCR_01 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_CCR_01 /** @@ -416,22 +428,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_CCR_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Termination(INITIAL_REQUEST_E) } - }, - {}, - {0, omit}, - "TP_S9_PCRF_CCR_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Termination(INITIAL_REQUEST_E) } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCR_02 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_CCR_02 /** @@ -483,22 +497,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_CCA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_subsessionDecision_qosInfoAndDefaultEpsBearer } - }, - {}, - {0, omit}, - "TP_S9_PCRF_CCA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_subsessionDecision_qosInfoAndDefaultEpsBearer } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCA_01 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_CCA_01 /** @@ -537,22 +553,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_CCA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_subsessionDecisionAny } - }, - {}, - {0, omit}, - "TP_S9_PCRF_CCA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_subsessionDecisionAny } + }, + {}, + {0, omit}, + "TP_S9_PCRF_CCA_02 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_CCA_02 /** @@ -585,22 +603,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_STR_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } - }, - {}, - {0, omit}, - "TP_S9_PCRF_STR_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + }, + {}, + {0, omit}, + "TP_S9_PCRF_STR_01 - STR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_STR_01 /** @@ -636,22 +656,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_STA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } - }, - {}, - {0, omit}, - "TP_S9_PCRF_STA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_S9_PCRF_STA_01 - STA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_STA_01 /** @@ -687,22 +709,24 @@ group g_PCRF { */ function f_mtc_check_TP_S9_PCRF_STA_02( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } - }, - {}, - {0, omit}, - "TP_S9_PCRF_STA_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } + }, + {}, + {0, omit}, + "TP_S9_PCRF_STA_02 - STA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_S9_PCRF_STA_02 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn index 8fa93a3..497da57 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn @@ -77,23 +77,38 @@ group g_HSS { */ function f_mtc_check_TP_SH_HSS_UDA_01( DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, + in boolean p_checkMessage := false, in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{uDR_MSG := mw_UDR_userData}, - DIAMETER_MSG:{uDA_MSG := mw_UDA_diamSuccess} - }, - {}, - {0, omit}, - "TP_SH_HSS_UDA_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uDR_MSG := mw_UDR_userData} + }, + {}, + {0, omit}, + "TP_SH_HSS_UDA_01 - UDR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{uDA_MSG := mw_UDA_diamSuccess} + }, + {}, + {0, omit}, + "TP_SH_HSS_UDA_01 - UDA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_SH_HSS_UDA_01 diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 index 59c7e54..afeb328 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 @@ -88,6 +88,26 @@ module AtsImsIot_Templates_GM { } } // End of template mw_TP_GM_PCSCF_REGISTER_02 + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_07( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) charstring p_expires := "0" + ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path, + expires := mw_Expires(p_expires) + } + } // End of template mw_TP_GM_PCSCF_REGISTER_07 + template Response mw_401Unauthorized( template (present) CSeq p_cSeq := ?, template (present) WwwAuthenticate p_wwwAuthenticate := ? @@ -98,6 +118,39 @@ module AtsImsIot_Templates_GM { } } // End of template mw_401Unauthorized + template Response mw_404NotFound( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_404NotFound_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_404NotFound + + template (present) SUBSCRIBE_Request mw_TP_GM_PCSCF_SUBSCRIBE_01( + template (present) SipUrl p_subscribe_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_SUBSCRIBE_Request_Base := { + requestLine := { + method := SUBSCRIBE_E, + requestUri := p_subscribe_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to, + event := m_Event_reg, + expires := ?, // checked outside the template + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }) + } + } // End of template mw_TP_GM_PCSCF_SUBSCRIBE_01 + } // End of group g_gmA } // End of module AtsImsIot_Templates_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 index 49bc10e..4d00c67 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 @@ -97,6 +97,26 @@ module AtsImsIot_Templates_MW { } } // End of template mw_TP_MW_PCSCF_REGISTER_02 + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_07( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) charstring p_expires := "0" + ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path, + expires := mw_Expires(p_expires) + } + } // End of template mw_TP_MW_PCSCF_REGISTER_07 + template Response mw_401Unauthorized( template (present) CSeq p_cSeq := ?, template (present) WwwAuthenticate p_wwwAuthenticate := ? @@ -107,6 +127,39 @@ module AtsImsIot_Templates_MW { } } // End of template mw_401Unauthorized + template Response mw_404NotFound( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_404NotFound_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_404NotFound + + template (present) SUBSCRIBE_Request mw_TP_MW_PCSCF_SUBSCRIBE_01( + template (present) SipUrl p_subscribe_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_SUBSCRIBE_Request_Base := { + requestLine := { + method := SUBSCRIBE_E, + requestUri := p_subscribe_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to, + event := m_Event_reg, + expires := ?, // checked outside the template + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }) + } + } // End of template mw_TP_MW_PCSCF_SUBSCRIBE_01 + } // End of group g_pcscf group g_scscf { diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn index bfa675e..096ee75 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -160,6 +160,7 @@ module LibIot_VxLTE_Functions { */ function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{ //Initialize the Adapter (including the TrafficCapture process). + timer tc_noAct; f_cf_initCapture(); if (isvalue(vc_MonIntfList.gmA)){ @@ -313,6 +314,11 @@ module LibIot_VxLTE_Functions { ))); } + tc_noAct.start(3.0); + alt { + [] tc_noAct.timeout { + } + } f_cf_startCapture(); } diff --git a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn index 3f2eb02..474561b 100644 --- a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn @@ -96,9 +96,9 @@ module LibIot_VxLTE_PIXITS { modulepar integer PX_DIAMETER_CX_S_CSCF_PORT := 3868; //Cx Port number of S-CSCF modulepar charstring PX_DIAMETER_CX_HSS_IPADDR := "fe80::21a:a0ff:fe07:98"; //Cx IP address of HSS modulepar integer PX_DIAMETER_CX_HSS_PORT := 3868; //Cx Port number of HSS - modulepar boolean PX_DIAMETER_CX_IH_MONITORENABLED := true; //true - Monitor enabled for IH connection only - modulepar boolean PX_DIAMETER_CX_SH_MONITORENABLED := true; //true - Monitor enabled for SH connection or single SH and IH connection(Set PX_DIAMETER_CX_SINGLE_INTERFACE to true) modulepar boolean PX_DIAMETER_CX_SINGLE_INTERFACE := true; //if true both CX_IH and CX_SH are treated as one interface + modulepar boolean PX_DIAMETER_CX_SH_MONITORENABLED := true; //true - Monitor enabled for SH connection or single SH and IH connection(Set PX_DIAMETER_CX_SINGLE_INTERFACE to true) + modulepar boolean PX_DIAMETER_CX_IH_MONITORENABLED := true; //true - Monitor enabled for IH connection only }//end group Cx //A.8.6 PIXIT items for the Gx Interface -- GitLab From 0886bb3a7dca69232ac76808af5572efad5ff469 Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 10 May 2021 06:05:24 +0000 Subject: [PATCH 141/176] TTF006 week 18 updates --- tracefiles/TC_VxLTE_INT_REG_01.pcapng | Bin 49355 -> 20762 bytes .../AtsImsIot_Diameter_Templates.ttcn | 64 +- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 67 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 96 +- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 46 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 527 ++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 3490 +++++++++-------- .../AtsImsIot_TP_behavior_MW_IS.ttcn | 194 +- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 540 ++- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 7 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 110 +- ttcn/AtsImsIot/AtsImsIot_Templates.ttcn | 8 + ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn | 313 ++ ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 | 156 - ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 10 +- ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn | 467 +++ ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 | 253 -- ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn | 2 +- ttcn/LibSip | 2 +- 19 files changed, 3734 insertions(+), 2618 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 create mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn delete mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 diff --git a/tracefiles/TC_VxLTE_INT_REG_01.pcapng b/tracefiles/TC_VxLTE_INT_REG_01.pcapng index ddb45c0752223f45a4bf1025e525321b498eb191..b1bff0e3cadcf708c1ba9fe3f787fde404f05a1e 100644 GIT binary patch literal 20762 zcmeHPe{37qeSf4BN22X^j*u=x9qh`)sAucQyW@}J@mC~^lET=QRZ)@~7pQ$Y9;uVa zJNigUmeZilk0ENYKendGGGpu7p=kHRSd09z&MVS7TZUm8F+c%<(|Kb zpPCvSPiLk_r>L@0iYmpjuc%54!}^Mn@e#Z!Vx~q3E?4D;CyU20wwI@;hkm`F>1Y`epX65l(hYN~`?_IpMzloS{vN`)Ex+waL#OC?RO$k`}W5-aoYf`x*%9Hr6|v+3#4 z!DEk(4vq{@jEtTb93DA7IB{w^J@)9}%w%d9Zca|&we-Z;slk(@nauF`=-{cz>GY|I zjJb58RH-pp8?q*2NAo^hcb_7a68x8OS)E(B~S~XUrMxCE^89K zBA0KU265_2wnYF?p@VYND~W2hv}?7?lzhGl8rssvQ(CnGUks~nyfW)!g#Z*5q&~vL z3VIUQ8WeY}O-0s=iVDU_%@3`yMA)~kM#YK*`Zvzj|B^uJNqSZ(E5HN|YYLVfG;z?U zloxdo6tS-;E?O$_6KDF!P4JDdfJ&U+=QkB2sKj~K_0&&>$k3j}k6yXw`C%w=@r4f_ zyu3K{qpQ?!v6t?YlPg7b8J7pTZ8+*WWECoMcj|V z_hJ0LDW4FBfC&u|A~=N$p5NUog^p+h1NlC353C#(lh!8P(FnSF&s;)^&%T1xMyh}C zp!fn(`|{$kXD;2h&+YkNcsx*iZ(;dL0>7#AG$kAJ@};7Oq=z z38ZnKf$v8xx$LG-kVDR_^pPXL9ax+)_efwKLPg91x z$R)rb|30+y9I|g{2jm5oa?{#qo2c!iBvSu(Yt)yaZc!Pg+L0R`yF|#m*@w&zb=3Am zgL`{Vra~|lQK7z1gwPV|D^Ne2%|#+oP!0ydbHSh#7I>Bqgd>c=F_I*TvVffP_QgK3 zAGijK8GM-hW7ymGs5o%Wftx2W{J=0|;I)C5U2pL}ui*()kYTAA6`zUWtemyQ?wfJ8 zJ3|8R!;r&7L*~P(CQEbtTss`1#l37sAv(oZr%#`z5h4K8K#{;fsv`uAV7=LSs=MD| zMhFODHj>Q-*enwk!y#sl$#J;|E9d5dyvT@hkP~FdJ9u6zCA>&DaM9Wz6lQ$-)Z=~R z9Z*JC2>B#&J!~RWhH3uM>OT{5>A=c8h)W?ph1itq)h9mPnK`yj#cc`~4cgT>R1j#+ zM#auNcxz#)_YD)o2K&h;0K3HE1Soq?lA8!nKJisMK-nvN{qfC$6x+rk0vp^`fReqX z0A(P|acqbeg53KFpxhehXaS8*-L(VNx#EBAMMZrjxkK{rTAu=cC!U*Qw!9%wR4;7hyq5~d^ z#dJd&c<5c()z=XZz4)hgJoK)~*T1@1RkLwCG`Bd%E^x48Qm)F9DwUwVLwM*d(O#Qz z(VBNlZYLgkM;WzIMt9)X_rd1QE{0zvuD=`n`rim7EI!Z-HKk5prJjAW8Gd~X0XeS& ze%%L9lLqnmx}hck!;W1AHSIq5^$YQSas=W#EKcaib@0rSNb%WkG($(vzIl0Z^k)bi zjs6?Z$Apfi7p_0%fk6;DvHJkw8(^%0{u<*zSz<|*W& zQ(tJ7zt6vNd2#$Ll)vBnTa$}`gU%o)xkw)w+IcS8A^F=9boyle)45h+8_9 z-0*f*+~4RN&zKn}le(5u3Nnmaohv9(I*X8AWd$B=)nNNGdXx`_tu(B-zkUk_bo6q5 zuQ$cLJNqbWCv$auP8#xG6tOU-6kscO1fpVDS43lRFhpKSvc|ib_4u@||x zDDJO)jgMY{Br7C%GVZt6jVEpWakbQ>Ej`b^5{}n{Tea6i-w~3*W~S1~kNA$nGSj{z zpMuYmiDMb7HZfJNo$wv`NZfDh(|sNM&9oXWm4GRYBsAn#Sx*{#E9(=GS(Zees)%J{ z8+u8@1Ssb=Ib;tALfmimHTuL;a!#xkDi4clwgAG0)OTL8WCN4xlJEcu0y)giDw`ug z&A1cyx0#;517~))3<7B~DR=uB)pE~Pop?;tb>NvaC=in= zk$YM%HgxBvG8VcjzLq)rofZOYJy`LDYlKXj*517cbz^f^l5%HttyN5*eX*%cu5FtO zmk4>-9CPz_5Iu@7{(3)216Ys6xuw?|qb9(kIB?@V`<7nsN24KY*9Ox4s8h$cx{(Jt zuZ_e_rz!20Qv~_D$(U>=m?q5p(v7EI!t9%pi|yF`);Aa$uvra1-YQsU>_#n1EBSyj z&uM`8ZyPcRnar4Vr=WSI!KOfhm($_E)UVc78+RyTn39|*&1_ z9Ewwv6(Stg&CjC#f-7?vMOUvT9y_o ziRN6n7|x$oG$qku2xFKr*Zvl+ZhhKgRaHXYh#t;nA%VIKIn~-7@zVDfS@)teCC=jar@HMv?uwbr0&y^3HM#XaCuMNd=?@QkwxH<4v z&+|8Omf6P9yuXKGAJv{`IDnZtr1^=IswWEaH?F7WbX4i?}*bN^JPqe&aj> zD3GHNqhii$Q?Qz74pkHNK-Ck6F2(^9E3Sp6-ekPyI>Uj57GJvQR@`s(PZ|dg-u+BJ z83#$m;!N!55ms+tV#o5g?1>#chyLkJr;A_{8K;Sd$8}HsY&uM|Ee5oa&S5vDogIOl zPv@|2;v+{ilvdlLESA?30Jmo|K2IAne*27l&BqIb>t{gq}z6)%gmSh z<5$5z0ve2^j^%-wL<8x*GBk+>^26T&1NnV4k^^rI+;l(x+pA8osx#)UH+zO-o7aS# zT&V^^?Na2{w1T=U$;uKOA#pfkzW~;;;WgeiE83Bhe}2|OQozMnoJn8qF!>iu`g-a` zd(xNNn|U%bb1XA5l|D8~ITcUCsjC?cXM<*Y5U~!IwluSxH}l+RAiz-dhr%t#!BK&a z7zam#0XSpIY{$XTK!lC(Tp-Mb+T~^0qn%a-2uEcG8)t9?-&(qHI}f3bE&=i!rF1#p za87LMYi;XVzO**)&>uD*fUJ&zx= zW%t~4U;Ude*U8(3r&^rr+TwRS*%(?nF9pgR!{x;Q9BWmw*`||?EnHX27tI9(XjnhA zC~TEYGbw9C$kdfsP8Q)zmKY36e1OXdLMR**d3i1(2-2-PkhmdEak_o2>)vGb0T^iE z4Z~}Z@$m2(TxA!oZG;lqgeBA#f^w79z2`mTW!Ub+;)LK_e?}G15xAMFLvS}CarzJV zuXl6=Hp3^)BE6QK1 zwZ_V>UtesJ55f_SGUr}D@7-Q2+KFfU9z^?Qjj7w2qD66cp-o#jquwTSpg8pi|0zpSn%W8x$LRQ zR<74Lk$(=-~$zD)2)IxoV*R;0BIX z2K#}CDJ5z!n3J`9sfGoHKX48SlKmvu|d+C_+sJh;*dlA%6k}4vP~+a{b=w zP2+UXX*-DI`pnZ`aT>XbZXlEF?i! zX@Xw;b@S9l@=Sw-W7lmGOtaZ4wVn4i+NG8^TbF6tmNzrs6wMN5KU5#tOP&CWgvE(m zxys~U5xIK$({|*_b@s>ComT0#sW2mN;nt`mRF~ie*?*X9dpFC>xar1;z2pEuK3E*E z&%C>56$k>b&zJ15kLy4Ga?VMRx+!P`5*vttHnysEC!&jbZ_LE5=vz2v&5&lD5O+(c XlfXoYhHGzw^R}0a-4htL2A2FkA33X| literal 49355 zcmeHQ32+?cmF|&zAxjwJ0M0^|Mgd|#Ep^X5l13S!0~D|;HWNGsLWYVdJ$dvu`u^*E>&n>|59#-SWhiXV*=*&)Ye4(a8A3&`vg` zB)gSZsxuascwXp?N%|j0B$K) z4B~Zzkw}nt@B$}DyvG-k1xXU!QYa*Q!#Hu$2d`O~3fU(W?7XQvWRX&@$)p*O9@yCbQX2y&H` z{4V9ZUWd=^;P}4wo(m$KM8BPilu|fV4*T2j=sAvl{Lgvtmo9Q>`x!-&JE{HX#?Dww zlcNg{r(*bgkC+ZAiJloHBqy@36(vbdrL?&u3MI+WXgVsYc2s}6ILi$u)V-n_A}aK? zwT!2eR2@0g%_c={vaMx|>(?LVMh)KLM&e;mmE)qZF>cqy&i+wucyN&INmEO3^lnZG zaa7z4iGZ$kLU!>&roH93#$77MBidv)3z{EO70{VB*Uic?S&hhXX|AnhXCkf1nO;Fv zr7-I3q>AIe)U+z1-kmXV8ocY}d!lL|m22%9JNtsF}T$7Wb$kcQ+G&SYsTs`^&D5^{)32~z4 zw-QGWY82s=gyN^ZDl4Z@AhdI)s+z3ElsH%}9$B2+jCv2tqLx-=Za_?;3(sHZa!m?z z)P*2J;-2xrDaUkB=4O(T%3SBHY?apE)&LM4)B>zc}{C8s% zpee%W zdB)a3qatHlf5R7V9pq^zz%ZSu(lp;A@V*|G!{c>&^#|ABeiqNQ;BPC#Y`X{hO|-AS zm$98|Ow$!O?x$m-;HpO)dIbs;U>IL5&r*+{?QCUEM$6HbrC0PjX)3lg zcYU3Dy!lS*ZR+(+XNdPvZy!Ez?Z$muh4rVLiO-|Q(c5=Zuj3_82bRCb&qIw_d^wjQ z&c``W$NHb)d;vu)(xW9Qf?DYPy=b8(v=Fv@o@iRrAJci_8Y@p+yYb2+4?d#v#OI6_ zLhG>9O5lm7=NVfUS_&7|-w2)%Xa}XQj3<2hgU1k0)J~uE;g6=!Jj0xA@LbbJuzxD; zLwRNgb(N3Wv*{|FH~A7>)ARuxUtscOIe9`9^76&4%=w@W+VXj*>5RL+K@`$-o0W$i zeB|(f>z*eb`u#f$3ITN-Bq{-gycSq~3TX{21HYgtYnDcJ>h1iVq~8BRruSv+o4t&p zmZXNO_c6?*@eDH=C@Jlk1g>q|KIp=`m^k)ZMc5SBpTqt(H}4h&U(oLMIz*4lGgUf+3OJ8cBfBtJ3U^XOF+Ln+`f?D3x#=?)9Vr1JN6`CFHlz% zw-F5W>ql}~x4|cLx559K%A@W!czil-n%gVjHc}1Rjnb*Ne z873gl4t^kVmZ+SF9PSOtZ=B|Zj`Dtrq#O^yB3Wr)h1czN`Fy;y;iNbgofPVEitktrvg@9|^2kG9 z&vR0AkjkCsr1(b|WcF$dG8bGLxc?Y3$c{ZHMLY!q3!Fh)mOD%*#Tj>flX|@QfYrcy z=_4qOwSk;-PZL_V68)hkOXgP~RuW4I9 z3>fgrZY!@`fAy6|9{!ZhD~}j0hgRzXuRID~d261racDtYSbr0E#X&oP+!un&UcaO5?m~7SnSxxyLj*-Tc*7=0~S7`j*ds zr#*1jw}^^<`<9je9{$wf12-gy|L)jsP!TBTDWW7BbK3QR<)@-$;=d(1I6gejobm?s zK<|5JV^MZSR#TXKWc_Tr(8;&6m>NouE=(tOO$>A1_V@Pnj%*(vPX|+ysw8Qqvac8O zNi(ogM+W<mGRzmFseu+Au@xtIeggM%g#?^rfPe;vX}6} zyr=Syv$v9mTc72qc*3{rcLoxwoSCu9R3t?HV72MgC^O~;3KROauG)0UKD^W~!4ZvEGRYlbMj7+CF`kXl**w;IO zNwkQpjwN6r_4Q(^HiU;0@d-?04vY@dy#?ob$HyjeZXJ~)G(p$L=iF+Z>%B-#q?2^X z*y-IaqkTesBcr=VCWd;uGKabCWT~wFrKNvv`_TA!|3xeJz42Wajt}e{xp3vaXgXku zHt9||0^-9oYNlhUKMKzE7M!scyQ>b}1DeWE!#F0)QKkVgB~zJl59>@4#lPvO=9^ts zR_RYBA*%E?CFYe?gQI126rme^BxzETB&PI9yqN@rEEJhocj>jJr}d|L2j#Gsj%pW+ z@lX^(m>MPjR90>vM4(Uq1e-FXXlg->(6!ta9EnTObVxS3SXOD`6_F-g5U}|djL;5T zv2=8i%663yGbK)EC62QpeR9Ql?tX33t~hDq?25A!1V-iGY_O9>cGSvFX!9&adU5UXLj$>&hyVAtwtaI=$YI>vXFSHmQmVb1HR8^4AP|reAKz@fR7K98t%L5 zI7p-S8d4=|x)l;eae{^DC`GWvnFMDmA293m&8i0J;@@mArmmb@H1QQ;O!v`e%);@o zODB`6g=ND&D(0PW9Y;NUtPF>c!g|zy)(@F~obOS*P*hde=Ogfz87=^Flog&_@L$#x zTU*xoSWxD!d@n8h?eL^e%`?n|;c;)8#=ahgC`sX~)I_060{6!(_k@eyGrNyrE;im- zyDyr&`j3CRmHB)#qi;V>zVXoeb{f8Y3O;MT`N!?#)qnG3V{Yi?N%7#OGbZji^TW(j z&+%hh(}8{D)n}R!UT4GH0rH^M9Av+Ed-4Fz(tMD&OweSH;1*mCH{#u$J$8Y2xDoM< zS=71&Z?mOaxAxXT*-l5DN(6n|zKm-KJ*J=Sj)1X`yfE8;V1KKx(_y!}`GB7Ng0wB1 zZ(6vA@zDM&e_S_;^ABMk)M9%WfBiKPEki%s;{l@#nDet8%=8G4(K7#8A z*4}o{qB%4ap2E;?&41&W0sWcU@`?0x!pOl^=1shfHiJiXe!Yx>^qH5L5X1DYV}5<- z$v00Dw<1XYAaUu$J?)Q=Z9Q%N&))$ZFw6si`f+M&K&PQx^EXANWSp=>-eiO+h;l0`V2j!QIs#r20m$mUHUp%?~;`G{&g8C@$)T* zw*02~nwQ>Zj&geJbOjo-nP#0MPh5N`8RlH+>BwvVr!A6VF``%y1rEq5`kAclcIL!G z=kRu!HyZiTlQ9=R8;Lv82_rkYJ$KH%y(qU7Lw^@ixtj+jNzo-(1_nApm%w2QR?eO2%*M?>DrZr6!gdT2c{-iSL)QFMbs; z^m!<8wwH7En=|`pL))pDedtKKopV}VY!FWC`u|&`i(-Fjo?!-!{S7B!|5VzioLpX? zG{^1C`v1XsUGFz^@AZGN9_u#5*D~*G*bvlY%yQTe%^xz`{cZd*HpS`G?s*sm`2L2s z&3kd6+YVp*y(OpUkYi?HTwMFY@DPh}(Y`-3F20U&@dul3w?AST7c24=78x0x(iF1L z(^01stK-P%;%gik9kWw0=alA4hgWW7bcI7fA2(|cyCIZw#-dt)85$#FS>%nvk#YOT z_8~xE=rNYvEFvry#zhmJ19^J|qh$<1KuS_nwXT>lD~Ec5iF7<9s&nL$;miYW);kmo zhwOV@8jYeHSMs7cKCkFdoFAK1axku<=rO4NVnpsjO{vOxBBC6GiH~294h72QqUa}i z%BC|qodn89)E)8G1btM>vaAF2QLa6HbfJ&PZ*p)k$^T$rv+zq(@|S~}Dga9|GUt~D zmQ*=bQu+Kr!a3@w216;6w%FbQTh_!12UgjxItHcxn|QB$ZL<4TDri zNXm81EGku26jQ0np&PbR15-(#Fd?j?RfCXJ`&hYx&S;YS4?yyt3rmnTX!{nOf6dn6 zA)6Z5yz`JL`KtkeYq+n`0)SI1r|kf+O_e2CnE@PME^3-j$OB>ImP?gsILQ~_?5Y>N zR!{hG<0LO5y*Q4f#`kP(%prIUXfu2SIkSwvU}Sxk@pqVIR5G)S_me+v>;8MUjcwh^ zy#6~lo*3rNK>d7j#b+6d`_HxoO3%;d`pmMvG^+6vgKf;0nlNX8&8RW{$IJmmKs4{5Zt5EQ*+6jXN zZa-=h3#PxobWy--Va#x8CvRdt4HlyI8reca$DFAOu7?{samt^<3>~0yz(?KaD zdSp@Z*nM)?>9Qku%bkz;oI6=rx#L5q0`oajunE9S7sq_A;AI7Fj72b?D|jU^k1F?L ztOm?yVRH+6^uAkeN-q=fcae6 zv()1coVm6f=JUT&k2l|e9?!viel~Xaz%40)bNS&9@Od3h>B;c)tB*Z{9(g*zWZ{&S ztH)Oi^O;)co9Cj1U=)_XeEz7;6A3F%+>*NT$a8)x=JR9Ec0KiE7(DUx`~sryr@<3G zv|;5up~n)J4pCWsJW)G+A_?M(`I4CEmC-of5yCspHbPTMqWoTkdyKGlbOxTO81tDZ zo(6gYB*8o}}JCDwxj>!2`Hwm)+;IdtDC6?Gik4Q07BH!6^mZA(<%WWY^jo;+)<2%N@Bg-2Cke)uD@NkfpxwiAM?2qLaPf)ExQa?mL_-5%M;d!?g{`CNBj#p(^aXe>CNt{ADnoZ_?cc zEvDpO1oOGhZjIIEq!=76>!i3^H^{zZHOTf4TzTaAbMl-NhhUIR=Q%0%!yxO17F)SN z=7!SSa8f`&EU`8vHO~^v0^*J%m&3qj~?WYL=QlB$8QlD&i%)`@I;;n@lNeHed>U_Mt|*2nQYl>tG^D~|bGWz-=` z$uwhDBpZB7$Ne}qahfkQuK{-sZPYwqJw7^^&lQEIpeFUed?rqP|1E3FVLpfTZ0uL_ zFrQzWxaZt+3G?|6H-QeUn9ob))ZDqX4FP8PFrTURw?DA94CeETUx1w2{ITu1L9&Zs zK37SkCwh~u1L!C zC=zfLBXV5EvZ8W`6EzFYh}+vkz|_Toofi_^k!);@JhcE6))_2U)Fy${O&HvSIc;KQ z7YpAm0+U@b<@(8o)|Nw&{b$l<`u;Pc&16ty@7-o&zH8I9nG;DyT2N#)pvXFKmLkC_ zLy?6xWA{0PzYP>wEPk*w6j_Ys78F?;-J|o2?Q6?`B3q@vN7asNt)zAoSsIUDd1Ni~ zW#A0cW?-ZkiLUxuF}Hr>do&&&+?N@T4RrO7y>yA`$zKAxx)4r>Rn8UCrl;zNA?pMp zrCGSPmYiXsIDcdp^^|?xo z5iWvpc~3W+Ympz-EJl+24=g760s4HFjz9(J|9Y&RsLvIc*Mzw&Mq~c=MUk%BJB~W) zb9GLhbST+Z{YqX9)Mst3o0Vg-3U`Jy2UPh)TEmJpx~rg!GQJv6pX;q_FUk|pC2H}b zfHIBc#)f54ORF+BASP4Y?D<*RBame-iB|(@nOrpEgGU=xX*H!ERx!-yjg=*#7qL!e z^<#}?VX-`D29o@bK=Qu_Q&6qABhcpy?=yA&s$k$64(xiOJ};Ll({Ph7 zpgvchD{eJYjvF_58R^AwBsTv1I5Ml@`=rhA=~+;pBle@uU%=c`Apj<$G{#ef~ zC58Dh@1ZncpM8ob?TyGP76q){VOb&UvvajNG8fqWs5v}Mhk*t5naK5n^Xr-Yn9HXv zORgsD^L5+qCUSKWUep5Yb9~)DlqA<<-an_4tCm)#G&$j$bSxveTHJU=`{!5apNCsd zD2Mxes}A7w2KvXueLl4AynBa6Mt6@)46*rXwmtfC!<)7|6X<)wg3ez6TBx=WF-JqaThG;>BAxp3 zH8ri}B&I`3qGv`4$%(9q7Q=+UBu1mz6Df5@k~lFctF-!b_H;63mr|T@Q4a!0!rn9Q zYHP8sk>>{L&@QYD$MwVbMt|>!%VW`W>Z*$e1t0IY>at5N6FRZy5!{_TkH$7xpwOoY z>aeUECGfl|M+qA{85Jct)xn}1AnK4p>qvL7lSq%HC1X2SEu@IiL>(P(0CcZLQ! z*#3b_I@p2!(Se~$JJ<`a80uhmjScos;P2Q@{aPl)xC7Gy!$Uhe*wGymBg0p8;041w zI@ld!6C*oD$I1I%+S@$D?V8xxKgtac4zfLI3OwK>IT|gy%Amm;T$WxItmxYNno2n& zs?j-ayNu@OW>e{8GNB^0gRYFJa#&VX#Cc?bWV-?P74OEzdAjx0e9?up2yZ7z3o1ot zEC$|L=r40f5d?I&ZY6+f@IEuszL14@utcsWX6Xx^?^aR@eREXS_9oP6Ze*~#aJ^iAc{`@RCdRt@caO1nSoEt}GA1Uwz3kY)_WmxfzHm4dNqENz%!i>U(1s$RFh;@j zH6q4NL_}*~^Nt%)Bm-RX(3U4`y)V3MDhps+c0!$lKmqYU+UUImXT`B7(F>H=#pei0 zjfbY(Gx}T0%NGDmcW*qvV9Afm{>~Ht!0tTM^!bC=WB6K~dY>_! j<)*QBiBy+~s98A;u7Ju4HJy5nXGJKYihz|>H^luvrkebX diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 57ad314..b3fe2bb 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -495,8 +495,8 @@ module AtsImsIot_Diameter_Templates { template RTR_MSG mw_RTR_basic modifies mw_RTR_dummy := { header := mw_diameterHeaderReq_dummy(RTR_E, c_applId3GPPCxDx), rTR_Body :={ - auth_Application_Id := * - //deregistration_Reason := mw_deregistrationReason + auth_Application_Id := *, + sIP_Deregistration_Reason := * } } @@ -525,7 +525,7 @@ module AtsImsIot_Diameter_Templates { } } - template RTR_MSG mw_RTR modifies mw_RTR_dummy := { + template RTR_MSG mw_RTR modifies mw_RTR_basic := { header := mw_diameterHeaderReq_dummy(RTR_E, c_applId3GPPCxDx), rTR_Body :={ vendor_Specific_Application_Id := ?, @@ -751,9 +751,28 @@ module AtsImsIot_Diameter_Templates { }// end group CxRequestMessageTemplates }//end group CxMessageTemplates group RxMessageTemplates{ + group RxRequestBasicTemplates{ + + template AAR_MSG mw_AAR_basic modifies mw_AAR_dummy := { + header := mw_diameterHeaderReq_dummy(AAR_E, c_applIdRx) + } + + template ASR_MSG mw_ASR_basic modifies mw_ASR_dummy := { + header := mw_diameterHeaderReq_dummy(ASR_E, c_applIdRx) + } + + template RAR_MSG mw_RAR_basic modifies mw_RAR_dummy := { + header := mw_diameterHeaderReq_dummy(RAR_E, c_applIdRx) + } + + template STR_MSG mw_STR_basic modifies mw_STR_dummy := { + header := mw_diameterHeaderReq_dummy(STR_E, c_applIdRx) + } + + } group RxRequestMessageTemplates{ - template AAR_MSG mw_AAR_MediaComponent_specificActionLossOfBearer modifies mw_AAR_dummy := { + template AAR_MSG mw_AAR_MediaComponent_specificActionLossOfBearer modifies mw_AAR_basic := { aAR_Body :={ media_Component_Description := {mw_mediaComponentDescription_SubComponentFlowStatusEnabled}, specific_Action := {mw_specificAction(INDICATION_OF_LOSS_OF_BEARER_E)}, @@ -762,7 +781,7 @@ module AtsImsIot_Diameter_Templates { } } - template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled modifies mw_AAR_dummy := { + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled modifies mw_AAR_basic := { aAR_Body :={ media_Component_Description := {mw_mediaComponentDescription_FlowStatusDisabled}, specific_Action := *, @@ -771,7 +790,7 @@ module AtsImsIot_Diameter_Templates { } } - template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink modifies mw_AAR_dummy := { + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink modifies mw_AAR_basic := { aAR_Body :={ media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabledDownlink}, specific_Action := *, @@ -780,7 +799,7 @@ module AtsImsIot_Diameter_Templates { } } - template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink modifies mw_AAR_dummy := { + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink modifies mw_AAR_basic := { aAR_Body :={ media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabledUplink}, specific_Action := *, @@ -789,7 +808,7 @@ module AtsImsIot_Diameter_Templates { } } - template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled modifies mw_AAR_dummy := { + template AAR_MSG mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled modifies mw_AAR_basic := { aAR_Body :={ media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabled}, specific_Action := *, @@ -798,16 +817,35 @@ module AtsImsIot_Diameter_Templates { } } - template ASR_MSG mw_ASR_abortCause(template (present) Abort_Cause_Type p_avpData) modifies mw_ASR_dummy := { + template ASR_MSG mw_ASR_abortCause(template (present) Abort_Cause_Type p_avpData) modifies mw_ASR_basic := { aSR_Body :={ abort_cause := mw_abortCause(p_avpData) } } }// end group RxRequestMessageTemplates + group RxAnswerBasicTemplates{ + + template AAA_MSG mw_AAA_basic modifies mw_AAA_dummy := { + header := mw_diameterHeaderAns_dummy(AAA_E, c_applIdRx) + } + + template ASA_MSG mw_ASA_basic modifies mw_ASA_dummy := { + header := mw_diameterHeaderAns_dummy(ASA_E, c_applIdRx) + } + + template RAA_MSG mw_RAA_basic modifies mw_RAA_dummy := { + header := mw_diameterHeaderAns_dummy(RAA_E, c_applIdRx) + } + + template STA_MSG mw_STA_basic modifies mw_STA_dummy := { + header := mw_diameterHeaderAns_dummy(STA_E, c_applIdRx) + } + + } group RxAnswertMessageTemplates{ - template AAA_MSG mw_AAA_AcceptableService modifies mw_AAA_dummy := { + template AAA_MSG mw_AAA_AcceptableService modifies mw_AAA_basic := { aAA_Body :={ result_Code := mw_resultCode(mw_resultCode_diameterSuccess), acceptable_service_info := { @@ -821,13 +859,13 @@ module AtsImsIot_Diameter_Templates { } } - template AAA_MSG mw_AAA_resultCode modifies mw_AAA_dummy := { + template AAA_MSG mw_AAA_resultCode modifies mw_AAA_basic := { aAA_Body :={ result_Code := mw_resultCode(mw_resultCode_diameterSuccess) } } - template AAA_MSG mw_AAA_resultCode_mediaCopmonentDescription modifies mw_AAA_dummy := { + template AAA_MSG mw_AAA_resultCode_mediaCopmonentDescription modifies mw_AAA_basic := { aAA_Body :={ result_Code := mw_resultCode(mw_resultCode_diameterSuccess), acceptable_service_info := { @@ -839,7 +877,7 @@ module AtsImsIot_Diameter_Templates { } } - template ASA_MSG mw_ASA_resultCode modifies mw_ASA_dummy := { + template ASA_MSG mw_ASA_resultCode modifies mw_ASA_basic := { aSA_Body :={ result_Code := mw_resultCode(mw_resultCode_diameterSuccess) } diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index b81b882..03147be 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -67,13 +67,14 @@ module AtsImsIot_TD_DRG{ // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + f_mtc_check_precond_TC_VxLTE_INT_DRG_01(); // test body - f_mtc_check_TP_GM_PCSCF_REGISTER_07(vc_vxlte_monitor_components.gmA, true); // Events 1, 10 - f_mtc_check_TP_MW_PCSCF_REGISTER_07(vc_vxlte_monitor_components.mwPS, true); // Event 2 - //f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS, true); // Event 5 - //f_mtc_check_TP_MW_SCSCF_REGISTER_07(vc_vxlte_monitor_components.mwIB, true); // Event 8 + f_mtc_check_TP_GM_PCSCF_REGISTER_07(vc_vxlte_monitor_components.gmA); // Events 1, 10 + f_mtc_check_TP_MW_PCSCF_REGISTER_07(vc_vxlte_monitor_components.mwPS); // Event 2, 9 + // FIXME Not on the PCAP traces + // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS); // Event 5, 8 f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 6, 7 @@ -125,6 +126,7 @@ module AtsImsIot_TD_DRG{ // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + f_mtc_check_precond_TC_VxLTE_INT_DRG_01(); // test body @@ -183,6 +185,7 @@ module AtsImsIot_TD_DRG{ // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + f_mtc_check_precond_TC_VxLTE_INT_DRG_01(); // test body f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 1, 14 @@ -246,13 +249,15 @@ module AtsImsIot_TD_DRG{ // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + f_mtc_check_precond_TC_VxLTE_INT_DRG_01(); // test body - //f_mtc_check_TP_GM_PCSCF_REGISTER_10(vc_vxlte_monitor_components.gmA, false); // Events 2, 9 - //f_mtc_check_TP_MW_PCSCF_REGISTER_10(vc_vxlte_monitor_components.mwPS, false, true); // Event 3, 7 - //f_mtc_check_TP_MW_SCSCF_REGISTER_10(vc_vxlte_monitor_components.mwIS, false, true); // Event 6, 7, 8 + // FIXME f_mtc_check_TP_GM_PCSCF_REGISTER_10(vc_vxlte_monitor_components.gmA); // Events 2, 20 + f_mtc_check_TP_MW_PCSCF_REGISTER_10(vc_vxlte_monitor_components.mwPI); // Event 3, 19 + // FIXME Not on the PCAP traces + // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 18 f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 4, 5 f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 10, 11 @@ -282,6 +287,54 @@ module AtsImsIot_TD_DRG{ } } // End of TC TC_VxLTE_INT_DRG_04 + group f_TC_VxLTE_INT_DRG_01 { + + function f_mtc_check_precond_TC_VxLTE_INT_DRG_01() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + // TODO Add real code to check pre-conditions + //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); + //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); + //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); + } // End of function f_mtc_check_precond_TC_VxLTE_INT_DRG_01 + + } // End of f_TC_VxLTE_INT_DRG_01 + + group f_TC_VxLTE_INT_DRG_02 { + + function f_mtc_check_precond_TC_VxLTE_INT_DRG_02() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + // TODO Add real code to check pre-conditions + //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); + //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); + //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); + } // End of function f_mtc_check_precond_TC_VxLTE_INT_DRG_02 + + } // End of f_TC_VxLTE_INT_DRG_02 + + group f_TC_VxLTE_INT_DRG_03 { + + function f_mtc_check_precond_TC_VxLTE_INT_DRG_03() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + // TODO Add real code to check pre-conditions + //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); + //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); + //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); + } // End of function f_mtc_check_precond_TC_VxLTE_INT_DRG_03 + + } // End of f_TC_VxLTE_INT_DRG_03 + + group f_TC_VxLTE_INT_DRG_04 { + + function f_mtc_check_precond_TC_VxLTE_INT_DRG_04() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + // TODO Add real code to check pre-conditions + //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); + //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); + //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); + } // End of function f_mtc_check_precond_TC_VxLTE_INT_DRG_04 + + } // End of f_TC_VxLTE_INT_DRG_04 + } //End of group IMSDeRegistration } // End of group Interoperability diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index c985acf..03c7d00 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -9,16 +9,19 @@ module AtsImsIot_TD_INI{ // LibCommon // LibSip // LibIms - import from LibIms_UpperTester { type ImsUserInfo }; + import from LibIms_UpperTester {type ImsUserInfo;} // LibIot - import from LibIot_TestInterface { type IotEquipmentUser }; - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_TestInterface {type IotEquipmentUser;} + import from LibIot_TestConfiguration { + function f_cf_create_IotEquipmentUser; + } + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C;} import from LibIot_VxLTE_PIXITS all; import from LibIot_VxLTE_Functions all; // LibImsIot - import from AtsImsIot_Functions { function f_getImUser }; + import from AtsImsIot_Functions {function f_getImUser;} // ImsIot + import from AtsImsIot_TypesAndValues all; import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; import from AtsImsIot_Functions all; @@ -48,8 +51,8 @@ module AtsImsIot_TD_INI{ var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); +// var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); +// var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD @@ -60,7 +63,9 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { - f_cf_createVxLteMonitor(); + var SipMessage v_sip; + + f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); @@ -69,34 +74,36 @@ module AtsImsIot_TD_INI{ f_cf_VxLteMonitor_Up(); // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); +// f_mtc_userRegistration(v_ueA, v_userInfoA); +// f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_check_precond_TC_VxLTE_INT_INI_01(); // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, false); // Event 1 - f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, false); + // FIXME f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, false, v_sip); // Event 1 + // FIXME log("v_sip", v_sip); + // FIXME f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, false, v_sip); - + //f_mtc_check_TP_RX_PCSCF_AAR_03 not validated f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 - f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, false); // Event 6 + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 6 + log("v_sip", v_sip); - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 8 - f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 8 + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8 - f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9 - f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 - f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, false); // Event 11 - + f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 @@ -104,29 +111,29 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 15 - f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, false); // Event 16 + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16 f_mtc_userCheckRinging(v_ueB); f_mtc_userCheckPeerIsRinging(v_ueA); f_mtc_userAnswerCall(v_ueB); - f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18 - f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18 - f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 18 - f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, false); // Event 20 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS); // Event 20 f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 21 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 22 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 23 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 24 - f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, true); // Event 25 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 25 - f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, false); // Event 26 - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, false); // Event 27 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 26 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS); // Event 27 - f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // ACK – Event 29 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 29 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 f_mtc_userCheckCallEstablished(v_ueB); // Event 30 @@ -147,6 +154,19 @@ module AtsImsIot_TD_INI{ } f_cf_adapter_down ( ); } // End of TC TC_VxLTE_INT_INI_01 + + group f_TC_VxLTE_INT_INI_01 { + + function f_mtc_check_precond_TC_VxLTE_INT_INI_01() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + // TODO Add real code to check pre-conditions + //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); + //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); + //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); + } // End of function f_mtc_check_precond_TC_VxLTE_INT_DRG_01 + + } // End of f_TC_VxLTE_INT_INI_01 + } //End of group OriginatingLeg group TerminatingLeg { @@ -161,6 +181,8 @@ module AtsImsIot_TD_INI{ var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); + var SipMessage v_sip; + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD @@ -185,25 +207,25 @@ module AtsImsIot_TD_INI{ // Test body - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 1 - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // INVITE Event 1 f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1 - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, true,true); // ( Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, false); // ( Event 3) f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) //TP_GM_PCSCF_INVITE_02 ( Event 8) - f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, true, true); // Event 8 + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, false); // Event 8 //TP_GM_PCSCF_180RINGING_02 ( Event 9) - f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, true); // Event 9 + f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, false); // Event 9 f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 10) f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) //TP_MW_PCSCF_180RINGING_02 ( Event 14) - f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, true); // Event 14 + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, false); // Event 14 //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index b40d57f..ed05a42 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -69,31 +69,32 @@ module AtsImsIot_TD_REG{ f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile // Test body - f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); // Events 1, 10 - f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); // Event 2, 9 - f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); // Event 2, 9 + f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 10 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI); // Event 2, 9 // FIXME Not on the PCAP traces // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 - f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false);// Event 3, 4 - f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 6, 7 + f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 + f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 - f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, false); // Events 11, 20 - f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPI, false); // Events 12, 19 - f_mtc_check_TP_MW_SCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, false); // Event 2, 9 + f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA); // Events 11, 20 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPI); // Events 12, 19 // FIXME Not on the PCAP traces // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 18 - f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false);// Event 13, 14 - f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH, false);// Event 16, 17 + f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 13, 14 + f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 - f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, false); // Events 21, 24 - f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, false); // Events 22, 23 + f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA); // Events 21, 24 + f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS); // Events 22, 23 + + f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // TODO Events 21, 24 + f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // TODO Events 22, 23 //FIXME Rx and Gx interfaces not in PCAP traces - f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx, false);// Event 25 - f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx, false); // Event 26 - f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx, false); // Event 27, 28 + f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// TODO Event 25 + f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // TODO Event 26 + f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // TODO Event 27, 28 // postamble f_PO_user_home_deregistration ( v_ueA ); @@ -140,9 +141,8 @@ module AtsImsIot_TD_REG{ //test body - f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6 - f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, true); // Event 2, 5 - f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5 + f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA); // Events 1, 6 + f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPI); // Event 2, 5 f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 @@ -197,15 +197,17 @@ module AtsImsIot_TD_REG{ // test body f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, true); // Events 1, 10 - f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, true); // Event 2, 9 - f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 + f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, true); // Event 2, 9 + // FIXME Not on the PCAP traces + // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8 f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4 f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7 f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, true); // Events 11, 24 - f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPS, true); // Events 12, 23 - f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 22 + f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPI, true); // Events 12, 23 + // FIXME Not on the PCAP traces + // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 22 f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 13, 14 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index e91c0b4..21517b8 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -168,7 +168,6 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var SipMessage v_sip; // Check the first REGISTER @@ -176,9 +175,9 @@ module AtsImsIot_TP_behavior_GM { f_Iot_Sip_receive( { mw_SipRequest( - mw_TP_GM_PCSCF_REGISTER_01( + mw_TP_GM_PCSCF_REGISTER_01( // FIXME Add CallId... mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other ) ) @@ -195,6 +194,9 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check REGISTER 401 Unauthorized response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -273,7 +275,6 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var SipMessage v_sip; // Check the first REGISTER @@ -283,7 +284,7 @@ module AtsImsIot_TP_behavior_GM { mw_SipRequest( mw_TP_GM_PCSCF_REGISTER_02( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other ) ) @@ -300,6 +301,9 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check REGISTER 200 OK response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -310,14 +314,11 @@ module AtsImsIot_TP_behavior_GM { )) }, { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_Response_2xx_Base) }, {0, omit}, "TP_GM_PCSCF_REGISTER_02 - 200 OK", - true, + false, p_checkMessage ) ); @@ -364,12 +365,10 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_REGISTER_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - v_userInfoA.publicId := v_userInfoA.publicId & "_Unknown"; // PX_UE_A_INVALID_USERNAME - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); // User removed from HSS var SipMessage v_sip; // Check the first REGISTER @@ -379,7 +378,7 @@ module AtsImsIot_TP_behavior_GM { mw_SipRequest( mw_TP_GM_PCSCF_REGISTER_01( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other ) ) @@ -396,14 +395,19 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Check REGISTER 401 Unauthorized response + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 404 Not Found response p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + ( + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + ) }, { - mw_SipResponse(mw_404NotFound_Base), mw_SipResponse(mw_Response_4xx_Base( v_sip.request.msgHeader.callId, v_sip.request.msgHeader.cSeq @@ -516,6 +520,9 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check DeREGISTER 200 OK response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -526,10 +533,7 @@ module AtsImsIot_TP_behavior_GM { )) }, { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_Response_2xx_Base) }, {0, omit}, "TP_GM_PCSCF_REGISTER_07 - 200 OK", @@ -641,28 +645,32 @@ module AtsImsIot_TP_behavior_GM { mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) )) }, - {}, + { mw_SipRequest(mw_SUBSCRIBE_Request_Base) }, {0, omit}, "TP_GM_PCSCF_SUBSCRIBE_01 - Request", - false, + true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check REGISTER 200 OK response p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId, + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) }, - {}, {0, omit}, - "TP_GM_PCSCF_SUBSCRIBE_01 - 200 Okay", + "TP_MW_PCSCF_SUBSCRIBE_01 - Response", false, p_checkMessage ) @@ -673,22 +681,56 @@ module AtsImsIot_TP_behavior_GM { function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_SUBSCRIBE_Request_Base), - mw_SipResponse (mw_200OK_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_SUBSCRIBE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the SUBSCRIBE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_SUBSCRIBE_02( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, + {0, omit}, + "TP_GM_PCSCF_SUBSCRIBE_02 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId, + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_02 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02 } // End of group imsSubscribe @@ -716,23 +758,57 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_NOTIFY_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_NOTIFY_Request_Base), - mw_SipResponse (mw_200OK_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_NOTIFY_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the NOTIFY + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_GM_PCSCF_NOTIFY_01( + -, + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_NOTIFY_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_NOTIFY_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId, + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_GM_PCSCF_NOTIFY_01 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_NOTIFY_01 } // End of group imsNotify @@ -772,20 +848,33 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_INVITE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + out SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_INVITE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_INVITE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_INVITE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_01 /** @@ -821,56 +910,94 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_INVITE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + out SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_REGISTER_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_INVITE_02( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_INVITE_02 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_02 function f_mtc_check_TP_GM_PCSCF_INVITE_03( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + out SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_INVITE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_GM_PCSCF_INVITE_03( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_INVITE_03 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_03 function f_mtc_check_TP_GM_PCSCF_INVITE_04( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_INVITE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_GM_PCSCF_INVITE_04( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_INVITE_04 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_04 /** @@ -1084,21 +1211,29 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_100Trying_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_100Trying_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_100Trying_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_GM_PCSCF_100Trying_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_01 /** @@ -1136,56 +1271,80 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_100Trying_02( SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_100Trying_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_100Trying_02( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_GM_PCSCF_100Trying_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_02 function f_mtc_check_TP_GM_PCSCF_100Trying_03( // FIXME RMI To be reviewed SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_100Trying_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_100Trying_03( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_GM_PCSCF_100Trying_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_03 function f_mtc_check_TP_GM_PCSCF_100Trying_04( // FIXME RMI To be reviewed SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_100Trying_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_100Trying_04( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_GM_PCSCF_100Trying_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_04 } // End of group ims100Trying @@ -1223,20 +1382,28 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_180RINGING_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_180RINGING_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_180Ringing_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_GM_PCSCF_180RINGING_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_01 /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index 25520a7..9f6f615 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -7,1718 +7,1858 @@ module AtsImsIot_TP_behavior_IC { - import from AtsImsIot_TestSystem { type SipInterfaceMonitor , ImsTestCoordinator, SipInterfaceMonitor; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } - - import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} - // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; -// // LibMsrp -// import from LibMsrp_TypesAndValues { type MsrpURI }; -// import from LibMsrp_Functions { function f_str2msrpUri }; -// import from LibMsrp_Templates { -// template -// m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, -// m_msrpReport_Dummy, mw_msrpREPORT_success, -// m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, -// mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, -// m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, -// mw_contentType -// }; + import from AtsImsIot_TestSystem { type SipInterfaceMonitor , ImsTestCoordinator, SipInterfaceMonitor; } + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; + import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} + import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + + import from LibSip_Common { + type + GenericParam, + SemicolonParam_List + } + + import from AtsImsIot_Functions all; + import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + // LibSip + import from LibSip_SDPTypes { type SDP_media_desc_list }; +// // LibMsrp +// import from LibMsrp_TypesAndValues { type MsrpURI }; +// import from LibMsrp_Functions { function f_str2msrpUri }; +// import from LibMsrp_Templates { +// template +// m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, +// m_msrpReport_Dummy, mw_msrpREPORT_success, +// m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, +// mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, +// m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, +// mw_contentType +// }; import from AtsImsIot_Templates_IC all; -group g_IBCF { - - group g_IBCF_GC{ - - /** - * @desc - * TP_IMS_4002_01 in CFW step 3 (MESSAGE)
    ensure that {
    - * when { UE_A sends a MESSAGE to UE_B containing a Message_Body - * greater than 1300 bytes }
    then { IMS_B receives the MESSAGE - * containing the Message_Body greater than 1300 bytes }
    } + group g_IBCF { + + group g_IBCF_GC { + + /** + * @desc + * TP_IMS_4002_01 in CFW step 3 (MESSAGE)
    ensure that {
    + * when { UE_A sends a MESSAGE to UE_B containing a Message_Body + * greater than 1300 bytes }
    then { IMS_B receives the MESSAGE + * containing the Message_Body greater than 1300 bytes }
    } * @remark source function f_mtc_check_TP_IMS_4002_01_ic - */ - - function f_mtc_check_TP_IC_IBCF_GC_01(SipInterfaceMonitor p_monitorCompRef) - runs on ImsTestCoordinator { + */ + function f_mtc_check_TP_IC_IBCF_GC_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mdw_TP_IC_IBCF_GC_01) // TODO Enforce checks + }, + { mw_SipRequest(mw_MESSAGE_Request_Base) }, + {0, omit}, + "TP_IC_IBCF_GC_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_IC_IBCF_GC_01 + + } // group g_IBCF_GC + + group g_IBCF_INVITE { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_01_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mdw_TP_IC_IBCF_INVITE_01( + ( + mw_SipUrl_Host(v_EUT_A_Addr), + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A)) + ) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_IC_IBCF_INVITE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_IC_IBCF_INVITE_01 + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_02 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_02_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mdw_TP_IC_IBCF_INVITE_02( + mw_SIP_URI_Base, + mw_TEL_URI_Base + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_IC_IBCF_INVITE_02 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_IC_IBCF_INVITE_02 + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_03 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_04_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mdw_TP_IC_IBCF_INVITE_03( + v_eutBUri + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_IC_IBCF_INVITE_03 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_IC_IBCF_INVITE_03 + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5046_01_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_04( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A)); + var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B); + var template SipUrl v_UserEutBUrl := mw_SipUrl_Host(v_user.domain); + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + var Route v_Route; + var template Route vt_pcscfRoute := { + fieldName := ROUTE_E, + routeBody := ({mw_routeBody(v_pcscfEutAUrl), *}, + {mw_routeBody(v_pcscfEutAIpUrl), *} ) + }; + var Via v_Via; + var template Via vt_pcscfVia := { + fieldName := VIA_E, + viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.components.sip.hostPort), *}, + {mw_ViaBody_interface(v_pcscfEutAIpUrl.components.sip.hostPort), *} ) + }; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest((mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAUrl, v_UserEutBUrl), + mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAIpUrl, v_UserEutBUrl)))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_04", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if(ispresent(v_sip.request.msgHeader.route)) { + v_Route := v_sip.request.msgHeader.route; + } + if(ispresent(v_sip.request.msgHeader.via)) { + v_Via := v_sip.request.msgHeader.via; + } + + // Check Route header + if (match(v_Route, vt_pcscfRoute)) { + f_setIotVerdictFAIL("TP_IC_IBCF_INVITE_04"); + } + // Check Via header + if (match(v_Via, vt_pcscfVia)) { + } else { + f_setIotVerdictFAIL("TP_IC_IBCF_INVITE_04"); + } + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_05 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5097_02_ic + */ + function f_mtc_check_TP_IC_IBCF_INVITE_05( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + //TODO: from/to + var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from + var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + //TODO: from/to + v_UEB_PublicId := f_GetUEPublicId(PX_EUT_A); //from + v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_INVITE_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_INVITE + + group g_IBCF_REINVITE { + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REINVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5106_01_ic + */ + function f_mtc_check_TP_IC_IBCF_REINVITE_01( + SipInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)), + mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; + } + - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_GC_01)}, - {mw_SipRequest(mw_MESSAGE_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_GC_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - } // group g_IBCF_GC - -group g_IBCF_INVITE { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5097_01_ic - */ - function f_mtc_check_TP_IC_IBCF_INVITE_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_01((mw_SipUrl_Host(v_EUT_A_Addr), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))) ))}, - {}, - {0, omit}, - "TP_IC_IBCF_INVITE_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_02 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5097_02_ic - */ - function f_mtc_check_TP_IC_IBCF_INVITE_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_INVITE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_03 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5097_04_ic - */ - function f_mtc_check_TP_IC_IBCF_INVITE_03( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_03(v_eutBUri))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_INVITE_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REINVITE_01(v_SCSCF_A_Uri))}, + {mw_SipRequest(mw_INVITE_Request_Base)}, + v_skip, + "TP_IC_IBCF_REINVITE_01", + false, + false + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_REINVITE + + + group g_IBCF_100TRY { + /** + * @desc Starts monitor component behavior for TP_IMS_5070_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5070_01_ic + */ + function f_mtc_check_TP_IC_IBCF_100TRY_01( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_01", + false, + false + ) + ); + p_monitorCompRef.done; + + } + + /** + * @desc Starts monitor component behavior for TP_IMS_5070_02 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5070_01_ic + */ + function f_mtc_check_TP_IC_IBCF_100TRY_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage, + integer p_skipCount + ) runs on ImsTestCoordinator { + + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; + } + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mw_INVITE_Request_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_100Trying_Base)}, + {}, + v_skip, + "TP_IC_IBCF_100TRY_02", + false, + false + ) + ); + p_monitorCompRef.done; + + } + + } // end group g_IBCF_100TRY + + group g_IBCF_180RESP { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_01_ic + */ + function f_mtc_check_TP_IC_IBCF_180RESP_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first 180 response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mdw_TP_IC_IBCF_180RESP_01/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + {0, omit}, + "TP_IC_IBCF_180RESP_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5131_01_ic + */ + function f_mtc_check_TP_IC_IBCF_180RESP_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first 180 response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mdw_TP_IC_IBCF_180RESP_02/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + {0, omit}, + "TP_IC_IBCF_180RESP_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } + + } // end group g_IBCF_180RESP + + group g_IBCF_1XXRESP { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_03_ic + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first 1xx response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mdw_TP_IC_IBCF_1XXRESP_01(mw_SIP_URI_Base, mw_TEL_URI_Base)/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipResponse(m_Response_Dummy) }, // FIXME Create mdw_1XX_Base + {0, omit}, + "TP_IC_IBCF_1XXRESP_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first 1xx response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, ?)/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipResponse(m_Response_Dummy) }, // FIXME Create mdw_1XX_Base + {0, omit}, + "TP_IC_IBCF_1XXRESP_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_03( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template RecordRoute v_recordRoute := ?; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_02 + */ + function f_mtc_check_TP_IC_IBCF_1XXRESP_04( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template RecordRoute v_recordRoute := ?; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mw_180Ringing_Base)}, + {0, omit}, + "TP_IC_IBCF_1XXRESP_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_1XXRESP + + group g_IBCF_2XXRESP { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first 2xx response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mdw_TP_IC_IBCF_2XXRESP_01/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipResponse(mdw_2XX_Base) }, + {0, omit}, + "TP_IC_IBCF_2XXRESP_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5115_04_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first 2xx response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mdw_TP_IC_IBCF_2XXRESP_02(mw_SIP_URI_Base, mw_TEL_URI_Base)/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipResponse(mdw_2XX_Base) }, + {0, omit}, + "TP_IC_IBCF_2XXRESP_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5131_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first 2xx response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mdw_TP_IC_IBCF_2XXRESP_03/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipResponse(mdw_2XX_Base) }, + {0, omit}, + "TP_IC_IBCF_2XXRESP_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_04 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5121_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_04( + SipInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var template SkipType v_skip := {0, omit}; + + if(p_skipCount > 0) { + v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + } + + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)}, + {mw_SipResponse(mdw_2XX_Base)}, + v_skip, + "TP_IC_IBCF_2XXRESP_04", + false, + false + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_05 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5121_02_ic + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_05( + SipInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var template RecordRoute v_recordRoute := ?; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mdw_2XX_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_05", + false, + false + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_06 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_2XXRESP_05 + */ + function f_mtc_check_TP_IC_IBCF_2XXRESP_06( + SipInterfaceMonitor p_monitorCompRef, + integer p_skipCount + ) runs on ImsTestCoordinator { + var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + var template RecordRoute v_recordRoute := ?; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mdw_2XX_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_05", + false, + false + ) + ); + p_monitorCompRef.done; + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, + {mw_SipResponse(mdw_2XX_Base)}, + {0, omit}, + "TP_IC_IBCF_2XXRESP_05", + false, + false + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_2XXRESP + + + group g_IBCF_ACK { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5107_02_ic + */ + function f_mtc_check_TP_IC_IBCF_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first ACK request + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mdw_TP_IC_IBCF_ACK_01(?, ?)/*FIXME( + mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other //(mw_credentialIntegrityYes) + )*/ + ) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + {0, omit}, + "TP_IC_IBCF_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } //function + + + } // end group g_IBCF_ACK + + group g_IBCF_BYE { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5107_01_ic + */ + function f_mtc_check_TP_IC_IBCF_BYE_01( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, + {}, + {0, omit}, + "TP_IC_IBCF_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 + */ + function f_mtc_check_TP_IC_IBCF_BYE_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + + //TODO: to/from + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, + {}, + {0, omit}, + "TP_IC_IBCF_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 + */ + function f_mtc_check_TP_IC_IBCF_BYE_03( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + + //TODO: to/from + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, + {}, + {0, omit}, + "TP_IC_IBCF_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + //TODO: to/from + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, + {}, + {0,omit}, + "f_mtc_check_response_mx", + false, + false + ) + ); + p_monitorCompRef.done; + + } //function + + } // end group g_IBCF_BYE + + group g_IBCF_CANCEL { + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5107_03_ic + */ + function f_mtc_check_TP_IC_IBCF_CANCEL_01( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + + function f_mtc_check_TP_IC_IBCF_CANCEL_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + + function f_mtc_check_TP_IC_IBCF_CANCEL_03( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsBUrl,?,?))}, + {}, + {0, omit}, + "TP_IC_IBCF_CANCEL_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + + } // end group g_IBCF_CANCEL + + group g_IBCF_CANCEL_OK { + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_statusLine indicate response code. + * @remark source function f_mtc_check_response_mx + */ + function f_mtc_check_TP_IC_IBCF_CANCEL_OK_01( + SipInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From + {}, + {0,omit}, + "TP_IC_IBCF_CANCEL_OK_01", + false, + false + ) + ); + p_monitorCompRef.done; + } + + function f_mtc_check_TP_IC_IBCF_CANCEL_OK_02( + SipInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From + {}, + {0,omit}, + "TP_IC_IBCF_CANCEL_OK_02", + false, + false + ) + ); + p_monitorCompRef.done; + } + + function f_mtc_check_TP_IC_IBCF_CANCEL_OK_03( + SipInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From + {}, + {0,omit}, + "TP_IC_IBCF_CANCEL_OK_03", + false, + false + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_CANCEL_OK + + group g_IBCF_486INVITE { + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6034_04 + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_01( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + // p_monitorCompRef.start( + // f_Iot_Sip_receive( + // { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, + // "TP_IC_IBCF_486INVITE_01", false, false ) + // ); + // p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } // End of function + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_03( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior + * @param p_monitorCompRef Reference to monitor component + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_04( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_486INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_486INVITE + + group g_IBCF_487INVITE { + + /** + * Starts monitor component behavior for TP_IC_IBCF_487INVITE_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_EPC_6034_04 + */ + function f_mtc_check_TP_IC_IBCF_487INVITE_01( + SipInterfaceMonitor p_monitorCompRef + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, + "TP_IC_IBCF_487INVITE_01", false, false ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, + "TP_IC_IBCF_487INVITE_01", false, false ) + ); + p_monitorCompRef.done; + } // End of function + + /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5046_01_ic */ - function f_mtc_check_TP_IC_IBCF_INVITE_04( + function f_mtc_check_TP_IC_IBCF_487INVITE_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_487INVITE_02(?,?))}, + {mw_SipResponse(mdw_4XX_Base)}, + {0, omit}, + "TP_IC_IBCF_487INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_487INVITE + + group g_IBCF_487INVITE_ACK { + + /** + * Starts monitor component behavior for TP_IC_IBCF_487INVITE_ACK_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01( SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A)); - var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B); - var template SipUrl v_UserEutBUrl := mw_SipUrl_Host(v_user.domain); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var Route v_Route; - var template Route vt_pcscfRoute := { - fieldName := ROUTE_E, - routeBody := ({mw_routeBody(v_pcscfEutAUrl), *}, - {mw_routeBody(v_pcscfEutAIpUrl), *} ) - }; - var Via v_Via; - var template Via vt_pcscfVia := { - fieldName := VIA_E, - viaBody := ({mw_ViaBody_interface(v_pcscfEutAUrl.components.sip.hostPort), *}, - {mw_ViaBody_interface(v_pcscfEutAIpUrl.components.sip.hostPort), *} ) - }; - + + // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_487INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + p_monitorCompRef.start( f_Iot_Sip_receive( - {mw_SipRequest((mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAUrl, v_UserEutBUrl), - mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAIpUrl, v_UserEutBUrl)))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_487INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } //function + + /** + * Starts monitor component behavior for TP_IC_IBCF_487INVITE_ACK_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { + + // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, {0, omit}, - "TP_IC_IBCF_INVITE_04", - true, + "TP_IC_IBCF_487INVITE_ACK_02", + false, p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_487INVITE_ACK_02", + false, + p_checkMessage ) ); - p_monitorCompRef.done; - f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - if(ispresent(v_sip.request.msgHeader.route)) { - v_Route := v_sip.request.msgHeader.route; - } - if(ispresent(v_sip.request.msgHeader.via)) { - v_Via := v_sip.request.msgHeader.via; - } - - // Check Route header - if (match(v_Route, vt_pcscfRoute)) { - f_setIotVerdictFAIL("TP_IC_IBCF_INVITE_04"); - } - // Check Via header - if (match(v_Via, vt_pcscfVia)) { - } else { - f_setIotVerdictFAIL("TP_IC_IBCF_INVITE_04"); - } - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_05 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5097_02_ic - */ - function f_mtc_check_TP_IC_IBCF_INVITE_05( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - //TODO: from/to - var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from - var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_INVITE_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - //TODO: from/to - v_UEB_PublicId := f_GetUEPublicId(PX_EUT_A); //from - v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_INVITE_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_INVITE - -group g_IBCF_REINVITE { - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_REINVITE_01 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5106_01_ic - */ - function f_mtc_check_TP_IC_IBCF_REINVITE_01( - SipInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)), - mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_REINVITE_01(v_SCSCF_A_Uri))}, - {mw_SipRequest(mw_INVITE_Request_Base)}, - v_skip, - "TP_IC_IBCF_REINVITE_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_REINVITE - - -group g_IBCF_100TRY { - - /** - * @desc Starts monitor component behavior for TP_IMS_5070_01 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5070_01_ic - */ - function f_mtc_check_TP_IC_IBCF_100TRY_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IC_IBCF_100TRY_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - v_skip, - "TP_IC_IBCF_100TRY_01", - false, - false - ) - ); - p_monitorCompRef.done; - - } - - /** - * @desc Starts monitor component behavior for TP_IMS_5070_02 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5070_01_ic - */ - function f_mtc_check_TP_IC_IBCF_100TRY_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage, - integer p_skipCount - ) runs on ImsTestCoordinator { - - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)}; - } - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mw_INVITE_Request_Base)}, - {}, - v_skip, - "TP_IC_IBCF_100TRY_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_100Trying_Base)}, - {}, - v_skip, - "TP_IC_IBCF_100TRY_02", - false, - false - ) - ); - p_monitorCompRef.done; - - } - -} // end group g_IBCF_100TRY - -group g_IBCF_180RESP { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5115_01_ic - */ - function f_mtc_check_TP_IC_IBCF_180RESP_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_180RESP_01)}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IC_IBCF_180RESP_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5131_01_ic - */ - function f_mtc_check_TP_IC_IBCF_180RESP_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_180RESP_02)}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IC_IBCF_180RESP_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_180RESP - -group g_IBCF_1XXRESP { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5115_03_ic - */ - function f_mtc_check_TP_IC_IBCF_1XXRESP_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_01(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IC_IBCF_1XXRESP_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 - */ - function f_mtc_check_TP_IC_IBCF_1XXRESP_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template RecordRoute v_recordRoute := ?; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IC_IBCF_1XXRESP_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_01 - */ - function f_mtc_check_TP_IC_IBCF_1XXRESP_03( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template RecordRoute v_recordRoute := ?; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IC_IBCF_1XXRESP_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IC_IBCF_1XXRESP_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IC_IBCF_1XXRESP_02 - */ - function f_mtc_check_TP_IC_IBCF_1XXRESP_04( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template RecordRoute v_recordRoute := ?; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))}, - {mw_SipResponse(mw_180Ringing_Base)}, - {0, omit}, - "TP_IC_IBCF_1XXRESP_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_1XXRESP - -group g_IBCF_2XXRESP { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5115_02_ic - */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_01)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IC_IBCF_2XXRESP_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5115_04_ic - */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_02(mw_SIP_URI_Base, mw_TEL_URI_Base))}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IC_IBCF_2XXRESP_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5131_02_ic - */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_03( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_2XXRESP_03)}, - {mw_SipResponse(mw_200OK_Base)}, - {0, omit}, - "TP_IC_IBCF_2XXRESP_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_04 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5121_02_ic - */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_04( - SipInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; - } - + p_monitorCompRef.done; + } //function + + } // end group g_IBCF_487INVITE_ACK + + group g_IBCF_486INVITE_ACK { + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_ACK_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)}, - {mw_SipResponse(mdw_2XX_Base)}, - v_skip, - "TP_IC_IBCF_2XXRESP_04", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_05 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5121_02_ic - */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_05( - SipInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - var template RecordRoute v_recordRoute := ?; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, - {mw_SipResponse(mdw_2XX_Base)}, - {0, omit}, - "TP_IC_IBCF_2XXRESP_05", - false, - false - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_06 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IC_IBCF_2XXRESP_05 - */ - function f_mtc_check_TP_IC_IBCF_2XXRESP_06( - SipInterfaceMonitor p_monitorCompRef, - integer p_skipCount - ) runs on ImsTestCoordinator { - var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - var template RecordRoute v_recordRoute := ?; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, - {mw_SipResponse(mdw_2XX_Base)}, - {0, omit}, - "TP_IC_IBCF_2XXRESP_05", - false, - false - ) - ); - p_monitorCompRef.done; - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))}, - {mw_SipResponse(mdw_2XX_Base)}, - {0, omit}, - "TP_IC_IBCF_2XXRESP_05", - false, - false - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_2XXRESP - - -group g_IBCF_ACK { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5107_02_ic - */ - function f_mtc_check_TP_IC_IBCF_ACK_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + + /** + * Starts monitor component behavior for TP_IC_IBCF_486INVITE_ACK_02 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + * @remark source function f_mtc_check_TP_IMS_5052_01_ic + */ + function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage + ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_ACK_01(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, - {}, - {0, omit}, - "TP_IC_IBCF_ACK_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - -} // end group g_IBCF_ACK - -group g_IBCF_BYE { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5107_01_ic - */ - function f_mtc_check_TP_IC_IBCF_BYE_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, - {}, - {0, omit}, - "TP_IC_IBCF_BYE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 - */ - function f_mtc_check_TP_IC_IBCF_BYE_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - //TODO: to/from - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, - {}, - {0, omit}, - "TP_IC_IBCF_BYE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: to/from - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, - {}, - {0,omit}, - "f_mtc_check_response_mx", - false, - false - ) - ); - p_monitorCompRef.done; - - //TODO: to/from - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, - {}, - {0,omit}, - "f_mtc_check_response_mx", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IC_IBCF_BYE_01 - */ - function f_mtc_check_TP_IC_IBCF_BYE_03( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - - //TODO: to/from - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, - {}, - {0, omit}, - "TP_IC_IBCF_BYE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: to/from - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, - {}, - {0,omit}, - "f_mtc_check_response_mx", - false, - false - ) - ); - p_monitorCompRef.done; - - //TODO: to/from - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, - {}, - {0,omit}, - "f_mtc_check_response_mx", - false, - false - ) - ); - p_monitorCompRef.done; - - } //function - -} // end group g_IBCF_BYE - -group g_IBCF_CANCEL { - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5107_03_ic - */ - function f_mtc_check_TP_IC_IBCF_CANCEL_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To - {}, - {0, omit}, - "TP_IC_IBCF_CANCEL_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To - {}, - {0, omit}, - "TP_IC_IBCF_CANCEL_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - - function f_mtc_check_TP_IC_IBCF_CANCEL_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To - {}, - {0, omit}, - "TP_IC_IBCF_CANCEL_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - - function f_mtc_check_TP_IC_IBCF_CANCEL_03( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsBUrl,?,?))}, - {}, - {0, omit}, - "TP_IC_IBCF_CANCEL_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - -} // end group g_IBCF_CANCEL - -group g_IBCF_CANCEL_OK { - - /** - * Starts monitor component behavior for TP_IC_IBCF_486INVITE_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_statusLine indicate response code. - * @remark source function f_mtc_check_response_mx - */ - function f_mtc_check_TP_IC_IBCF_CANCEL_OK_01( - SipInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From - {}, - {0,omit}, - "TP_IC_IBCF_CANCEL_OK_01", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_TP_IC_IBCF_CANCEL_OK_02( - SipInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From - {}, - {0,omit}, - "TP_IC_IBCF_CANCEL_OK_02", - false, - false - ) - ); - p_monitorCompRef.done; - } - - function f_mtc_check_TP_IC_IBCF_CANCEL_OK_03( - SipInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From - {}, - {0,omit}, - "TP_IC_IBCF_CANCEL_OK_03", - false, - false - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_CANCEL_OK - -group g_IBCF_486INVITE { - - /** - * Starts monitor component behavior for TP_IC_IBCF_486INVITE_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6034_04 - */ - function f_mtc_check_TP_IC_IBCF_486INVITE_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { -// p_monitorCompRef.start( -// f_Iot_Sip_receive( -// { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit }, -// "TP_IC_IBCF_486INVITE_01", false, false ) -// ); -// p_monitorCompRef.done; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } // End of function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IC_IBCF_486INVITE_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IC_IBCF_486INVITE_03( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IC_IBCF_486INVITE_04( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_486INVITE_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_486INVITE - -group g_IBCF_487INVITE { - - /** - * Starts monitor component behavior for TP_IC_IBCF_487INVITE_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_EPC_6034_04 - */ - function f_mtc_check_TP_IC_IBCF_487INVITE_01( - SipInterfaceMonitor p_monitorCompRef - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, - "TP_IC_IBCF_487INVITE_01", false, false ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit }, - "TP_IC_IBCF_487INVITE_01", false, false ) - ); - p_monitorCompRef.done; - } // End of function - - /** - * @desc Starts monitor component behavior - * @param p_monitorCompRef Reference to monitor component - */ - function f_mtc_check_TP_IC_IBCF_487INVITE_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_487INVITE_02(?,?))}, - {mw_SipResponse(mdw_4XX_Base)}, - {0, omit}, - "TP_IC_IBCF_487INVITE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_487INVITE - -group g_IBCF_487INVITE_ACK { - - /** - * Starts monitor component behavior for TP_IC_IBCF_487INVITE_ACK_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_IMS_5052_01_ic - */ - function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - -// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_487INVITE_ACK_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_487INVITE_ACK_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - - /** - * Starts monitor component behavior for TP_IC_IBCF_487INVITE_ACK_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_IMS_5052_01_ic - */ - function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - -// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_487INVITE_ACK_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_487INVITE_ACK_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } //function - -} // end group g_IBCF_487INVITE_ACK - -group g_IBCF_486INVITE_ACK { - - /** - * Starts monitor component behavior for TP_IC_IBCF_486INVITE_ACK_01 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_IMS_5052_01_ic - */ - function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - -// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_486INVITE_ACK_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_486INVITE_ACK_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - - /** - * Starts monitor component behavior for TP_IC_IBCF_486INVITE_ACK_02 - * @param p_monitorCompRef Reference to monitor component - * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). - * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. - * @remark source function f_mtc_check_TP_IMS_5052_01_ic - */ - function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02( - SipInterfaceMonitor p_monitorCompRef, - boolean p_checkMessage - ) runs on ImsTestCoordinator { - -// var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_486INVITE_ACK_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - //TODO: from/to - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, - {}, - {0, omit}, - "TP_IC_IBCF_486INVITE_ACK_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } //function - -} // end group g_IBCF_486INVITE_ACK - -group g_IBCF_SUBSCRIBE { - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_SUBSCRIBE_01 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5044_01_ic - */ - function f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01( - SipInterfaceMonitor p_monitorCompRef/*, Response p_200OK*/, boolean p_checkMessage - ) runs on ImsTestCoordinator { - var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); - var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; - var charstring v_Epires200OK; - var charstring v_EpiresSubscribe; - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_SUBSCRIBE_01(?, v_eutAUri, v_UEB_PublicId))}, - {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_SUBSCRIBE_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // TODO: IBCF_B receives a 200_OK from the IMS_A - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IC_IBCF_SUBSCRIBE_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; + // var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + //TODO: from/to + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))}, + {}, + {0, omit}, + "TP_IC_IBCF_486INVITE_ACK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } //function + + } // end group g_IBCF_486INVITE_ACK + + group g_IBCF_SUBSCRIBE { - // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_P_CSCF_B - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IC_IBCF_SUBSCRIBE_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_SUBSCRIBE - - -group g_IBCF_NOTIFY { - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_NOTIFY_01 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5094_01_IMS - */ - function f_mtc_check_TP_IC_IBCF_NOTIFY_01( - SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - - var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_NOTIFY_01(?, v_request_uri))}, - {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, - {0, omit}, - "TP_IC_IBCF_NOTIFY_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // TODO: IBCF_B receives a 200_OK from the IMS_P_CSCF_B - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IC_IBCF_NOTIFY_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_A - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_200OK_Base)}, - {}, - {0, omit}, - "TP_IC_IBCF_NOTIFY_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - -} // end group g_IBCF_NOTIFY - -group g_IBCF_REGISTER { - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_01 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5089_01_ic_when - */ - function f_mtc_check_TP_IC_IBCF_REGISTER_01( - SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_01)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, - {mw_SipResponse (mw_401Unauthorized_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, - {mw_SipResponse (mw_401Unauthorized_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_02 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when - */ - function f_mtc_check_TP_IC_IBCF_REGISTER_02( - SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_02)}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5092_01_ic - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5092_01_ic - v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); - v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_03 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when - */ - function f_mtc_check_TP_IC_IBCF_REGISTER_03( - SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: UE_A,IMS_B - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5092_01_ic - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_SUBSCRIBE_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5044_01_ic + */ + function f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01( + SipInterfaceMonitor p_monitorCompRef/*, Response p_200OK*/, boolean p_checkMessage + ) runs on ImsTestCoordinator { + var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); + var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)}; + var charstring v_Epires200OK; + var charstring v_EpiresSubscribe; + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_SUBSCRIBE_01(?, v_eutAUri, v_UEB_PublicId))}, + {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_SUBSCRIBE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // TODO: IBCF_B receives a 200_OK from the IMS_A + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_SUBSCRIBE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5092_01_ic - v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); - v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_P_CSCF_B + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_SUBSCRIBE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_SUBSCRIBE + + + group g_IBCF_NOTIFY { + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_NOTIFY_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5094_01_IMS + */ + function f_mtc_check_TP_IC_IBCF_NOTIFY_01( + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + + var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_NOTIFY_01(?, v_request_uri))}, + {mw_SipRequest(mw_NOTIFY_Request_Base(?))}, + {0, omit}, + "TP_IC_IBCF_NOTIFY_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // TODO: IBCF_B receives a 200_OK from the IMS_P_CSCF_B + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_NOTIFY_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_04 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when - */ - function f_mtc_check_TP_IC_IBCF_REGISTER_04( - SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_A + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_200OK_Base)}, + {}, + {0, omit}, + "TP_IC_IBCF_NOTIFY_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + } // end group g_IBCF_NOTIFY + + group g_IBCF_REGISTER { - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_IC_IBCF_REGISTER_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5092_01_ic - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_01 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5089_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_01( + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_01)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; - p_monitorCompRef.start( + // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, + {mw_SipResponse (mw_401Unauthorized_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)}, + {mw_SipResponse (mw_401Unauthorized_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_02 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_02( + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_02)}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); + v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_03 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_03( + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: UE_A,IMS_B + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); + v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_04 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_04( + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator { + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B + {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IC_IBCF_REGISTER_04", false, p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5092_01_ic - v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); - v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + ) + ); + p_monitorCompRef.done; - p_monitorCompRef.start( + p_monitorCompRef.start( f_Iot_Sip_receive( - {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, + {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B + {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IC_IBCF_REGISTER_04", false, p_checkMessage - ) - ); - p_monitorCompRef.done; - } - - /** - * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_05 - * @param p_monitorCompRef Reference to monitor component - * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when - */ - function f_mtc_check_TP_IC_IBCF_REGISTER_05( - SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator {f_mtc_check_TP_IC_IBCF_REGISTER_04(p_monitorCompRef,p_checkMessage) - } - -} // end group g_IBCF_REGISTER - + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B); + v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_IC_IBCF_REGISTER_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + + /** + * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_05 + * @param p_monitorCompRef Reference to monitor component + * @remark source function f_mtc_check_TP_IMS_5092_01_ic_when + */ + function f_mtc_check_TP_IC_IBCF_REGISTER_05( + SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage + ) runs on ImsTestCoordinator {f_mtc_check_TP_IC_IBCF_REGISTER_04(p_monitorCompRef,p_checkMessage) + } + + } // end group g_IBCF_REGISTER + } // end group g_IBCF diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn index e6efe52..8e66cb3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -25,8 +25,8 @@ module AtsImsIot_TP_behavior_MW_IS { import from LibMsrp_Templates all; // AtsImsIot import from AtsImsIot_TestSystem all; - import from AtsImsIot_Templates all; import from AtsImsIot_Templates_MW all; + import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; @@ -138,7 +138,6 @@ module AtsImsIot_TP_behavior_MW_IS { ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var SipMessage v_sip; // Check the first REGISTER @@ -148,7 +147,7 @@ module AtsImsIot_TP_behavior_MW_IS { mw_SipRequest( mw_TP_MW_ICSCF_REGISTER_01( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other/*(mw_credentialIntegrityYes)*/ ) ) @@ -165,6 +164,9 @@ module AtsImsIot_TP_behavior_MW_IS { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check REGISTER 401 Unauthorized response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -239,11 +241,10 @@ module AtsImsIot_TP_behavior_MW_IS { */ function f_mtc_check_TP_MW_ICSCF_REGISTER_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var SipMessage v_sip; // Check the first REGISTER @@ -253,7 +254,7 @@ module AtsImsIot_TP_behavior_MW_IS { mw_SipRequest( mw_TP_MW_ICSCF_REGISTER_02( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other ) ) @@ -270,6 +271,9 @@ module AtsImsIot_TP_behavior_MW_IS { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check REGISTER 200 OK response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -283,10 +287,7 @@ module AtsImsIot_TP_behavior_MW_IS { )) }, { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_Response_2xx_Base) }, {0, omit}, "TP_MW_ICSCF_REGISTER_02 - 200 OK", @@ -298,24 +299,100 @@ module AtsImsIot_TP_behavior_MW_IS { } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02 - function f_mtc_check_TP_MW_ICSCF_REGISTER_03( // FIXME RMI To be reviewed + /** + * @desc Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_B entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A entity receives a REGISTER containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_INVALID_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient + * ;; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends an 404_NotFound containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_ICSCF_REGISTER_03( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_404NotFound_Base) - }, - {}, - {0, omit}, - "TP_MW_ICSCF_REGISTER_03", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); // User removed from HSS + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_ICSCF_REGISTER_03( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_03 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 404 Not Found response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_03 - 404 Not Found", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_03 function f_mtc_check_TP_MW_ICSCF_REGISTER_04( // FIXME RMI To be reviewed @@ -385,21 +462,60 @@ module AtsImsIot_TP_behavior_MW_IS { */ function f_mtc_check_TP_MW_ICSCF_REGISTER_07( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {}, - {0, omit}, - "TP_MW_ICSCF_REGISTER_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check first DeREGISTER request + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_ICSCF_REGISTER_07( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_07 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check DeREGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_07 - 200 OK", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_07 } // End of group imsDeRegistration diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 7f13514..9d87e1e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -163,7 +163,6 @@ module AtsImsIot_TP_behavior_MW_PS { ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); var SipMessage v_sip; // Check first REGISTER request @@ -171,9 +170,9 @@ module AtsImsIot_TP_behavior_MW_PS { f_Iot_Sip_receive( { mw_SipRequest( - mw_TP_MW_PCSCF_REGISTER_01( + mw_TP_MW_PCSCF_REGISTER_01( // FIXME Add CallId... mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other/*(mw_credentialIntegrityYes)*/ ) ) @@ -190,6 +189,9 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check REGISTER 401 Unauthorized response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -312,6 +314,9 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check the second REGISTER response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -325,10 +330,7 @@ module AtsImsIot_TP_behavior_MW_PS { )) }, { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_Response_2xx_Base) }, {0, omit}, "TP_MW_PCSCF_REGISTER_02 - 200 Okay", @@ -396,9 +398,7 @@ module AtsImsIot_TP_behavior_MW_PS { in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - v_userInfoA.publicId := v_userInfoA.publicId & "_Unknown"; // PX_UE_A_INVALID_USERNAME - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); // User removed from HSS var SipMessage v_sip; // Check the first REGISTER @@ -408,14 +408,12 @@ module AtsImsIot_TP_behavior_MW_PS { mw_SipRequest( mw_TP_MW_PCSCF_REGISTER_01( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other ) ) }, - { - mw_SipRequest(mw_REGISTER_Request_Base) - }, + { mw_SipRequest(mw_REGISTER_Request_Base) }, {0, omit}, "TP_MW_PCSCF_REGISTER_03 - First request", true, @@ -425,14 +423,17 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); - // Check REGISTER 401 Unauthorized response + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 404 Not Found response p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) }, { - mw_SipResponse(mw_404NotFound_Base), mw_SipResponse(mw_Response_4xx_Base( v_sip.request.msgHeader.callId, v_sip.request.msgHeader.cSeq @@ -548,6 +549,9 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check DeREGISTER 200 OK response p_monitorCompRef.start( f_Iot_Sip_receive( @@ -558,10 +562,7 @@ module AtsImsIot_TP_behavior_MW_PS { )) }, { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_Response_2xx_Base) }, {0, omit}, "TP_MW_PCSCF_REGISTER_07 - 200 OK", @@ -571,19 +572,6 @@ module AtsImsIot_TP_behavior_MW_PS { ); p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_07", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_07 /** @@ -734,24 +722,30 @@ module AtsImsIot_TP_behavior_MW_PS { mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) )) }, - {}, + { mw_SipRequest(mw_SUBSCRIBE_Request_Base) }, {0, omit}, "TP_MW_PCSCF_SUBSCRIBE_01 - Request", - false, + true, p_checkMessage ) ); p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } // Check SUBSCRIBE 200 OK response p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId, + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) }, - {}, {0, omit}, "TP_MW_PCSCF_SUBSCRIBE_01 - Response", false, @@ -762,24 +756,58 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01 - function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_SUBSCRIBE_Request_Base), - mw_SipResponse (mw_200OK_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_SUBSCRIBE_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the SUBSCRIBE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_SUBSCRIBE_02( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_SUBSCRIBE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_02 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check SUBSCRIBE 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId, + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_02 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02 } // End of group imsSubscribe @@ -810,23 +838,57 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_NOTIFY_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_NOTIFY_Request_Base), - mw_SipResponse (mw_200OK_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_NOTIFY_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var SipMessage v_sip; + + // Check the NOTIFY + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_MW_PCSCF_NOTIFY_01( + -, + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest (mw_NOTIFY_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_NOTIFY_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check NOTIFY 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId, + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_MW_PCSCF_SUBSCRIBE_02 - Response", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_NOTIFY_01 } // End of group imsNotify @@ -878,20 +940,34 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_INVITE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + out SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_INVITE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_userInfoB.publicId + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_01 /** @@ -939,56 +1015,88 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_INVITE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_INVITE_02( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_02 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_02 function f_mtc_check_TP_MW_PCSCF_INVITE_03( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_MW_PCSCF_INVITE_03( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_03 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_03 function f_mtc_check_TP_MW_PCSCF_INVITE_04( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_INVITE_Request_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_MW_PCSCF_INVITE_04( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_04 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_04 /** @@ -1202,21 +1310,29 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_100Trying_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_100Trying_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_100Trying_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_MW_PCSCF_100Trying_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_01 /** @@ -1241,57 +1357,81 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_100Trying_02( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_100Trying_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_100Trying_02( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_MW_PCSCF_100Trying_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_02 function f_mtc_check_TP_MW_PCSCF_100Trying_03( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_100Trying_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_100Trying_03( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_MW_PCSCF_100Trying_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_03 - function f_mtc_check_TP_MW_PCSCF_100Trying_04( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + function f_mtc_check_TP_MW_PCSCF_100Trying_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_100Trying_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_100Trying_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_100Trying_04( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_MW_PCSCF_100Trying_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_04 } // End of group ims100Trying @@ -1333,20 +1473,28 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_180RINGING_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_180RINGING_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_180Ringing_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_MW_PCSCF_180RINGING_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_01 /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index 6304f9a..97b314d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -285,10 +285,7 @@ module AtsImsIot_TP_behavior_MW_SI { )) }, { - mw_SipResponse(mw_Response_2xx_Base( - v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq - )) + mw_SipResponse(mw_Response_2xx_Base) }, {0, omit}, "TP_MW_SCSCF_REGISTER_02 - 200 OK", @@ -453,7 +450,7 @@ module AtsImsIot_TP_behavior_MW_SI { { mw_SipRequest(mw_SUBSCRIBE_Request_Base) }, - {}, + { mw_SipRequest(mw_SUBSCRIBE_Request_Base) }, {0, omit}, "TP_MW_SCSCF_SUBSCRIBE_01 - Request", false, diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index e1a0db6..ab128fd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -72,7 +72,9 @@ group g_PCRF_ASA { { DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } }, - {}, + { + DIAMETER_MSG:{ aSR_MSG := mw_ASR_basic } + }, {0, omit}, "TP_RX_PCRF_ASA_01 - ASR", p_forward_to_mtc, @@ -86,7 +88,9 @@ group g_PCRF_ASA { { DIAMETER_MSG:{ aSA_MSG := mw_ASA_resultCode } }, - {}, + { + DIAMETER_MSG:{ aSA_MSG := mw_ASA_basic } + }, {0, omit}, "TP_RX_PCRF_ASA_01 - ASA", p_forward_to_mtc, @@ -147,10 +151,12 @@ group g_PCRF_AAA { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, { DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } }, - {}, {0, omit}, "TP_RX_PCRF_AAA_01 - AAR", p_forward_to_mtc, @@ -164,7 +170,9 @@ group g_PCRF_AAA { { DIAMETER_MSG:{ aAA_MSG := mw_AAA_AcceptableService } }, - {}, + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic } + }, {0, omit}, "TP_RX_PCRF_AAA_01 - AAA", p_forward_to_mtc, @@ -209,7 +217,9 @@ group g_PCRF_AAA { { DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription } }, - {}, + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic } + }, {0, omit}, "TP_RX_PCRF_AAA_02 - AAA", p_forward_to_mtc, @@ -259,7 +269,9 @@ group g_PCRF_AAA { { DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode } }, - {}, + { + DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic } + }, {0, omit}, "TP_RX_PCRF_AAA_03 - AAA", p_forward_to_mtc, @@ -316,7 +328,9 @@ group g_PCRF_STA { { DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } }, - {}, + { + DIAMETER_MSG:{ sTA_MSG := mw_STA_basic } + }, {0, omit}, "TP_RX_PCRF_STA_01 - STA", p_forward_to_mtc, @@ -365,10 +379,12 @@ group g_PCRF_STA { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCRF_STA_02 - STR", p_forward_to_mtc, @@ -382,7 +398,9 @@ group g_PCRF_STA { { DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } }, - {}, + { + DIAMETER_MSG:{ sTA_MSG := mw_STA_basic } + }, {0, omit}, "TP_RX_PCRF_STA_02 - STA", p_forward_to_mtc, @@ -448,7 +466,9 @@ group g_PCSCF_ASR { { DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } }, - {}, + { + DIAMETER_MSG:{ aSR_MSG := mw_ASR_basic } + }, {0, omit}, "TP_RX_PCSCF_ASR_01 - ASR", p_forward_to_mtc, @@ -525,7 +545,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_specificActionLossOfBearer } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_01 - AAR", p_forward_to_mtc, @@ -578,7 +600,7 @@ group g_PCSCF_AAR { //check if nothing received }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } //Fail criteria: check if AAR is sent + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } //Fail criteria: check if AAR is sent }, {0, omit}, "TP_RX_PCSCF_AAR_02 - AAR", @@ -648,7 +670,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic} + }, {0, omit}, "TP_RX_PCSCF_AAR_03 - AAR", p_forward_to_mtc, @@ -719,7 +743,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_04 - AAR", p_forward_to_mtc, @@ -791,7 +817,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_05 - AAR", p_forward_to_mtc, @@ -861,7 +889,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_06 - AAR", p_forward_to_mtc, @@ -933,7 +963,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_07 - AAR", p_forward_to_mtc, @@ -1005,7 +1037,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_08 - AAR", p_forward_to_mtc, @@ -1077,7 +1111,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_09 - AAR", p_forward_to_mtc, @@ -1148,7 +1184,9 @@ group g_PCSCF_AAR { { DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink } }, - {}, + { + DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + }, {0, omit}, "TP_RX_PCSCF_AAR_10 - AAR", p_forward_to_mtc, @@ -1203,10 +1241,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_01 - STR", p_forward_to_mtc, @@ -1257,10 +1297,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_02 - STR", p_forward_to_mtc, @@ -1310,10 +1352,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_03 - STR", p_forward_to_mtc, @@ -1363,10 +1407,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_04 - STR", p_forward_to_mtc, @@ -1416,10 +1462,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_05 - STR", p_forward_to_mtc, @@ -1469,10 +1517,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_06 - STR", p_forward_to_mtc, @@ -1522,10 +1572,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_07 - STR", p_forward_to_mtc, @@ -1575,10 +1627,12 @@ group g_PCSCF_STR { if (isvalue(p_monitorCompRef)){ p_monitorCompRef.start ( f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + }, { DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } }, - {}, {0, omit}, "TP_RX_PCSCF_STR_08 - STR", p_forward_to_mtc, diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn index 609aac9..7666a14 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn @@ -1943,6 +1943,14 @@ module AtsImsIot_Templates { payload := * } + template Response mw_480TemporaryUnavailable_Base modifies m_Response_Dummy := + { + statusLine := {c_sipNameVersion, 480, ?}, + msgHeader := ?, + messageBody := *, + payload := * + } + template Response mdw_404Or604NotFound_Base modifies m_Response_Dummy := { statusLine := ({c_sipNameVersion, 404, ?}, {c_sipNameVersion, 604, ?}), diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn new file mode 100644 index 0000000..a07213d --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn @@ -0,0 +1,313 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides TP related templates used at MW interface + */ +module AtsImsIot_Templates_GM { + + // LibCommon + //import from LibCommon_BasicTypesAndValues all; + //import from LibCommon_VerdictControl all; + + // libSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + + // LibIms + import from LibIms_Templates all; + + //import from LibMsrp_TypesAndValues all; + + // LibIot + //import from LibIot_TypesAndValues all; + import from LibIot_PIXITS all; + + // AtsImsIot + //import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_PIXITS all; + import from AtsImsIot_Templates all; + + group sip_templates { + + template (present) From mw_From_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := FROM_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + fromParams := * + } // End of template mw_From_AddrUnion_SipUrl + + template (present) To mw_To_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := TO_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + toParams := * + } // End of template mw_To_AddrUnion_SipUrl + + template (present) Response mw_TP_GM_PCSCF_100Trying_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_100Trying_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_GM_PCSCF_100Trying_01 + + template (present) Response mw_TP_GM_PCSCF_100Trying_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_100Trying_01 := { + } // End of template mw_TP_GM_PCSCF_100Trying_02 + + template (present) Response mw_TP_GM_PCSCF_100Trying_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_100Trying_01 := { + } // End of template mw_TP_GM_PCSCF_100Trying_03 + + template (present) Response mw_TP_GM_PCSCF_100Trying_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_100Trying_01 := { + } // End of template mw_TP_GM_PCSCF_100Trying_04 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_180Ringing_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_GM_PCSCF_180Ringing_01 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { + } // End of template mw_TP_GM_PCSCF_180Ringing_02 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { + } // End of template mw_TP_GM_PCSCF_180Ringing_03 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { + } // End of template mw_TP_GM_PCSCF_180Ringing_04 + + template (present) Response mw_200OK( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_200OK_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_200OK + + template (present) Response mw_401Unauthorized( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_401Unauthorized_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_401Unauthorized + + template (present) Response mw_404NotFound( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_404NotFound_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_404NotFound + + template (present) Response mw_480TemporaryUnavailable( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_480TemporaryUnavailable_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_480TemporaryUnavailable + + } // End of group sip_templates + + group g_gmA { + + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_GM_PCSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_GM_PCSCF_REGISTER_02 + + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_07( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) charstring p_expires := "0" + ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path, + expires := mw_Expires(p_expires) + } + } // End of template mw_TP_GM_PCSCF_REGISTER_07 + + template (present) SUBSCRIBE_Request mw_TP_GM_PCSCF_SUBSCRIBE_01( + template (present) SipUrl p_subscribe_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_SUBSCRIBE_Request_Base := { + requestLine := { + method := SUBSCRIBE_E, + requestUri := p_subscribe_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to, + event := m_Event_reg, + expires := ?, // checked outside the template + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }) + } + } // End of template mw_TP_GM_PCSCF_SUBSCRIBE_01 + + template (present) SUBSCRIBE_Request mw_TP_GM_PCSCF_SUBSCRIBE_02( + template (present) SipUrl p_subscribe_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_SUBSCRIBE_01 := { + } // End of template mw_TP_GM_PCSCF_SUBSCRIBE_02 + + template (present) NOTIFY_Request mw_TP_GM_PCSCF_NOTIFY_01( + template (present) CallId p_callId := ?, + template (present) SipUrl p_notify_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_NOTIFY_Request_Base := { + requestLine := { + method := NOTIFY_E, + requestUri := p_notify_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to, + event := m_Event_reg, + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }), + route := ? + } + } // End of template mw_TP_GM_PCSCF_NOTIFY_01 + + template (present) INVITE_Request mw_TP_GM_PCSCF_INVITE_01( + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_INVITE_Request_Base := { + requestLine := { + method := INVITE_E, + requestUri := p_invite_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_GM_PCSCF_INVITE_01 + + template (present) INVITE_Request mw_TP_GM_PCSCF_INVITE_02( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_INVITE_01 := { + } // End of template mw_TP_GM_PCSCF_INVITE_03 + + template (present) INVITE_Request mw_TP_GM_PCSCF_INVITE_03( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_INVITE_01 := { + } // End of template mw_TP_GM_PCSCF_INVITE_03 + + template (present) INVITE_Request mw_TP_GM_PCSCF_INVITE_04( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_INVITE_01 := { + } // End of template mw_TP_GM_PCSCF_INVITE_04 + + } // End of group g_gmA + +} // End of module AtsImsIot_Templates_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 deleted file mode 100644 index afeb328..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn3 +++ /dev/null @@ -1,156 +0,0 @@ -/* - * @author STF 574 - * @version $Id$ - * @desc This module provides TP related templates used at MW interface - */ -module AtsImsIot_Templates_GM { - - // LibCommon - //import from LibCommon_BasicTypesAndValues all; - //import from LibCommon_VerdictControl all; - - // libSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - import from LibSip_Common all; - - // LibIms - import from LibIms_Templates all; - - //import from LibMsrp_TypesAndValues all; - - // LibIot - //import from LibIot_TypesAndValues all; - import from LibIot_PIXITS all; - - // AtsImsIot - //import from AtsImsIot_TypesAndValues all; - import from AtsImsIot_PIXITS all; - import from AtsImsIot_Templates all; - - group sip_templates { - - template(present) From mw_From_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := FROM_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - fromParams := * - } // End of template mw_From_AddrUnion_SipUrl - - template(present) To mw_To_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := TO_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - toParams := * - } // End of template mw_To_AddrUnion_SipUrl - - } // End of group sip_templates - - group g_gmA { - - template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_01( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := ?, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_GM_PCSCF_REGISTER_01 - - template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_02( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := ?, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_GM_PCSCF_REGISTER_02 - - template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_07( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, - template (present) charstring p_expires := "0" - ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path, - expires := mw_Expires(p_expires) - } - } // End of template mw_TP_GM_PCSCF_REGISTER_07 - - template Response mw_401Unauthorized( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_401Unauthorized_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_401Unauthorized - - template Response mw_404NotFound( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_404NotFound_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_404NotFound - - template (present) SUBSCRIBE_Request mw_TP_GM_PCSCF_SUBSCRIBE_01( - template (present) SipUrl p_subscribe_uri := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_SUBSCRIBE_Request_Base := { - requestLine := { - method := SUBSCRIBE_E, - requestUri := p_subscribe_uri, // @TODO - sipVersion := c_sipNameVersion - }, - msgHeader := { - fromField := p_from, - toField := p_to, - event := m_Event_reg, - expires := ?, // checked outside the template - pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value - pChargingVector := mw_PChargingVector({ - {id := "icid-value", paramValue := *}, - * - }) - } - } // End of template mw_TP_GM_PCSCF_SUBSCRIBE_01 - - } // End of group g_gmA - -} // End of module AtsImsIot_Templates_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index 8ba7622..a5c2704 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -86,7 +86,7 @@ module AtsImsIot_Templates_IC * @desc INVITE Request checking TP_IC_IBCF_INVITE_01 * @remark source template mdw_TP_IMS_5097_01_ic */ - template INVITE_Request mdw_TP_IC_IBCF_INVITE_01 (template SipUrl p_SCSCF_SIP_URI) + template(present) INVITE_Request mdw_TP_IC_IBCF_INVITE_01 (template (present) SipUrl p_SCSCF_SIP_URI := ?) modifies mw_INVITE_Request_Base := { msgHeader := { route := ({ @@ -124,9 +124,9 @@ module AtsImsIot_Templates_IC * @desc INVITE Request checking TP_IC_IBCF_INVITE_02 * @remark source template mdw_TP_IMS_5097_02_ic */ - template INVITE_Request mdw_TP_IC_IBCF_INVITE_02 ( - template SipUrl p_SIP_URI, - template SipUrl p_TEL_URI) + template (present) INVITE_Request mdw_TP_IC_IBCF_INVITE_02 ( + template (present) SipUrl p_SIP_URI := ?, + template (present) SipUrl p_TEL_URI := ?) modifies mw_INVITE_Request_Base := { msgHeader := { pAssertedID := { @@ -147,7 +147,7 @@ module AtsImsIot_Templates_IC * @desc INVITE Request checking TP_IC_IBCF_INVITE_03 * @remark source template mdw_TP_IMS_5097_04_ic */ - template INVITE_Request mdw_TP_IC_IBCF_INVITE_03(in template (present) SipUrl p_requestUri) + template (present) INVITE_Request mdw_TP_IC_IBCF_INVITE_03(in template (present) SipUrl p_requestUri := ?) modifies mw_INVITE_Request_Base := { requestLine := { method := INVITE_E, diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn new file mode 100644 index 0000000..d20b611 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn @@ -0,0 +1,467 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides TP related templates used at MW interface + */ +module AtsImsIot_Templates_MW { + + // LibCommon + //import from LibCommon_BasicTypesAndValues all; + //import from LibCommon_VerdictControl all; + + // libSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + + // LibIms + import from LibIms_Templates all; + + //import from LibMsrp_TypesAndValues all; + + // LibIot + //import from LibIot_TypesAndValues all; + import from LibIot_PIXITS all; + + // AtsImsIot + //import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_PIXITS all; + import from AtsImsIot_Templates all; + + group sip_templates { + + template(present) From mw_From_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := FROM_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + fromParams := * + } // End of template mw_From_AddrUnion_SipUrl + + template(present) To mw_To_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := TO_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + toParams := * + } // End of template mw_To_AddrUnion_SipUrl + + template(present) From mw_From_AddrUnion_TelUrl( + template(present) charstring p_number := ? + ) := { + fieldName := FROM_E, + addressField := mw_AddrUnion_TelUrl(p_number), + fromParams := * + } // End of template mw_From_AddrUnion_TelUrl + + template(present) To mw_To_AddrUnion_TelUrl( + template(present) charstring p_number := ? + ) := { + fieldName := TO_E, + addressField := mw_AddrUnion_TelUrl(p_number), + toParams := * + } // End of template mw_To_AddrUnion_TelUrl + + template (present) Contact mw_contact( + template (present) ContactAddress p_contactAddresses := ? + ) := { + fieldName := CONTACT_E, + contactBody := { contactAddresses := { p_contactAddresses } } + } // End of template mw_Contact + + template (present) Response mw_TP_MW_PCSCF_100Trying_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_100Trying_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MW_PCSCF_100Trying_01 + + template (present) Response mw_TP_MW_PCSCF_100Trying_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_100Trying_01 := { + } // End of template mw_TP_MW_PCSCF_100Trying_02 + + template (present) Response mw_TP_MW_PCSCF_100Trying_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_100Trying_01 := { + } // End of template mw_TP_MW_PCSCF_100Trying_03 + + template (present) Response mw_TP_MW_PCSCF_100Trying_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_100Trying_01 := { + } // End of template mw_TP_MW_PCSCF_100Trying_04 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_180Ringing_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MW_PCSCF_180Ringing_01 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { + } // End of template mw_TP_MW_PCSCF_180Ringing_02 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { + } // End of template mw_TP_MW_PCSCF_180Ringing_03 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { + } // End of template mw_TP_MW_PCSCF_180Ringing_04 + + template (present) Response mw_200OK( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_200OK_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_200OK + + template Response mw_401Unauthorized( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_401Unauthorized_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_401Unauthorized + + template Response mw_404NotFound( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_404NotFound_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_404NotFound + + template (present) Response mw_480TemporaryUnavailable( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_480TemporaryUnavailable_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_480TemporaryUnavailable + + } // End of group sip_templates + + group g_pcscf { + + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_PCSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_PCSCF_REGISTER_02 + + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_07( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) charstring p_expires := "0" + ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path, + expires := mw_Expires(p_expires) + } + } // End of template mw_TP_MW_PCSCF_REGISTER_07 + + + template (present) SUBSCRIBE_Request mw_TP_MW_PCSCF_SUBSCRIBE_01( + template (present) SipUrl p_subscribe_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_SUBSCRIBE_Request_Base := { + requestLine := { + method := SUBSCRIBE_E, + requestUri := p_subscribe_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to, + event := m_Event_reg, + expires := ?, // checked outside the template + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }) + } + } // End of template mw_TP_MW_PCSCF_SUBSCRIBE_01 + + template (present) SUBSCRIBE_Request mw_TP_MW_PCSCF_SUBSCRIBE_02( + template (present) SipUrl p_subscribe_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_SUBSCRIBE_01 := { + } // End of template mw_TP_MW_PCSCF_SUBSCRIBE_02 + + template (present) NOTIFY_Request mw_TP_MW_PCSCF_NOTIFY_01( + template (present) CallId p_callId := ?, + template (present) SipUrl p_notify_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_NOTIFY_Request_Base := { + requestLine := { + method := NOTIFY_E, + requestUri := p_notify_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to, + event := m_Event_reg, + pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value + pChargingVector := mw_PChargingVector({ + {id := "icid-value", paramValue := *}, + * + }), + route := ? + } + } // End of template mw_TP_MW_PCSCF_NOTIFY_01 + + template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_01( + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_INVITE_Request_Base := { + requestLine := { + method := INVITE_E, + requestUri := p_invite_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MW_PCSCF_INVITE_01 + + template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_02( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_INVITE_01 := { + } // End of template mw_TP_MW_PCSCF_INVITE_03 + + template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_03( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_INVITE_01 := { + } // End of template mw_TP_MW_PCSCF_INVITE_03 + + template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_04( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_INVITE_01 := { + } // End of template mw_TP_MW_PCSCF_INVITE_04 + + } // End of group g_pcscf + + group g_scscf { + + template(present) REGISTER_Request mw_TP_MW_SCSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_SCSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_MW_SCSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_MW_SCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_SCSCF_REGISTER_02 + + } // End of group g_scscf + + group g_icscf { + + template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_01( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_ICSCF_REGISTER_01 + + template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_MW_ICSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_ICSCF_REGISTER_02 + + template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_03( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ? + ) modifies mw_TP_MW_ICSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + path := p_Path, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path + } + } // End of template mw_TP_MW_ICSCF_REGISTER_03 + + template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_07( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) charstring p_expires := "0" + ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path, + expires := mw_Expires(p_expires) + } + } // End of template mw_TP_MW_PCSCF_REGISTER_07 + + } // End of group g_icscf + +} // End of module AtsImsIot_Templates_MW \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 deleted file mode 100644 index 4d00c67..0000000 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn3 +++ /dev/null @@ -1,253 +0,0 @@ -/* - * @author STF 574 - * @version $Id$ - * @desc This module provides TP related templates used at MW interface - */ -module AtsImsIot_Templates_MW { - - // LibCommon - //import from LibCommon_BasicTypesAndValues all; - //import from LibCommon_VerdictControl all; - - // libSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - import from LibSip_Common all; - - // LibIms - import from LibIms_Templates all; - - //import from LibMsrp_TypesAndValues all; - - // LibIot - //import from LibIot_TypesAndValues all; - import from LibIot_PIXITS all; - - // AtsImsIot - //import from AtsImsIot_TypesAndValues all; - import from AtsImsIot_PIXITS all; - import from AtsImsIot_Templates all; - - group sip_templates { - - template(present) From mw_From_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := FROM_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - fromParams := * - } // End of template mw_From_AddrUnion_SipUrl - - template(present) To mw_To_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := TO_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - toParams := * - } // End of template mw_To_AddrUnion_SipUrl - - template (present) Contact mw_contact( - template (present) ContactAddress p_contactAddresses := ? - ) := { - fieldName := CONTACT_E, - contactBody := { contactAddresses := { p_contactAddresses } } - } // End of template mw_Contact - - } // End of group sip_templates - - group g_pcscf { - - template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_01( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_MW_PCSCF_REGISTER_01 - - template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_02( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_MW_PCSCF_REGISTER_02 - - template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_07( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, - template (present) charstring p_expires := "0" - ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path, - expires := mw_Expires(p_expires) - } - } // End of template mw_TP_MW_PCSCF_REGISTER_07 - - template Response mw_401Unauthorized( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_401Unauthorized_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_401Unauthorized - - template Response mw_404NotFound( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_404NotFound_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_404NotFound - - template (present) SUBSCRIBE_Request mw_TP_MW_PCSCF_SUBSCRIBE_01( - template (present) SipUrl p_subscribe_uri := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_SUBSCRIBE_Request_Base := { - requestLine := { - method := SUBSCRIBE_E, - requestUri := p_subscribe_uri, // @TODO - sipVersion := c_sipNameVersion - }, - msgHeader := { - fromField := p_from, - toField := p_to, - event := m_Event_reg, - expires := ?, // checked outside the template - pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value - pChargingVector := mw_PChargingVector({ - {id := "icid-value", paramValue := *}, - * - }) - } - } // End of template mw_TP_MW_PCSCF_SUBSCRIBE_01 - - } // End of group g_pcscf - - group g_scscf { - - template(present) REGISTER_Request mw_TP_MW_SCSCF_REGISTER_01( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) Path p_Path := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - path := p_Path, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_MW_SCSCF_REGISTER_01 - - template(present) REGISTER_Request mw_TP_MW_SCSCF_REGISTER_02( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) Path p_Path := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_TP_MW_SCSCF_REGISTER_01 := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - path := p_Path, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_MW_SCSCF_REGISTER_02 - - } // End of group g_scscf - - group g_icscf { - - template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_01( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) Path p_Path := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - path := p_Path, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_MW_ICSCF_REGISTER_01 - - template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_02( - template (present) From p_from := ?, - template (present) To p_to := ?, - template (present) Authorization p_authorization := ?, - template (present) Path p_Path := ?, - template (present) PChargingVector p_pChargingVector := ?, - template (present) PVisitedNetworkID p_pVisitedNetworkID := ? - ) modifies mw_TP_MW_ICSCF_REGISTER_01 := { - msgHeader := { - fromField := p_from, - toField := p_to, - authorization := p_authorization, - pAccessNetworkInfo := ?, - path := p_Path, - pChargingVector := p_pChargingVector, - pVisitedNetworkID := p_pVisitedNetworkID, - require := mw_require_path - } - } // End of template mw_TP_MW_ICSCF_REGISTER_02 - - } // End of group g_icscf - -} // End of module AtsImsIot_Templates_MW \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn index ef002b6..71567c6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn @@ -6,7 +6,7 @@ module AtsImsIot_TestControl { import from AtsImsIot_TD_ATT all; import from AtsImsIot_TD_DRG all; - import from AtsImsIot_TD_DTC all; +// import from AtsImsIot_TD_DTC all; import from AtsImsIot_TD_INI all; import from AtsImsIot_TD_REG all; diff --git a/ttcn/LibSip b/ttcn/LibSip index 6b82f94..d241ad8 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 6b82f94df97af922d648c66777818ae34741704b +Subproject commit d241ad8b33e8a60da7805a2254a1554eba3331e7 -- GitLab From b5e4bcad47cae7c0e5101dbc836d392369f7555c Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 14 May 2021 19:28:18 +0000 Subject: [PATCH 142/176] Updates due to validation week19 --- .../AtsImsIot_Diameter_Templates.ttcn | 21 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 102 ++-- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 412 +++++++++------ ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn | 68 +-- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 498 +++++++++++------- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 94 ++++ ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn | 55 ++ ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn | 93 ++++ ttcn/LibDiameter | 2 +- 9 files changed, 905 insertions(+), 440 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index b3fe2bb..2e71e0d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -147,8 +147,8 @@ module AtsImsIot_Diameter_Templates { max_Requested_Bw_Dl := ?, flow_Status := mw_flowStatus(ENABLED_E), reservation_Priority := *, - rs_Bw := ?, - rr_Bw := ?, + rs_Bw := *, + rr_Bw := *, codec_data := ? } @@ -762,7 +762,10 @@ module AtsImsIot_Diameter_Templates { } template RAR_MSG mw_RAR_basic modifies mw_RAR_dummy := { - header := mw_diameterHeaderReq_dummy(RAR_E, c_applIdRx) + header := mw_diameterHeaderReq_dummy(RAR_E, c_applIdRx), + rAR_Body :={ + re_Auth_Request_Type := * + } } template STR_MSG mw_STR_basic modifies mw_STR_dummy := { @@ -822,6 +825,12 @@ module AtsImsIot_Diameter_Templates { abort_cause := mw_abortCause(p_avpData) } } + + template RAR_MSG mw_RAR_SpecificAction modifies mw_RAR_basic := { + rAR_Body :={ + specific_Action := ? + } + } }// end group RxRequestMessageTemplates group RxAnswerBasicTemplates{ @@ -882,6 +891,12 @@ module AtsImsIot_Diameter_Templates { result_Code := mw_resultCode(mw_resultCode_diameterSuccess) } } + + template RAA_MSG mw_RAA_Rx_resultCode modifies mw_RAA_basic := { + rAA_Body :={ + result_Code := mw_resultCode(mw_resultCode_diameterSuccess) + } + } }// end group RxRequestMessageTemplates }//end group RxMessageTemplates diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 03c7d00..579dcb4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -1,5 +1,5 @@ /** - * @author STF 574 + * @author STF 574, TTF006 * @version $Id: $ * @desc This module provides ATS specific test case definitions for SIP session and dedicated bearer operations. * @see ETSI TS 103 653-2 (2020) @@ -87,10 +87,13 @@ module AtsImsIot_TD_INI{ // FIXME f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, false, v_sip); //f_mtc_check_TP_RX_PCSCF_AAR_03 not validated - f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 + //f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 + f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 2 //TODO update TD and TP f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 + f_mtc_check_TP_RX_PCRF_AAA_03(vc_vxlte_monitor_components.rx); // Event 5 //TODO update TD and TP + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Event 5b //TODO addin TD + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 6 log("v_sip", v_sip); @@ -105,10 +108,10 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11 - f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 14 - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 15 + //f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 //TODO update TD and TP + //f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 //TODO update TD and TP + //f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 14 //TODO update TD and TP + //f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 15 //TODO update TD and TP f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16 @@ -121,17 +124,17 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 18 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 18 - f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS); // Event 20 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 20 f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 21 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 22 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 23 - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 24 + f_mtc_check_TP_RX_PCRF_AAA_03(vc_vxlte_monitor_components.rx); // Event 24 - f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 25 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 - f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 26 - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS); // Event 27 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 27 f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 29 @@ -181,7 +184,6 @@ module AtsImsIot_TD_INI{ var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); - var SipMessage v_sip; f_setVxLteMonIterfacesAvailability(); @@ -193,6 +195,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -219,13 +223,13 @@ module AtsImsIot_TD_INI{ //TP_GM_PCSCF_INVITE_02 ( Event 8) f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, false); // Event 8 //TP_GM_PCSCF_180RINGING_02 ( Event 9) - f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, false); // Event 9 + f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 9 f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 10) f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) //TP_MW_PCSCF_180RINGING_02 ( Event 14) - f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, false); // Event 14 + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 14 //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) @@ -244,10 +248,10 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 //TP_MW_PCSCF_ACK_02 (Event 28) - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, true, true); // Event 28 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 28 //TP_GM_PCSCF_ACK_02 (Event 29) - f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, true, true); // Event 29 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 29 f_mtc_userCheckCallEstablished(v_ueA); // Event 30 @@ -296,6 +300,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -325,7 +331,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 5 f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic,1); // 200 OK – Event 6 - f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS); // Event 8 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 8 //TP_RX_PCSCF_AAR_09 (AAR – Event 9) //TP_GX_PCRF_RAR_01 (RAR – Event 10) @@ -336,9 +342,9 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11) f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12) - f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA); // Event 13 - f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA); // Event 14 - f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS); // Event 15 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 14 + f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15 f_mtc_userCheckCallEstablished(v_ueA); // Event 18 f_mtc_userCheckCallEstablished(v_ueB); // Event 18 @@ -383,6 +389,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -410,7 +418,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 4 f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIB); // Event 5 - f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB); // Event 6 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 6 //TP_RX_PCSCF_AAR_10 (AAR – Event 7) //TP_GX_PCRF_RAR_01 (RAR – Event 8) @@ -422,7 +430,7 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS); // Event 11 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11 f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS); // Event 16 f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // 200 OK – Event 13 @@ -473,6 +481,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -508,8 +518,8 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS); // Event 12 - f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 f_mtc_userCheckCallTerminated(v_ueA); // Event 14 f_mtc_userCheckCallCancelled(v_ueB); // Event 15 @@ -552,6 +562,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -586,8 +598,8 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS); // Event 12 - f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA); // Event 13 + f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 12 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 f_mtc_userCheckCallTerminated(v_ueA); // Event 14 f_mtc_userCheckCallCancelled(v_ueB); // Event 15 @@ -936,6 +948,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -982,7 +996,7 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_INVITE_02 (Event 10) //Gm TP_GM_PCSCF_180RINGING_02 (Event 11) f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) - f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB); // (Event 11) + f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) //Rx TP_RX_PCSCF_AAR_07 (AAR – Event 12) //Gx TP_GX_PCRF_RAR_01 (RAR – Event 13) @@ -998,7 +1012,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 18) //Ic TP_IC_IBCF_180RESP_02 (180 Ringing – Event 18) //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 18) - f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS); // (Event 16) + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 16) f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.mwIS); // (Event 17) f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) @@ -1180,6 +1194,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1217,7 +1233,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_180RINGING_03 (Event 13) //Rx TP_RX_PCSCF_AAR_04 (AAR – Events 14) f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12) - f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS); // (Event 13) + f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13) f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14) //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) @@ -1235,9 +1251,9 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_2XXRESP_05 (200 OK Event 23) //MwPS TP_MW_PCSCF_200OK_03 (Event 24) //Rx TP_RX_PCSCF_AAR_05 (AAR – Events 25) - f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB); // (Event 20) + f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 20) f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 23) - f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS); // (Event 24) + f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24) f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25) //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) @@ -1254,7 +1270,7 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_200OK_03 (Event 31) //Gm TP_GM_PCSCF_ACK_03 (Event 32) //MwPS TP_MW_PCSCF_ACK_03 (Event 33) - f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 31) + f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 31) f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 32) f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS); // (Event 33) @@ -1296,6 +1312,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1330,7 +1348,7 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_180RINGING_04 (Event 11) //Rx TP_RX_PCSCF_AAR_07 (AAR – Events 12) f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 10) - f_mtc_check_TP_GM_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB); // (Event 11) + f_mtc_check_TP_GM_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 12) //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) @@ -1346,12 +1364,12 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_180RINGING_04 (Event 18) //Ic TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 19) - f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.mwPS); // (Event 18) + f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 18) f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 19) //Gm TP_GM_PCSCF_200OK_04 (Event 22) //Rx TP_RX_PCSCF_AAR_08 (AAR – Events 23) - f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 22) + f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 22) f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 23) //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) @@ -1370,7 +1388,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_ACK_01 (ACK – Event 33) //MwPS TP_MW_PCSCF_ACK_04 (Event 34) //Gm TP_GM_PCSCF_ACK_04 (Event 35) - f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS); // (Event 29) + f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29) f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 30) f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33) f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS); // (Event 34) @@ -1416,6 +1434,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1455,7 +1475,7 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_200OK_03 (Event 17) //Gm TP_GM_PCSCF_ACK_03 (Event 18) //MwPS TP_MW_PCSCF_ACK_03 (Event 19) - f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB); // (Event 17) + f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 17) f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 18) f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS); // (Event 19) @@ -1496,6 +1516,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1518,7 +1540,7 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_RE_INVITE_04 (Event 6) //Gm TP_GM_PCSCF_200OK_04 (Event 7) f_mtc_check_TP_GM_PCSCF_RE_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 6) - f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB); // (Event 7) + f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 7) //Rx TP_RX_PCSCF_AAR_10 (AAR – Events 8) //S9 TP_S9_PCRF_AAR_01 (AAR – Event 9) @@ -1535,7 +1557,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_04 (Event 14) //Ic TP_IC_IBCF_2XXRESP_04 (200 OK – Event 16) - f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS); // (Event 14) + f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14) f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 16) //MwPS TP_MW_PCSCF_ACK_04 (Event 21) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 21517b8..5820ae3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1448,56 +1448,80 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_180RINGING_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_180RINGING_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_180Ringing_02( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_GM_PCSCF_180RINGING_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_02 - function f_mtc_check_TP_GM_PCSCF_180RINGING_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_180RINGING_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_180RINGING_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_180Ringing_03( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_GM_PCSCF_180RINGING_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_03 - function f_mtc_check_TP_GM_PCSCF_180RINGING_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_180RINGING_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_GM_PCSCF_180RINGING_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_180Ringing_04( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_GM_PCSCF_180RINGING_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_180RINGING_04 } // End of group ims180Ringing @@ -1534,21 +1558,29 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_200OK_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_200OK_01 /** @@ -1591,75 +1623,81 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_02( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_02 - function f_mtc_check_TP_GM_PCSCF_200OK_03( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_GM_PCSCF_200OK_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_03 - function f_mtc_check_TP_GM_PCSCF_200OK_04( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_GM_PCSCF_200OK_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_04 } // End of group ims200Ok @@ -1695,20 +1733,30 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_ACK_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_ACK_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_ACK_01 /** @@ -1738,56 +1786,86 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_ACK_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_ACK_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_ACK_02( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ACK_02 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_ACK_02 - function f_mtc_check_TP_GM_PCSCF_ACK_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_ACK_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_ACK_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_ACK_03( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ACK_03 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_ACK_03 function f_mtc_check_TP_GM_PCSCF_ACK_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_ACK_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_ACK_04( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ACK_04 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_ACK_04 } // End of group imsAck diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn index 0b7f0ae..b23da8c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn @@ -1,5 +1,5 @@ /* - * @author STF 574 + * @author STF 574, TTF006 * @version $Id$ * @desc This module provides the TP behaviour functions at IC interface */ @@ -55,38 +55,40 @@ group g_ISC { function f_mtc_check_TP_ISC_SCSCF_REGISTER_01( SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { - var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipRequest(mdw_TP_ISC_SCSCF_REGISTER_01(?,?,v_request_uri))}, - {mw_SipRequest(mw_REGISTER_Request_Base)}, - {0, omit}, - "TP_ISC_SCSCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - // @remark source function f_mtc_check_TP_IMS_5092_01_ic - var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); - var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); - - p_monitorCompRef.start( - f_Iot_Sip_receive( - {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From -// {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, - {mw_SipResponse (mw_200OK_Base)}, - {0, omit}, - "TP_ISC_SCSCF_REGISTER_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } + if (isvalue(p_monitorCompRef)){ + var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipRequest(mdw_TP_ISC_SCSCF_REGISTER_01(?,?,v_request_uri))}, + {mw_SipRequest(mw_REGISTER_Request_Base)}, + {0, omit}, + "TP_ISC_SCSCF_REGISTER_01 - REGISTER", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + // @remark source function f_mtc_check_TP_IMS_5092_01_ic + var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); + var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); + + p_monitorCompRef.start( + f_Iot_Sip_receive( + {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From + //{mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, + {mw_SipResponse (mw_200OK_Base)}, + {0, omit}, + "TP_ISC_SCSCF_REGISTER_01 - 200 OK", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } + }//end f_mtc_check_TP_ISC_SCSCF_REGISTER_01 } // end of g_ISC diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 9d87e1e..81bd797 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -596,21 +596,35 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_REGISTER_09( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_09", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first DeREGISTER request + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_REGISTER_09( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_09 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_09 /** @@ -641,21 +655,35 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_REGISTER_10( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base) - }, - {}, - {0, omit}, - "TP_MW_PCSCF_REGISTER_10", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check first DeREGISTER request + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_REGISTER_10( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_10 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_10 } // End of group imsDeRegistration @@ -1536,56 +1564,80 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_180RINGING_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_180RINGING_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_180Ringing_02( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_MW_PCSCF_180RINGING_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_02 - function f_mtc_check_TP_MW_PCSCF_180RINGING_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_180RINGING_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_180RINGING_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_180Ringing_03( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_MW_PCSCF_180RINGING_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_03 - function f_mtc_check_TP_MW_PCSCF_180RINGING_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_180RINGING_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_180Ringing_Base) }, - {}, - {0, omit}, - "TP_MW_PCSCF_180RINGING_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_PCSCF_180Ringing_04( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_MW_PCSCF_180RINGING_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_04 } // End of group ims180Ringing @@ -1632,21 +1684,29 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_200OK_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_200OK_01 /** @@ -1689,75 +1749,81 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_02( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_02 - function f_mtc_check_TP_MW_PCSCF_200OK_03( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_MW_PCSCF_200OK_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_03 - function f_mtc_check_TP_MW_PCSCF_200OK_04( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_MW_PCSCF_200OK_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_04 } // End of group ims200Ok @@ -1799,20 +1865,30 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_ACK_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_ACK_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_ACK_01 /** @@ -1850,56 +1926,86 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_ACK_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_ACK_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_ACK_02( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_ACK_02 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_ACK_02 - function f_mtc_check_TP_MW_PCSCF_ACK_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_ACK_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_ACK_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_ACK_03( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_ACK_03 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_ACK_03 - function f_mtc_check_TP_MW_PCSCF_ACK_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_ACK_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_ACK_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_ACK_04( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_ACK_04 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_ACK_04 } // End of group imsAck diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index ab128fd..c52a872 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -1199,6 +1199,100 @@ group g_PCSCF_AAR { } // end group g_PCSCF_AAR +group g_PCSCF_RAA { + + + /**TODO update TP description + * Starts monitor component behavior for TP_RX_PCSCF_RAA_01 + * @param p_monitorCompRef Reference to monitor component + * @param p_checkMessage indicate if the incomming message should only be checked (port.check) or consumed (port.receive). + * The check operation allows read access to the top element of incoming port queues without removing the top element from the queue. + *

    +     * Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 200 OK with SDP is received."
    +     *
    +     * 
    +     * 
    +     * Config Id CF_VxLTE_INT
    +     * 
    +     * Initial conditions with {
    +     *     the UE_A entity isAttachedTo the EPC_A and
    +     *     the UE_A entity isRegisteredTo the IMS_A
    +     * }
    +     * 
    +     * ensure that {
    +     *     when {
    +     *         the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer
    +     *         from the IMS_S_CSCF_A entity
    +     *     }
    +     *     then {
    +     *         the IMS_P_CSCF_A entity sends the AAR containing
    +     *             Framed_IPv4_Address_AVP 
    +     *                 indicating value "IPv4_Address of UE_A",
    +     *             "or" Framed_IPv6_Address_AVP 
    +     *                 indicating value "IPv6_Address of UE_A",
    +     *             "one or more" Media_Component_Description_AVP containing
    +     *                 Media_Component_Number_AVP
    +     *                 Media_Type_AVP
    +     *                 Flow_Status_AVP
    +     *                     indicating value ENABLED '(2)'
    +     *                 Max_Requested_Bandwidth_DL_AVP
    +     *                 Max_Requested_Bandwidth_UL_AVP
    +     *                 RR_Bandwidth_AVP
    +     *                 RS_Bandwidth_AVP
    +     *                 Codec_Data_AVP
    +     *                 "one or more" Media_Subcomponent_Description_AVP containing
    +     *                     Flow_Number_AVP
    +     *                     Flow_Description_AVP
    +     *                 ;
    +     *             ;
    +     *         ;
    +     *         to the EPC_PCRF_A entity
    +     *     } 
    +     * } 
    +     * 
    + * @see TS 103 653-1 clause 7.6 + */ + function f_mtc_check_TP_RX_PCSCF_RAA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_SpecificAction } + }, + { + DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic } + }, + {0, omit}, + "TP_RX_PCSCF_RAA_01 - RAR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ rAA_MSG := mw_RAA_Rx_resultCode } + }, + { + DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic } + }, + {0, omit}, + "TP_RX_PCSCF_RAA_01 - RAA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_RX_PCSCF_RAA_01 +}//end group g_PCSCF_RAA + group g_PCSCF_STR { /** diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn index a07213d..6662113 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn @@ -308,6 +308,61 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_INVITE_01 := { } // End of template mw_TP_GM_PCSCF_INVITE_04 + template (present) ACK_Request mw_TP_GM_PCSCF_ACK_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_ACK_Request_Base := { + requestLine := { + method := ACK_E, + requestUri := p_ack_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + cSeq := p_cSeq, + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_GM_PCSCF_ACK_01 + + template (present) ACK_Request mw_TP_GM_PCSCF_ACK_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_ACK_01 := { + } // End of template mw_TP_GM_PCSCF_ACK_02 + + template (present) ACK_Request mw_TP_GM_PCSCF_ACK_03( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_ACK_01 := { + } // End of template mw_TP_GM_PCSCF_ACK_03 + + template (present) ACK_Request mw_TP_GM_PCSCF_ACK_04( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_ACK_01 := { + } // End of template mw_TP_GM_PCSCF_ACK_04 + } // End of group g_gmA } // End of module AtsImsIot_Templates_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn index d20b611..3085111 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn @@ -242,6 +242,45 @@ module AtsImsIot_Templates_MW { } } // End of template mw_TP_MW_PCSCF_REGISTER_07 + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_09( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) charstring p_expires := "0" + ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path, + expires := mw_Expires(p_expires) + } + } // End of template mw_TP_MW_PCSCF_REGISTER_09 + + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_10( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) charstring p_expires := "0" + ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { + msgHeader := { + fromField := p_from, + toField := p_to, + authorization := p_authorization, + pAccessNetworkInfo := ?, + pChargingVector := p_pChargingVector, + pVisitedNetworkID := p_pVisitedNetworkID, + require := mw_require_path, + expires := mw_Expires(p_expires) + } + } // End of template mw_TP_MW_PCSCF_REGISTER_10 template (present) SUBSCRIBE_Request mw_TP_MW_PCSCF_SUBSCRIBE_01( template (present) SipUrl p_subscribe_uri := ?, @@ -334,6 +373,60 @@ module AtsImsIot_Templates_MW { ) modifies mw_TP_MW_PCSCF_INVITE_01 := { } // End of template mw_TP_MW_PCSCF_INVITE_04 + template (present) ACK_Request mw_TP_MW_PCSCF_ACK_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_ACK_Request_Base := { + requestLine := { + method := ACK_E, + requestUri := p_ack_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_MW_PCSCF_ACK_01 + + template (present) ACK_Request mw_TP_MW_PCSCF_ACK_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_ACK_01 := { + } // End of template mw_TP_MW_PCSCF_ACK_02 + + template (present) ACK_Request mw_TP_MW_PCSCF_ACK_03( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_ACK_01 := { + } // End of template mw_TP_MW_PCSCF_ACK_03 + + template (present) ACK_Request mw_TP_MW_PCSCF_ACK_04( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_ACK_01 := { + } // End of template mw_TP_MW_PCSCF_ACK_04 + } // End of group g_pcscf group g_scscf { diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter index 0e6bfc4..08c09f9 160000 --- a/ttcn/LibDiameter +++ b/ttcn/LibDiameter @@ -1 +1 @@ -Subproject commit 0e6bfc478a043944cca7098f277fc8374cd89504 +Subproject commit 08c09f9ebe9bcc6c4cb5a3fcec347b9cd135c155 -- GitLab From d894af332275f11100741b3d0ae4483435288ecb Mon Sep 17 00:00:00 2001 From: pintar Date: Sun, 16 May 2021 11:07:50 +0000 Subject: [PATCH 143/176] Update SIP ACK & BYE function/templates for GM and MW/PS interfaces --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 222 +++++++++++------- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 222 +++++++++++------- ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn | 73 ++++++ ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn | 72 ++++++ 4 files changed, 427 insertions(+), 162 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 5820ae3..916f5bb 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -1901,20 +1901,30 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_BYE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_BYE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_BYE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_01 /** @@ -1946,20 +1956,30 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_BYE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_BYE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_02( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_BYE_02 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_02 /** @@ -1991,74 +2011,114 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_BYE_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_BYE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_03( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_BYE_03 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_03 - function f_mtc_check_TP_GM_PCSCF_BYE_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_BYE_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_BYE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_04( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_BYE_04 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_04 - function f_mtc_check_TP_GM_PCSCF_BYE_05( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_BYE_05( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_BYE_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_05( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_BYE_05 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_05 - function f_mtc_check_TP_GM_PCSCF_BYE_06( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_BYE_06( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_BYE_06", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_06( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_BYE_06 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_06 } // End of group imsBye diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 81bd797..60e66c0 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -2048,20 +2048,30 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_BYE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_BYE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_BYE_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_BYE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_BYE_01 /** @@ -2100,20 +2110,30 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_BYE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_BYE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_BYE_02( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_BYE_02 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_BYE_02 /** @@ -2152,74 +2172,114 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_BYE_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_BYE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_BYE_03( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_BYE_03 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_BYE_03 - function f_mtc_check_TP_MW_PCSCF_BYE_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_BYE_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_BYE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_BYE_04( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_BYE_04 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_BYE_04 - function f_mtc_check_TP_MW_PCSCF_BYE_05( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_BYE_05( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_BYE_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_BYE_05( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_BYE_05 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_BYE_05 - function f_mtc_check_TP_MW_PCSCF_BYE_06( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_BYE_06( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_BYE_Request_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_BYE_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_BYE_06( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_BYE_06 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_BYE_06 } // End of group imsBye diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn index 6662113..7900274 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn @@ -363,6 +363,79 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_ACK_01 := { } // End of template mw_TP_GM_PCSCF_ACK_04 + template (present) BYE_Request mw_TP_GM_PCSCF_BYE_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_BYE_Request_Base := { + requestLine := { + method := BYE_E, + requestUri := p_ack_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + cSeq := p_cSeq, + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_GM_PCSCF_BYE_01 + + template (present) BYE_Request mw_TP_GM_PCSCF_BYE_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_BYE_01 := { + } // End of template mw_TP_GM_PCSCF_BYE_02 + + template (present) BYE_Request mw_TP_GM_PCSCF_BYE_03( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_BYE_01 := { + } // End of template mw_TP_GM_PCSCF_BYE_03 + + template (present) BYE_Request mw_TP_GM_PCSCF_BYE_04( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_BYE_01 := { + } // End of template mw_TP_GM_PCSCF_BYE_04 + + template (present) BYE_Request mw_TP_GM_PCSCF_BYE_05( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_BYE_01 := { + } // End of template mw_TP_GM_PCSCF_BYE_05 + + template (present) BYE_Request mw_TP_GM_PCSCF_BYE_06( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_BYE_01 := { + } // End of template mw_TP_GM_PCSCF_BYE_06 + } // End of group g_gmA } // End of module AtsImsIot_Templates_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn index 3085111..2e767d8 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn @@ -427,6 +427,78 @@ module AtsImsIot_Templates_MW { ) modifies mw_TP_MW_PCSCF_ACK_01 := { } // End of template mw_TP_MW_PCSCF_ACK_04 + template (present) BYE_Request mw_TP_MW_PCSCF_BYE_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_BYE_Request_Base := { + requestLine := { + method := BYE_E, + requestUri := p_ack_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_MW_PCSCF_BYE_01 + + template (present) BYE_Request mw_TP_MW_PCSCF_BYE_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_BYE_01 := { + } // End of template mw_TP_MW_PCSCF_BYE_02 + + template (present) BYE_Request mw_TP_MW_PCSCF_BYE_03( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_BYE_01 := { + } // End of template mw_TP_MW_PCSCF_BYE_03 + + template (present) BYE_Request mw_TP_MW_PCSCF_BYE_04( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_BYE_01 := { + } // End of template mw_TP_MW_PCSCF_BYE_04 + + template (present) BYE_Request mw_TP_MW_PCSCF_BYE_05( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_BYE_01 := { + } // End of template mw_TP_MW_PCSCF_BYE_05 + + template (present) BYE_Request mw_TP_MW_PCSCF_BYE_06( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_BYE_01 := { + } // End of template mw_TP_MW_PCSCF_BYE_06 + } // End of group g_pcscf group g_scscf { -- GitLab From 4c1cb20a632adc4d1197ed09025912adac92db35 Mon Sep 17 00:00:00 2001 From: pintar Date: Sun, 16 May 2021 11:17:28 +0000 Subject: [PATCH 144/176] Update SIP BYE function/templates for GM and MW/PS interfaces --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 256 ++++++++++-------- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 256 ++++++++++-------- 2 files changed, 274 insertions(+), 238 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 916f5bb..5f24ddf 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -2155,21 +2155,29 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_BYE_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_200OK_BYE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_01 /** @@ -2202,123 +2210,133 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_BYE_02( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_BYE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_BYE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_02 - function f_mtc_check_TP_GM_PCSCF_200OK_BYE_03( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_BYE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_BYE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_03 - function f_mtc_check_TP_GM_PCSCF_200OK_BYE_04( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_BYE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_BYE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_04 - function f_mtc_check_TP_GM_PCSCF_200OK_BYE_05( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_05( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_BYE_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_BYE_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_05 - function f_mtc_check_TP_GM_PCSCF_200OK_BYE_06( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_06( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_BYE_06", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_BYE_06", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_06 } // End of group ims200OkBye diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 60e66c0..715587a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -2316,21 +2316,29 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_BYE_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_200OK_BYE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_01 /** @@ -2363,123 +2371,133 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_BYE_02( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_BYE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_BYE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_02 - function f_mtc_check_TP_MW_PCSCF_200OK_BYE_03( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_BYE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_BYE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_03 - function f_mtc_check_TP_MW_PCSCF_200OK_BYE_04( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_BYE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_BYE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_04 - function f_mtc_check_TP_MW_PCSCF_200OK_BYE_05( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_05( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_BYE_05", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_BYE_05", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_05 - function f_mtc_check_TP_MW_PCSCF_200OK_BYE_06( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 - ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + function f_mtc_check_TP_MW_PCSCF_200OK_BYE_06( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_BYE_06", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_BYE_06", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_06 } // End of group ims200OkBye -- GitLab From c0211df3730e3e64841d3f49a4edfd787f022c95 Mon Sep 17 00:00:00 2001 From: pintar Date: Sun, 16 May 2021 13:26:30 +0000 Subject: [PATCH 145/176] Update SIP CANCEL function/templates for GM and MW/PS interfaces --- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 310 ++++++++++-------- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 310 ++++++++++-------- ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn | 69 +++- ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn | 68 +++- 4 files changed, 487 insertions(+), 270 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 5f24ddf..2a43007 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -2372,20 +2372,30 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_CANCEL_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_CANCEL_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_CANCEL_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_01 /** @@ -2417,56 +2427,86 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_CANCEL_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_CANCEL_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_CANCEL_02( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_02 - function f_mtc_check_TP_GM_PCSCF_CANCEL_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_CANCEL_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_CANCEL_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_CANCEL_03( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_03 - function f_mtc_check_TP_GM_PCSCF_CANCEL_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_CANCEL_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base) }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_CANCEL_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_CANCEL_04( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_04 } // End of group imsCancel @@ -2503,21 +2543,29 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - { 0, omit }, - "TP_GM_PCSCF_200OK_CANCEL_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01 /** @@ -2550,75 +2598,81 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_CANCEL_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_CANCEL_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02 - function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_CANCEL_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_CANCEL_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03 - function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_04( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_CANCEL_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_GM_PCSCF_200OK_CANCEL_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_04 } // End of group ims200OkCancel diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 715587a..2390811 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -2541,20 +2541,30 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_CANCEL_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_CANCEL_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_CANCEL_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_01 /** @@ -2594,56 +2604,86 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_CANCEL_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_CANCEL_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_CANCEL_02( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_02 - function f_mtc_check_TP_MW_PCSCF_CANCEL_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_CANCEL_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_CANCEL_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_CANCEL_03( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_03 - function f_mtc_check_TP_MW_PCSCF_CANCEL_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_CANCEL_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_CANCEL_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_CANCEL_04( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_CANCEL_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_04 } // End of group imsCancel @@ -2680,21 +2720,29 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - { 0, omit }, - "TP_MW_PCSCF_200OK_CANCEL_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01 /** @@ -2727,75 +2775,81 @@ module AtsImsIot_TP_behavior_MW_PS { * } */ function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02( - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_CANCEL_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_CANCEL_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02 - function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_CANCEL_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_CANCEL_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03 - function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_04( // FIXME RMI To be reviewed - SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false, - in integer p_skipCount := 1 + function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - var template SkipType v_skip := {0, omit}; - - if(p_skipCount > 0) { - v_skip := {1, mw_SipResponse(mdw_2XX_Base)}; + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_200OK_CANCEL_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; } - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK_Base) }, - {}, - v_skip, - "TP_MW_PCSCF_200OK_CANCEL_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_04 } // End of group ims200OkCancel diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn index 7900274..d65ba6b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn @@ -366,13 +366,13 @@ module AtsImsIot_Templates_GM { template (present) BYE_Request mw_TP_GM_PCSCF_BYE_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_BYE_Request_Base := { requestLine := { method := BYE_E, - requestUri := p_ack_uri, // @TODO + requestUri := p_bye_uri, // @TODO sipVersion := c_sipNameVersion }, msgHeader := { @@ -394,7 +394,7 @@ module AtsImsIot_Templates_GM { template (present) BYE_Request mw_TP_GM_PCSCF_BYE_02( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_GM_PCSCF_BYE_01 := { @@ -403,7 +403,7 @@ module AtsImsIot_Templates_GM { template (present) BYE_Request mw_TP_GM_PCSCF_BYE_03( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_GM_PCSCF_BYE_01 := { @@ -412,7 +412,7 @@ module AtsImsIot_Templates_GM { template (present) BYE_Request mw_TP_GM_PCSCF_BYE_04( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_GM_PCSCF_BYE_01 := { @@ -421,7 +421,7 @@ module AtsImsIot_Templates_GM { template (present) BYE_Request mw_TP_GM_PCSCF_BYE_05( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_GM_PCSCF_BYE_01 := { @@ -430,12 +430,67 @@ module AtsImsIot_Templates_GM { template (present) BYE_Request mw_TP_GM_PCSCF_BYE_06( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_GM_PCSCF_BYE_01 := { } // End of template mw_TP_GM_PCSCF_BYE_06 + template (present) CANCEL_Request mw_TP_GM_PCSCF_CANCEL_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_CANCEL_Request_Base := { + requestLine := { + method := CANCEL_E, + requestUri := p_cancel_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + cSeq := p_cSeq, + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_GM_PCSCF_CANCEL_01 + + template (present) CANCEL_Request mw_TP_GM_PCSCF_CANCEL_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_CANCEL_01 := { + } // End of template mw_TP_GM_PCSCF_CANCEL_02 + + template (present) CANCEL_Request mw_TP_GM_PCSCF_CANCEL_03( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_CANCEL_01 := { + } // End of template mw_TP_GM_PCSCF_CANCEL_03 + + template (present) CANCEL_Request mw_TP_GM_PCSCF_CANCEL_04( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_CANCEL_01 := { + } // End of template mw_TP_GM_PCSCF_CANCEL_04 + } // End of group g_gmA } // End of module AtsImsIot_Templates_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn index 2e767d8..4e11ce6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn @@ -430,13 +430,13 @@ module AtsImsIot_Templates_MW { template (present) BYE_Request mw_TP_MW_PCSCF_BYE_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_BYE_Request_Base := { requestLine := { method := BYE_E, - requestUri := p_ack_uri, // @TODO + requestUri := p_bye_uri, // @TODO sipVersion := c_sipNameVersion }, msgHeader := { @@ -457,7 +457,7 @@ module AtsImsIot_Templates_MW { template (present) BYE_Request mw_TP_MW_PCSCF_BYE_02( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_MW_PCSCF_BYE_01 := { @@ -466,7 +466,7 @@ module AtsImsIot_Templates_MW { template (present) BYE_Request mw_TP_MW_PCSCF_BYE_03( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_MW_PCSCF_BYE_01 := { @@ -475,7 +475,7 @@ module AtsImsIot_Templates_MW { template (present) BYE_Request mw_TP_MW_PCSCF_BYE_04( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_MW_PCSCF_BYE_01 := { @@ -484,7 +484,7 @@ module AtsImsIot_Templates_MW { template (present) BYE_Request mw_TP_MW_PCSCF_BYE_05( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_MW_PCSCF_BYE_01 := { @@ -493,12 +493,66 @@ module AtsImsIot_Templates_MW { template (present) BYE_Request mw_TP_MW_PCSCF_BYE_06( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, - template (present) SipUrl p_ack_uri := ?, + template (present) SipUrl p_bye_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_MW_PCSCF_BYE_01 := { } // End of template mw_TP_MW_PCSCF_BYE_06 + template (present) CANCEL_Request mw_TP_MW_PCSCF_CANCEL_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_CANCEL_Request_Base := { + requestLine := { + method := CANCEL_E, + requestUri := p_cancel_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_MW_PCSCF_CANCEL_01 + + template (present) CANCEL_Request mw_TP_MW_PCSCF_CANCEL_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_CANCEL_01 := { + } // End of template mw_TP_MW_PCSCF_CANCEL_02 + + template (present) CANCEL_Request mw_TP_MW_PCSCF_CANCEL_03( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_CANCEL_01 := { + } // End of template mw_TP_MW_PCSCF_CANCEL_03 + + template (present) CANCEL_Request mw_TP_MW_PCSCF_CANCEL_04( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_cancel_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_CANCEL_01 := { + } // End of template mw_TP_MW_PCSCF_CANCEL_04 + } // End of group g_pcscf group g_scscf { -- GitLab From 38ca914218117df66fe23ee107c2113e2400bf92 Mon Sep 17 00:00:00 2001 From: pintar Date: Sun, 16 May 2021 14:09:05 +0000 Subject: [PATCH 146/176] Update SIP Abort/Reject function/templates for GM and MW/PS interfaces --- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 124 ++++--- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 328 ++++++++++++------ .../AtsImsIot_TP_behavior_MW_PS.ttcn | 328 ++++++++++++------ ttcn/AtsImsIot/AtsImsIot_Templates.ttcn | 16 + ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn | 164 +++++---- ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn | 164 +++++---- 6 files changed, 725 insertions(+), 399 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 579dcb4..613b9d5 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -431,8 +431,8 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11 - f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB); // Event 17 - f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS); // Event 16 + f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 17 + f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 16 f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // 200 OK – Event 13 // f_mtc_userCheckNewMediaStream(v_ueA); @@ -504,8 +504,8 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4 - f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.mwPS); // Event 3 + f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 //TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -585,8 +585,8 @@ module AtsImsIot_TD_INI{ // Test body //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4 - f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB); // Event 2 - f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.mwPS); // Event 3 + f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 //TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -642,6 +642,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -665,11 +667,11 @@ module AtsImsIot_TD_INI{ f_mtc_userLooseConnection(v_ueB); - f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.mwPS); // Event 2 + f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 2 f_mtc_check_TP_MW_SCSCF_BYE_03(vc_vxlte_monitor_components.mwIS); // Event 3 f_mtc_check_TP_MW_SCSCF_BYE_01(vc_vxlte_monitor_components. mwIB); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 4 - f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA); // Event 5 + f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 5 //TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -725,6 +727,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -778,14 +782,14 @@ module AtsImsIot_TD_INI{ //Rtp TP_RTP_02 (Event 19) f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 //Gm TP_GM_PCSCF_CANCEL_01 (Event 20) - f_mtc_check_TP_GM_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA); // Event 20 + f_mtc_check_TP_GM_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 //Rx TP_RX_PCSCF_STR_03 (STR – Event 21) //Gx TP_GX_PCRF_RAR_02 (RAR – Event 22) f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 21) f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 22) //MwPS TP_MW_PCSCF_CANCEL_01 (Event 23) - f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.mwPS); // Event 23 + f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 23 //MwSI TP_MW_SCSCF_CANCEL_01 (Event 24) //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.mwIS); // (Event 24) @@ -801,8 +805,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 31) //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 32) f_mtc_check_TP_IC_IBCF_CANCEL_OK_01(vc_vxlte_monitor_components.ic); // (OK – Event 28) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS); // (Event 30) - f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA); // (Event 31) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 30) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // (Event 31) f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 32) //MwPS TP_MW_PCSCF_487INVITE_01 (Event 34) @@ -849,6 +853,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -893,8 +899,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_486INVITE_01 (Event 14) f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic, false); // (Event 11) f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 12) - f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 13) - f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 14) + f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13) + f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 14) //Rx TP_RX_PCSCF_STR_05 (STR – Event 15) //Gx TP_GX_PCRF_RAR_02 (RAR – Event 16) @@ -1027,8 +1033,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_CANCEL_02 (Event 23) f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 20) f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.mwIS); // (Event 21) - f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.mwPS); // (Event 22) - f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB); // (Event 23) + f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 22) + f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 23) //Rx TP_RX_PCSCF_STR_04 (STR – Event 24) //Gx TP_GX_PCRF_RAR_02 (RAR – Event 25) @@ -1044,8 +1050,8 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_CANCEL_OK_02 (OK – Event 31) //Gm TP_GM_PCSCF_487INVITE_02 (Event 32) //MwPS TP_MW_PCSCF_487INVITE_02 (Event 33) - f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB); // (Event 28) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS); // (Event 29) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 28) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29) f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 31) f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 32) f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 33) @@ -1096,6 +1102,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1134,8 +1142,8 @@ module AtsImsIot_TD_INI{ //MwSI TP_MW_SCSCF_486INVITE_02 (Event 13) //Ic TP_IC_IBCF_486INVITE_02 (486 Busy – Event 14) f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) - f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 11) - f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 12) + f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) + f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 12) f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 13) f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic, false); // (486 Busy – Event 14) @@ -1271,8 +1279,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_ACK_03 (Event 32) //MwPS TP_MW_PCSCF_ACK_03 (Event 33) f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 31) - f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 32) - f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS); // (Event 33) + f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33) //Rtp TP_RTP_06 (Event 36) @@ -1391,8 +1399,8 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29) f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 30) f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33) - f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS); // (Event 34) - f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 35) + f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 34) + f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 35) //Rtp TP_RTP_06 (Event 36) @@ -1476,8 +1484,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_ACK_03 (Event 18) //MwPS TP_MW_PCSCF_ACK_03 (Event 19) f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 17) - f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB); // (Event 18) - f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS); // (Event 19) + f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 18) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 19) //Rtp TP_RTP_05 (Event 23) @@ -1562,8 +1570,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_ACK_04 (Event 21) //Gm TP_GM_PCSCF_ACK_04 (Event 22) - f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS); // (Event 21) - f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB); // (Event 22) + f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 21) + f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 22) //Rtp TP_RTP_05 (Event 23) @@ -1605,6 +1613,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1621,8 +1631,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_BYE_04 (Event 2) //MwPS TP_MW_PCSCF_BYE_04 (Event 3) //Ic TP_IC_IBCF_BYE_01 (Event 4) - f_mtc_check_TP_GM_PCSCF_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 2) - f_mtc_check_TP_MW_PCSCF_BYE_04(vc_vxlte_monitor_components.mwPS); // (Event 3) + f_mtc_check_TP_GM_PCSCF_BYE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 2) + f_mtc_check_TP_MW_PCSCF_BYE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 3) f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (Event 4) //Rx TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -1640,8 +1650,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_BYE_04 (Event 14) //Gm TP_GM_PCSCF_200OK_BYE_04 (Event 15) - f_mtc_check_TP_MW_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.mwPS); // (Event 14) - f_mtc_check_TP_GM_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.gmB); // (Event 15) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14) + f_mtc_check_TP_GM_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15) //Rtp TP_RTP_04 (Events 16) @@ -1681,6 +1691,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1696,8 +1708,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_BYE_05 (Event 2) //MwPS TP_MW_PCSCF_BYE_05 (Event 3) //Ic TP_IC_IBCF_BYE_01 (BYE – Event 4) - f_mtc_check_TP_GM_PCSCF_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 2) - f_mtc_check_TP_MW_PCSCF_BYE_05(vc_vxlte_monitor_components.mwPS); // (Event 3) + f_mtc_check_TP_GM_PCSCF_BYE_05(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 2) + f_mtc_check_TP_MW_PCSCF_BYE_05(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 3) f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (BYE – Event 4) //Rx TP_RX_PCSCF_STR_01 (STR – Event 6) @@ -1715,8 +1727,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_BYE_05 (Event 14) //Gm TP_GM_PCSCF_200OK_BYE_05 (Event 15) - f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.mwPS); // (Event 14) - f_mtc_check_TP_GM_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 15) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14) + f_mtc_check_TP_GM_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15) //Rtp TP_RTP_04 (Events 16) @@ -1754,6 +1766,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1767,11 +1781,11 @@ module AtsImsIot_TD_INI{ //Rtp TP_RTP_06 (Event 1) //MwPS TP_MW_PCSCF_BYE_06 (Event 2) - f_mtc_check_TP_MW_PCSCF_BYE_06(vc_vxlte_monitor_components.mwPS); // (Event 2) + f_mtc_check_TP_MW_PCSCF_BYE_06(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 2) //Gm TP_GM_PCSCF_BYE_06 (Event 4) //Ic TP_IC_IBCF_BYE_01 (BYE – Event 5) - f_mtc_check_TP_GM_PCSCF_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 4) + f_mtc_check_TP_GM_PCSCF_BYE_06(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 4) f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (BYE – Event 5) //Rx TP_RX_PCSCF_STR_01 (STR – Event 7) @@ -1790,9 +1804,9 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_200OK_BYE_06 (Event 15) //MwPS TP_MW_PCSCF_200OK_BYE_06 (Event 17) //MwSI TP_MW_PCSCF_200OK_BYE_05 (Event 16) - f_mtc_check_TP_GM_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.gmB); // (Event 15) - f_mtc_check_TP_MW_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.mwPS); // (Event 17) - f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB); // (Event 16) + f_mtc_check_TP_GM_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 17) + f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 16) //Rtp TP_RTP_04 (Events 18) @@ -1832,6 +1846,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1887,8 +1903,8 @@ module AtsImsIot_TD_INI{ //Gm TP_GM_PCSCF_CANCEL_03 (Event 23) //MwPS TP_MW_PCSCF_CANCEL_03 (Event 24) //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) - f_mtc_check_TP_GM_PCSCF_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 23) - f_mtc_check_TP_MW_PCSCF_CANCEL_03(vc_vxlte_monitor_components.mwPS); // (Event 24) + f_mtc_check_TP_GM_PCSCF_CANCEL_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 23) + f_mtc_check_TP_MW_PCSCF_CANCEL_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24) f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25) //Rx TP_RX_PCSCF_STR_04 (STR – Event 27) @@ -1908,8 +1924,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_200OK_CANCEL_03 (Event 35) //Gm TP_GM_PCSCF_200OK_CANCEL_03 (Event 36) f_mtc_check_TP_IC_IBCF_CANCEL_OK_03(vc_vxlte_monitor_components.ic); // (OK – Event 34) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.mwPS); // (Event 35) - f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.gmB); // (Event 36) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 35) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 36) //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 38) //MwPS TP_MW_PCSCF_487INVITE_03 (Event 39) @@ -1956,6 +1972,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -1994,8 +2012,8 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 10) f_mtc_check_TP_IC_IBCF_486INVITE_03(vc_vxlte_monitor_components.ic, false); // (Event 13) - f_mtc_check_TP_MW_PCSCF_486INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 14) - f_mtc_check_TP_GM_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 15) + f_mtc_check_TP_MW_PCSCF_486INVITE_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14) + f_mtc_check_TP_GM_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15) //Rx TP_RX_PCSCF_STR_06 (STR – Event 16) //S9 TP_S9_PCRF_STR_01 (STR – Event 17) @@ -2049,6 +2067,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -2105,7 +2125,7 @@ module AtsImsIot_TD_INI{ //Ic TP_IC_IBCF_CANCEL_02 (CANCEL – Event 24) //MwPS TP_MW_PCSCF_CANCEL_04 (Event 25) f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 24) - f_mtc_check_TP_MW_PCSCF_CANCEL_04(vc_vxlte_monitor_components.mwPS); // (Event 25) + f_mtc_check_TP_MW_PCSCF_CANCEL_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 25) //Gm TP_GM_PCSCF_CANCEL_04 (Event 26) //Rx TP_RX_PCSCF_STR_03 (STR – Event 27) @@ -2114,7 +2134,7 @@ module AtsImsIot_TD_INI{ //Gx TP_GX_PCRF_RAR_02 (RAR – Event 30) //Gx TP_GX_PGW_RAA_02 (RAA – Event 31) //Rx TP_RX_PCRF_STA_01 (STA – Event 32) - f_mtc_check_TP_GM_PCSCF_CANCEL_04(vc_vxlte_monitor_components.gmB); // (Event 26) + f_mtc_check_TP_GM_PCSCF_CANCEL_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 26) f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 27) f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 28) f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 29) @@ -2170,6 +2190,8 @@ module AtsImsIot_TD_INI{ PX_SIP_MW_PS_INTERFACENAME, PX_SIP_MW_IS_INTERFACENAME})) { + var SipMessage v_sip; + f_cf_createVxLteMonitor(); // map/connect component ports @@ -2207,8 +2229,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_486INVITE_04 (Event 13) //Ic TP_IC_IBCF_486INVITE_04 (Event 14) f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 11) - f_mtc_check_TP_GM_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 12) - f_mtc_check_TP_MW_PCSCF_486INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 13) + f_mtc_check_TP_GM_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 12) + f_mtc_check_TP_MW_PCSCF_486INVITE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13) f_mtc_check_TP_IC_IBCF_486INVITE_04(vc_vxlte_monitor_components.ic, false); // (Event 14) //Rx TP_RX_PCSCF_STR_03 (STR – Event 16) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 2a43007..4624fa6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -2708,20 +2708,34 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_486INVITE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_486INVITE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_01 /** @@ -2753,56 +2767,98 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_486INVITE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_486INVITE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_02 - function f_mtc_check_TP_GM_PCSCF_486INVITE_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_486INVITE_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_486INVITE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_03 - function f_mtc_check_TP_GM_PCSCF_486INVITE_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_486INVITE_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_486INVITE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_486INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_04 } // End of group imsBusy @@ -2838,20 +2894,34 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_487INVITE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_487INVITE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_01 /** @@ -2883,56 +2953,98 @@ module AtsImsIot_TP_behavior_GM { */ function f_mtc_check_TP_GM_PCSCF_487INVITE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_487INVITE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_02 - function f_mtc_check_TP_GM_PCSCF_487INVITE_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_487INVITE_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_487INVITE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_03 - function f_mtc_check_TP_GM_PCSCF_487INVITE_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_GM_PCSCF_487INVITE_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_GM_PCSCF_487INVITE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_04 } // End of group imsRequestTermination diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 2390811..1aed725 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -2892,20 +2892,34 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_486INVITE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_486INVITE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_01 /** @@ -2944,56 +2958,98 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_486INVITE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_486INVITE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_02 - function f_mtc_check_TP_MW_PCSCF_486INVITE_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_486INVITE_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_486INVITE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_03 - function f_mtc_check_TP_MW_PCSCF_486INVITE_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_486INVITE_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_486INVITE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 486 Busy + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_486Busy( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_486INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_04 } // End of group imsBusy @@ -3036,20 +3092,34 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_487INVITE_01( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_487INVITE_01", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_01 /** @@ -3088,56 +3158,98 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_487INVITE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_487INVITE_02", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_02 - function f_mtc_check_TP_MW_PCSCF_487INVITE_03( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_487INVITE_03( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_487INVITE_03", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_03", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_03 - function f_mtc_check_TP_MW_PCSCF_487INVITE_04( // FIXME RMI To be reviewed + function f_mtc_check_TP_MW_PCSCF_487INVITE_04( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true, - in boolean p_forward_to_mtc := false + in boolean p_checkMessage := false, + in SipMessage p_sip ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME - {}, - { 0, omit }, - "TP_MW_PCSCF_487INVITE_04", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_04", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_04 } // End of group imsRequestTermination diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn index 7666a14..11e095a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn @@ -1951,6 +1951,22 @@ module AtsImsIot_Templates { payload := * } + template Response mw_486Busy_Base modifies m_Response_Dummy := + { + statusLine := {c_sipNameVersion, 486, ?}, + msgHeader := ?, + messageBody := *, + payload := * + } + + template Response mw_487RequestTerminated_Base modifies m_Response_Dummy := + { + statusLine := {c_sipNameVersion, 487, ?}, + msgHeader := ?, + messageBody := *, + payload := * + } + template Response mdw_404Or604NotFound_Base modifies m_Response_Dummy := { statusLine := ({c_sipNameVersion, 404, ?}, {c_sipNameVersion, 604, ?}), diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn index d65ba6b..7259db8 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn @@ -50,72 +50,6 @@ module AtsImsIot_Templates_GM { toParams := * } // End of template mw_To_AddrUnion_SipUrl - template (present) Response mw_TP_GM_PCSCF_100Trying_01( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_100Trying_Base := { - msgHeader := { - cSeq := p_cSeq, - fromField := p_from, - toField := p_to - } - } // End of template mw_TP_GM_PCSCF_100Trying_01 - - template (present) Response mw_TP_GM_PCSCF_100Trying_02( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_GM_PCSCF_100Trying_01 := { - } // End of template mw_TP_GM_PCSCF_100Trying_02 - - template (present) Response mw_TP_GM_PCSCF_100Trying_03( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_GM_PCSCF_100Trying_01 := { - } // End of template mw_TP_GM_PCSCF_100Trying_03 - - template (present) Response mw_TP_GM_PCSCF_100Trying_04( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_GM_PCSCF_100Trying_01 := { - } // End of template mw_TP_GM_PCSCF_100Trying_04 - - template (present) Response mw_TP_GM_PCSCF_180Ringing_01( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_180Ringing_Base := { - msgHeader := { - cSeq := p_cSeq, - fromField := p_from, - toField := p_to - } - } // End of template mw_TP_GM_PCSCF_180Ringing_01 - - template (present) Response mw_TP_GM_PCSCF_180Ringing_02( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { - } // End of template mw_TP_GM_PCSCF_180Ringing_02 - - template (present) Response mw_TP_GM_PCSCF_180Ringing_03( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { - } // End of template mw_TP_GM_PCSCF_180Ringing_03 - - template (present) Response mw_TP_GM_PCSCF_180Ringing_04( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { - } // End of template mw_TP_GM_PCSCF_180Ringing_04 - template (present) Response mw_200OK( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, @@ -159,6 +93,38 @@ module AtsImsIot_Templates_GM { } } // End of template mw_480TemporaryUnavailable + template (present) Response mw_486Busy( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_486Busy_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_486Busy + + template (present) Response mw_487RequestTerminated( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_487RequestTerminated_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_487RequestTerminated + } // End of group sip_templates group g_gmA { @@ -308,6 +274,72 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_INVITE_01 := { } // End of template mw_TP_GM_PCSCF_INVITE_04 + template (present) Response mw_TP_GM_PCSCF_100Trying_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_100Trying_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_GM_PCSCF_100Trying_01 + + template (present) Response mw_TP_GM_PCSCF_100Trying_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_100Trying_01 := { + } // End of template mw_TP_GM_PCSCF_100Trying_02 + + template (present) Response mw_TP_GM_PCSCF_100Trying_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_100Trying_01 := { + } // End of template mw_TP_GM_PCSCF_100Trying_03 + + template (present) Response mw_TP_GM_PCSCF_100Trying_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_100Trying_01 := { + } // End of template mw_TP_GM_PCSCF_100Trying_04 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_180Ringing_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_GM_PCSCF_180Ringing_01 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { + } // End of template mw_TP_GM_PCSCF_180Ringing_02 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { + } // End of template mw_TP_GM_PCSCF_180Ringing_03 + + template (present) Response mw_TP_GM_PCSCF_180Ringing_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_GM_PCSCF_180Ringing_01 := { + } // End of template mw_TP_GM_PCSCF_180Ringing_04 + template (present) ACK_Request mw_TP_GM_PCSCF_ACK_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn index 4e11ce6..3e1ffaf 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn @@ -73,72 +73,6 @@ module AtsImsIot_Templates_MW { contactBody := { contactAddresses := { p_contactAddresses } } } // End of template mw_Contact - template (present) Response mw_TP_MW_PCSCF_100Trying_01( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_100Trying_Base := { - msgHeader := { - cSeq := p_cSeq, - fromField := p_from, - toField := p_to - } - } // End of template mw_TP_MW_PCSCF_100Trying_01 - - template (present) Response mw_TP_MW_PCSCF_100Trying_02( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_100Trying_01 := { - } // End of template mw_TP_MW_PCSCF_100Trying_02 - - template (present) Response mw_TP_MW_PCSCF_100Trying_03( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_100Trying_01 := { - } // End of template mw_TP_MW_PCSCF_100Trying_03 - - template (present) Response mw_TP_MW_PCSCF_100Trying_04( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_100Trying_01 := { - } // End of template mw_TP_MW_PCSCF_100Trying_04 - - template (present) Response mw_TP_MW_PCSCF_180Ringing_01( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_180Ringing_Base := { - msgHeader := { - cSeq := p_cSeq, - fromField := p_from, - toField := p_to - } - } // End of template mw_TP_MW_PCSCF_180Ringing_01 - - template (present) Response mw_TP_MW_PCSCF_180Ringing_02( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { - } // End of template mw_TP_MW_PCSCF_180Ringing_02 - - template (present) Response mw_TP_MW_PCSCF_180Ringing_03( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { - } // End of template mw_TP_MW_PCSCF_180Ringing_03 - - template (present) Response mw_TP_MW_PCSCF_180Ringing_04( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { - } // End of template mw_TP_MW_PCSCF_180Ringing_04 - template (present) Response mw_200OK( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, @@ -182,6 +116,38 @@ module AtsImsIot_Templates_MW { } } // End of template mw_480TemporaryUnavailable + template (present) Response mw_486Busy( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_486Busy_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_486Busy + + template (present) Response mw_487RequestTerminated( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_487RequestTerminated_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_487RequestTerminated + } // End of group sip_templates group g_pcscf { @@ -373,6 +339,72 @@ module AtsImsIot_Templates_MW { ) modifies mw_TP_MW_PCSCF_INVITE_01 := { } // End of template mw_TP_MW_PCSCF_INVITE_04 + template (present) Response mw_TP_MW_PCSCF_100Trying_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_100Trying_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MW_PCSCF_100Trying_01 + + template (present) Response mw_TP_MW_PCSCF_100Trying_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_100Trying_01 := { + } // End of template mw_TP_MW_PCSCF_100Trying_02 + + template (present) Response mw_TP_MW_PCSCF_100Trying_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_100Trying_01 := { + } // End of template mw_TP_MW_PCSCF_100Trying_03 + + template (present) Response mw_TP_MW_PCSCF_100Trying_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_100Trying_01 := { + } // End of template mw_TP_MW_PCSCF_100Trying_04 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_180Ringing_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MW_PCSCF_180Ringing_01 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_02( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { + } // End of template mw_TP_MW_PCSCF_180Ringing_02 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_03( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { + } // End of template mw_TP_MW_PCSCF_180Ringing_03 + + template (present) Response mw_TP_MW_PCSCF_180Ringing_04( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_180Ringing_01 := { + } // End of template mw_TP_MW_PCSCF_180Ringing_04 + template (present) ACK_Request mw_TP_MW_PCSCF_ACK_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, -- GitLab From 0667bd2e506067e7020fbbd21f4346dde044a2bf Mon Sep 17 00:00:00 2001 From: pintar Date: Thu, 20 May 2021 13:28:43 +0000 Subject: [PATCH 147/176] Diameter Rx update due to validation of INT_INI group of TDs --- .../AtsImsIot_Diameter_Templates.ttcn | 95 +- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 6 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 1085 +++++++++-------- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 2 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 28 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 154 ++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn | 9 +- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 23 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 75 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn | 7 +- ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn | 112 +- ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn | 61 +- ttcn/LibDiameter | 2 +- 13 files changed, 986 insertions(+), 673 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 2e71e0d..1576600 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -199,6 +199,21 @@ module AtsImsIot_Diameter_Templates { aVP_Header := mw_aVP_Header_any_Code(c_specific_Action_AVP_Code),// aVP_Data := p_avpData } + + template Service_Info_Status_AVP mw_serviceInfoStatus (template (present) Service_Info_Type p_avpData) :={ + aVP_Header := mw_aVP_Header_any_Code(c_service_Info_Status_AVP_Code),// + aVP_Data := p_avpData + } + + template Rx_Request_Type_AVP mw_rxRequestType (template (present) Rx_Request_Type p_avpData) :={ + aVP_Header := mw_aVP_Header_any_Code(c_rx_Request_Type_AVP_Code),// + aVP_Data := p_avpData + } + + template Framed_IP_Address_AVP mw_framedIPAddress (template (present) octetstring p_avpData) :={ + aVP_Header := mw_aVP_Header_any_Code(c_framed_IP_Address_AVP_Code),// + aVP_Data := p_avpData + } } //end group RxHeaderFields group GxHeaderFields{ @@ -383,6 +398,34 @@ module AtsImsIot_Diameter_Templates { } //end group S6aHeaderFields + + + group ShHeaderFields{ + + template User_Identity_AVP mw_userIdentity_publicIdentity(template (present) Public_Identity_AVP p_publicIdentity) := + { + aVP_Header := mw_aVP_Header_any_Code(c_user_Identity_AVP_Code), + public_Identity_AVP := p_publicIdentity, + mSISDN_AVP := *, + aVP_Type := * + } + + template User_Identity_AVP mw_userIdentity_msisdn(template (present) MSISDN_AVP p_msisdn) := + { + aVP_Header := mw_aVP_Header_any_Code(c_user_Identity_AVP_Code), + public_Identity_AVP := *, + mSISDN_AVP := p_msisdn, + aVP_Type := * + } + + template Public_Identity_AVP mw_publicIdentity(template (present) UTF8String p_avpData) := + { + aVP_Header := mw_aVP_Header_any_Code(c_public_Identity_AVP_Code), + aVP_Data := p_avpData + } + + } //end group ShHeaderFields + group S9HeaderFields{ template Subses_Enforcement_Info_AVP mw_subses_Enforcement_Info(Subsession_Operation_AVP p_subsession_Operation) := { @@ -512,13 +555,13 @@ module AtsImsIot_Diameter_Templates { } group CxRequestMessageTemplates{ - template MAR_MSG mw_MAR modifies mw_MAR_basic := { + template MAR_MSG mw_MAR(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_MAR_basic := { header := mw_diameterHeaderReq_dummy(MAR_E, c_applId3GPPCxDx), mAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?, - public_Identity := ?, //required only in TS129 229 + public_Identity := p_publicIdentity, sIP_Number_Auth_Items := ?, sIP_Auth_Data_Item := ?, server_Name := ? @@ -535,81 +578,81 @@ module AtsImsIot_Diameter_Templates { } } - template SAR_MSG mw_SAR_Registration modifies mw_SAR_basic := { + template SAR_MSG mw_SAR_Registration(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_SAR_basic := { header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), sAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - public_Identity := ?, + public_Identity := {p_publicIdentity}, server_Name := ?, server_Assignment_Type := mw_serverAssignmentType(REGISTRATION_E), user_Data_Already_Available := ? } } - template SAR_MSG mw_SAR_UnregisteredUser modifies mw_SAR_basic := { + template SAR_MSG mw_SAR_UnregisteredUser(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_SAR_basic := { header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), sAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - public_Identity := ?, + public_Identity := {p_publicIdentity}, server_Name := ?, server_Assignment_Type := mw_serverAssignmentType(UNREGISTERED_USER_E), user_Data_Already_Available := ? } } - template SAR_MSG mw_SAR_UserDeregistration modifies mw_SAR_basic := { + template SAR_MSG mw_SAR_UserDeregistration(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_SAR_basic := { header := mw_diameterHeaderReq_dummy(SAR_E, c_applId3GPPCxDx), sAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - public_Identity := ?, + public_Identity := {p_publicIdentity}, server_Name := ?, server_Assignment_Type := mw_serverAssignmentType(USER_DEREGISTRATION_E), user_Data_Already_Available := ? } } - template UAR_MSG mw_UAR_Registration modifies mw_UAR_basic := { + template UAR_MSG mw_UAR_Registration(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?, - public_Identity := ?, + public_Identity := p_publicIdentity, visited_Network_Identifier := ?, user_Authorization_Type := mw_userAuthorizationType(REGISTRATION) } } - template UAR_MSG mw_UAR modifies mw_UAR_basic := { + template UAR_MSG mw_UAR(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?, - public_Identity := ? + public_Identity := p_publicIdentity } } - template UAR_MSG mw_UAR_unknownPrivateId modifies mw_UAR_basic := { + template UAR_MSG mw_UAR_unknownPrivateId(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?,//UNKNOWN PRIVATE USER IDENTITY - public_Identity := ? + public_Identity := p_publicIdentity } } - template UAR_MSG mw_UAR_deRegistration modifies mw_UAR_basic := { + template UAR_MSG mw_UAR_deRegistration(template (present) Public_Identity_AVP p_publicIdentity := ?) modifies mw_UAR_basic := { header := mw_diameterHeaderReq_dummy(UAR_E, c_applId3GPPCxDx), uAR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, user_Name := ?, - public_Identity := ?, + public_Identity := p_publicIdentity, visited_Network_Identifier := ?, user_Authorization_Type := mw_userAuthorizationType(DE_REGISTRATION) } @@ -775,6 +818,22 @@ module AtsImsIot_Diameter_Templates { } group RxRequestMessageTemplates{ + template AAR_MSG mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + template (present) Rx_Request_Type_AVP p_rxRequestType := ?, + template (present) Service_Info_Status_AVP p_serviceInfoStatus := ?, + template (present) Framed_IP_Address_AVP p_framedIPAddress := ?, + template (present) Specific_Action_AVP p_specificAction := ? + ) modifies mw_AAR_basic := { + aAR_Body :={ + media_Component_Description := ?, + specific_Action := {p_specificAction}, + framed_IP_Address := p_framedIPAddress, + rx_Request_Type := p_rxRequestType, + service_Info_Status := p_serviceInfoStatus + //framed_IPv6_Address := *, + } + } + template AAR_MSG mw_AAR_MediaComponent_specificActionLossOfBearer modifies mw_AAR_basic := { aAR_Body :={ media_Component_Description := {mw_mediaComponentDescription_SubComponentFlowStatusEnabled}, @@ -1038,11 +1097,11 @@ module AtsImsIot_Diameter_Templates { group ShMessageTemplates{ group ShRequestMessageTemplates{ - template UDR_MSG mw_UDR_userData modifies mw_UDR_dummy := { + template UDR_MSG mw_UDR_userData_publicIdentity(template (present) UTF8String p_avpData) modifies mw_UDR_dummy := { uDR_Body :={ vendor_Specific_Application_Id := ?, auth_Session_State := mw_authSessionState_noStateMaintained, - user_Identity := ?, + user_Identity := mw_userIdentity_publicIdentity(mw_publicIdentity(p_avpData)), data_Reference := ? } } diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index 03147be..ea00513 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -132,10 +132,10 @@ module AtsImsIot_TD_DRG{ f_mtc_check_TP_CX_HSS_RTA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 1, 8 - //f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 2 - //f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA, false); // Events 3 + f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Event 2 + //f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // Events 3 //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, false); // Events 4 - //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 5 + //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS); // Event 5 //f_mtc_check_TP_MW_PCSCF_NOTIFY_02(vc_vxlte_monitor_components.mwPS, false, true); // Event 6, 7 f_mtc_check_TP_RX_PCSCF_STR_08(vc_vxlte_monitor_components.rx);// Event 9 diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index 613b9d5..52c3ed8 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -86,33 +86,37 @@ module AtsImsIot_TD_INI{ // FIXME log("v_sip", v_sip); // FIXME f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, false, v_sip); - //f_mtc_check_TP_RX_PCSCF_AAR_03 not validated - //f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 - f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 2 //TODO update TD and TP + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 - f_mtc_check_TP_RX_PCRF_AAA_03(vc_vxlte_monitor_components.rx); // Event 5 //TODO update TD and TP - f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Event 5b //TODO addin TD + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 6 log("v_sip", v_sip); + f_mtc_check_TP_MW_PCSCF_100Trying_01(vc_vxlte_monitor_components.mwPS, -, v_sip); f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 8 f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 8 f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8 + //TODO 183 + + //Rx/Gx exchange after 183(SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 17 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 18 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9 f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11 - //f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 12 //TODO update TD and TP - //f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 13 //TODO update TD and TP - //f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 14 //TODO update TD and TP - //f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 15 //TODO update TD and TP - f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16 @@ -126,11 +130,6 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 20 - f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx);// Event 21 - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 22 - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 23 - f_mtc_check_TP_RX_PCRF_AAA_03(vc_vxlte_monitor_components.rx); // Event 24 - f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 @@ -166,7 +165,7 @@ module AtsImsIot_TD_INI{ //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false); //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false); //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false); - } // End of function f_mtc_check_precond_TC_VxLTE_INT_DRG_01 + } // End of function f_mtc_check_precond_TC_VxLTE_INT_INI_01 } // End of f_TC_VxLTE_INT_INI_01 @@ -208,49 +207,58 @@ module AtsImsIot_TD_INI{ // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_check_precond_TC_VxLTE_INT_INI_02(); // Test body - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // INVITE Event 1 - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // INVITE Event 1 - f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1 - - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, false); // ( Event 3) - f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) - //TP_GM_PCSCF_INVITE_02 ( Event 8) - f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, false); // Event 8 - //TP_GM_PCSCF_180RINGING_02 ( Event 9) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // INVITE Event 1 + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1 + + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // ( Event 3) + log("v_sip", v_sip); + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 15) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 16) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 17) + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 9,10 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 8,11 + //TP_GM_PCSCF_INVITE_02 ( Event 8) + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 8 + + //TODO 183 + + + //Rx/Gx exchange after 183 (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 14) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 15) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 16) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 17) + + + //TP_GM_PCSCF_180RINGING_02 ( Event 9) f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 9 - f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 10) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) - //TP_MW_PCSCF_180RINGING_02 ( Event 14) + //TP_MW_PCSCF_180RINGING_02 ( Event 14) f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 14 - //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) + //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16) //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16) //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) - f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 - f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 - - f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 19) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 11, 20) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 12, 21) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 13, 22) - //TP_IC_IBCF_2XXRESP_01 (200 OK – Event 25) + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16 + + //TP_IC_IBCF_2XXRESP_01 (200 OK – Event 25) //TP_IC_IBCF_2XXRESP_02 (200 OK – Event 25) //TP_IC_IBCF_2XXRESP_03 (200 OK – Event 25) - f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 - f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 - f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 - //TP_MW_PCSCF_ACK_02 (Event 28) + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25 + //TP_MW_PCSCF_ACK_02 (Event 28) f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 28 - - //TP_GM_PCSCF_ACK_02 (Event 29) + + //TP_GM_PCSCF_ACK_02 (Event 29) f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 29 @@ -273,6 +281,15 @@ module AtsImsIot_TD_INI{ setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } } // End of TC TC_VxLTE_INT_INI_02 + + group f_TC_VxLTE_INT_INI_02 { + + function f_mtc_check_precond_TC_VxLTE_INT_INI_02() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + } // End of function f_mtc_check_precond_TC_VxLTE_INT_INI_02 + + } // End of f_TC_VxLTE_INT_INI_02 + } //End of group TerminatingLeg } //End of group SIPsessionEstablisment @@ -326,29 +343,33 @@ module AtsImsIot_TD_INI{ // Test body f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 2 + + //Rx/Gx exchange after reINVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); //(AAR – Event 3) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 4) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12) + f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwPS); // Event 3 f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwIS); // Event 4 - f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 5 - f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic,1); // 200 OK – Event 6 - f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 8 + f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 5 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic,1); // 200 OK – Event 6 + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 8 - //TP_RX_PCSCF_AAR_09 (AAR – Event 9) - //TP_GX_PCRF_RAR_01 (RAR – Event 10) - //TP_GX_PGW_RAA_02 (RAA – Event 11) - //TP_RX_PCRF_AAA_02 (AAA – Event 12) - f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); //(AAR – Event 9) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 10) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12) - + //Rx/Gx exchange after 200 OK (SDP) on reINVITE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); //(AAR – Event 13) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 10) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12) + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 14 f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15 - f_mtc_userCheckCallEstablished(v_ueA); // Event 18 - f_mtc_userCheckCallEstablished(v_ueB); // Event 18 - + f_mtc_userCheckCallEstablished(v_ueA); // Event 18 + f_mtc_userCheckCallEstablished(v_ueB); // Event 18 + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); @@ -413,32 +434,35 @@ module AtsImsIot_TD_INI{ f_mtc_userCheckCallEstablished(v_ueB); // Event 1 // Test body - f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 2 + f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 2 f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 3 - f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 4 + f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 4 f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIB); // Event 5 + + //Rx/Gx exchange after reINVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Event 5) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 6) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8) f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 6 - //TP_RX_PCSCF_AAR_10 (AAR – Event 7) - //TP_GX_PCRF_RAR_01 (RAR – Event 8) - //TP_GX_PGW_RAA_02 (RAA – Event 9) - //TP_RX_PCRF_AAA_02 (AAA – Event 10) - f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Event 7) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 8) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10) - + //Rx/Gx exchange after 200 OK (SDP) on reINVITE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Event 11) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 12) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 13) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 14) f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11 - f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 17 - f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 16 - f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // 200 OK – Event 13 + f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 17 + f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 16 + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // 200 OK – Event 13 // f_mtc_userCheckNewMediaStream(v_ueA); // f_mtc_userCheckNewMediaStream(v_ueB); - f_mtc_userCheckCallEstablished(v_ueA); // Event 18 - f_mtc_userCheckCallEstablished(v_ueB); // Event 18 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 18 + f_mtc_userCheckCallEstablished(v_ueB); // Event 18 // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); @@ -493,6 +517,7 @@ module AtsImsIot_TD_INI{ //f_cf_int_call_up(v_config); // Preamble + f_mtc_check_precond_TC_VxLTE_INT_REL_01(); f_mtc_userRegistration(v_ueA, v_userInfoA); f_mtc_userRegistration(v_ueB, v_userInfoB); f_mtc_userInitiateCall (v_ueA, v_userInfoB); @@ -508,14 +533,11 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 - //TP_RX_PCSCF_STR_01 (STR – Event 6) - //TP_GX_PCRF_RAR_02 (RAR – Event 7) - //TP_GX_PGW_RAA_03 (RAA – Event 8) - //TP_RX_PCRF_STA_01 (STA – Event 9) - f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) - f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) - f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) - f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 12 @@ -538,6 +560,15 @@ module AtsImsIot_TD_INI{ setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } } // End of TC TC_VxLTE_INT_REL_01 + + group f_TC_VxLTE_INT_REL_01 { + + function f_mtc_check_precond_TC_VxLTE_INT_REL_01() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + } // End of function f_mtc_check_precond_TC_VxLTE_INT_REL_01 + + } // End of f_TC_VxLTE_INT_INI_02 + } //End of group OriginatingLeg group TerminatingLeg { @@ -589,14 +620,11 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5 - //TP_RX_PCSCF_STR_01 (STR – Event 6) - //TP_GX_PCRF_RAR_02 (RAR – Event 7) - //TP_GX_PGW_RAA_03 (RAA – Event 8) - //TP_RX_PCRF_STA_01 (STA – Event 9) - f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) - f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) - f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) - f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 12 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 @@ -671,19 +699,14 @@ module AtsImsIot_TD_INI{ f_mtc_check_TP_MW_SCSCF_BYE_03(vc_vxlte_monitor_components.mwIS); // Event 3 f_mtc_check_TP_MW_SCSCF_BYE_01(vc_vxlte_monitor_components. mwIB); // Event 3 f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 4 - f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 5 + f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 5 + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - //TP_RX_PCSCF_STR_01 (STR – Event 6) - //TP_GX_PCRF_RAR_02 (RAR – Event 7) - //TP_GX_PGW_RAA_03 (RAA – Event 8) - //TP_RX_PCRF_STA_01 (STA – Event 9) - f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6) - f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7) - f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8) - f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9) - - f_mtc_userCheckCallTerminated(v_ueA); // Event 14 f_mtc_userCheckCallCancelled(v_ueB); // Event 15 @@ -739,85 +762,84 @@ module AtsImsIot_TD_INI{ //test body - //Rtp TP_RTP_01 (Event 1) - //Gm TP_GM_PCSCF_INVITE_01 (Event 3) - f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 3) - - //Rx TP_RX_PCSCF_AAR_03 (AAR – Event 4) - //Gx TP_GX_PCRF_RAR_01 (RAR – Event 5) - //Gx TP_GX_PGW_RAA_02 (RAA – Event 6) - //Rx TP_RX_PCRF_AAA_02 (AAA – Event 7) - f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7) - - //MwPS TP_MW_PCSCF_INVITE_01 (Event 8) + //Rtp TP_RTP_01 (Event 1) + //Gm TP_GM_PCSCF_INVITE_01 (Event 3) + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 3) + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7) + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,9 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 8,11 + + //MwPS TP_MW_PCSCF_INVITE_01 (Event 8) //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 8) - //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) - //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) - f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8) - f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 8) - f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9) - f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIB); // (Event 9) - - //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) - //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) - //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 11) - //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 11) - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) - f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 11) - f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 11) - - //Rx TP_RX_PCSCF_AAR_04 (AAR – Event 14) - //Gx TP_GX_PCRF_RAR_01 (RAR – Event 15) - //Gx TP_GX_PGW_RAA_02 (RAA – Event 16) - //Rx TP_RX_PCRF_AAA_02 (AAA – Event 17) - f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Event 14) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 15) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 16) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 17) - - //Rtp TP_RTP_02 (Event 19) + //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) + //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 8) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIB); // (Event 9) + + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) + //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 11) + //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 11) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + + //TODO 183 + + //Rx/Gx exchange after 183 (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Event 14) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 15) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 16) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 17) + + + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 11) + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 11) + + //Rtp TP_RTP_02 (Event 19) f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 - //Gm TP_GM_PCSCF_CANCEL_01 (Event 20) + //Gm TP_GM_PCSCF_CANCEL_01 (Event 20) f_mtc_check_TP_GM_PCSCF_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 - //Rx TP_RX_PCSCF_STR_03 (STR – Event 21) - //Gx TP_GX_PCRF_RAR_02 (RAR – Event 22) - f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 21) - f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 22) - - //MwPS TP_MW_PCSCF_CANCEL_01 (Event 23) + //Rx TP_RX_PCSCF_STR_03 (STR – Event 21) + //Gx TP_GX_PCRF_RAR_02 (RAR – Event 22) + f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 21) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 22) + + //MwPS TP_MW_PCSCF_CANCEL_01 (Event 23) f_mtc_check_TP_MW_PCSCF_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 23 - //MwSI TP_MW_SCSCF_CANCEL_01 (Event 24) - //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) - f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.mwIS); // (Event 24) - f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25) - - //Gx TP_GX_PGW_RAA_03 (RAA – Event 26) - //Rx TP_RX_PCRF_STA_01 (STA – Event 27) - f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26) - f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 27) - - //Ic TP_IC_IBCF_CANCEL_OK_01 (OK – Event 28) - //MwPS TP_MW_PCSCF_200OK_CANCEL_01 (Event 30) - //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 31) - //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 32) - f_mtc_check_TP_IC_IBCF_CANCEL_OK_01(vc_vxlte_monitor_components.ic); // (OK – Event 28) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 30) - f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // (Event 31) - f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 32) - - //MwPS TP_MW_PCSCF_487INVITE_01 (Event 34) - f_mtc_check_TP_MW_PCSCF_487INVITE_01(vc_vxlte_monitor_components.mwPS); // Event 34 + //MwSI TP_MW_SCSCF_CANCEL_01 (Event 24) + //Ic TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25) + f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.mwIS); // (Event 24) + f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25) + + //Rx/Gx exchange after CANCEL was received at P-CSCF + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 27) + + //Ic TP_IC_IBCF_CANCEL_OK_01 (OK – Event 28) + //MwPS TP_MW_PCSCF_200OK_CANCEL_01 (Event 30) + //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 31) + //Ic TP_IC_IBCF_487INVITE_01 (487 INVITE – Event 32) + f_mtc_check_TP_IC_IBCF_CANCEL_OK_01(vc_vxlte_monitor_components.ic); // (OK – Event 28) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 30) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // (Event 31) + f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 32) + + //MwPS TP_MW_PCSCF_487INVITE_01 (Event 34) + f_mtc_check_TP_MW_PCSCF_487INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 34 //Gm TP_GM_PCSCF_487INVITE_01 (Event 35) - f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA); // Event 35 + f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 35 //Ic TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 37) - f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 37) - //Rtp TP_RTP_01 (Events 41,42) - f_mtc_userCheckCallCancelled(v_ueA); // Event 40 - f_mtc_userCheckCallEnded(v_ueB); // Event 41 + f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 37) + //Rtp TP_RTP_01 (Events 41,42) + f_mtc_userCheckCallCancelled(v_ueA); // Event 40 + f_mtc_userCheckCallEnded(v_ueB); // Event 41 @@ -865,58 +887,54 @@ module AtsImsIot_TD_INI{ //test body - //Rtp TP_RTP_01 (Events 1,2) - - //Gm TP_GM_PCSCF_INVITE_01 (Event 3) - f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 3) - - //Rx TP_RX_PCSCF_AAR_03 (AAR – Event 4) - //Gx TP_GX_PCRF_RAR_01 (RAR – Event 5) - //Gx TP_GX_PGW_RAA_02 (RAA – Event 6) - //Rx TP_RX_PCRF_AAA_02 (AAA – Event 7) - f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7) - - //MwPS TP_MW_PCSCF_INVITE_01 (Event 8) - //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) - //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 10) - //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) - //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) - f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8) - f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9) - f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 10) - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) - - //Rtp TP_RTP_02 (Event 18) - f_mtc_userCheckPeerIsRinging(v_ueA); // Event 18 - - //Ic TP_IC_IBCF_486INVITE_01 (Event 11) - //MwSI TP_MW_SCSCF_486INVITE_01 (Event 12) - //MwPS TP_MW_PCSCF_486INVITE_01 (Event 13) - //Gm TP_GM_PCSCF_486INVITE_01 (Event 14) - f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic, false); // (Event 11) - f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 12) - f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13) - f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 14) - - //Rx TP_RX_PCSCF_STR_05 (STR – Event 15) - //Gx TP_GX_PCRF_RAR_02 (RAR – Event 16) - //Gx TP_GX_PGW_RAA_03 (RAA – Event 17) - //Rx TP_RX_PCRF_STA_01 (STA – Event 18) - f_mtc_check_TP_RX_PCSCF_STR_05(vc_vxlte_monitor_components.rx); // (STR – Event 15) - f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16) - f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17) - f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18) - - //Ic TP_IC_IBCF_486INVITE_ACK_01 (Event 22) - f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.gmB, false); // (Event 22) - - //Rtp TP_RTP_01 (Events 23,24) - f_mtc_userCheckCallCancelled(v_ueA); // Event 23 - f_mtc_userCheckCallEnded(v_ueB); // Event 24 + //Rtp TP_RTP_01 (Events 1,2) + + //Gm TP_GM_PCSCF_INVITE_01 (Event 3) + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 3) + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7) + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,9 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 8,11 + + //MwPS TP_MW_PCSCF_INVITE_01 (Event 8) + //MwSI TP_MW_SCSCF_INVITE_01 (Event 9) + //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 10) + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 10) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 10) + f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8) + f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 10) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10) + + //Rtp TP_RTP_02 (Event 18) + f_mtc_userCheckPeerIsRinging(v_ueA); // Event 18 + + //Ic TP_IC_IBCF_486INVITE_01 (Event 11) + //MwSI TP_MW_SCSCF_486INVITE_01 (Event 12) + //MwPS TP_MW_PCSCF_486INVITE_01 (Event 13) + //Gm TP_GM_PCSCF_486INVITE_01 (Event 14) + f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic, false); // (Event 11) + f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 12) + f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13) + f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 14) + + //Rx/Gx exchange after 468/600 was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_05(vc_vxlte_monitor_components.rx); // (STR – Event 15) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18) + + //Ic TP_IC_IBCF_486INVITE_ACK_01 (Event 22) + f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.gmB, false); // (Event 22) + + //Rtp TP_RTP_01 (Events 23,24) + f_mtc_userCheckCallCancelled(v_ueA); // Event 23 + f_mtc_userCheckCallEnded(v_ueB); // Event 24 //unmap/disconnect component ports @@ -966,109 +984,105 @@ module AtsImsIot_TD_INI{ //test body - // Preamble - f_mtc_userRegistration(v_ueA, v_userInfoA); - f_mtc_userRegistration(v_ueB, v_userInfoB); - f_mtc_userInitiateCall (v_ueA, v_userInfoB); - f_mtc_userCheckRinging(v_ueB); - f_mtc_userCheckPeerIsRinging(v_ueA); - f_mtc_userTriggerCancelCall(v_ueA); + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + f_mtc_userRegistration(v_ueB, v_userInfoB); + f_mtc_userInitiateCall (v_ueA, v_userInfoB); + f_mtc_userCheckRinging(v_ueB); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userTriggerCancelCall(v_ueA); - // Test body - - //Rtp TP_RTP_01 (Events 1,2) - - - //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 3) - //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 3) - //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 3) - //MwSI TP_MW_SCSCF_INVITE_02 (Event 4) - //MwPS TP_MW_PCSCF_INVITE_02 (Event 5) - f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) - f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4) - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 5) - - //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 6) - //Gx TP_GX_PCRF_RAR_01 (RAR – Event 7) - //Gx TP_GX_PGW_RAA_02 (RAA – Event 8) - //Rx TP_RX_PCRF_AAA_02 (AAA – Event 9) - f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9) - - //Gm TP_GM_PCSCF_INVITE_02 (Event 10) - //Gm TP_GM_PCSCF_180RINGING_02 (Event 11) - f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) - f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) - - //Rx TP_RX_PCSCF_AAR_07 (AAR – Event 12) - //Gx TP_GX_PCRF_RAR_01 (RAR – Event 13) - //Gx TP_GX_PGW_RAA_02 (RAA – Event 14) - //Rx TP_RX_PCRF_AAA_02 (AAA – Event 15) - f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 12) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 13) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 14) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 15) - - //MwPS TP_MW_PCSCF_180RINGING _02 (Event 16) - //MwSI TP_MW_SCSCF_180RINGING _02 (Event 17) - //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 18) - //Ic TP_IC_IBCF_180RESP_02 (180 Ringing – Event 18) - //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 18) - f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 16) - f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.mwIS); // (Event 17) - f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) - f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) - f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) - - //Rtp TP_RTP_02 (Event 19) + // Test body + + //Rtp TP_RTP_01 (Events 1,2) + + + //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 3) + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 3) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 3) + //MwSI TP_MW_SCSCF_INVITE_02 (Event 4) + //MwPS TP_MW_PCSCF_INVITE_02 (Event 5) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 5) + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9) + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx); // Events 11,12 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 10,13 + + //Gm TP_GM_PCSCF_INVITE_02 (Event 10) + //Gm TP_GM_PCSCF_180RINGING_02 (Event 11) + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) + + //TODO 183 + + //Rx/Gx exchange after 183 (SDP) received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 12) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 13) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 14) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 15) + + f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) + + //MwPS TP_MW_PCSCF_180RINGING _02 (Event 16) + //MwSI TP_MW_SCSCF_180RINGING _02 (Event 17) + //Ic TP_IC_IBCF_180RESP_01 (180 Ringing – Event 18) + //Ic TP_IC_IBCF_180RESP_02 (180 Ringing – Event 18) + //Ic TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 18) + f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 16) + f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.mwIS); // (Event 17) + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) + f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) + f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18) + + //Rtp TP_RTP_02 (Event 19) f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 - //Ic TP_IC_IBCF_CANCEL_02 (CANCEL – Event 20) - //MwSI TP_MW_SCSCF_CANCEL_02 (Event 21) - //MwPS TP_MW_PCSCF_CANCEL_02 (Event 22) + //Ic TP_IC_IBCF_CANCEL_02 (CANCEL – Event 20) + //MwSI TP_MW_SCSCF_CANCEL_02 (Event 21) + //MwPS TP_MW_PCSCF_CANCEL_02 (Event 22) //Gm TP_GM_PCSCF_CANCEL_02 (Event 23) - f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 20) - f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.mwIS); // (Event 21) - f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 22) - f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 23) - - //Rx TP_RX_PCSCF_STR_04 (STR – Event 24) - //Gx TP_GX_PCRF_RAR_02 (RAR – Event 25) - //Gx TP_GX_PGW_RAA_03 (RAA – Event 26) - //Rx TP_RX_PCRF_STA_01 (STA – Event 27) - f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 24) - f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 25) - f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26) - f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 27) - - //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 28) - //MwPS TP_MW_PCSCF_200OK_CANCEL_01 (Event 29) - //Ic TP_IC_IBCF_CANCEL_OK_02 (OK – Event 31) - //Gm TP_GM_PCSCF_487INVITE_02 (Event 32) - //MwPS TP_MW_PCSCF_487INVITE_02 (Event 33) - f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 28) - f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29) - f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 31) - f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 32) - f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 33) - - //Ic TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 35) - //Ic TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 38) - f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 35) - f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 38) - - //Rtp TP_RTP_01 (Events 41,42) - f_mtc_userCheckCallCancelled(v_ueA); // Event 40 - f_mtc_userCheckCallEnded(v_ueB); // Event 41 - + f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 20) + f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.mwIS); // (Event 21) + f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 22) + f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 23) + + //Rx/Gx exchange after CANCEL was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 24) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 25) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 27) + + //Gm TP_GM_PCSCF_200OK_CANCEL_01 (Event 28) + //MwPS TP_MW_PCSCF_200OK_CANCEL_01 (Event 29) + //Ic TP_IC_IBCF_CANCEL_OK_02 (OK – Event 31) + //Gm TP_GM_PCSCF_487INVITE_02 (Event 32) + //MwPS TP_MW_PCSCF_487INVITE_02 (Event 33) + f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 28) + f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29) + f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 31) + f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32) + f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33) + + //Ic TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 35) + //Ic TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 38) + f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 35) + f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 38) + + //Rtp TP_RTP_01 (Events 41,42) + f_mtc_userCheckCallCancelled(v_ueA); // Event 40 + f_mtc_userCheckCallEnded(v_ueB); // Event 41 + - // Postamble - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_ueB); //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1114,54 +1128,53 @@ module AtsImsIot_TD_INI{ //test body - //Rtp TP_RTP_01 (Events 1,2) - - //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 3) - //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 3) - //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 3) - //MwSP TP_MW_PCSCF_INVITE_02 (Event 4) - //MwSI TP_MW_SCSCF_INVITE_02 (Event 4) - f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) - f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) - f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 4) - f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4) - - //Rx TP_RX_PCSCF_AAR_06 (AAR – Event 6) - //Gx TP_GX_PCRF_RAR_01 (RAR – Event 7) - //Gx TP_GX_PGW_RAA_02 (RAA – Event 8) - //Rx TP_RX_PCRF_AAA_02 (AAA – Event 9) - f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6) - f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9) - - //Gm TP_GM_PCSCF_INVITE_02 (Event 10) - //Gm TP_GM_PCSCF_486INVITE_02 (Event 11) - //MwPS TP_MW_PCSCF_486INVITE_02 (Event 12) - //MwSI TP_MW_SCSCF_486INVITE_02 (Event 13) - //Ic TP_IC_IBCF_486INVITE_02 (486 Busy – Event 14) - f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) - f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) - f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 12) - f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 13) - f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic, false); // (486 Busy – Event 14) - - //Rx TP_RX_PCSCF_STR_06 (STR – Event 15) - //Gx TP_GX_PCRF_RAR_02 (RAR – Event 16) - //Gx TP_GX_PGW_RAA_03 (RAA – Event 17) - //Rx TP_RX_PCRF_STA_01 (STA – Event 18) - f_mtc_check_TP_RX_PCSCF_STR_06(vc_vxlte_monitor_components.rx); // (STR – Event 15) - f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16) - f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17) - f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18) - - //Ic TP_IC_IBCF_486INVITE_ACK_02 (ACK – Event 19) - f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 19) + //Rtp TP_RTP_01 (Events 1,2) + + //Ic TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 3) + //Ic TP_IC_IBCF_INVITE_01 (INVITE – Event 3) + //Ic TP_IC_IBCF_INVITE_02 (INVITE – Event 3) + //MwSP TP_MW_PCSCF_INVITE_02 (Event 4) + //MwSI TP_MW_SCSCF_INVITE_02 (Event 4) + f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) + f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 4) + f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4) + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6) + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9) + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx); // Events 11,12 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 10,13 + + //Gm TP_GM_PCSCF_INVITE_02 (Event 10) + //Gm TP_GM_PCSCF_486INVITE_02 (Event 11) + //MwPS TP_MW_PCSCF_486INVITE_02 (Event 12) + //MwSI TP_MW_SCSCF_486INVITE_02 (Event 13) + //Ic TP_IC_IBCF_486INVITE_02 (486 Busy – Event 14) + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10) + + + f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) + f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 12) + f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 13) + f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic, false); // (486 Busy – Event 14) + + + //Rx/Gx exchange after 486/600 response was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_06(vc_vxlte_monitor_components.rx); // (STR – Event 15) + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18) + + //Ic TP_IC_IBCF_486INVITE_ACK_02 (ACK – Event 19) + f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 19) - //Rtp TP_RTP_01 (Events 23,24) - f_mtc_userCheckCallCancelled(v_ueA); // Event 23 - f_mtc_userCheckCallEnded(v_ueB); // Event 24 + //Rtp TP_RTP_01 (Events 23,24) + f_mtc_userCheckCallCancelled(v_ueA); // Event 23 + f_mtc_userCheckCallEnded(v_ueB); // Event 24 //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1214,75 +1227,75 @@ module AtsImsIot_TD_INI{ //test body - //Gm TP_GM_PCSCF_INVITE_03 (Event 1) - f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1) - + //Gm TP_GM_PCSCF_INVITE_03 (Event 1) + f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1) + //Rx TP_RX_PCSCF_AAR_03 (AAR – Events 2) - //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) - //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) - //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) - //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) - f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Events 2) - f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) - f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) - f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) - + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Events 2) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) + //MwPS TP_MW_PCSCF_INVITE_03 (Event 8) - //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 9) - //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9) - f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 8) - f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9) - f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9) - + //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 9) + //Ic TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9) + f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 8) + f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9) + f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9) + //Ic TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 12) //MwPS TP_MW_PCSCF_180RINGING_03 (Event 13) //Rx TP_RX_PCSCF_AAR_04 (AAR – Events 14) - f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12) - f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13) - f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14) - - //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) - //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) - //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) - //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) - //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) - f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) - f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) - f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) - - //Gm TP_GM_PCSCF_180RINGING_03 (Event 20) + f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12) + f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13) + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) + + //Gm TP_GM_PCSCF_180RINGING_03 (Event 20) //Ic TP_IC_IBCF_2XXRESP_05 (200 OK Event 23) //MwPS TP_MW_PCSCF_200OK_03 (Event 24) //Rx TP_RX_PCSCF_AAR_05 (AAR – Events 25) - f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 20) - f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 23) - f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24) - f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25) - - //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) - //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) - //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) - //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) - //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) - f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) - f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) - f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) - - //Gm TP_GM_PCSCF_200OK_03 (Event 31) - //Gm TP_GM_PCSCF_ACK_03 (Event 32) - //MwPS TP_MW_PCSCF_ACK_03 (Event 33) - f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 31) - f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32) - f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33) - - //Rtp TP_RTP_06 (Event 36) + f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 20) + f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 23) + f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24) + f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30) + + //Gm TP_GM_PCSCF_200OK_03 (Event 31) + //Gm TP_GM_PCSCF_ACK_03 (Event 32) + //MwPS TP_MW_PCSCF_ACK_03 (Event 33) + f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 31) + f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33) + + //Rtp TP_RTP_06 (Event 36) //unmap/disconnect component ports @@ -1332,77 +1345,77 @@ module AtsImsIot_TD_INI{ //test body - //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 2) - //Ic TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 2) + //Ic TP_IC_IBCF_INVITE_04 (INVITE – Event 2) + //Ic TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 2) //MwPS TP_MW_PCSCF_INVITE_04 (Event 3) //Rx TP_RX_PCSCF_AAR_06 (AAR – Events 4) - f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 2) - f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 2) - f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 3) - f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) - - //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) - //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) - //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) - //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) + f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 2) + f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 2) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 3) + f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) - f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) - f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) - f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) - - //Gm TP_GM_PCSCF_INVITE_04 (Event 10) - //Gm TP_GM_PCSCF_180RINGING_04 (Event 11) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) + + //Gm TP_GM_PCSCF_INVITE_04 (Event 10) + //Gm TP_GM_PCSCF_180RINGING_04 (Event 11) //Rx TP_RX_PCSCF_AAR_07 (AAR – Events 12) - f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 10) - f_mtc_check_TP_GM_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) - f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 12) - - //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) - //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) - //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) - //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) - //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) - f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) - f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) - f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) - + f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 10) + f_mtc_check_TP_GM_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11) + f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 12) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) + //MwPS TP_MW_PCSCF_180RINGING_04 (Event 18) - //Ic TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 19) - f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 18) - f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 19) - - //Gm TP_GM_PCSCF_200OK_04 (Event 22) + //Ic TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 19) + f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 18) + f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 19) + + //Gm TP_GM_PCSCF_200OK_04 (Event 22) //Rx TP_RX_PCSCF_AAR_08 (AAR – Events 23) - f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 22) - f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 23) - - //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) - //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) - //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) - //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) - //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) - f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) - f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) - f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) - - //MwPS TP_MW_PCSCF_200OK_04 (Event 29) - //Ic TP_IC_IBCF_2XXRESP_06 (200 OK Event 30) - //Ic TP_IC_IBCF_ACK_01 (ACK – Event 33) - //MwPS TP_MW_PCSCF_ACK_04 (Event 34) + f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 22) + f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 23) + + //S9 TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24) + //S9 TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25) + //Gx TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26) + //Gx TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27) + //Rx TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) + + //MwPS TP_MW_PCSCF_200OK_04 (Event 29) + //Ic TP_IC_IBCF_2XXRESP_06 (200 OK Event 30) + //Ic TP_IC_IBCF_ACK_01 (ACK – Event 33) + //MwPS TP_MW_PCSCF_ACK_04 (Event 34) //Gm TP_GM_PCSCF_ACK_04 (Event 35) - f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29) - f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 30) - f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33) - f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 34) - f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 35) - - //Rtp TP_RTP_06 (Event 36) + f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29) + f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 30) + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33) + f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 34) + f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 35) + + //Rtp TP_RTP_06 (Event 36) //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1454,40 +1467,40 @@ module AtsImsIot_TD_INI{ //test body - //Rtp TP_RTP_06 (Event 1) - - //Gm TP_GM_PCSCF_RE_INVITE_03 (Event 2) - //MwPS TP_MW_PCSCF_RE_INVITE_03 (Event 3) + //Rtp TP_RTP_06 (Event 1) + + //Gm TP_GM_PCSCF_RE_INVITE_03 (Event 2) + //MwPS TP_MW_PCSCF_RE_INVITE_03 (Event 3) //MwSI TP_MW_SCSCF_RE_INVITE_03 (Event 4) //Ic TP_IC_IBCF_REINVITE_01 (INVITE – Event 5) - //Ic TP_IC_IBCF_2XXRESP_04 (200 OK – Event 8) - f_mtc_check_TP_GM_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2) - f_mtc_check_TP_MW_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 3) - f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIS); // (Event 4) - f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 5) - f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 8) - - //Rx TP_RX_PCSCF_AAR_09 (AAR – Events 11) - //S9 TP_S9_PCRF_AAR_01 (AAR – Event 12) - //S9 TP_S9_PCRF_AAA_02 (AAA – Event 13) - //Gx TP_GX_PCRF_RAR_03 (RAR – Event 14) - //Gx TP_GX_PGW_RAA_02 (RAA – Event 15) + //Ic TP_IC_IBCF_2XXRESP_04 (200 OK – Event 8) + f_mtc_check_TP_GM_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2) + f_mtc_check_TP_MW_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 3) + f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIS); // (Event 4) + f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 5) + f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 8) + + //Rx TP_RX_PCSCF_AAR_09 (AAR – Events 11) + //S9 TP_S9_PCRF_AAR_01 (AAR – Event 12) + //S9 TP_S9_PCRF_AAA_02 (AAA – Event 13) + //Gx TP_GX_PCRF_RAR_03 (RAR – Event 14) + //Gx TP_GX_PGW_RAA_02 (RAA – Event 15) //Rx TP_RX_PCRF_AAA_02 (AAA – Event 16) - f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); // (AAR – Events 11) - f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 12) - f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 13) - f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 14) - f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 15) - f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 16) - - //Gm TP_GM_PCSCF_200OK_03 (Event 17) - //Gm TP_GM_PCSCF_ACK_03 (Event 18) - //MwPS TP_MW_PCSCF_ACK_03 (Event 19) - f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 17) - f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 18) - f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 19) - - //Rtp TP_RTP_05 (Event 23) + f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); // (AAR – Events 11) + f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 12) + f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 13) + f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 14) + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 15) + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 16) + + //Gm TP_GM_PCSCF_200OK_03 (Event 17) + //Gm TP_GM_PCSCF_ACK_03 (Event 18) + //MwPS TP_MW_PCSCF_ACK_03 (Event 19) + f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 17) + f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 18) + f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 19) + + //Rtp TP_RTP_05 (Event 23) //unmap/disconnect component ports f_cf_user_down ( v_ueB ); @@ -1931,8 +1944,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_487INVITE_03 (Event 39) //Gm TP_GM_PCSCF_487INVITE_03 (Event 40) f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // (487 INVITE – Event 38) - f_mtc_check_TP_MW_PCSCF_487INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 39) - f_mtc_check_TP_GM_PCSCF_487INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 40) + f_mtc_check_TP_MW_PCSCF_487INVITE_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 39) + f_mtc_check_TP_GM_PCSCF_487INVITE_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 40) //Ic TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 43) f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 43) @@ -2149,8 +2162,8 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_487INVITE_04 (Event 38) //Ic TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 39) //Ic TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 42) - f_mtc_check_TP_GM_PCSCF_487INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 37) - f_mtc_check_TP_MW_PCSCF_487INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 38) + f_mtc_check_TP_GM_PCSCF_487INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 37) + f_mtc_check_TP_MW_PCSCF_487INVITE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 38) f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 39) f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 42) diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index ed05a42..8de4791 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -213,7 +213,7 @@ module AtsImsIot_TD_REG{ f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 16, 17 f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 16, 17 - f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, true); // Event 18, 21 + f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc); // Event 18, 21 f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, true); // Events 25, 28 f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, true); // Events 26, 27 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index d2c997b..55300d3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -24,6 +24,9 @@ module AtsImsIot_TP_behavior_CX import from AtsImsIot_Functions all; import from AtsImsIot_Diameter_Templates all; import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + + // LibIms + import from LibIms_UpperTester all; group g_HSS { @@ -90,10 +93,12 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{mAR_MSG := mw_MAR} + DIAMETER_MSG:{mAR_MSG := mw_MAR(mw_publicIdentity(v_publicIdentity))} }, { DIAMETER_MSG:{mAR_MSG := mw_MAR_basic} @@ -270,10 +275,12 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{sAR_MSG := mw_SAR_Registration/*mw_SAR_UnregisteredUser*/} //TODO_Check TP + DIAMETER_MSG:{sAR_MSG := mw_SAR_Registration(mw_publicIdentity(v_publicIdentity))} }, { DIAMETER_MSG:{sAR_MSG := mw_SAR_basic} @@ -360,10 +367,12 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{sAR_MSG := mw_SAR_UserDeregistration} + DIAMETER_MSG:{sAR_MSG := mw_SAR_UserDeregistration(mw_publicIdentity(v_publicIdentity))} }, { DIAMETER_MSG:{sAR_MSG := mw_SAR_basic} @@ -455,10 +464,13 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; + //"sip:"&v_userInfoA.publicId&@&v_userInfoA.domain p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration} + DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration(mw_publicIdentity(v_publicIdentity))} }, { DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} @@ -533,10 +545,12 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR} + DIAMETER_MSG:{uAR_MSG := mw_UAR(mw_publicIdentity(v_publicIdentity))} }, { DIAMETER_MSG:{uAR_MSG := mw_UAR_basic}}, @@ -685,10 +699,12 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR_deRegistration} + DIAMETER_MSG:{uAR_MSG := mw_UAR_deRegistration(mw_publicIdentity(v_publicIdentity))} }, { DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 4624fa6..8547063 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -376,7 +376,7 @@ module AtsImsIot_TP_behavior_GM { f_Iot_Sip_receive( { mw_SipRequest( - mw_TP_GM_PCSCF_REGISTER_01( + mw_TP_GM_PCSCF_REGISTER_03( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other @@ -398,14 +398,13 @@ module AtsImsIot_TP_behavior_GM { if (not(isbound(v_sip))) { return; } + log("v_sip", v_sip); // Check REGISTER 404 Not Found response p_monitorCompRef.start( f_Iot_Sip_receive( { - ( - mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), - mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) - ) + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)) }, { mw_SipResponse(mw_Response_4xx_Base( @@ -425,42 +424,122 @@ module AtsImsIot_TP_behavior_GM { function f_mtc_check_TP_GM_PCSCF_REGISTER_04( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_404NotFound_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_REGISTER_04", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_REGISTER_04( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_04 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 404 Not Found response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + ( + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + ) + }, + { + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_04 - 200 OK", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_04 function f_mtc_check_TP_GM_PCSCF_REGISTER_05( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := true + in boolean p_checkMessage := false ) runs on ImsTestCoordinator { - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest(mw_REGISTER_Request_Base), - mw_SipResponse(mw_404NotFound_Base) - }, - {}, - {0, omit}, - "TP_GM_PCSCF_REGISTER_05", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_REGISTER_05( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_05 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 404 Not Found response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + ( + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + ) + }, + { + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_05 - 200 OK", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_05 } // End of group imsRegistration @@ -492,8 +571,7 @@ module AtsImsIot_TP_behavior_GM { in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); var SipMessage v_sip; // Check first DeREGISTER request @@ -503,7 +581,7 @@ module AtsImsIot_TP_behavior_GM { mw_SipRequest( mw_TP_GM_PCSCF_REGISTER_07( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other/*(mw_credentialIntegrityYes)*/ ) ) diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn index b23da8c..58e232b 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn @@ -52,10 +52,11 @@ group g_ISC { * @param p_monitorCompRef Reference to monitor component * @remark source function f_mtc_check_TP_IC_IBCF_REGISTER_02 */ - function f_mtc_check_TP_ISC_SCSCF_REGISTER_01( - SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ + function f_mtc_check_TP_ISC_SCSCF_REGISTER_01( + SipInterfaceMonitor p_monitorCompRef, + boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); p_monitorCompRef.start( diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index 1aed725..7452e91 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -430,8 +430,8 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), - mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)) }, { mw_SipResponse(mw_Response_4xx_Base( @@ -521,8 +521,7 @@ module AtsImsIot_TP_behavior_MW_PS { in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); var SipMessage v_sip; // Check first DeREGISTER request @@ -532,7 +531,7 @@ module AtsImsIot_TP_behavior_MW_PS { mw_SipRequest( mw_TP_MW_PCSCF_REGISTER_07( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_Authorization_other/*(mw_credentialIntegrityYes)*/ ) ) @@ -1043,7 +1042,8 @@ module AtsImsIot_TP_behavior_MW_PS { */ function f_mtc_check_TP_MW_PCSCF_INVITE_02( in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false + in boolean p_checkMessage := false, + out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); @@ -1061,11 +1061,14 @@ module AtsImsIot_TP_behavior_MW_PS { { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, "TP_MW_PCSCF_INVITE_02 - Request", - false, + true, p_checkMessage ) ); p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_02 @@ -1511,8 +1514,10 @@ module AtsImsIot_TP_behavior_MW_PS { { mw_SipResponse(mw_TP_MW_PCSCF_180Ringing_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) + mw_To_NameAddr_TelUrl( + -, + p_sip.request.msgHeader.toField.addressField.addrSpecUnion.components.tel.subscriber + ))) }, { mw_SipResponse(mw_180Ringing_Base) }, { 0, omit }, diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index c52a872..c93d1d6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -1,27 +1,30 @@ /* - * @author STF 574 + * @author STF 574, TTF006 * @version $Id$ * @desc This module provides the TP behaviour functions at RX interface */ module AtsImsIot_TP_behavior_RX { - - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + + // LibIot + import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT, PX_EUT_A, PX_EUT_B;} + import from LibIot_VxLTE_PIXITS {modulepar PX_SIP_GMA_UE_IPADDR;} import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - + + // AtsImsIot + import from AtsImsIot_Templates {template all;} + import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} import from AtsImsIot_Diameter_Templates all; + import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } // LibDiameter import from LibDiameter_Templates all; import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; + import from LibDiameter_Steps {function f_IPV4_Address2oct;}; group g_PCRF { @@ -197,8 +200,6 @@ group g_PCRF_AAA { * the EPC_PCRF_A entity sends the AAA containing * Result_Code_AVP * indicating value DIAMETER_SUCCESS "(2001)" - * Acceptable_Service_Info_AVP containing - * "one or more" Media_Component_Description_AVP * ; * ; * to the IMS_P_CSCF_A entity @@ -215,7 +216,7 @@ group g_PCRF_AAA { p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription } + DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode } }, { DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic } @@ -231,10 +232,10 @@ group g_PCRF_AAA { } // End of function f_mtc_check_TP_RX_PCRF_AAA_02 /** - * Starts monitor component behavior for TP_CX_HSS_UAA_01 + * Starts monitor component behavior for TP_RX_PCRF_AAA_02 * @param p_monitorCompRef Reference to monitor component *
    -     * Test objective  "Verify that IUT after 2XX_Response on REGISTER sends an AA-Request due to provisioning of AF Signalling flow."
    +     * Test objective  "Verify that IUT receives AA-Request  from home PCRF and sends AA-Answer towards visited P-CSCF."
          *
          * 
          * 
    @@ -668,7 +669,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(INITIAL_REQUEST_E),
    +                                                      mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) //TODO convertIPv4 to oct
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic}
    @@ -741,7 +746,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(UPDATE_REQUEST_E),
    +                                                      mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) 
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic }
    @@ -815,7 +824,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(UPDATE_REQUEST_E),
    +                                                      mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) 
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic }
    @@ -887,7 +900,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusDisabled }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(INITIAL_REQUEST_E),
    +                                                      mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) 
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic }
    @@ -961,7 +978,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(UPDATE_REQUEST_E),
    +                                                      mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) 
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic }
    @@ -1035,7 +1056,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabled }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(UPDATE_REQUEST_E),
    +                                                      mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) 
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic }
    @@ -1109,7 +1134,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledUplink }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(UPDATE_REQUEST_E),
    +                                                      mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) 
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic }
    @@ -1182,7 +1211,11 @@ group g_PCSCF_AAR {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_mediaComponentDescription_FlowStatusEnabledDownlink }
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
    +                                                      mw_rxRequestType(UPDATE_REQUEST_E),
    +                                                      mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E),
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) //TODO convertIPv4 to oct
    +                                     }
                         },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic }
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn
    index 497da57..9272998 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn
    @@ -1,11 +1,13 @@
     /*
    - *  @author     STF 574
    + *  @author     STF 574, TTF006
      *  @version    $Id$
      *  @desc       This module provides the TP behaviour functions at SH interface
      */
     
     module AtsImsIot_TP_behavior_SH
     {
    +    // LibIms
    +    import from LibIms_UpperTester all;
     
         import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; }
         import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;}
    @@ -81,10 +83,11 @@ group g_HSS {
             in boolean p_forward_to_mtc := false
         ) runs on ImsTestCoordinator {
             if (isvalue(p_monitorCompRef)){
    +            var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{uDR_MSG := mw_UDR_userData}
    +                        DIAMETER_MSG:{uDR_MSG := mw_UDR_userData_publicIdentity("tel:"&v_userInfoA.publicId)}
                         },
                         {},
                         {0, omit},
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    index 7259db8..a2293dc 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    @@ -30,26 +30,77 @@ module AtsImsIot_Templates_GM {
         
         group sip_templates {
             
    -        template (present) From mw_From_AddrUnion_SipUrl(
    -                                                         template DisplayName p_dn,
    -                                                         template(present) charstring p_user := ?,
    -                                                         template charstring p_host
    +        template NameAddr mw_NameAddr_DispName_Tel(
    +                                                   template DisplayName p_displayName := *,
    +                                                   template(present) charstring p_number := ?
    +        ) := {
    +            displayName := p_displayName,
    +            addrSpec := {
    +                scheme := c_telScheme,  //*     contains "tel"
    +                components := {
    +                    tel := {
    +                        subscriber := p_number
    +                    }
    +                },
    +                urlParameters := *,
    +                headers := *
    +            }
    +        } // End of template mw_NameAddr_DispName_Tel
    +        
    +        template(present) From mw_From_AddrUnion_SipUrl(
    +                                                        template DisplayName p_dn,
    +                                                        template(present) charstring p_user := ?,
    +                                                        template charstring p_host
             ) := {
                 fieldName := FROM_E,
                 addressField := mw_AddrUnion_SipUrl(p_user, p_host),
                 fromParams := *
             } // End of template mw_From_AddrUnion_SipUrl
             
    -        template (present) To mw_To_AddrUnion_SipUrl(
    -                                                     template DisplayName p_dn,
    -                                                     template(present) charstring p_user := ?,
    -                                                     template charstring p_host
    +        template(present) From mw_From_AddrUnion_TelUrl(
    +                                                        template(present) charstring p_number := ?
    +        ) := {
    +            fieldName := FROM_E,
    +            addressField := mw_AddrUnion_TelUrl(p_number),
    +            fromParams := *
    +        } // End of template mw_From_AddrUnion_TelUrl
    +        
    +        template From mw_From_NameAddr_TelUrl(
    +                                              template DisplayName p_displayName := *,
    +                                              template(present) charstring p_number := ?
    +                                              ) := {
    +            fieldName := FROM_E,
    +            addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) },
    +            fromParams := *
    +        } // End of template mw_From_NameAddr_TelUrl
    +        
    +        template(present) To mw_To_AddrUnion_SipUrl(
    +                                                    template DisplayName p_dn,
    +                                                    template(present) charstring p_user := ?,
    +                                                    template charstring p_host
             ) := {
                 fieldName := TO_E,
                 addressField := mw_AddrUnion_SipUrl(p_user, p_host),
                 toParams := *
             } // End of template mw_To_AddrUnion_SipUrl
             
    +        template(present) To mw_To_AddrUnion_TelUrl(
    +                                                    template(present) charstring p_number := ?
    +        ) := {
    +            fieldName := TO_E,
    +            addressField := mw_AddrUnion_TelUrl(p_number),
    +            toParams := *
    +        } // End of template mw_To_AddrUnion_TelUrl
    +        
    +        template To mw_To_NameAddr_TelUrl(
    +                                          template DisplayName p_displayName := *,
    +                                          template(present) charstring p_number := ?
    +                                          ) := {
    +            fieldName := TO_E,
    +            addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) },
    +            toParams := *
    +        } // End of template mw_To_NameAddr_TelUrl
    +        
             template (present) Response mw_200OK(
                                                  template (present) CSeq p_cSeq := ?,
                                                  template (present) From p_from := ?,
    @@ -82,11 +133,11 @@ module AtsImsIot_Templates_GM {
                 }
             } // End of template mw_404NotFound
             
    -        template (present) Response mw_480TemporaryUnavailable(
    -                                                              template (present) CallId p_callId := ?,
    -                                                              template (present) CSeq p_cSeq := ?,
    -                                                              template (present) WwwAuthenticate p_wwwAuthenticate := ?
    -                                                              ) modifies mw_480TemporaryUnavailable_Base := {
    +        template Response mw_480TemporaryUnavailable(
    +                                                     template (present) CallId p_callId := ?,
    +                                                     template (present) CSeq p_cSeq := ?,
    +                                                     template WwwAuthenticate p_wwwAuthenticate := *
    +                                                     ) modifies mw_480TemporaryUnavailable_Base := {
                 msgHeader := {
                     cSeq            := p_cSeq,
                     wwwAuthenticate := p_wwwAuthenticate
    @@ -153,16 +204,35 @@ module AtsImsIot_Templates_GM {
                                                                           template (present) PChargingVector p_pChargingVector := ?,
                                                                           template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
             ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
    -            msgHeader := {
    -                fromField := p_from,
    -                toField := p_to,
    -                authorization := ?,
    -                pChargingVector := p_pChargingVector,
    -                pVisitedNetworkID := p_pVisitedNetworkID,
    -                require := mw_require_path
    -            }
             } // End of template mw_TP_GM_PCSCF_REGISTER_02
             
    +        template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_03(
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?,
    +                                                                      template (present) Authorization p_authorization := ?,
    +                                                                      template (present) PChargingVector p_pChargingVector := ?,
    +                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +        ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
    +        } // End of template mw_TP_GM_PCSCF_REGISTER_03
    +        
    +        template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_04(
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?,
    +                                                                      template (present) Authorization p_authorization := ?,
    +                                                                      template (present) PChargingVector p_pChargingVector := ?,
    +                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +        ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
    +        } // End of template mw_TP_GM_PCSCF_REGISTER_04
    +        
    +        template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_05(
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?,
    +                                                                      template (present) Authorization p_authorization := ?,
    +                                                                      template (present) PChargingVector p_pChargingVector := ?,
    +                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +        ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
    +        } // End of template mw_TP_GM_PCSCF_REGISTER_04
    +        
             template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_07(
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    index 3e1ffaf..7c9abda 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    @@ -30,6 +30,23 @@ module AtsImsIot_Templates_MW {
         
         group sip_templates {
             
    +        template NameAddr mw_NameAddr_DispName_Tel(
    +                                                   template DisplayName p_displayName := *,
    +                                                   template(present) charstring p_number := ?
    +        ) := {
    +            displayName := p_displayName,
    +            addrSpec := {
    +                scheme := c_telScheme,  //*     contains "tel"
    +                components := {
    +                    tel := {
    +                        subscriber := p_number
    +                    }
    +                },
    +                urlParameters := *,
    +                headers := *
    +            }
    +        } // End of template mw_NameAddr_DispName_Tel
    +        
             template(present) From mw_From_AddrUnion_SipUrl(
                                                             template DisplayName p_dn,
                                                             template(present) charstring p_user := ?,
    @@ -40,6 +57,23 @@ module AtsImsIot_Templates_MW {
                 fromParams := *
             } // End of template mw_From_AddrUnion_SipUrl
             
    +        template(present) From mw_From_AddrUnion_TelUrl(
    +                                                        template(present) charstring p_number := ?
    +        ) := {
    +            fieldName := FROM_E,
    +            addressField := mw_AddrUnion_TelUrl(p_number),
    +            fromParams := *
    +        } // End of template mw_From_AddrUnion_TelUrl
    +        
    +        template From mw_From_NameAddr_TelUrl(
    +                                              template DisplayName p_displayName := *,
    +                                              template(present) charstring p_number := ?
    +                                              ) := {
    +            fieldName := FROM_E,
    +            addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) },
    +            fromParams := *
    +        } // End of template mw_From_NameAddr_TelUrl
    +        
             template(present) To mw_To_AddrUnion_SipUrl(
                                                         template DisplayName p_dn,
                                                         template(present) charstring p_user := ?,
    @@ -50,14 +84,6 @@ module AtsImsIot_Templates_MW {
                 toParams := *
             } // End of template mw_To_AddrUnion_SipUrl
             
    -        template(present) From mw_From_AddrUnion_TelUrl(
    -                                                        template(present) charstring p_number := ?
    -        ) := {
    -            fieldName := FROM_E,
    -            addressField := mw_AddrUnion_TelUrl(p_number),
    -            fromParams := *
    -        } // End of template mw_From_AddrUnion_TelUrl
    -        
             template(present) To mw_To_AddrUnion_TelUrl(
                                                         template(present) charstring p_number := ?
             ) := {
    @@ -66,6 +92,15 @@ module AtsImsIot_Templates_MW {
                 toParams := *
             } // End of template mw_To_AddrUnion_TelUrl
             
    +        template To mw_To_NameAddr_TelUrl(
    +                                          template DisplayName p_displayName := *,
    +                                          template(present) charstring p_number := ?
    +                                          ) := {
    +            fieldName := TO_E,
    +            addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) },
    +            toParams := *
    +        } // End of template mw_To_NameAddr_TelUrl
    +        
             template (present) Contact mw_contact(
                                                   template (present) ContactAddress p_contactAddresses := ?
                                                   ) := {
    @@ -105,11 +140,11 @@ module AtsImsIot_Templates_MW {
                 }
             } // End of template mw_404NotFound
             
    -        template (present) Response mw_480TemporaryUnavailable(
    -                                                              template (present) CallId p_callId := ?,
    -                                                              template (present) CSeq p_cSeq := ?,
    -                                                              template (present) WwwAuthenticate p_wwwAuthenticate := ?
    -                                                              ) modifies mw_480TemporaryUnavailable_Base := {
    +        template Response mw_480TemporaryUnavailable(
    +                                                     template (present) CallId p_callId := ?,
    +                                                     template (present) CSeq p_cSeq := ?,
    +                                                     template WwwAuthenticate p_wwwAuthenticate := *
    +                                                     ) modifies mw_480TemporaryUnavailable_Base := {
                 msgHeader := {
                     cSeq            := p_cSeq,
                     wwwAuthenticate := p_wwwAuthenticate
    diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
    index 08c09f9..c075292 160000
    --- a/ttcn/LibDiameter
    +++ b/ttcn/LibDiameter
    @@ -1 +1 @@
    -Subproject commit 08c09f9ebe9bcc6c4cb5a3fcec347b9cd135c155
    +Subproject commit c07529275de3e75abd8c3dd0aed31aef0f97497b
    -- 
    GitLab
    
    
    From 22652950d38d6ca22b1abe62884079ab516e0899 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Fri, 21 May 2021 08:24:29 +0000
    Subject: [PATCH 148/176] Validate SIP interfaces for REG and DRG_01
    
    ---
     ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn          |   4 +-
     ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn          |  14 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn  | 324 +++++++++++------
     .../AtsImsIot_TP_behavior_MW_PS.ttcn          | 334 ++++++++++++------
     ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn    | 101 ++++--
     ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn    | 105 ++++--
     6 files changed, 601 insertions(+), 281 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    index ea00513..b8cf4ee 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    @@ -72,7 +72,7 @@ module AtsImsIot_TD_DRG{
                         // test body
                         
                         f_mtc_check_TP_GM_PCSCF_REGISTER_07(vc_vxlte_monitor_components.gmA); // Events 1, 10
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_07(vc_vxlte_monitor_components.mwPS); // Event 2, 9
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_07(vc_vxlte_monitor_components.mwPI); // Event 2, 9
                         // FIXME Not on the PCAP traces
                         // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_07(vc_vxlte_monitor_components.mwIS); // Event 5, 8
                         
    @@ -132,7 +132,7 @@ module AtsImsIot_TD_DRG{
                         
                         f_mtc_check_TP_CX_HSS_RTA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 1, 8
                         
    -                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Event 2
    +                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPI); // Event 2
                         //f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // Events 3
                         //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, false); // Events 4
                         //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS); // Event 5
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    index 8de4791..c1f6cf7 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    @@ -87,9 +87,11 @@ module AtsImsIot_TD_REG{
                         
                         f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA); // Events 21, 24
                         f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS); // Events 22, 23
    +                    f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPI); // Events 22, 23
     
                         f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // TODO Events 21, 24
                         f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // TODO Events 22, 23
    +                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPI); // TODO Events 22, 23
     
                         //FIXME Rx and Gx interfaces not in PCAP traces
                         f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// TODO Event 25
    @@ -196,16 +198,16 @@ module AtsImsIot_TD_REG{
                         
                         // test body
                         
    -                    f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, true); // Events 1, 10
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, true); // Event 2, 9
    +                    f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 10
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI); // Event 2, 9
                         // FIXME Not on the PCAP traces
                         // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 5, 8
                         
                         f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4
                         f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 6, 7
                         
    -                    f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA, true); // Events 11, 24
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPI, true); // Events 12, 23
    +                    f_mtc_check_TP_GM_PCSCF_REGISTER_02(vc_vxlte_monitor_components.gmA); // Events 11, 24
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_02(vc_vxlte_monitor_components.mwPI); // Events 12, 23
                         // FIXME Not on the PCAP traces
                         // FIXME f_mtc_check_TP_MW_ICSCF_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 15, 22
                         
    @@ -215,8 +217,8 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 16, 17
                         f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc); // Event 18, 21
                         
    -                    f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA, true); // Events 25, 28
    -                    f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS, true); // Events 26, 27
    +                    f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA); // Events 25, 28
    +                    f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS); // Events 26, 27
     
                         f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 29
                         f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 30
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    index 8547063..ce7521e 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    @@ -308,10 +308,12 @@ module AtsImsIot_TP_behavior_GM {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                             {
    -                                                            mw_SipResponse(mw_Response_200onREGISTER_IMS(
    -                                                                                                         v_sip.request.msgHeader.callId,
    -                                                                                                         v_sip.request.msgHeader.cSeq
    -                                                                                                         ))
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                    ))
                                                             },
                                                             {
                                                                 mw_SipResponse(mw_Response_2xx_Base)
    @@ -605,17 +607,19 @@ module AtsImsIot_TP_behavior_GM {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                             {
    -                                                            mw_SipResponse(mw_Response_200onREGISTER_IMS(
    -                                                                                                         v_sip.request.msgHeader.callId,
    -                                                                                                         v_sip.request.msgHeader.cSeq
    -                                                                                                         ))
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                    ))
                                                             },
                                                             {
                                                                 mw_SipResponse(mw_Response_2xx_Base)
                                                             },
                                                             {0, omit},
                                                             "TP_GM_PCSCF_REGISTER_07 - 200 OK",
    -                                                        true,
    +                                                        false,
                                                             p_checkMessage
                                                             )
                                            );
    @@ -708,8 +712,8 @@ module AtsImsIot_TP_behavior_GM {
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     var SipMessage v_sip;
                     
                     // Check the SUBSCRIBE
    @@ -719,8 +723,8 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipRequest(
                                                                               mw_TP_GM_PCSCF_SUBSCRIBE_01(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                           ))
                                                             },
                                                             { mw_SipRequest(mw_SUBSCRIBE_Request_Base) },
    @@ -741,7 +745,10 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                             {
                                                                 mw_SipResponse(mw_200OK(
    -                                                                                    v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
                                                                                         ))
                                                             },
                                                             {
    @@ -795,7 +802,10 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                             {
                                                                 mw_SipResponse(mw_200OK(
    -                                                                                    v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
                                                                                         ))
                                                             },
                                                             {
    @@ -840,8 +850,8 @@ module AtsImsIot_TP_behavior_GM {
                                                        in boolean p_checkMessage := false
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     var SipMessage v_sip;
                     
                     // Check the NOTIFY
    @@ -851,8 +861,8 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipRequest(mw_TP_GM_PCSCF_NOTIFY_01(
                                                                                                        -,
                                                                                                        -, // FIXME Set expected value
    -                                                                                                   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                   mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                   mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                   mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                        ))
                                                             },
                                                             { mw_SipRequest(mw_NOTIFY_Request_Base) },
    @@ -873,7 +883,10 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                             {
                                                                 mw_SipResponse(mw_200OK(
    -                                                                                    v_sip.request.msgHeader.cSeq // TODO v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
                                                                                         ))
                                                             },
                                                             {
    @@ -891,6 +904,85 @@ module AtsImsIot_TP_behavior_GM {
             
         } // End of group imsNotify
         
    +    group imsPrack {
    +        
    +        /**
    +         * @desc Verify that the P-CSCF successfully processes a PRACK in case of IMS Administrative de-registration.
    +         * Initial conditions with {
    +         *     the UE_A entity isAttachedTo the EPC_A and
    +         *     the UE_A entity isRegisteredTo the IMS_A
    +         * }
    +         * 
    +         * Expected behaviour
    +         * ensure that {
    +         *     when {
    +         *         the IMS_S_CSCF_A entity isRequestedToSend a PRACK
    +         *     }
    +         *     then {
    +         *         the IMS_P_CSCF_A entity sends an PRACK
    +         *          to the UE_A entity
    +         *         }
    +         *     }
    +         */
    +        function f_mtc_check_TP_GM_PCSCF_PRACK_01(
    +                                                   in SipInterfaceMonitor p_monitorCompRef,
    +                                                   in boolean p_checkMessage := false
    +                                                   ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var SipMessage v_sip;
    +                
    +                // Check the PRACK
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipRequest(mw_TP_GM_PCSCF_PRACK_01(
    +                                                                                                   -,
    +                                                                                                   -, // FIXME Set expected value
    +                                                                                                   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                   mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                   ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_PRACK_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_GM_PCSCF_PRACK_01 - Request",
    +                                                        true,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
    +                // Check REGISTER 200 OK response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                    ))
    +                                                        },
    +                                                        {
    +                                                            mw_SipResponse(mw_Response_2xx_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_GM_PCSCF_PRACK_01 - Response",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_GM_PCSCF_PRACK_01
    +        
    +    } // End of group imsPrack
    +    
         group imsInvite {
             
             /**
    @@ -1122,28 +1214,33 @@ module AtsImsIot_TP_behavior_GM {
              *         }
              *     }
              */
    -        function f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(
    +        function f_mtc_check_TP_GM_PCSCF_RE_INVITE_01( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    -            }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_GM_PCSCF_RE_INVITE_01",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
    +             if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipRequest(mw_TP_GM_PCSCF_RE_INVITE_01(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_GM_PCSCF_RE_INVITE_01 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +             }
             } // End of function TP_GM_PCSCF_RE_INVITE_01
             
             /**
    @@ -1190,76 +1287,91 @@ module AtsImsIot_TP_behavior_GM {
              *         }
              *     }
              */
    -        function f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(
    +        function f_mtc_check_TP_GM_PCSCF_RE_INVITE_02( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    -            }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_GM_PCSCF_RE_INVITE_02",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
    +             if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipRequest(mw_TP_GM_PCSCF_RE_INVITE_02(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_GM_PCSCF_RE_INVITE_02 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +             }
             } // End of function TP_GM_PCSCF_RE_INVITE_02
             
             function f_mtc_check_TP_GM_PCSCF_RE_INVITE_03( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    -            }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_GM_PCSCF_RE_INVITE_03",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
    +             if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipRequest(mw_TP_GM_PCSCF_RE_INVITE_03(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_GM_PCSCF_RE_INVITE_03 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +             }
             } // End of function TP_GM_PCSCF_RE_INVITE_03
             
             function f_mtc_check_TP_GM_PCSCF_RE_INVITE_04( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    -            }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_GM_PCSCF_RE_INVITE_04",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
    +             if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipRequest(mw_TP_GM_PCSCF_RE_INVITE_04(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_GM_PCSCF_RE_INVITE_04 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +             }
             } // End of function TP_GM_PCSCF_RE_INVITE_04
             
             
    @@ -1646,6 +1758,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -1711,6 +1824,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -1737,6 +1851,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -1763,6 +1878,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2243,6 +2359,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2298,6 +2415,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2324,6 +2442,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2350,6 +2469,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2376,6 +2496,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2402,6 +2523,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2631,6 +2753,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2686,6 +2809,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2712,6 +2836,7 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
                                                                               )) 
    @@ -2738,9 +2863,10 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    index 7452e91..db1cf84 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    @@ -287,7 +287,6 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                          ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
                     var SipMessage v_sip;
                     
                     // Check the second REGISTER
    @@ -297,7 +296,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipRequest(
                                                                               mw_TP_MW_PCSCF_REGISTER_02(
                                                                                                          mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                     mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain),
    +                                                                                                     mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
                                                                                                          mw_Authorization_other
                                                                                                          )
                                                                               )
    @@ -321,13 +320,12 @@ module AtsImsIot_TP_behavior_MW_PS {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                             { 
    -                                                            mw_SipResponse(mw_Response_200onREGISTER_IMS(
    -                                                                                                         v_sip.request.msgHeader.callId,
    -                                                                                                         v_sip.request.msgHeader.cSeq,
    -                                                                                                         ?, // UE URI
    -                                                                                                         mw_contact(mw_ContactAddress),
    -                                                                                                         ? //FIXME SUT S-CSCF?
    -                                                                                                         ))
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                   ))
                                                             },
                                                             {
                                                                 mw_SipResponse(mw_Response_2xx_Base)
    @@ -551,21 +549,24 @@ module AtsImsIot_TP_behavior_MW_PS {
                     if (not(isbound(v_sip))) {
                         return;
                     }
    +                log("v_sip: ", v_sip);// register is expected
                     // Check DeREGISTER 200 OK response
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                             {
    -                                                            mw_SipResponse(mw_Response_200onREGISTER_IMS(
    -                                                                                                         v_sip.request.msgHeader.callId,
    -                                                                                                         v_sip.request.msgHeader.cSeq
    -                                                                                                         ))
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                    ))
                                                             },
                                                             {
                                                                 mw_SipResponse(mw_Response_2xx_Base)
                                                             },
                                                             {0, omit},
                                                             "TP_MW_PCSCF_REGISTER_07 - 200 OK",
    -                                                        true,
    +                                                        false,
                                                             p_checkMessage
                                                             )
                                            );
    @@ -734,8 +735,8 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     var SipMessage v_sip;
                     
                     // Check the SUBSCRIBE
    @@ -745,8 +746,8 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipRequest(
                                                                               mw_TP_MW_PCSCF_SUBSCRIBE_01(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                           ))
                                                             },
                                                             { mw_SipRequest(mw_SUBSCRIBE_Request_Base) },
    @@ -869,8 +870,8 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                        in boolean p_checkMessage := false
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     var SipMessage v_sip;
                     
                     // Check the NOTIFY
    @@ -880,8 +881,8 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipRequest(mw_TP_MW_PCSCF_NOTIFY_01(
                                                                                                        -, 
                                                                                                        -, // FIXME Set expected value
    -                                                                                                   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                   mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                   mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                   mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                        ))
                                                             },
                                                             { mw_SipRequest (mw_NOTIFY_Request_Base) },
    @@ -920,6 +921,85 @@ module AtsImsIot_TP_behavior_MW_PS {
             
         } // End of group imsNotify
         
    +    group imsPrack {
    +        
    +        /**
    +         * @desc Verify that the P-CSCF successfully processes a PRACK in case of IMS Administrative de-registration.
    +         * Initial conditions with {
    +         *     the UE_A entity isAttachedTo the EPC_A and
    +         *     the UE_A entity isRegisteredTo the IMS_A
    +         * }
    +         * 
    +         * Expected behaviour
    +         * ensure that {
    +         *     when {
    +         *         the IMS_S_CSCF_A entity isRequestedToSend a PRACK
    +         *     }
    +         *     then {
    +         *         the IMS_P_CSCF_A entity sends an PRACK
    +         *          to the UE_A entity
    +         *         }
    +         *     }
    +         */
    +        function f_mtc_check_TP_MW_PCSCF_PRACK_01(
    +                                                   in SipInterfaceMonitor p_monitorCompRef,
    +                                                   in boolean p_checkMessage := false
    +                                                   ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var SipMessage v_sip;
    +                
    +                // Check the PRACK
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipRequest(mw_TP_MW_PCSCF_PRACK_01(
    +                                                                                                   -,
    +                                                                                                   -, // FIXME Set expected value
    +                                                                                                   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                   mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                   ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_PRACK_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_PRACK_01 - Request",
    +                                                        true,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
    +                // Check REGISTER 200 OK response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                    ))
    +                                                        },
    +                                                        {
    +                                                            mw_SipResponse(mw_Response_2xx_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_PRACK_01 - Response",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_PCSCF_PRACK_01
    +        
    +    } // End of group imsPrack
    +    
         group imsInvite {
             
             /**
    @@ -1174,28 +1254,33 @@ module AtsImsIot_TP_behavior_MW_PS {
              *         }
              *     }
              */
    -        function f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(
    +        function f_mtc_check_TP_MW_PCSCF_RE_INVITE_01( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    +            if (isvalue(p_monitorCompRef)) {
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipRequest(mw_TP_MW_PCSCF_RE_INVITE_01(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_RE_INVITE_01 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
                 }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_MW_PCSCF_RE_INVITE_01",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
             } // End of function TP_MW_PCSCF_RE_INVITE_01
             
             /**
    @@ -1242,76 +1327,91 @@ module AtsImsIot_TP_behavior_MW_PS {
              *         }
              *     }
              */
    -        function f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(
    +        function f_mtc_check_TP_MW_PCSCF_RE_INVITE_02( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    +            if (isvalue(p_monitorCompRef)) {
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipRequest(mw_TP_MW_PCSCF_RE_INVITE_02(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_RE_INVITE_02 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
                 }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_MW_PCSCF_RE_INVITE_02",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
             } // End of function TP_MW_PCSCF_RE_INVITE_02
             
             function f_mtc_check_TP_MW_PCSCF_RE_INVITE_03( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    +            if (isvalue(p_monitorCompRef)) {
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipRequest(mw_TP_MW_PCSCF_RE_INVITE_03(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_RE_INVITE_03 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
                 }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_MW_PCSCF_RE_INVITE_03",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
             } // End of function TP_MW_PCSCF_RE_INVITE_03
             
             function f_mtc_check_TP_MW_PCSCF_RE_INVITE_04( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    -                                                      in boolean p_forward_to_mtc := false,
    -                                                      in integer p_skipCount := 1
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
    -            var template SkipType v_skip := {0, omit};
    -            
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    +            if (isvalue(p_monitorCompRef)) {
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check the RE-INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipRequest(mw_TP_MW_PCSCF_RE_INVITE_04(
    +                                                                                                      -, // FIXME Set expected value
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      ))
    +                                                        },
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_RE_INVITE_04 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
                 }
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                             { mw_SipRequest(mw_INVITE_Request_Base) },
    -                             {},
    -                             v_skip,
    -                             "TP_MW_PCSCF_RE_INVITE_04",
    -                             p_forward_to_mtc,
    -                             p_checkMessage
    -                             )
    -           );
    -           p_monitorCompRef.done;
             } // End of function TP_MW_PCSCF_RE_INVITE_04
             
             
    @@ -1699,9 +1799,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -1764,9 +1865,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -1790,9 +1892,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -1816,9 +1919,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2331,9 +2435,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2386,9 +2491,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2412,9 +2518,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2438,9 +2545,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2464,9 +2572,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2490,9 +2599,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2735,9 +2845,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2790,9 +2901,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2816,9 +2928,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    @@ -2842,9 +2955,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_200OK(
                                                                                        p_sip.request.msgHeader.cSeq,
    +                                                                                   p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
                                                                                        p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                   )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    index a2293dc..181e5e7 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    @@ -103,10 +103,12 @@ module AtsImsIot_Templates_GM {
             
             template (present) Response mw_200OK(
                                                  template (present) CSeq p_cSeq := ?,
    +                                             template (present) CallId p_callId := ?,
                                                  template (present) From p_from := ?,
                                                  template (present) To p_to := ?
                                                  ) modifies mw_200OK_Base := {
                 msgHeader := {
    +                callId    := p_callId,
                     cSeq      := p_cSeq,
                     fromField := p_from,
                     toField   := p_to
    @@ -184,16 +186,16 @@ module AtsImsIot_Templates_GM {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
             ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := {
                 msgHeader := {
                     fromField := p_from,
                     toField := p_to,
                     authorization := ?,
                     pChargingVector := p_pChargingVector,
    -                pVisitedNetworkID := p_pVisitedNetworkID,
    -                require := mw_require_path
    +                pVisitedNetworkID := p_pVisitedNetworkID
    +                //require := mw_require_path
                 }
             } // End of template mw_TP_GM_PCSCF_REGISTER_01
             
    @@ -201,8 +203,8 @@ module AtsImsIot_Templates_GM {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
             ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
             } // End of template mw_TP_GM_PCSCF_REGISTER_02
             
    @@ -210,8 +212,8 @@ module AtsImsIot_Templates_GM {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
             ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
             } // End of template mw_TP_GM_PCSCF_REGISTER_03
             
    @@ -219,8 +221,8 @@ module AtsImsIot_Templates_GM {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
             ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
             } // End of template mw_TP_GM_PCSCF_REGISTER_04
             
    @@ -228,8 +230,8 @@ module AtsImsIot_Templates_GM {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
             ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
             } // End of template mw_TP_GM_PCSCF_REGISTER_04
             
    @@ -237,18 +239,11 @@ module AtsImsIot_Templates_GM {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?,
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *,
                                                                           template (present) charstring p_expires := "0"
             ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
                 msgHeader := {
    -                fromField := p_from,
    -                toField := p_to,
    -                authorization := p_authorization,
    -                pAccessNetworkInfo := ?,
    -                pChargingVector := p_pChargingVector,
    -                pVisitedNetworkID := p_pVisitedNetworkID,
    -                require := mw_require_path,
                     expires := mw_Expires(p_expires)
                 }
             } // End of template mw_TP_GM_PCSCF_REGISTER_07
    @@ -268,11 +263,12 @@ module AtsImsIot_Templates_GM {
                     toField := p_to,
                     event := m_Event_reg,
                     expires := ?, // checked outside the template
    -                pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    -                pChargingVector :=  mw_PChargingVector({
    -                    {id := "icid-value", paramValue := *}, 
    -                    *
    -                  })
    +                //pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    +                //pChargingVector :=  mw_PChargingVector({
    +                //    {id := "icid-value", paramValue := *}, 
    +                //    *
    +                //  }),
    +                route := ?
                 }
             } // End of template mw_TP_GM_PCSCF_SUBSCRIBE_01
     
    @@ -294,6 +290,29 @@ module AtsImsIot_Templates_GM {
                     requestUri := p_notify_uri, // @TODO
                     sipVersion := c_sipNameVersion
                 },
    +            msgHeader := {
    +                fromField := p_from,
    +                toField := p_to,
    +                event := m_Event_reg
    +                //pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    +                //pChargingVector :=  mw_PChargingVector({
    +                //    {id := "icid-value", paramValue := *}, 
    +                //    *
    +                //  }),
    +            }
    +        } // End of template mw_TP_GM_PCSCF_NOTIFY_01
    +        
    +        template (present) PRACK_Request mw_TP_GM_PCSCF_PRACK_01(
    +                                                                   template (present) CallId p_callId := ?,
    +                                                                   template (present) SipUrl p_notify_uri := ?,
    +                                                                   template (present) From p_from := ?,
    +                                                                   template (present) To p_to := ?
    +        ) modifies mw_PRACK_Request_Base := {
    +            requestLine := {
    +                method := PRACK_E,
    +                requestUri := p_notify_uri, // @TODO
    +                sipVersion := c_sipNameVersion
    +            },
                 msgHeader := {
                     fromField := p_from,
                     toField := p_to,
    @@ -305,7 +324,7 @@ module AtsImsIot_Templates_GM {
                       }),
                     route := ?
                 }
    -        } // End of template mw_TP_GM_PCSCF_NOTIFY_01
    +        } // End of template mw_TP_GM_PCSCF_PRACK_01
             
             template (present) INVITE_Request mw_TP_GM_PCSCF_INVITE_01(
                                                                        template (present) SipUrl p_invite_uri := ?,
    @@ -344,6 +363,34 @@ module AtsImsIot_Templates_GM {
                                                                        ) modifies mw_TP_GM_PCSCF_INVITE_01 := {
             } // End of template mw_TP_GM_PCSCF_INVITE_04
             
    +        template (present) INVITE_Request mw_TP_GM_PCSCF_RE_INVITE_01( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_GM_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_GM_PCSCF_RE_INVITE_01
    +        
    +        template (present) INVITE_Request mw_TP_GM_PCSCF_RE_INVITE_02( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_GM_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_GM_PCSCF_RE_INVITE_02
    +        
    +        template (present) INVITE_Request mw_TP_GM_PCSCF_RE_INVITE_03( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_GM_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_GM_PCSCF_RE_INVITE_03
    +        
    +        template (present) INVITE_Request mw_TP_GM_PCSCF_RE_INVITE_04( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_GM_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_GM_PCSCF_RE_INVITE_014
    +        
             template (present) Response mw_TP_GM_PCSCF_100Trying_01(
                                                                     template (present) CSeq p_cSeq := ?,
                                                                     template (present) From p_from := ?,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    index 7c9abda..5211396 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    @@ -110,10 +110,12 @@ module AtsImsIot_Templates_MW {
             
             template (present) Response mw_200OK(
                                                  template (present) CSeq p_cSeq := ?,
    +                                             template (present) CallId p_callId := ?,
                                                  template (present) From p_from := ?,
                                                  template (present) To p_to := ?
                                                  ) modifies mw_200OK_Base := {
                 msgHeader := {
    +                callId    := p_callId,
                     cSeq      := p_cSeq,
                     fromField := p_from,
                     toField   := p_to
    @@ -191,8 +193,8 @@ module AtsImsIot_Templates_MW {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
             ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := {
                 msgHeader := {
                     fromField := p_from,
    @@ -209,36 +211,20 @@ module AtsImsIot_Templates_MW {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
             ) modifies mw_TP_MW_PCSCF_REGISTER_01 := {
    -            msgHeader := {
    -                fromField := p_from,
    -                toField := p_to,
    -                authorization := p_authorization,
    -                pAccessNetworkInfo := ?,
    -                pChargingVector := p_pChargingVector,
    -                pVisitedNetworkID := p_pVisitedNetworkID,
    -                require := mw_require_path
    -            }
             } // End of template mw_TP_MW_PCSCF_REGISTER_02
             
             template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_07(
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?,
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *,
                                                                           template (present) charstring p_expires := "0"
             ) modifies mw_TP_MW_PCSCF_REGISTER_01 := {
                 msgHeader := {
    -                fromField := p_from,
    -                toField := p_to,
    -                authorization := p_authorization,
    -                pAccessNetworkInfo := ?,
    -                pChargingVector := p_pChargingVector,
    -                pVisitedNetworkID := p_pVisitedNetworkID,
    -                require := mw_require_path,
                     expires := mw_Expires(p_expires)
                 }
             } // End of template mw_TP_MW_PCSCF_REGISTER_07
    @@ -247,18 +233,11 @@ module AtsImsIot_Templates_MW {
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
                                                                           template (present) Authorization p_authorization := ?,
    -                                                                      template (present) PChargingVector p_pChargingVector := ?,
    -                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?,
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *,
                                                                           template (present) charstring p_expires := "0"
             ) modifies mw_TP_MW_PCSCF_REGISTER_01 := {
                 msgHeader := {
    -                fromField := p_from,
    -                toField := p_to,
    -                authorization := p_authorization,
    -                pAccessNetworkInfo := ?,
    -                pChargingVector := p_pChargingVector,
    -                pVisitedNetworkID := p_pVisitedNetworkID,
    -                require := mw_require_path,
                     expires := mw_Expires(p_expires)
                 }
             } // End of template mw_TP_MW_PCSCF_REGISTER_09
    @@ -298,11 +277,12 @@ module AtsImsIot_Templates_MW {
                     toField := p_to,
                     event := m_Event_reg,
                     expires := ?, // checked outside the template
    -                pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    -                pChargingVector :=  mw_PChargingVector({
    -                    {id := "icid-value", paramValue := *}, 
    -                    *
    -                  })
    +                //pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    +                //pChargingVector :=  mw_PChargingVector({
    +                //    {id := "icid-value", paramValue := *}, 
    +                //    *
    +                //  }),
    +                route := ?
                 }
             } // End of template mw_TP_MW_PCSCF_SUBSCRIBE_01
     
    @@ -324,6 +304,29 @@ module AtsImsIot_Templates_MW {
                     requestUri := p_notify_uri, // @TODO
                     sipVersion := c_sipNameVersion
                 },
    +            msgHeader := {
    +                fromField := p_from,
    +                toField := p_to,
    +                event := m_Event_reg
    +                //pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    +                //pChargingVector :=  mw_PChargingVector({
    +                //    {id := "icid-value", paramValue := *}, 
    +                //    *
    +                //  }),
    +            }
    +        } // End of template mw_TP_MW_PCSCF_NOTIFY_01
    +        
    +        template (present) PRACK_Request mw_TP_MW_PCSCF_PRACK_01(
    +                                                                   template (present) CallId p_callId := ?,
    +                                                                   template (present) SipUrl p_notify_uri := ?,
    +                                                                   template (present) From p_from := ?,
    +                                                                   template (present) To p_to := ?
    +        ) modifies mw_PRACK_Request_Base := {
    +            requestLine := {
    +                method := PRACK_E,
    +                requestUri := p_notify_uri, // @TODO
    +                sipVersion := c_sipNameVersion
    +            },
                 msgHeader := {
                     fromField := p_from,
                     toField := p_to,
    @@ -335,7 +338,7 @@ module AtsImsIot_Templates_MW {
                       }),
                     route := ?
                 }
    -        } // End of template mw_TP_MW_PCSCF_NOTIFY_01
    +        } // End of template mw_TP_MW_PCSCF_PRACK_01
             
             template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_01(
                                                                        template (present) SipUrl p_invite_uri := ?,
    @@ -374,6 +377,34 @@ module AtsImsIot_Templates_MW {
                                                                        ) modifies mw_TP_MW_PCSCF_INVITE_01 := {
             } // End of template mw_TP_MW_PCSCF_INVITE_04
             
    +        template (present) INVITE_Request mw_TP_MW_PCSCF_RE_INVITE_01( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_MW_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_MW_PCSCF_RE_INVITE_01
    +        
    +        template (present) INVITE_Request mw_TP_MW_PCSCF_RE_INVITE_02( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_MW_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_MW_PCSCF_RE_INVITE_02
    +        
    +        template (present) INVITE_Request mw_TP_MW_PCSCF_RE_INVITE_03( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_MW_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_MW_PCSCF_RE_INVITE_03
    +        
    +        template (present) INVITE_Request mw_TP_MW_PCSCF_RE_INVITE_04( // TODO To be enforced
    +                                                                      template (present) SipUrl p_invite_uri := ?,
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?
    +                                                                      ) modifies mw_TP_MW_PCSCF_INVITE_01 := {
    +        } // End of template mw_TP_MW_PCSCF_RE_INVITE_014
    +        
             template (present) Response mw_TP_MW_PCSCF_100Trying_01(
                                                                     template (present) CSeq p_cSeq := ?,
                                                                     template (present) From p_from := ?,
    -- 
    GitLab
    
    
    From a3ad244e07ab2c143daf1e411c49f41164df5b25 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Tue, 25 May 2021 14:08:55 +0000
    Subject: [PATCH 149/176] Validate Diameter Rx, Cx interfaces for DRG, REG
     groups
    
    ---
     .../AtsImsIot_Diameter_Templates.ttcn         |   5 +-
     ttcn/AtsImsIot/AtsImsIot_Functions.ttcn       |  11 +-
     ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn          |   8 +-
     ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn          | 596 +++++++++---------
     ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn          |  25 +-
     ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn          |  15 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn  | 187 +++++-
     .../AtsImsIot_TP_behavior_MW_PS.ttcn          | 188 +++++-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn  |   6 +-
     ttcn/AtsImsIot/AtsImsIot_Templates.ttcn       |   7 +
     ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn    |  45 +-
     ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn    |  45 +-
     ttcn/LibDiameter                              |   2 +-
     13 files changed, 796 insertions(+), 344 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    index 1576600..324e689 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    @@ -837,7 +837,10 @@ module AtsImsIot_Diameter_Templates {
                     template AAR_MSG mw_AAR_MediaComponent_specificActionLossOfBearer modifies mw_AAR_basic := {
                         aAR_Body :={
                             media_Component_Description := {mw_mediaComponentDescription_SubComponentFlowStatusEnabled},
    -                        specific_Action := {mw_specificAction(INDICATION_OF_LOSS_OF_BEARER_E)},
    +                        specific_Action := {((mw_specificAction(INDICATION_OF_LOSS_OF_BEARER_E))),
    +                                            (?,(mw_specificAction(INDICATION_OF_LOSS_OF_BEARER_E))),
    +                                            (?,?,(mw_specificAction(INDICATION_OF_LOSS_OF_BEARER_E)))
    +                                           },
                             framed_IP_Address := ?
                             //framed_IPv6_Address := *,
                         }
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    index 99705ec..11f5666 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    @@ -3141,7 +3141,8 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria);
            */     
           function f_gen_diameter_receive( 
             in charstring p_tpId,
    -        in template SkipTypeDiameter p_skip
    +        in template SkipTypeDiameter p_skip,
    +        in boolean p_noDiameterMessageExpected
           ) runs on DiameterInterfaceMonitor {
                   var integer skipCount := valueof(p_skip.skipCount);
                   tc_wait.start;
    @@ -3153,6 +3154,9 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria);
                       log("***f_gen_diameter_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****");
                       repeat;
                   }
    +              [p_noDiameterMessageExpected == true] tc_wait.timeout {
    +                  f_setConformanceVerdict(pass, "***f_gen_diameter_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****");
    +              }
                   [] tc_wait.timeout {
                       f_setConformanceVerdict(inconc, "***f_gen_diameter_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****");
                   }
    @@ -3406,7 +3410,8 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria);
               in template SkipTypeDiameter p_skip,
               in charstring p_tpId,
               in boolean p_forwardMtc,
    -          in boolean p_checkMessage
    +          in boolean p_checkMessage,
    +          in boolean p_noDiameterMessageExpected := false
             ) runs on DiameterInterfaceMonitor { 
                 var integer v_size := lengthof(p_failCriteria); 
                 var DefaultList v_defaultArray;
    @@ -3423,7 +3428,7 @@ log ("### f_imsIot_receive: failCriteria=", p_failCriteria);
                     v_defaultArray[0] := activate(a_default_diameter(p_tpId));
                     f_activateDiameterDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage);
                     f_activateDiameterDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage);
    -                f_gen_diameter_receive(p_tpId, p_skip);
    +                f_gen_diameter_receive(p_tpId, p_skip, p_noDiameterMessageExpected);
         
                     for (i := 0; i < lengthof(v_defaultArray); i := i + 1) {
                         deactivate(v_defaultArray[i]);
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    index b8cf4ee..7f55cb8 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    @@ -79,7 +79,7 @@ module AtsImsIot_TD_DRG{
                         f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4
                         f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 6, 7
                         
    -                    f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 11
    +                    f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx, true);// Event 11
                         f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 12
                         f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 13, 14
                         
    @@ -132,13 +132,13 @@ module AtsImsIot_TD_DRG{
                         
                         f_mtc_check_TP_CX_HSS_RTA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 1, 8
                         
    -                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPI); // Event 2
    +                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Event 2
                         //f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // Events 3
                         //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, false); // Events 4
    -                    //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS); // Event 5
    +                    //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS,-); // Event 5
                         //f_mtc_check_TP_MW_PCSCF_NOTIFY_02(vc_vxlte_monitor_components.mwPS, false, true); // Event 6, 7
                         
    -                    f_mtc_check_TP_RX_PCSCF_STR_08(vc_vxlte_monitor_components.rx);// Event 9
    +                    f_mtc_check_TP_RX_PCSCF_STR_08(vc_vxlte_monitor_components.rx, true);// Event 9
                         f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 10
                         f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 11, 12
             
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    index 26d31c6..4e811bd 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    @@ -51,36 +51,36 @@ module AtsImsIot_TD_DTC{
                     //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){
    -	                f_cf_createVxLteMonitor();    
    -	        
    -	                // map/connect component ports
    -	                f_cf_adapter_up ( );
    -	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
    -	                f_cf_VxLteMonitor_Up();
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){
    +                    f_cf_createVxLteMonitor();    
    +            
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    //f_cf_user_up ( v_ueB );
    +                    f_cf_VxLteMonitor_Up();
     
                         //preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    -					// test body
    -					
    -					f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
    -					
    -					//postamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    // test body
    +                    
    +                    f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
    +                    
    +                    //postamble
     	    
     	                //unmap/disconnect component ports
     	                //f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_INT_DTC_01
                 
                 /**
    @@ -96,15 +96,15 @@ module AtsImsIot_TD_DTC{
                     //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    -					                                      PX_DIAMETER_RX_INTERFACENAME,
    -					                                      PX_DIAMETER_CX_IH_INTERFACENAME,
    -					                                      PX_DIAMETER_CX_SH_INTERFACENAME,
    -					                                      PX_SIP_MW_PS_INTERFACENAME,
    -					                                      PX_SIP_MW_IS_INTERFACENAME/*,
    -					                                      PX_SIP_MW_SI_INTERFACENAME*/}))
    -				{
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    +                                                          PX_DIAMETER_RX_INTERFACENAME,
    +                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
    +                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    +                                                          PX_SIP_MW_PS_INTERFACENAME,
    +                                                          PX_SIP_MW_IS_INTERFACENAME/*,
    +                                                          PX_SIP_MW_SI_INTERFACENAME*/}))
    +                {
     	                f_cf_createVxLteMonitor();    
     	        
     	                // map/connect component ports
    @@ -113,44 +113,44 @@ module AtsImsIot_TD_DTC{
     	                //f_cf_user_up ( v_ueB );
     	                f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//postamble
    -					//f_PO_user_home_deregistration ( v_ueB );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    -					// test body
    -					// Check that user A can register to IMS A
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
    -					//f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check
    -					f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
    -					f_mtc_check_TP_MW_PCSCF_REGISTER_09 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 5)
    -					//f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4)
    -					f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 13)
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //postamble
    +                    //f_PO_user_home_deregistration ( v_ueB );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    // test body
    +                    // Check that user A can register to IMS A
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
    +                    //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check
    +                    f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_09 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 5)
    +                    //f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4)
    +                    f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 13)
                         
    -					f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 8)
    -					//f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 8,11)
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 8)
    +                    //f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 8,11)
                         
    -					f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 7)
    -					f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 10,11)
    +                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Event 7)
    +                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 10,11)
                         
    -					f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 14)
    +                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 14)
                        
    -					//f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    -					//f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
    +                    //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    +                    //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
         
    -					//postamble
    +                    //postamble
     	    
     	                //unmap/disconnect component ports
     	                //f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_INT_DTC_02
                 
                 /**
    @@ -166,8 +166,8 @@ module AtsImsIot_TD_DTC{
                     var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_RX_INTERFACENAME,PX_DIAMETER_CX_IH_INTERFACENAME,PX_DIAMETER_CX_SH_INTERFACENAME,PX_SIP_MW_PS_INTERFACENAME,PX_SIP_MW_IS_INTERFACENAME/*,PX_SIP_MW_SI_INTERFACENAME*/})){
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_RX_INTERFACENAME,PX_DIAMETER_CX_IH_INTERFACENAME,PX_DIAMETER_CX_SH_INTERFACENAME,PX_SIP_MW_PS_INTERFACENAME,PX_SIP_MW_IS_INTERFACENAME/*,PX_SIP_MW_SI_INTERFACENAME*/})){
     	                f_cf_createVxLteMonitor();    
     	        
     	                // map/connect component ports
    @@ -176,46 +176,46 @@ module AtsImsIot_TD_DTC{
     	                f_cf_user_up ( v_ueB );
     	                f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
                         //TODO: user b enable and registration
                         //TODO: make call
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    -					// test body
    -					f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    // test body
    +                    f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
                       
                       
    -					//f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4)
    -					f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 4,5)
    -					f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 6,7)
    -					//TODO: TP for check BYE?
    -					f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 11,12)
    -					f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 13,14)
    +                    //f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4)
    +                    f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 4,5)
    +                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 6,7)
    +                    //TODO: TP for check BYE?
    +                    f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 11,12)
    +                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 13,14)
                       
    -					//f_mtc_check_TP_MW_PCSCF_REGISTER_11 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8,9,15,22)
    +                    //f_mtc_check_TP_MW_PCSCF_REGISTER_11 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8,9,15,22)
                         
    -					f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 18)
    -					//f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 18,21)
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 18)
    +                    //f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 18,21)
                         
    -					f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 16,17)
    -					f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 19,20)
    +                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE)); // Check (UAA - Event 16,17)
    +                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH); // Check (SAA – Event 19,20)
                         
    -					//f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    -					//f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
    +                    //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    +                    //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
         
    -					//postamble
    +                    //postamble
     	    
     	                //unmap/disconnect component ports
     	                f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_INT_DTC_03
                 
                 /**
    @@ -231,8 +231,8 @@ module AtsImsIot_TD_DTC{
                     //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
     	                f_cf_createVxLteMonitor();    
     	        
     	                // map/connect component ports
    @@ -241,14 +241,14 @@ module AtsImsIot_TD_DTC{
     	                //f_cf_user_up ( v_ueB );
     	                f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    -					// test body
    -					f_mtc_check_TP_S6A_HSS_CLR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CLR – Event 1)
    -					f_mtc_check_TP_GX_PCRF_CCA_03 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3,5)
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    // test body
    +                    f_mtc_check_TP_S6A_HSS_CLR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CLR – Event 1)
    +                    f_mtc_check_TP_GX_PCRF_CCA_03 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3,5)
                       	f_mtc_check_TP_S6A_MME_CLA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CLA – Event 6) 
                         
                         //postamble
    @@ -258,10 +258,10 @@ module AtsImsIot_TD_DTC{
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_INT_DTC_04
                 
                 /**
    @@ -277,8 +277,8 @@ module AtsImsIot_TD_DTC{
                     //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S6A_INTERFACENAME})){
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S6A_INTERFACENAME})){
     	                f_cf_createVxLteMonitor();    
     	        
     	                // map/connect component ports
    @@ -287,26 +287,26 @@ module AtsImsIot_TD_DTC{
     	                //f_cf_user_up ( v_ueB );
     	                f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					//f_mtc_userRadioEnabled ( v_ueA, false, true );
    -					// test body
    -					f_mtc_check_TP_S6A_MME_PUR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUR – Event 1)
    -					f_mtc_check_TP_S6A_HSS_PUA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUA – Event 2) 
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    //f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    // test body
    +                    f_mtc_check_TP_S6A_MME_PUR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUR – Event 1)
    +                    f_mtc_check_TP_S6A_HSS_PUA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUA – Event 2) 
                         
    -					//postamble
    +                    //postamble
     	    
     	                //unmap/disconnect component ports
     	                //f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_INT_DTC_05
                 
             } //End of group NetworkDeatachment
    @@ -326,40 +326,40 @@ module AtsImsIot_TD_DTC{
                     //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME})){
    -	                f_cf_createVxLteMonitor();    
    -	        
    -	                // map/connect component ports
    -	                f_cf_adapter_up ( );
    -	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
    -	                f_cf_VxLteMonitor_Up();
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME})){
    +                    f_cf_createVxLteMonitor();    
    +            
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    //f_cf_user_up ( v_ueB );
    +                    f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    -					
    -					// test body
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
                         
    -					f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    -					f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    -					f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    -					f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
    -					
    -					//postamble
    -	    
    -	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
    -	                f_cf_user_down ( v_ueA );
    -	                f_cf_VxLteMonitor_Down();
    -	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                    // test body
    +                    
    +                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    +                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    +                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    +                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
    +                    
    +                    //postamble
    +        
    +                    //unmap/disconnect component ports
    +                    //f_cf_user_down ( v_ueB );
    +                    f_cf_user_down ( v_ueA );
    +                    f_cf_VxLteMonitor_Down();
    +                    f_cf_adapter_down ( );
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_RMI_DTC_01
                 
                 /**
    @@ -375,8 +375,8 @@ module AtsImsIot_TD_DTC{
                     //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_CX_SH_INTERFACENAME,
    @@ -386,53 +386,53 @@ module AtsImsIot_TD_DTC{
                                                               PX_SIP_MW_IS_INTERFACENAME/*,
                                                               PX_SIP_MW_SI_INTERFACENAME*/}))
                     {
    -	                f_cf_createVxLteMonitor();    
    -	        
    -	                // map/connect component ports
    -	                f_cf_adapter_up ( );
    -	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
    -	                f_cf_VxLteMonitor_Up();
    +                    f_cf_createVxLteMonitor();    
    +            
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    //f_cf_user_up ( v_ueB );
    +                    f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    
    +                    // test body
                         
    -					// test body
    +                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    +                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    +                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    +                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
                         
    -					f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    -					f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    -					f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    -					f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
    -					
    -					f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    +                    f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
                         f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
    -					
    -					//f_mtc_check_TP_MW_PCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
    -					f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
    +                    
    +                    //f_mtc_check_TP_MW_PCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
    +                    f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 10)
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 11,12)
    +                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Event 11,12)
                         f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 14,15)
    -                    	
    -					f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    -					f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    -					f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
    +                        
    +                    f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    +                    f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    +                    f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
        
                         
    -					//postamble
    -	    
    -	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
    -	                f_cf_user_down ( v_ueA );
    -	                f_cf_VxLteMonitor_Down();
    -	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                    //postamble
    +        
    +                    //unmap/disconnect component ports
    +                    //f_cf_user_down ( v_ueB );
    +                    f_cf_user_down ( v_ueA );
    +                    f_cf_VxLteMonitor_Down();
    +                    f_cf_adapter_down ( );
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_RMI_DTC_02
                 
                 /**
    @@ -448,8 +448,8 @@ module AtsImsIot_TD_DTC{
                     var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_CX_SH_INTERFACENAME,
    @@ -459,62 +459,62 @@ module AtsImsIot_TD_DTC{
                                                               PX_SIP_MW_IS_INTERFACENAME/*,
                                                               PX_SIP_MW_SI_INTERFACENAME*/}))
                     {
    -	                f_cf_createVxLteMonitor();    
    -	        
    -	                // map/connect component ports
    -	                f_cf_adapter_up ( );
    -	                f_cf_user_up ( v_ueA );
    -	                f_cf_user_up ( v_ueB );
    -	                f_cf_VxLteMonitor_Up();
    +                    f_cf_createVxLteMonitor();    
    +            
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    f_cf_user_up ( v_ueB );
    +                    f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
                         
    -					// test body
    +                    // test body
                         
    -					f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    -					f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    -					f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    -					f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
    +                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    +                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    +                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    +                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
                         
    -					//f_mtc_check_TP_MW_PCSCF_BYE_07 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
    -					f_mtc_check_TP_IC_IBCF_BYE_03 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
    +                    //f_mtc_check_TP_MW_PCSCF_BYE_07 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
    +                    f_mtc_check_TP_IC_IBCF_BYE_03 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
                         
    -					f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    -					f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
    -					f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    -					f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    -					f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
    -					
    -					f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    -					f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
    +                    f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    +                    f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
    +                    f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    +                    f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    +                    f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
    +                    
    +                    f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    +                    f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
                         
    -					//f_mtc_check_TP_MW_PCSCF_REGISTER_13 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
    -					f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
    -					//f_mtc_check_TP_MW_SCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 10)
    +                    //f_mtc_check_TP_MW_PCSCF_REGISTER_13 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
    +                    f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
    +                    //f_mtc_check_TP_MW_SCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 10)
                         
    -					f_mtc_check_TP_CX_HSS_UAA_04 ( vc_vxlte_monitor_components.cxIH, false ); // Check (UAA - Event 11,12)
    -					f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 14,15)
    +                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Event 11,12)
    +                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 14,15)
                             
    -					f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    -					f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    -					f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
    +                    f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    +                    f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    +                    f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
        
                         
    -					//postamble
    -	    
    -	                //unmap/disconnect component ports
    -	                f_cf_user_down ( v_ueB );
    -	                f_cf_user_down ( v_ueA );
    -	                f_cf_VxLteMonitor_Down();
    -	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                    //postamble
    +        
    +                    //unmap/disconnect component ports
    +                    f_cf_user_down ( v_ueB );
    +                    f_cf_user_down ( v_ueA );
    +                    f_cf_VxLteMonitor_Down();
    +                    f_cf_adapter_down ( );
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_RMI_DTC_03
                 
                 /**
    @@ -530,46 +530,46 @@ module AtsImsIot_TD_DTC{
                     var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_S6A_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME}))
                     {
    -	                f_cf_createVxLteMonitor();    
    -	        
    -	                // map/connect component ports
    -	                f_cf_adapter_up ( );
    -	                f_cf_user_up ( v_ueA );
    -	                f_cf_user_up ( v_ueB );
    -	                f_cf_VxLteMonitor_Up();
    +                    f_cf_createVxLteMonitor();    
    +            
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    f_cf_user_up ( v_ueB );
    +                    f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
                         
    -					// test body
    -					f_mtc_check_TP_S6A_HSS_CLR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CCA – Event 4)
    +                    // test body
    +                    f_mtc_check_TP_S6A_HSS_CLR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CCA – Event 4)
                        
    -					f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    -					f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    -					f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    -					f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
    -					
    -					f_mtc_check_TP_S6A_MME_CLA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CCA – Event 4)
    +                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    +                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    +                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    +                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
                         
    -					//postamble
    -	    
    -	                //unmap/disconnect component ports
    -	                f_cf_user_down ( v_ueB );
    -	                f_cf_user_down ( v_ueA );
    -	                f_cf_VxLteMonitor_Down();
    -	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                    f_mtc_check_TP_S6A_MME_CLA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (CCA – Event 4)
    +                    
    +                    //postamble
    +        
    +                    //unmap/disconnect component ports
    +                    f_cf_user_down ( v_ueB );
    +                    f_cf_user_down ( v_ueA );
    +                    f_cf_VxLteMonitor_Down();
    +                    f_cf_adapter_down ( );
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_RMI_DTC_04
                 
                 /**
    @@ -579,42 +579,42 @@ module AtsImsIot_TD_DTC{
                  */
                 testcase TC_VxLTE_RMI_DTC_05 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
    -				var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -				//var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
    -				var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -				//var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
    +                var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    +                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
    +                var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    +                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
    -				f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S6A_INTERFACENAME})){
    -					f_cf_createVxLteMonitor();    
    +                f_setVxLteMonIterfacesAvailability();
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S6A_INTERFACENAME})){
    +                    f_cf_createVxLteMonitor();    
                 
    -					// map/connect component ports
    -					f_cf_adapter_up ( );
    -					f_cf_user_up ( v_ueA );
    -					//f_cf_user_up ( v_ueB );
    -					f_cf_VxLteMonitor_Up();
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    //f_cf_user_up ( v_ueB );
    +                    f_cf_VxLteMonitor_Up();
     
    -					//preamble
    -					f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -					//f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -					//f_PO_user_home_deregistration ( v_ueA );
    -					//f_mtc_userRadioEnabled ( v_ueA, false, true );
    -					// test body
    -					f_mtc_check_TP_S6A_MME_PUR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUR – Event 1)
    -					f_mtc_check_TP_S6A_HSS_PUA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUA – Event 2) 
    +                    //preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    +                    //f_PO_user_home_deregistration ( v_ueA );
    +                    //f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    // test body
    +                    f_mtc_check_TP_S6A_MME_PUR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUR – Event 1)
    +                    f_mtc_check_TP_S6A_HSS_PUA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (PUA – Event 2) 
                         
    -					//postamble
    +                    //postamble
             
    -					//unmap/disconnect component ports
    -					//f_cf_user_down ( v_ueB );
    -					f_cf_user_down ( v_ueA );
    -					f_cf_VxLteMonitor_Down();
    -					f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                    //unmap/disconnect component ports
    +                    //f_cf_user_down ( v_ueB );
    +                    f_cf_user_down ( v_ueA );
    +                    f_cf_VxLteMonitor_Down();
    +                    f_cf_adapter_down ( );
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_RMI_DTC_05
             } //End of group networkAttachmentAndDefaultBearer
         } // End of group Roaming
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    index 52c3ed8..d1641f1 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    @@ -82,9 +82,9 @@ module AtsImsIot_TD_INI{
                             //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
                             
     
    -                        // FIXME f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, false, v_sip); // Event 1
    -                        // FIXME log("v_sip", v_sip);
    -                        // FIXME f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, false, v_sip);
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1
    +                        log("v_sip GmA", v_sip);
    +                        f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip);
     
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2
    @@ -96,14 +96,21 @@ module AtsImsIot_TD_INI{
     
     
                             f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 6
    -                        log("v_sip", v_sip);
    +                        log("v_sip MwPS", v_sip);
                             f_mtc_check_TP_MW_PCSCF_100Trying_01(vc_vxlte_monitor_components.mwPS, -, v_sip);
             
                             f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 8
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 8
                             f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8
                             
    -                        //TODO 183
    +                        // 183 Session Progress
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15
    +                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
    +                        
    +                        // PRACK fater 183 Session Progress: require field is present
    +                        // FIXME Add check of requires SIP message header to check PRACK
    +                        f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15
    +                        f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
                             
                             //Rx/Gx exchange after 183(SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16
    @@ -116,10 +123,14 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
                             
                             f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11
    -                        
    -
                             f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16
                             
    +                        // PRACK after 180 Session Progress: require field is present
    +                        // FIXME Add check of requires SIP message header to check PRACK
    +                        f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15
    +                        f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
    +                        
    +                        
                             f_mtc_userCheckRinging(v_ueB);
                             f_mtc_userCheckPeerIsRinging(v_ueA);
                             f_mtc_userAnswerCall(v_ueB);
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    index c1f6cf7..fb72bde 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    @@ -93,10 +93,11 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // TODO Events 22, 23
                         f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPI); // TODO Events 22, 23
     
    -                    //FIXME Rx and Gx interfaces not in PCAP traces
    -                    f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// TODO Event 25
    -                    f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // TODO Event 26
    -                    f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // TODO Event 27, 28
    +                    f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx, true);// Event 25 //true because AAR repeated in next TP
    +                    f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 26
    +                    
    +                    //Gx interface has not been validated yet
    +                    //f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 27, 28
     
                         // postamble
                         f_PO_user_home_deregistration ( v_ueA );
    @@ -220,9 +221,11 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.gmA); // Events 25, 28
                         f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS); // Events 26, 27
     
    -                    f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 29
    +                    f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx, true);// Event 29 //true because AAR repeated in next TP
                         f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 30
    -                    f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 31, 32
    +                    
    +                    //Gx interface has not been validated yet
    +                    //f_mtc_check_TP_GX_PGW_RAA_01(vc_vxlte_monitor_components.gx); // Event 31, 32
                         
                         // postamble
                         f_PO_user_home_deregistration ( v_ueA );
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    index ce7521e..f6e058e 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    @@ -926,11 +926,11 @@ module AtsImsIot_TP_behavior_GM {
              */
             function f_mtc_check_TP_GM_PCSCF_PRACK_01(
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := false
    +                                                   in boolean p_checkMessage := false,
    +                                                   in SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
                     var SipMessage v_sip;
                     
                     // Check the PRACK
    @@ -940,8 +940,8 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipRequest(mw_TP_GM_PCSCF_PRACK_01(
                                                                                                        -,
                                                                                                        -, // FIXME Set expected value
    -                                                                                                   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                   mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                   p_sip.request.msgHeader.fromField,
    +                                                                                                   p_sip.request.msgHeader.toField
                                                                                                        ))
                                                             },
                                                             { mw_SipRequest(mw_PRACK_Request_Base) },
    @@ -1716,6 +1716,183 @@ module AtsImsIot_TP_behavior_GM {
             
         } // End of group ims180Ringing
         
    +    group ims183SessionProgress {
    +        
    +        /**
    +         * @desc Verify that the P-CSCF successfully processes a 183 (SessionProgress) provisional response on initial INVITE (Originating Leg).
    +         * Initial conditions with {
    +         *     the UE_A entity isAttachedTo the EPC_A and
    +         *     the UE_B entity isAttachedTo the EPC_B and
    +         *     the UE_A entity isRegisteredTo the IMS_A and
    +         *     the UE_B entity isRegisteredTo the IMS_B
    +         * }
    +         * 
    +         * Expected behaviour
    +         * ensure that {
    +         *     when {
    +         *         the UE_A entity hasAchieveInitialINVITE
    +         *     }
    +         *     then {
    +         *         the IMS_P_CSCF_A entity receives a 183_SessionProgress containing
    +         *             From indicating value PX_UE_A_SIP_URI,
    +         *             To indicating value PX_UE_B_SIP_URI,
    +         *             CallId indicating value PX_UE_A_CALLID,
    +         *             Via indicating value PX_UE_A_VIA,
    +         *             Route indicating value PX_UE_A_SERVICE_ROUTE,
    +         *             not PChargingVector,
    +         *             not PChargingFunctionAddresses,
    +         *             not PPreferredIdentity
    +         *             ;
    +         *         from the UE_A entity
    +         *         }
    +         *     }
    +         */
    +        function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(
    +                                                                in SipInterfaceMonitor p_monitorCompRef,
    +                                                                in boolean p_checkMessage := false,
    +                                                                in SipMessage p_sip
    +                                                                ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_GM_PCSCF_183SessionProgress_01(
    +                                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                                               p_sip.request.msgHeader.fromField,
    +                                                                                                               p_sip.request.msgHeader.toField
    +                                                                                                               )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_GM_PCSCF_183SESSION_PROGRESS_01",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01
    +        
    +        /**
    +         * @desc Verify that the P-CSCF successfully processes a 183 (SessionProgress) provisional response on initial INVITE (Terminating Leg).
    +         * Initial conditions with {
    +         *     the UE_A entity isAttachedTo the EPC_A and
    +         *     the UE_B entity isAttachedTo the EPC_B and
    +         *     the UE_A entity isRegisteredTo the IMS_A and
    +         *     the UE_B entity isRegisteredTo the IMS_B
    +         * }
    +         * 
    +         * Expected behaviour
    +         * ensure that {
    +         *     when {
    +         *         the UE_B entity sends a 183_SessionProgress containing
    +         *             From indicating value PX_UE_B_SIP_URI,
    +         *             To indicating value PX_UE_A_SIP_URI,
    +         *             CallId indicating value PX_UE_B_CALLID,
    +         *             Via indicating value PX_UE_B_VIA,
    +         *             Route indicating value PX_UE_B_SERVICE_ROUTE,
    +         *             not PChargingVector,
    +         *             not PChargingFunctionAddresses,
    +         *             not PPreferredIdentity
    +         *             ;
    +         *         to the IMS_P_CSCF_B entity
    +         *         
    +         *     }
    +         *     then {
    +         *         the IMS_P_CSCF_B entity receives a 183_SessionProgress containing
    +         *             From indicating value PX_UE_B_SIP_URI,
    +         *             To indicating value PX_UE_A_SIP_URI,
    +         *             CallId indicating value PX_UE_B_CALLID,
    +         *             Via indicating value PX_UE_B_VIA,
    +         *             Route indicating value PX_UE_B_SERVICE_ROUTE,
    +         *             not PChargingVector,
    +         *             not PChargingFunctionAddresses,
    +         *             not PPreferredIdentity
    +         *             ;
    +         *         from the UE_B entity
    +         *         }
    +         *     }
    +         */
    +        function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02(
    +                                                       in SipInterfaceMonitor p_monitorCompRef,
    +                                                       in boolean p_checkMessage := false,
    +                                                       in SipMessage p_sip
    +                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_GM_PCSCF_183SessionProgress_02(
    +                                                                                                       p_sip.request.msgHeader.cSeq,
    +                                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                                       p_sip.request.msgHeader.toField
    +                                                                          )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_GM_PCSCF_183SESSION_PROGRESS_02",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02
    +        
    +        function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_03(
    +                                                       in SipInterfaceMonitor p_monitorCompRef,
    +                                                       in boolean p_checkMessage := false,
    +                                                       in SipMessage p_sip
    +                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_GM_PCSCF_183SessionProgress_03(
    +                                                                                                       p_sip.request.msgHeader.cSeq,
    +                                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                                       p_sip.request.msgHeader.toField
    +                                                                          )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_GM_PCSCF_183SESSION_PROGRESS_03",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_03
    +        
    +        function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_04(
    +                                                       in SipInterfaceMonitor p_monitorCompRef,
    +                                                       in boolean p_checkMessage := false,
    +                                                       in SipMessage p_sip
    +                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_GM_PCSCF_183SessionProgress_04(
    +                                                                                                       p_sip.request.msgHeader.cSeq,
    +                                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                                       p_sip.request.msgHeader.toField
    +                                                                          )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_GM_PCSCF_183SESSION_PROGRESS_04",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_04
    +        
    +    } // End of group ims183SessionProgress
    +    
         group ims200Ok {
             
             /**
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    index db1cf84..10b01fa 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    @@ -943,11 +943,11 @@ module AtsImsIot_TP_behavior_MW_PS {
              */
             function f_mtc_check_TP_MW_PCSCF_PRACK_01(
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := false
    +                                                   in boolean p_checkMessage := false,
    +                                                   in SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
                     var SipMessage v_sip;
                     
                     // Check the PRACK
    @@ -957,8 +957,8 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipRequest(mw_TP_MW_PCSCF_PRACK_01(
                                                                                                        -,
                                                                                                        -, // FIXME Set expected value
    -                                                                                                   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                   mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                   p_sip.request.msgHeader.fromField,
    +                                                                                                   p_sip.request.msgHeader.toField
                                                                                                        ))
                                                             },
                                                             { mw_SipRequest(mw_PRACK_Request_Base) },
    @@ -1747,6 +1747,184 @@ module AtsImsIot_TP_behavior_MW_PS {
             
         } // End of group ims180Ringing
         
    +    group ims183SessionProgress {
    +        
    +        /**
    +         * @desc Verify that the P-CSCF successfully processes a 183 (Ringing) provisional response on initial INVITE (Originating Leg).
    +         * Initial conditions with {
    +         *     the UE_A entity isAttachedTo the EPC_A and
    +         *     the UE_B entity isAttachedTo the EPC_B and
    +         *     the UE_A entity isRegisteredTo the IMS_A and
    +         *     the UE_B entity isRegisteredTo the IMS_B
    +         * }
    +         * 
    +         * Expected behaviour
    +         * ensure that {
    +         *     when {
    +         *         the IMS_P_CSCF_A entity receives a 183_SessionProgress containing
    +         *             From indicating value PX_UE_B_SIP_URI,
    +         *             To indicating value PX_UE_A_SIP_URI,
    +         *             CallId indicating value PX_UE_B_CALLID,
    +         *             Via indicating value PX_UE_B_VIA,
    +         *             Route indicating value PX_UE_B_SERVICE_ROUTE
    +         *             ;
    +         *         from the IMS_S_CSCF_A entity
    +         *     }
    +         *     then {
    +         *         the IMS_P_CSCF_A entity sends a 183_SessionProgress containing
    +         *             From indicating value PX_UE_B_SIP_URI,
    +         *             To indicating value PX_UE_A_SIP_URI,
    +         *             CallId indicating value PX_UE_B_CALLID,
    +         *             Via indicating value PX_UE_B_VIA,
    +         *             Route indicating value PX_UE_B_SERVICE_ROUTE
    +         *             ;
    +         *         to the UE_A entity
    +         *         }
    +         *     }
    +         */
    +        function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_01(
    +                                                                in SipInterfaceMonitor p_monitorCompRef,
    +                                                                in boolean p_checkMessage := false,
    +                                                                in SipMessage p_sip
    +                                                                ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_MW_PCSCF_183SessionProgress_01(
    +                                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                                               p_sip.request.msgHeader.fromField,
    +                                                                                                               p_sip.request.msgHeader.toField
    +                                                                                                               )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_MW_PCSCF_183SESSION_PROGRESS_01",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_01
    +        
    +        /**
    +         * @desc Verify that the P-CSCF successfully processes a 183 (Ringing) provisional response on initial INVITE (Terminating Leg)..
    +         * Initial conditions with {
    +         *     the UE_A entity isAttachedTo the EPC_A and
    +         *     the UE_B entity isAttachedTo the EPC_B and
    +         *     the UE_A entity isRegisteredTo the IMS_A and
    +         *     the UE_B entity isRegisteredTo the IMS_B
    +         * }
    +         * 
    +         * Expected behaviour
    +         * ensure that {
    +         *     when {
    +         *         the IMS_P_CSCF_B entity receives a 183_SessionProgress containing
    +         *             From indicating value PX_UE_B_SIP_URI,
    +         *             To indicating value PX_UE_A_SIP_URI,
    +         *             CallId indicating value PX_UE_B_CALLID,
    +         *             Via indicating value PX_UE_B_VIA,
    +         *             Route indicating value PX_UE_B_SERVICE_ROUTE
    +         *             ;
    +         *         from the UE_B entity
    +         *         
    +         *     }
    +         *     then {
    +         *         the IMS_P_CSCF_B entity sends a 183_SessionProgress containing
    +         *             From indicating value PX_UE_B_SIP_URI,
    +         *             To indicating value PX_UE_A_SIP_URI,
    +         *             CallId indicating value PX_UE_B_CALLID,
    +         *             Via indicating value PX_UE_B_VIA,
    +         *             Route indicating value PX_UE_B_SERVICE_ROUTE,
    +         *             not PChargingVector,
    +         *             not PChargingFunctionAddresses,
    +         *             not PPreferredIdentity
    +         *             ;
    +         *         to the IMS_S_CSCF_B entity
    +         *         }
    +         *     }
    +         */
    +        function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02(
    +                                                       in SipInterfaceMonitor p_monitorCompRef,
    +                                                       in boolean p_checkMessage := false,
    +                                                       in SipMessage p_sip
    +                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_MW_PCSCF_183SessionProgress_02(
    +                                                                                                       p_sip.request.msgHeader.cSeq,
    +                                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                                       p_sip.request.msgHeader.toField
    +                                                                          )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_MW_PCSCF_183SESSION_PROGRESS_02",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02
    +        
    +        function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_03(
    +                                                       in SipInterfaceMonitor p_monitorCompRef,
    +                                                       in boolean p_checkMessage := false,
    +                                                       in SipMessage p_sip
    +                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_MW_PCSCF_183SessionProgress_03(
    +                                                                                                       p_sip.request.msgHeader.cSeq,
    +                                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                                       p_sip.request.msgHeader.toField
    +                                                                          )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_MW_PCSCF_183SESSION_PROGRESS_03",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_03
    +        
    +        function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_04(
    +                                                       in SipInterfaceMonitor p_monitorCompRef,
    +                                                       in boolean p_checkMessage := false,
    +                                                       in SipMessage p_sip
    +                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 183 SESSION_PROGRESS
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipResponse(mw_TP_MW_PCSCF_183SessionProgress_04(
    +                                                                                                       p_sip.request.msgHeader.cSeq,
    +                                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                                       p_sip.request.msgHeader.toField
    +                                                                          )) 
    +                                                         },
    +                                                         { mw_SipResponse(mw_183SessionProgress_Base) },
    +                                                         { 0, omit },
    +                                                         "TP_MW_PCSCF_183SESSION_PROGRESS_04",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                        );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_04
    +        
    +    } // End of group ims183SessionProgress
    +    
         group ims200Ok {
             
             /**
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
    index c93d1d6..2468838 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
    @@ -171,7 +171,7 @@ group g_PCRF_AAA {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_AcceptableService }
    +                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode/*mw_AAA_AcceptableService*/ }
                         },
                         {
                             DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic }
    @@ -595,6 +595,7 @@ group g_PCSCF_AAR {
             in boolean p_forward_to_mtc := false
         ) runs on ImsTestCoordinator {
             if (isvalue(p_monitorCompRef)){
    +            var boolean v_noDiameterMessageExpected := true;
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    @@ -606,7 +607,8 @@ group g_PCSCF_AAR {
                         {0, omit},
                         "TP_RX_PCSCF_AAR_02 - AAR",
                         p_forward_to_mtc,
    -                    p_checkMessage 
    +                    p_checkMessage,
    +                    v_noDiameterMessageExpected
                     )
                 );
                 p_monitorCompRef.done;
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    index 11e095a..85378af 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    @@ -1898,6 +1898,13 @@ module AtsImsIot_Templates {
     		messageBody := *,
     		payload	:= *
     		}
    +  template Response mw_183SessionProgress_Base  modifies m_Response_Dummy :=
    +        {
    +        statusLine := c_statusLine183,
    +        msgHeader := ?,
    +        messageBody := *,
    +        payload := *
    +        }
       template Response mw_200OK_Base  modifies m_Response_Dummy :=
     		{
     		statusLine := c_statusLine200,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    index 181e5e7..0252074 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    @@ -316,12 +316,12 @@ module AtsImsIot_Templates_GM {
                 msgHeader := {
                     fromField := p_from,
                     toField := p_to,
    -                event := m_Event_reg,
    -                pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    -                pChargingVector :=  mw_PChargingVector({
    -                    {id := "icid-value", paramValue := *}, 
    -                    *
    -                  }),
    +                // TODO Check if it is required for PRACK event := m_Event_reg,
    +                //pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    +                //pChargingVector :=  mw_PChargingVector({
    +                //    {id := "icid-value", paramValue := *}, 
    +                //    *
    +                //  }),
                     route := ?
                 }
             } // End of template mw_TP_GM_PCSCF_PRACK_01
    @@ -457,6 +457,39 @@ module AtsImsIot_Templates_GM {
                                                                      ) modifies mw_TP_GM_PCSCF_180Ringing_01 := {
             } // End of template mw_TP_GM_PCSCF_180Ringing_04
             
    +        template (present) Response mw_TP_GM_PCSCF_183SessionProgress_01(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_183SessionProgress_Base := {
    +            msgHeader := {
    +                cSeq      := p_cSeq,
    +                fromField := p_from,
    +                toField   := p_to
    +            }
    +        } // End of template mw_TP_GM_PCSCF_183SessionProgress_01
    +        
    +        template (present) Response mw_TP_GM_PCSCF_183SessionProgress_02(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_TP_GM_PCSCF_183SessionProgress_01 := {
    +        } // End of template mw_TP_GM_PCSCF_183SessionProgress_02
    +        
    +        template (present) Response mw_TP_GM_PCSCF_183SessionProgress_03(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_TP_GM_PCSCF_183SessionProgress_01 := {
    +        } // End of template mw_TP_GM_PCSCF_183SessionProgress_03
    +        
    +        template (present) Response mw_TP_GM_PCSCF_183SessionProgress_04(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_TP_GM_PCSCF_183SessionProgress_01 := {
    +        } // End of template mw_TP_GM_PCSCF_183SessionProgress_04
    +        
             template (present) ACK_Request mw_TP_GM_PCSCF_ACK_01( // TODO To be enforced
                                                                  template (present) CallId p_callId := ?,
                                                                  template (present) CSeq p_cSeq := ?,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    index 5211396..ec3b9de 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    @@ -330,12 +330,12 @@ module AtsImsIot_Templates_MW {
                 msgHeader := {
                     fromField := p_from,
                     toField := p_to,
    -                event := m_Event_reg,
    -                pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    -                pChargingVector :=  mw_PChargingVector({
    -                    {id := "icid-value", paramValue := *}, 
    -                    *
    -                  }),
    +                // TODO Check if it is required for PRACK event := m_Event_reg,
    +                //pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(-)), // FIXME Set expected value
    +                //pChargingVector :=  mw_PChargingVector({
    +                //    {id := "icid-value", paramValue := *}, 
    +                //    *
    +                //  }),
                     route := ?
                 }
             } // End of template mw_TP_MW_PCSCF_PRACK_01
    @@ -471,6 +471,39 @@ module AtsImsIot_Templates_MW {
                                                                      ) modifies mw_TP_MW_PCSCF_180Ringing_01 := {
             } // End of template mw_TP_MW_PCSCF_180Ringing_04
             
    +        template (present) Response mw_TP_MW_PCSCF_183SessionProgress_01(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_183SessionProgress_Base := {
    +            msgHeader := {
    +                cSeq      := p_cSeq,
    +                fromField := p_from,
    +                toField   := p_to
    +            }
    +        } // End of template mw_TP_MW_PCSCF_183SessionProgress_01
    +        
    +        template (present) Response mw_TP_MW_PCSCF_183SessionProgress_02(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := {
    +        } // End of template mw_TP_MW_PCSCF_183SessionProgress_02
    +        
    +        template (present) Response mw_TP_MW_PCSCF_183SessionProgress_03(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := {
    +        } // End of template mw_TP_MW_PCSCF_183SessionProgress_03
    +        
    +        template (present) Response mw_TP_MW_PCSCF_183SessionProgress_04(
    +                                                                 template (present) CSeq p_cSeq := ?,
    +                                                                 template (present) From p_from := ?,
    +                                                                 template (present) To p_to := ?
    +                                                                 ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := {
    +        } // End of template mw_TP_MW_PCSCF_183SessionProgress_04
    +        
             template (present) ACK_Request mw_TP_MW_PCSCF_ACK_01( // TODO To be enforced
                                                                  template (present) CallId p_callId := ?,
                                                                  template (present) CSeq p_cSeq := ?,
    diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
    index c075292..1bf5e31 160000
    --- a/ttcn/LibDiameter
    +++ b/ttcn/LibDiameter
    @@ -1 +1 @@
    -Subproject commit c07529275de3e75abd8c3dd0aed31aef0f97497b
    +Subproject commit 1bf5e310ba324943a88b4922c5d479b13ef5548a
    -- 
    GitLab
    
    
    From a254bf8f0dcf8b2e76694dc98ccddea9bdcd2cbe Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Thu, 24 Jun 2021 10:18:24 +0200
    Subject: [PATCH 150/176] Diameter TP updates due to validation
    
    ---
     test_purposes/Cx/TP_CX.tplan2 |   2 +-
     test_purposes/Gx/TP_GX.tplan2 |  34 +++++
     test_purposes/Rx/TP_RX.tplan2 | 238 ++++++++++++++++------------------
     ttcn/LibDiameter              |   2 +-
     ttcn/LibSip                   |   2 +-
     5 files changed, 146 insertions(+), 132 deletions(-)
    
    diff --git a/test_purposes/Cx/TP_CX.tplan2 b/test_purposes/Cx/TP_CX.tplan2
    index 156cc4f..601caaf 100644
    --- a/test_purposes/Cx/TP_CX.tplan2
    +++ b/test_purposes/Cx/TP_CX.tplan2
    @@ -154,7 +154,7 @@ Package TP_CX {
                             Destination_Realm_AVP,
                             Server_Name_AVP,
                             Server_Assignment_Type_AVP
    -                            indicating value UNREGISTERED_USER
    +                            indicating value REGISTRATION
                             User_Data_Already_Available_AVP;
                         to the IMS_HSS_A entity
                     }
    diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2
    index 3be289a..dcbdeca 100644
    --- a/test_purposes/Gx/TP_GX.tplan2
    +++ b/test_purposes/Gx/TP_GX.tplan2
    @@ -229,6 +229,40 @@ Package TP_GX {
                 }  
         }  // End of TP_GX_PCRF_CCA_05
          
    +    Test Purpose {
    +        TP Id TP_GX_PCRF_CCA_06
    +        
    +        Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer controle mode selection."
    +        
    +        Reference 
    +            "TS 129 212 [9], clauses 4.5.10"
    +        
    +        Config Id CF_VxLTE_INT
    +        
    +        PICS Selection NONE
    +        
    +        Initial conditions with {
    +        	the UE_A entity isAttachedTo the EPC_A and
    +            the UE_A entity isRegisteredTo the IMS_A
    +        }
    +        
    +        Expected behaviour
    +            ensure that {
    +                when {
    +                    the EPC_PGW_A entity sends an CCR containing
    +                        CC_Request_Type_AVP
    +                            indicating value UPDATE_REQUEST;
    +                    to the EPC_PCRF_A entity
    +                }
    +                then {
    +                    the EPC_PCRF_A entity sends the CCA containing
    +                        Result_Code_AVP
    +                            indicating value DIAMETER_SUCCESS;
    +                    to the EPC_PGW_A entity
    +                }
    +            }  
    +    }  // End of TP_GX_PCRF_CCA_03
    +     
         Test Purpose {
             TP Id TP_GX_PGW_CCR_01
             //TP_EPC_7001_03 from TS 103 029 V5.1.1
    diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2
    index da45319..00a4d28 100644
    --- a/test_purposes/Rx/TP_RX.tplan2
    +++ b/test_purposes/Rx/TP_RX.tplan2
    @@ -45,21 +45,21 @@ Package TP_RX {
                     then {
                         the EPC_PCRF_A entity sends the AAA containing
                             Result_Code_AVP
    -                            indicating value DIAMETER_SUCCESS,
    -                        Acceptable_Service_Info_AVP containing
    -                            "one or more" Media_Component_Description_AVP containing
    -                                Media_Component_Number_AVP
    -                                    indicating value 0,
    -                                Media_Sub_Component_AVP containing
    -                                    Flow_Description_AVP
    -                                    Flow_Usage_AVP
    -                                        indicating value AF_SIGNALLING,
    -                                    Flow_Status_AVP
    -                                        indicating value ENABLED,
    -                                    AF_Signalling_Protocol_AVP
    -                                        indicating value SIP;;;,
    -                        IP_CAN_AVP
    -                        RAT_Type_AVP;
    +                            indicating value DIAMETER_SUCCESS;
    +//                        Acceptable_Service_Info_AVP containing
    +//                            "one or more" Media_Component_Description_AVP containing
    +//                                Media_Component_Number_AVP
    +//                                    indicating value 0,
    +//                                Media_Sub_Component_AVP containing
    +//                                    Flow_Description_AVP
    +//                                    Flow_Usage_AVP
    +//                                        indicating value AF_SIGNALLING,
    +//                                    Flow_Status_AVP
    +//                                        indicating value ENABLED,
    +//                                    AF_Signalling_Protocol_AVP
    +//                                        indicating value SIP;;;,
    +//                        IP_CAN_AVP
    +//                        RAT_Type_AVP;
                         to the IMS_P_CSCF_A entity
                     }
                 }  
    @@ -91,9 +91,7 @@ Package TP_RX {
                     then {
                         the EPC_PCRF_A entity sends the AAA containing
                             Result_Code_AVP
    -                            indicating value DIAMETER_SUCCESS "(2001)"
    -                        Acceptable_Service_Info_AVP containing
    -                            "one or more" Media_Component_Description_AVP;;
    +                            indicating value DIAMETER_SUCCESS "(2001)";
                         to the IMS_P_CSCF_A entity
                     }
                 }  
    @@ -235,17 +233,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value DISABLED '(3)'
    -                            Max_Requested_Bandwidth_DL_AVP
    -                            RR_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP
    +                        Rx_Request_Type_AVP
    +                            indicating value INITIAL_REQUEST '(0)',
    +                        Service_Info_Status_AVP
    +                            indicating value PRELIMINARY_SERVICE_INFORMATION '(1)'
    +                       ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -254,11 +247,11 @@ Package TP_RX {
         Test Purpose {
             TP Id TP_RX_PCSCF_AAR_04
             //TP_EPC_7002_06 from TS 103 029 V5.1.1
    -        Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 180 Ringing with SDP is received."
    +        Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 183 response with SDP is received."
             
             Reference 
                 "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    -        
    +       
             Config Id CF_VxLTE_INT
             
             PICS Selection NONE
    @@ -271,7 +264,7 @@ Package TP_RX {
             Expected behaviour
                 ensure that {
                     when {
    -                    the IMS_P_CSCF_A entity receives a 180_Response_INVITE_with_SDP_offer
    +                    the IMS_P_CSCF_A entity receives a 183_Response_INVITE_with_SDP_offer
                         from the IMS_S_CSCF_A entity
                     }
                     then {
    @@ -280,19 +273,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value ENABLED_DOWNLINK '(1)'
    -                            Max_Requested_Bandwidth_DL_AVP
    -                            Max_Requested_Bandwidth_UL_AVP
    -                            RR_Bandwidth_AVP
    -                            RS_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP 
    +                        Rx_Request_Type_AVP
    +                            indicating value UPDATE_REQUEST '(1)',
    +                        Service_Info_Status_AVP
    +                            indicating value FINAL_SERVICE_INFORMATION '(1)'
    +                        ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -300,8 +286,8 @@ Package TP_RX {
         
         Test Purpose {
             TP Id TP_RX_PCSCF_AAR_05
    -        //TP_EPC_7002_08 from TS 103 029 V5.1.1
    -        Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 200 OK with SDP is received."
    +        //TP_EPC_7002_08 from TS 103 029 V5.1.1 - updated due to validation
    +        Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after reINVITE with SDP is received."
             
             Reference 
                 "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    @@ -318,7 +304,7 @@ Package TP_RX {
             Expected behaviour
                 ensure that {
                     when {
    -                    the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer
    +                    the IMS_P_CSCF_A entity receives a reINVITE_with_SDP_offer
                         from the IMS_S_CSCF_A entity
                     }
                     then {
    @@ -327,19 +313,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value ENABLED '(2)'
    -                            Max_Requested_Bandwidth_DL_AVP
    -                            Max_Requested_Bandwidth_UL_AVP
    -                            RR_Bandwidth_AVP
    -                            RS_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP
    +                        Rx_Request_Type_AVP
    +                            indicating value UPDATE_REQUEST '(1)',
    +                        Service_Info_Status_AVP
    +                            indicating value PRELIMINARY_SERVICE_INFORMATION '(1)'
    +                        ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -374,17 +353,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value DISABLED '(3)'
    -                            Max_Requested_Bandwidth_UL_AVP
    -                            RS_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP
    +                        Rx_Request_Type_AVP
    +                            indicating value INITIAL_REQUEST '(0)',
    +                        Service_Info_Status_AVP
    +                            indicating value PRELIMINARY_SERVICE_INFORMATION '(1)'
    +                        ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -393,7 +367,7 @@ Package TP_RX {
         Test Purpose {
             TP Id TP_RX_PCSCF_AAR_07
             //TP_EPC_7002_12 from TS 103 029 V5.1.1
    -        Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 180 Ringing with SDP is received."
    +        Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 183 response with SDP is received."
             
             Reference 
                 "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    @@ -410,7 +384,7 @@ Package TP_RX {
             Expected behaviour
                 ensure that {
                     when {
    -                    the IMS_P_CSCF_A entity receives a 180_Response_INVITE_with_SDP_offer
    +                    the IMS_P_CSCF_A entity receives a 183_Response_INVITE_with_SDP_offer
                         from the UE_B entity
                     }
                     then {
    @@ -419,19 +393,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value ENABLED_UPLINK '(0)'
    -                            Max_Requested_Bandwidth_DL_AVP
    -                            Max_Requested_Bandwidth_UL_AVP
    -                            RR_Bandwidth_AVP
    -                            RS_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP
    +                        Rx_Request_Type_AVP
    +                            indicating value UPDATE_REQUEST '(1)',
    +                        Service_Info_Status_AVP
    +                            indicating value FINAL_SERVICE_INFORMATION '(1)'
    +                        ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -439,8 +406,8 @@ Package TP_RX {
         
         Test Purpose {
             TP Id TP_RX_PCSCF_AAR_08
    -        //TP_EPC_7002_14 from TS 103 029 V5.1.1
    -        Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 200 OK with SDP is received."
    +        //TP_EPC_7002_14 from TS 103 029 V5.1.1 - update due to validation
    +        Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after reINVITE with SDP is received."
             
             Reference 
                 "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    @@ -457,7 +424,7 @@ Package TP_RX {
             Expected behaviour
                 ensure that {
                     when {
    -                    the IMS_P_CSCF_A entity receives a 200_Response_INVITE_with_SDP_offer
    +                    the IMS_P_CSCF_A entity receives a reINVITE_with_SDP_offer
                         from the UE_B entity
                     }
                     then {
    @@ -466,19 +433,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value ENABLED '(2)'
    -                            Max_Requested_Bandwidth_DL_AVP
    -                            Max_Requested_Bandwidth_UL_AVP
    -                            RR_Bandwidth_AVP
    -                            RS_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP
    +                        Rx_Request_Type_AVP
    +                            indicating value UPDATE_REQUEST '(1)',
    +                        Service_Info_Status_AVP
    +                            indicating value PRELIMINARY_SERVICE_INFORMATION '(1)'
    +                        ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -513,19 +473,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value ENABLED_UPLINK '(0)'
    -                            Max_Requested_Bandwidth_DL_AVP
    -                            Max_Requested_Bandwidth_UL_AVP
    -                            RR_Bandwidth_AVP
    -                            RS_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP
    +                        Rx_Request_Type_AVP
    +                            indicating value UPDATE_REQUEST '(1)',
    +                        Service_Info_Status_AVP
    +                            indicating value FINAL_SERVICE_INFORMATION '(1)'
    +                        ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -560,19 +513,12 @@ Package TP_RX {
                                 indicating value "IPv4_Address of UE_A",
                             "or" Framed_IPv6_Address_AVP 
                                 indicating value "IPv6_Address of UE_A",
    -                        "one or more" Media_Component_Description_AVP containing
    -                            Media_Component_Number_AVP
    -                            Media_Type_AVP
    -                            Flow_Status_AVP
    -                                indicating value ENABLED_DOWNLINK '(1)'
    -                            Max_Requested_Bandwidth_DL_AVP
    -                            Max_Requested_Bandwidth_UL_AVP
    -                            RR_Bandwidth_AVP
    -                            RS_Bandwidth_AVP
    -                            Codec_Data_AVP
    -                            "one or more" Media_Subcomponent_Description_AVP containing
    -                                Flow_Number_AVP
    -                                Flow_Description_AVP;;;
    +                        "one or more" Media_Component_Description_AVP
    +                        Rx_Request_Type_AVP
    +                            indicating value UPDATE_REQUEST '(1)',
    +                        Service_Info_Status_AVP
    +                            indicating value FINAL_SERVICE_INFORMATION '(1)'
    +                        ;
                         to the EPC_PCRF_A entity
                     }
                 }  
    @@ -644,6 +590,40 @@ Package TP_RX {
                     }
                 }  
         }  // End of TP_RX_PCSCF_ASR_01
    +    
    +    Test Purpose {
    +        TP Id TP_RX_PCSCF_RAA_01
    +        
    +        Test objective  "Verify that IUT sends RA-Answer after RAR is received from PCRF."
    +        
    +        Reference 
    +            "TS 129 214 [8], clause 4.4.6.2 5.3.13"
    +        
    +        Config Id CF_VxLTE_INT
    +        
    +        PICS Selection NONE
    +        
    +        Initial conditions with {
    +            the UE_A entity isAttachedTo the EPC_A and
    +            the UE_A entity isRegisteredTo the IMS_A
    +        }
    +        
    +        Expected behaviour
    +            ensure that {
    +                when {
    +                    the EPC_PCRF_A entity sends a RAR containing
    +                        Specific_Action_AVP
    +                            indicating value INDICATION_OF_SUCCESSFUL_RESOURCES_ALLOCATION '(8)';
    +                    to the IMS_P_CSCF_A entity
    +                }
    +                then {
    +                    the IMS_P_CSCF_A entity sends the RAA containing
    +                        Result_Code_AVP
    +                            indicating value DIAMETER_SUCCESS "(2001)";
    +                    to the EPC_PCRF_A entity
    +                }
    +            }  
    +    }  // End of TP_RX_PCSCF_RAA_01
          
         Test Purpose {
             TP Id TP_RX_PCRF_STA_01
    diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
    index 1bf5e31..0e6bfc4 160000
    --- a/ttcn/LibDiameter
    +++ b/ttcn/LibDiameter
    @@ -1 +1 @@
    -Subproject commit 1bf5e310ba324943a88b4922c5d479b13ef5548a
    +Subproject commit 0e6bfc478a043944cca7098f277fc8374cd89504
    diff --git a/ttcn/LibSip b/ttcn/LibSip
    index d241ad8..7d79616 160000
    --- a/ttcn/LibSip
    +++ b/ttcn/LibSip
    @@ -1 +1 @@
    -Subproject commit d241ad8b33e8a60da7805a2254a1554eba3331e7
    +Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d
    -- 
    GitLab
    
    
    From 047e1c6ce6f54d2950fe0447a61ee29ffa51c196 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Thu, 24 Jun 2021 10:22:22 +0200
    Subject: [PATCH 151/176] Diameter TP updates due to validation
    
    ---
     ttcn/LibDiameter | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
    index 0e6bfc4..1bf5e31 160000
    --- a/ttcn/LibDiameter
    +++ b/ttcn/LibDiameter
    @@ -1 +1 @@
    -Subproject commit 0e6bfc478a043944cca7098f277fc8374cd89504
    +Subproject commit 1bf5e310ba324943a88b4922c5d479b13ef5548a
    -- 
    GitLab
    
    
    From 11036e0ed60166b06e214a2cecae8f8a09ac55a8 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Fri, 25 Jun 2021 06:58:20 +0000
    Subject: [PATCH 152/176] Validate SIP Mw interfaces for INI groups
    
    ---
     ttcn/AtsImsIot/AtsImsIot_Functions.ttcn       |   9 +-
     ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn          | 222 +++++--
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn  | 178 ++++--
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn  | 556 ++++++++----------
     .../AtsImsIot_TP_behavior_MW_PS.ttcn          | 213 ++++---
     .../AtsImsIot_TP_behavior_MW_SI.ttcn          | 361 ++++++------
     ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn    |   4 +-
     ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn    |   7 +-
     8 files changed, 872 insertions(+), 678 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    index 11f5666..02da7b0 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    @@ -16,6 +16,7 @@ module AtsImsIot_Functions {
         
         //LibIot
         import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; }
    +    import from LibIot_VxLTE_PIXITS all;
         import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; }
         import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; }
         import from LibIot_Functions { function f_getE2EVerdict; }
    @@ -31,7 +32,6 @@ module AtsImsIot_Functions {
         import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; }
         import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter;}
          
    -     
          group ue {
              
              /**
    @@ -2207,6 +2207,9 @@ module AtsImsIot_Functions {
              * @return if a S-CSCF is avaiable, the domainname of the S-CSCF, 
              *         otherwise error_string
              */
    +        function f_GetEUTScscfAddress_1() return charstring {
    +            return PX_SIP_MW_S_CSCF_IPADDR; // FIXME Add FQDN address in VxLTE PIXITs
    +        }
            function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring {
                 var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces);
                 var integer v_size_ipinterfaceinfo;
    @@ -2249,6 +2252,10 @@ module AtsImsIot_Functions {
              * @return if a S-CSCF is avaiable, the IP Address of the S-CSCF, 
              *         otherwise error_string
              */
    +        function f_GetEUTScscfIpAddress_1() return charstring {
    +            return PX_SIP_MW_S_CSCF_IPADDR;
    +        }
    +        
            function f_GetEUTScscfIpAddress(integer p_ProductIdx) return charstring {
                 var integer v_size_interfaces := lengthof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces);
                 var integer v_size_ipinterfaceinfo;
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    index d1641f1..19a1f20 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    @@ -83,7 +83,6 @@ module AtsImsIot_TD_INI{
                             
     
                             f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1
    -                        log("v_sip GmA", v_sip);
                             f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip);
     
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
    @@ -96,7 +95,6 @@ module AtsImsIot_TD_INI{
     
     
                             f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 6
    -                        log("v_sip MwPS", v_sip);
                             f_mtc_check_TP_MW_PCSCF_100Trying_01(vc_vxlte_monitor_components.mwPS, -, v_sip);
             
                             f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 8
    @@ -107,7 +105,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15
                             f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
                             
    -                        // PRACK fater 183 Session Progress: require field is present
    +                        // PRACK after 183 Session Progress: require field is present
                             // FIXME Add check of requires SIP message header to check PRACK
                             f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15
                             f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
    @@ -229,6 +227,8 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // ( Event 3)
                             log("v_sip", v_sip);
                             
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, -, v_sip);
    +                        
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4)
                             f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx);  // (RAR – Events 5, 15)
    @@ -237,9 +237,12 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 9,10
                             //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 8,11
                             //TP_GM_PCSCF_INVITE_02 ( Event 8)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 8
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 8
                             
    -                        //TODO 183
    +                        
    +                        // 183 Session Progress
    +                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 13
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 13
                             
                             
                             //Rx/Gx exchange after 183 (SDP) was received at P-CSCF
    @@ -250,9 +253,9 @@ module AtsImsIot_TD_INI{
                             
                             
                             //TP_GM_PCSCF_180RINGING_02 ( Event 9)
    -                        f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 9
    +                        f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 21
                             //TP_MW_PCSCF_180RINGING_02 ( Event 14)
    -                        f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 14
    +                        f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 22
                             //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16)
                             //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16)
                             //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) 
    @@ -267,10 +270,10 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25
                             f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25
                             //TP_MW_PCSCF_ACK_02 (Event 28)
    -                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 28
    +                        f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 28
                             
                             //TP_GM_PCSCF_ACK_02 (Event 29)
    -                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 29 
    +                        f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 29 
     
                     
                             f_mtc_userCheckCallEstablished(v_ueA); // Event 30
    @@ -351,6 +354,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                             f_mtc_userCheckCallEstablished(v_ueB); // Event 1
                             f_mtc_userAddNewMediaStream(v_ueA);
    +                        f_mtc_check_precond_TC_VxLTE_INT_INI_03();
                             
                             // Test body
                             f_mtc_check_TP_GM_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.gmA); // Event 2
    @@ -361,11 +365,11 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12)
                             
    -                        f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwPS); // Event 3
    -                        f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwIS); // Event 4
    +                        f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3
    +                        //f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwIS); // Event 4
     
    -                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 5
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic,1); // 200 OK – Event 6   
    +                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 5
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 6   
                             f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 8    
     
                             //Rx/Gx exchange after 200 OK (SDP) on reINVITE was received at P-CSCF
    @@ -397,7 +401,21 @@ module AtsImsIot_TD_INI{
                            setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                        }
                    } // End of TC TC_VxLTE_INT_INI_03
    +               
    +               group f_TC_VxLTE_INT_INI_03 {
    +                   
    +                   function f_mtc_check_precond_TC_VxLTE_INT_INI_03() runs on ImsTestCoordinator {
    +                       log("If the test case fails, please check the preconditions");
    +                       // TODO Add real code to check pre-conditions
    +                       //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false);
    +                       //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false);
    +                       //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false);
    +                    } // End of function f_mtc_check_precond_TC_VxLTE_INT_INI_03
    +                    
    +               } // End of group f_TC_VxLTE_INT_INI_03
    +               
                 } //End of group OriginatingLeg
    +            
                 group TerminatingLeg {
                     
                     /**
    @@ -443,20 +461,21 @@ module AtsImsIot_TD_INI{
                             f_mtc_userAnswerCall(v_ueB);
                             f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                             f_mtc_userCheckCallEstablished(v_ueB); // Event 1
    +                        f_mtc_check_precond_TC_VxLTE_INT_INI_04();
                             
                             // Test body
    -                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic,1); // INVITE Event 2
    -                        f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmB); // Event 3
    -                        f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 4
    -                        f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIB); // Event 5
    +                        f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmA); // Event 2
    +                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 3
    +                        //f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 4
    +                        //f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIB); // Event 5
    +                        f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3
    +                        log("v_sip", v_sip);
                             
                             //Rx/Gx exchange after reINVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Event 5)
                             f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 6)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8)
    -
    -                        f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 6
                             
                             //Rx/Gx exchange after 200 OK (SDP) on reINVITE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Event 11)
    @@ -465,9 +484,9 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 14)
                             
                             f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11
    -                        f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 17
    -                        f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 16
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // 200 OK – Event 13
    +                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 17
    +                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 16
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 13
                             
     //                        f_mtc_userCheckNewMediaStream(v_ueA);
     //                        f_mtc_userCheckNewMediaStream(v_ueB);
    @@ -490,6 +509,19 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_INT_INI_04
    +               
    +               group f_TC_VxLTE_INT_INI_04 {
    +                   
    +                   function f_mtc_check_precond_TC_VxLTE_INT_INI_04() runs on ImsTestCoordinator {
    +                       log("If the test case fails, please check the preconditions");
    +                       // TODO Add real code to check pre-conditions
    +                       //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false);
    +                       //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false);
    +                       //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false);
    +                    } // End of function f_mtc_check_precond_TC_VxLTE_INT_INI_04
    +                    
    +               } // End of group f_TC_VxLTE_INT_INI_04
    +               
                 } //End of group TerminatingLeg
             } //End of group SIPsessionModification
             group SIPsessionRelease {
    @@ -528,7 +560,6 @@ module AtsImsIot_TD_INI{
                             //f_cf_int_call_up(v_config);
                             
                             // Preamble
    -                        f_mtc_check_precond_TC_VxLTE_INT_REL_01();
                             f_mtc_userRegistration(v_ueA, v_userInfoA); 
                             f_mtc_userRegistration(v_ueB, v_userInfoB); 
                             f_mtc_userInitiateCall (v_ueA, v_userInfoB);
    @@ -537,12 +568,13 @@ module AtsImsIot_TD_INI{
                             f_mtc_userAnswerCall(v_ueB);
                             f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                             f_mtc_userCheckCallEstablished(v_ueB); // Event 1
    +                        f_mtc_check_precond_TC_VxLTE_INT_REL_01(v_sip);
                             
                             // Test body
                             //f_mtc_userTriggerReleaseCall(v_ueA); //Test Sequence Step 4
                             f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2
                             f_mtc_check_TP_MW_PCSCF_BYE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3
    -                        f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5
    +                        f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 5
                             
                             //Rx/Gx exchange after BYE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6)
    @@ -574,11 +606,11 @@ module AtsImsIot_TD_INI{
                     
                     group f_TC_VxLTE_INT_REL_01 {
                         
    -                    function f_mtc_check_precond_TC_VxLTE_INT_REL_01() runs on ImsTestCoordinator {
    -                        log("If the test case fails, please check the preconditions");
    +                    function f_mtc_check_precond_TC_VxLTE_INT_REL_01(out SipMessage p_sip) runs on ImsTestCoordinator {
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, p_sip);
                          } // End of function f_mtc_check_precond_TC_VxLTE_INT_REL_01
                          
    -                } // End of f_TC_VxLTE_INT_INI_02
    +                } // End of f_TC_VxLTE_INT_REL_01
                      
                 } //End of group OriginatingLeg
                 group TerminatingLeg {
    @@ -606,7 +638,7 @@ module AtsImsIot_TD_INI{
                         {
                             var SipMessage v_sip;
                             
    -                        f_cf_createVxLteMonitor();    
    +                        f_cf_createVxLteMonitor();
                     
                             // map/connect component ports
                             f_cf_adapter_up ( );
    @@ -624,12 +656,13 @@ module AtsImsIot_TD_INI{
                             f_mtc_userAnswerCall(v_ueB);
                             f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                             f_mtc_userCheckCallEstablished(v_ueB); // Event 1
    +                        f_mtc_check_precond_TC_VxLTE_INT_REL_02(v_sip);
                             
                             // Test body
                             //f_mtc_userTriggerReleaseCall(v_ueB); //Test Sequence Step 4
                             f_mtc_check_TP_GM_PCSCF_BYE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 2
                             f_mtc_check_TP_MW_PCSCF_BYE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3
    -                        f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 5
    +                        f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 5
     
                             //Rx/Gx exchange after BYE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6)
    @@ -657,6 +690,15 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_INT_REL_02
    +                
    +                group f_TC_VxLTE_INT_REL_02 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_INT_REL_02(out SipMessage p_sip) runs on ImsTestCoordinator {
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, p_sip);
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_INT_REL_02
    +                     
    +                } // End of f_TC_VxLTE_INT_REL_02
    +                 
                 } //End of group TerminatingLeg
                 group NetworkInitiated {
                     
    @@ -701,6 +743,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_userAnswerCall(v_ueB); 
                             f_mtc_userCheckCallEstablished(v_ueB); // Event 1
                             f_mtc_userCheckCallEstablished(v_ueA); // Event 1
    +                        f_mtc_check_precond_TC_VxLTE_INT_REL_03();
                             
                             // Test body
                             
    @@ -709,7 +752,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_MW_PCSCF_BYE_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 2
                             f_mtc_check_TP_MW_SCSCF_BYE_03(vc_vxlte_monitor_components.mwIS); // Event 3
                             f_mtc_check_TP_MW_SCSCF_BYE_01(vc_vxlte_monitor_components. mwIB); // Event 3
    -                        f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // Event 4
    +                        f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4
                             f_mtc_check_TP_GM_PCSCF_BYE_03(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 5
     
                             //Rx/Gx exchange after BYE was received at P-CSCF
    @@ -736,6 +779,15 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_INT_REL_03
    +                
    +                group f_TC_VxLTE_INT_REL_03 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_INT_REL_03() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_INT_REL_03
    +                     
    +                } // End of f_TC_VxLTE_INT_REL_03
    +                 
                 } //End of group NetworkInitiated
             } //End of group SIPsessionRelease
             group SIPsessionAbortReject {
    @@ -770,12 +822,14 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueA );
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
    +                        
    +                        f_mtc_check_precond_TC_VxLTE_INT_ABT_01();
     
                             //test body
     
                             //Rtp     TP_RTP_01 (Event 1)
                             //Gm      TP_GM_PCSCF_INVITE_01 (Event 3)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA); // (Event 3)
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // (Event 3)
     
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4)
    @@ -789,8 +843,8 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 8)
                             //MwSI    TP_MW_SCSCF_INVITE_01 (Event 9)
                             //MwSI    TP_MW_SCSCF_INVITE_01 (Event 9)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); //  (INVITE, ENUM – Event 8)
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 8)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); //  (INVITE, ENUM – Event 8)
                             f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9)
                             f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIB); // (Event 9)
     
    @@ -798,8 +852,8 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 10)
                             //Ic      TP_IC_IBCF_180RESP_01 (180 Ringing – Event 11)
                             //Ic      TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 11)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); //  (INVITE – Event 10)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); //  (INVITE – Event 10)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); //  (INVITE – Event 10)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); //  (INVITE – Event 10)
                             
                             //TODO 183
                             
    @@ -810,8 +864,8 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 17)
                             
                             
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); //  (180 Ringing – Event 11)
    -                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); //  (180 Ringing – Event 11)
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); //  (180 Ringing – Event 11)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); //  (180 Ringing – Event 11)
     
                             //Rtp     TP_RTP_02 (Event 19)
                             f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19
    @@ -827,7 +881,7 @@ module AtsImsIot_TD_INI{
                             //MwSI    TP_MW_SCSCF_CANCEL_01 (Event 24)
                             //Ic      TP_IC_IBCF_CANCEL_01 (CANCEL – Event 25)
                             f_mtc_check_TP_MW_SCSCF_CANCEL_01(vc_vxlte_monitor_components.mwIS); // (Event 24)
    -                        f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); //  (CANCEL – Event 25)
    +                        f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic); //  (CANCEL – Event 25)
                             
                             //Rx/Gx exchange after CANCEL was received at P-CSCF
                             f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26)
    @@ -847,7 +901,7 @@ module AtsImsIot_TD_INI{
                             //Gm      TP_GM_PCSCF_487INVITE_01 (Event 35)
                             f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 35
                             //Ic      TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 37)
    -                        f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); //  (ACK – Event 37)
    +                        f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic); //  (ACK – Event 37)
                             //Rtp     TP_RTP_01 (Events 41,42)
                             f_mtc_userCheckCallCancelled(v_ueA); // Event 40
                             f_mtc_userCheckCallEnded(v_ueB); // Event 41
    @@ -864,7 +918,15 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_INT_ABT_01
    -               
    +                
    +                group f_TC_VxLTE_INT_ABT_01 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_INT_ABT_01() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_INT_ABT_01
    +                     
    +                } // End of f_TC_VxLTE_INT_ABT_01
    +                 
                     /**
                     * @desc    Initial SIP session reject.
                     * 
    @@ -896,12 +958,14 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        f_mtc_check_precond_TC_VxLTE_INT_REJ_01();
    +                        
                             //test body
     
                             //Rtp     TP_RTP_01 (Events 1,2)
                             
                             //Gm      TP_GM_PCSCF_INVITE_01 (Event 3)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmB); // (Event 3)
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 3)
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4)
    @@ -916,11 +980,11 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 10)
                             //Ic      TP_IC_IBCF_INVITE_01 (INVITE – Event 10)
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 10)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS); // (Event 8)
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 8)
                             f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 10)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 10)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 10)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 10)
     
                             //Rtp     TP_RTP_02 (Event 18)
                             f_mtc_userCheckPeerIsRinging(v_ueA); // Event 18                        
    @@ -929,7 +993,7 @@ module AtsImsIot_TD_INI{
                             //MwSI    TP_MW_SCSCF_486INVITE_01 (Event 12)
                             //MwPS    TP_MW_PCSCF_486INVITE_01 (Event 13)
                             //Gm      TP_GM_PCSCF_486INVITE_01 (Event 14)                        
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic, false); // (Event 11)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic); // (Event 11)
                             f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 12)
                             f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
                             f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 14)       
    @@ -941,7 +1005,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18)
                                                     
                             //Ic      TP_IC_IBCF_486INVITE_ACK_01 (Event 22)
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.gmB, false); // (Event 22)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.gmB); // (Event 22)
                                                     
                             //Rtp     TP_RTP_01 (Events 23,24)
                             f_mtc_userCheckCallCancelled(v_ueA); // Event 23
    @@ -958,7 +1022,14 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_INT_REJ_01
    -               
    +                
    +                group f_TC_VxLTE_INT_REJ_01 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_INT_REJ_01() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_INT_REJ_01
    +                     
    +                } // End of f_TC_VxLTE_INT_REJ_01
                     
                 } //End of group OriginatingLeg
                 group TerminatingLeg {
    @@ -1002,6 +1073,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_userCheckRinging(v_ueB);
                             f_mtc_userCheckPeerIsRinging(v_ueA);
                             f_mtc_userTriggerCancelCall(v_ueA);
    +                        f_mtc_check_precond_TC_VxLTE_INT_ABT_02();
                     
                             // Test body
                             
    @@ -1013,12 +1085,16 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 3)
                             //MwSI    TP_MW_SCSCF_INVITE_02 (Event 4)
                             //MwPS    TP_MW_PCSCF_INVITE_02 (Event 5)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
                             f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 5)
    +                        
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // ( Event 3)
    +                        log("v_sip", v_sip);
     
    +                        
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, -, v_sip);
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6)
                             f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7)
    @@ -1029,9 +1105,11 @@ module AtsImsIot_TD_INI{
     
                             //Gm      TP_GM_PCSCF_INVITE_02 (Event 10)
                             //Gm      TP_GM_PCSCF_180RINGING_02 (Event 11)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10)
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 10)
                             
                             //TODO 183
    +                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.gmB, -, v_sip);
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.mwPS, -, v_sip);
                             
                             //Rx/Gx exchange after 183 (SDP) received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 12)
    @@ -1075,8 +1153,8 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_CANCEL_OK_02 (OK – Event 31)
                             //Gm      TP_GM_PCSCF_487INVITE_02 (Event 32)
                             //MwPS    TP_MW_PCSCF_487INVITE_02 (Event 33)
    -                        f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 28)
    -                        f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29)
    +                        f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 28)
    +                        f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29)
                             f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 31)
                             f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32)
                             f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33)
    @@ -1105,6 +1183,15 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_INT_ABT_02
    +                
    +                 group f_TC_VxLTE_INT_ABT_02 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_INT_ABT_02() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_INT_ABT_02
    +                     
    +                } // End of f_TC_VxLTE_INT_ABT_02
    +                 
                    
                    /**
                     * @desc    Initial SIP session reject.
    @@ -1136,6 +1223,8 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueA );
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
    +                        
    +                        f_mtc_check_precond_TC_VxLTE_INT_REJ_02();
     
                             //test body
     
    @@ -1146,10 +1235,10 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 3)
                             //MwSP    TP_MW_PCSCF_INVITE_02 (Event 4)
                             //MwSI    TP_MW_SCSCF_INVITE_02 (Event 4)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // (INVITE, ENUM – Event 3)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS); // (Event 4)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 4)
                             f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4)
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
    @@ -1165,13 +1254,13 @@ module AtsImsIot_TD_INI{
                             //MwPS    TP_MW_PCSCF_486INVITE_02 (Event 12)
                             //MwSI    TP_MW_SCSCF_486INVITE_02 (Event 13)
                             //Ic      TP_IC_IBCF_486INVITE_02 (486 Busy  – Event 14)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB); // (Event 10)
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 10)
                             
                             
                             f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11)
                             f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 12)
                             f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 13)
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic, false); // (486 Busy  – Event 14)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic); // (486 Busy  – Event 14)
                             
                             
                             //Rx/Gx exchange after 486/600 response was received at P-CSCF
    @@ -1181,7 +1270,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18)
                             
                             //Ic      TP_IC_IBCF_486INVITE_ACK_02 (ACK – Event 19)
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 19)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(vc_vxlte_monitor_components.ic); // (ACK – Event 19)
                                                     
                             //Rtp     TP_RTP_01 (Events 23,24)
                             f_mtc_userCheckCallCancelled(v_ueA); // Event 23
    @@ -1197,6 +1286,15 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_INT_REJ_02
    +                
    +                group f_TC_VxLTE_INT_REJ_02 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_INT_REJ_02() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_INT_REJ_02
    +                     
    +                } // End of f_TC_VxLTE_INT_REJ_01
    +                
                 } //End of group TerminatingLeg
             } //End of group SIPsessionAbortReject
         } // End of group Interoperability
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    index f6e058e..cd8c98c 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    @@ -1022,16 +1022,16 @@ module AtsImsIot_TP_behavior_GM {
                                                        out SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     
                     // Check the INVITE
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                             { mw_SipRequest(mw_TP_GM_PCSCF_INVITE_01(
                                                                                                      -, // FIXME Set expected value
    -                                                                                                 mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                 mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                 mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId
    +                                                                                                 mw_To_AddrUnion_TelUrl(-) // v_userInfoB.publicId
                                                                                                      ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
    @@ -1092,8 +1092,14 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                             { mw_SipRequest(mw_TP_GM_PCSCF_INVITE_02(
                                                                                                      -, // FIXME Set expected value
    -                                                                                                 mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                 mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                 (
    +                                                                                                   mw_From_NameAddr_SipUrl({quotedString:=v_userInfoB.publicId}, v_userInfoB.publicId, v_userInfoB.domain),
    +                                                                                                   mw_From_AddrUnion_TelUrl(v_userInfoB.publicId)
    +                                                                                                 ),
    +                                                                                                 (
    +                                                                                                   mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/),
    +                                                                                                   mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId
    +                                                                                                 )
                                                                                                      ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
    @@ -1219,8 +1225,8 @@ module AtsImsIot_TP_behavior_GM {
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                  if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     
                     // Check the RE-INVITE
                     p_monitorCompRef.start(
    @@ -1228,8 +1234,8 @@ module AtsImsIot_TP_behavior_GM {
                                                             { 
                                                                 mw_SipRequest(mw_TP_GM_PCSCF_RE_INVITE_01(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                           ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
    @@ -1292,8 +1298,8 @@ module AtsImsIot_TP_behavior_GM {
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                  if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     
                     // Check the RE-INVITE
                     p_monitorCompRef.start(
    @@ -1301,8 +1307,8 @@ module AtsImsIot_TP_behavior_GM {
                                                             { 
                                                                 mw_SipRequest(mw_TP_GM_PCSCF_RE_INVITE_02(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoB.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoA.publicId)
                                                                                                           ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
    @@ -1930,6 +1936,7 @@ module AtsImsIot_TP_behavior_GM {
                                                       in SipMessage p_sip
                                                       ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    +                
                     // Check the 200 OK
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
    @@ -1937,7 +1944,11 @@ module AtsImsIot_TP_behavior_GM {
                                                                                        p_sip.request.msgHeader.cSeq,
                                                                                        p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
    -                                                                                   p_sip.request.msgHeader.toField
    +                                                                                   (
    +                                                                                      mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_EUT_B).publicId}),
    +                                                                                      mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_EUT_B).publicId),
    +                                                                                      p_sip.request.msgHeader.toField
    +                                                                                    )
                                                                               )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
    @@ -2273,7 +2284,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_BYE_01(
                                                     in SipInterfaceMonitor p_monitorCompRef,
                                                     in boolean p_checkMessage := false,
    -                                                in SipMessage p_sip
    +                                                inout SipMessage p_sip
                                                     ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the BYE
    @@ -2281,20 +2292,22 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_GM_PCSCF_BYE_01(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq
                                                                                                    -, // FIXME To be set
                                                                                                    p_sip.request.msgHeader.fromField,
                                                                                                    p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_BYE_01 - Request",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_BYE_01
             
    @@ -2328,7 +2341,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_BYE_02(
                                                     in SipInterfaceMonitor p_monitorCompRef,
                                                     in boolean p_checkMessage := false,
    -                                                in SipMessage p_sip
    +                                                inout SipMessage p_sip
                                                     ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the BYE
    @@ -2336,20 +2349,30 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_GM_PCSCF_BYE_02(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq
                                                                                                    -, // FIXME To be set
    -                                                                                               p_sip.request.msgHeader.fromField,
    -                                                                                               p_sip.request.msgHeader.toField
    +                                                                                               {
    +                                                                                                 fieldName := FROM_E,
    +                                                                                                 addressField := p_sip.request.msgHeader.toField.addressField,
    +                                                                                                 fromParams := *
    +                                                                                               }, //p_sip.request.msgHeader.fromField,
    +                                                                                               {
    +                                                                                                 fieldName := TO_E,
    +                                                                                                 addressField := p_sip.request.msgHeader.fromField.addressField,
    +                                                                                                 toParams := *
    +                                                                                               } //p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_BYE_02 - Request",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_BYE_02
             
    @@ -2391,13 +2414,13 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_GM_PCSCF_BYE_03(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq
                                                                                                    -, // FIXME To be set
                                                                                                    p_sip.request.msgHeader.fromField,
                                                                                                    p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_BYE_03 - Request",
                                                              false,
    @@ -2419,13 +2442,13 @@ module AtsImsIot_TP_behavior_GM {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_GM_PCSCF_BYE_04(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq
                                                                                                    -, // FIXME To be set
                                                                                                    p_sip.request.msgHeader.fromField,
                                                                                                    p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_BYE_04 - Request",
                                                              false,
    @@ -2750,7 +2773,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_CANCEL_01(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2767,11 +2790,13 @@ module AtsImsIot_TP_behavior_GM {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_CANCEL_01",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_01
             
    @@ -2805,7 +2830,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_CANCEL_02(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2822,18 +2847,20 @@ module AtsImsIot_TP_behavior_GM {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_CANCEL_02",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_02
             
             function f_mtc_check_TP_GM_PCSCF_CANCEL_03(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2850,18 +2877,20 @@ module AtsImsIot_TP_behavior_GM {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_CANCEL_03",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_03
             
             function f_mtc_check_TP_GM_PCSCF_CANCEL_04(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2878,11 +2907,13 @@ module AtsImsIot_TP_behavior_GM {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_CANCEL_04",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_04
             
    @@ -3090,7 +3121,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_486INVITE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3100,9 +3131,10 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField
    +                                                                                     p_sip.request.msgHeader.toField,
    +                                                                                     omit
                                                                                          )
                                                                               )
                                                              },
    @@ -3111,11 +3143,13 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_486INVITE_01",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_01
             
    @@ -3149,7 +3183,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_486INVITE_02(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3159,9 +3193,10 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField
    +                                                                                     p_sip.request.msgHeader.toField,
    +                                                                                     omit
                                                                                          )
                                                                               )
                                                              },
    @@ -3170,18 +3205,20 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_486INVITE_02",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_02
             
             function f_mtc_check_TP_GM_PCSCF_486INVITE_03(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3191,7 +3228,7 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
                                                                                          p_sip.request.msgHeader.toField
                                                                                          )
    @@ -3202,18 +3239,20 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_486INVITE_03",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_03
             
             function f_mtc_check_TP_GM_PCSCF_486INVITE_04(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3223,7 +3262,7 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
                                                                                          p_sip.request.msgHeader.toField
                                                                                          )
    @@ -3234,11 +3273,13 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_486INVITE_04",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_486INVITE_04
             
    @@ -3276,7 +3317,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_487INVITE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3286,9 +3327,10 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
    -                                                                                                  p_sip.request.msgHeader.toField
    +                                                                                                  p_sip.request.msgHeader.toField,
    +                                                                                                  omit
                                                                                                       )
                                                                               )
                                                              },
    @@ -3297,11 +3339,13 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_487INVITE_01",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_01
             
    @@ -3335,7 +3379,7 @@ module AtsImsIot_TP_behavior_GM {
             function f_mtc_check_TP_GM_PCSCF_487INVITE_02(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3345,7 +3389,7 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
                                                                                                       p_sip.request.msgHeader.toField
                                                                                                       )
    @@ -3356,18 +3400,20 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_487INVITE_02",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_02
             
             function f_mtc_check_TP_GM_PCSCF_487INVITE_03(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3377,7 +3423,7 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
                                                                                                       p_sip.request.msgHeader.toField
                                                                                                       )
    @@ -3388,18 +3434,20 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_487INVITE_03",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_03
             
             function f_mtc_check_TP_GM_PCSCF_487INVITE_04(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3409,7 +3457,7 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
                                                                                                       p_sip.request.msgHeader.toField
                                                                                                       )
    @@ -3420,11 +3468,13 @@ module AtsImsIot_TP_behavior_GM {
                                                              },
                                                              { 0, omit },
                                                              "TP_GM_PCSCF_487INVITE_04",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_04
             
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    index 9f6f615..04dc7e6 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    @@ -96,7 +96,7 @@ module AtsImsIot_TP_behavior_IC
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator  {
                     if (isvalue(p_monitorCompRef)) {
    -                    var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    +                    var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A);
                         p_monitorCompRef.start(
                                                f_Iot_Sip_receive(
                                                                  {
    @@ -286,29 +286,36 @@ module AtsImsIot_TP_behavior_IC
              * @remark source function f_mtc_check_TP_IMS_5106_01_ic
              */
             function f_mtc_check_TP_IC_IBCF_REINVITE_01(
    -            SipInterfaceMonitor  p_monitorCompRef,
    -            integer p_skipCount
    -        ) runs on ImsTestCoordinator {
    -            var template SipUrl v_SCSCF_A_Uri := (mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)),
    -                                                            mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A)));
    -            var template SkipType v_skip := {0, omit};
    -                    
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    +                                                    in SipInterfaceMonitor  p_monitorCompRef,
    +                                                    in integer p_skipCount := 1
    +                                                    ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                var template SipUrl v_SCSCF_A_Uri := (
    +                                                      mw_SipUrl_Host(
    +                                                                     f_GetEUTScscfIpAddress_1()//f_GetEUTScscfAddress(PX_EUT_A)
    +                                                                     ),
    +                                                      mw_SipUrl_Host(
    +                                                                     f_GetEUTScscfIpAddress_1()//f_GetEUTScscfIpAddress(PX_EUT_A)
    +                                                                     )
    +                                                      );
    +                var template SkipType v_skip := {0, omit};
    +                
    +                if(p_skipCount > 0) {
    +                    v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    +                }
    +                
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         {mw_SipRequest(mdw_TP_IC_IBCF_REINVITE_01(v_SCSCF_A_Uri))},
    +                                                         {mw_SipRequest(mw_INVITE_Request_Base)},
    +                                                         v_skip,
    +                                                         "TP_IC_IBCF_REINVITE_01",
    +                                                         false,
    +                                                         false
    +                                                         )
    +                                       );
    +                p_monitorCompRef.done;
                 }
    -                    
    -                        
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_REINVITE_01(v_SCSCF_A_Uri))},
    -                {mw_SipRequest(mw_INVITE_Request_Base)},
    -                v_skip,
    -                "TP_IC_IBCF_REINVITE_01",
    -                false,
    -                false
    -            )
    -           );
    -           p_monitorCompRef.done;
             }
         
         } // end group g_IBCF_REINVITE
    @@ -735,27 +742,29 @@ module AtsImsIot_TP_behavior_IC
              */
             function f_mtc_check_TP_IC_IBCF_2XXRESP_04(
                 SipInterfaceMonitor  p_monitorCompRef,
    -            integer p_skipCount
    +            integer p_skipCount := 1
             ) runs on ImsTestCoordinator {
    -            var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    -            var template SkipType v_skip := {0, omit};
    -                
    -            if(p_skipCount > 0) {
    -                v_skip := {1, mw_SipResponse(mdw_2XX_Base)};
    -            }
    -                
    +            if (isvalue(p_monitorCompRef)) {
    +                var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    +                var template SkipType v_skip := {0, omit};
                         
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)},
    -                {mw_SipResponse(mdw_2XX_Base)},
    -                v_skip,
    -                "TP_IC_IBCF_2XXRESP_04",
    -                false,
    -                false
    -            )
    -           );
    -           p_monitorCompRef.done;
    +                if(p_skipCount > 0) {
    +                    v_skip := {1, mw_SipResponse(mdw_2XX_Base)};
    +                }
    +                    
    +                        
    +               p_monitorCompRef.start(
    +                f_Iot_Sip_receive(
    +                    {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)},
    +                    {mw_SipResponse(mdw_2XX_Base)},
    +                    v_skip,
    +                    "TP_IC_IBCF_2XXRESP_04",
    +                    false,
    +                    false
    +                )
    +               );
    +               p_monitorCompRef.done;
    +            }
             }
         
             /**
    @@ -832,8 +841,8 @@ module AtsImsIot_TP_behavior_IC
              * @remark source function f_mtc_check_TP_IMS_5107_02_ic
              */
             function f_mtc_check_TP_IC_IBCF_ACK_01(
    -                                                   in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := false
    +                                               in SipInterfaceMonitor p_monitorCompRef,
    +                                               in boolean p_checkMessage := false
             ) runs on ImsTestCoordinator {
                                 
                 if (isvalue(p_monitorCompRef)) {
    @@ -874,22 +883,24 @@ module AtsImsIot_TP_behavior_IC
               * @remark source function f_mtc_check_TP_IMS_5107_01_ic
               */
              function f_mtc_check_TP_IC_IBCF_BYE_01(
    -             SipInterfaceMonitor  p_monitorCompRef,
    -             boolean p_checkMessage
    -         ) runs on ImsTestCoordinator  { 
    -         var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    +                                                in SipInterfaceMonitor  p_monitorCompRef,
    +                                                in boolean p_checkMessage := false
    +                                                ) runs on ImsTestCoordinator { 
    +            var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A)
                     
    -         p_monitorCompRef.start(
    -          f_Iot_Sip_receive(
    -             {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))},
    -             {},
    -             {0, omit},
    -             "TP_IC_IBCF_BYE_01",
    -             false,
    -             p_checkMessage
    -          )
    -         );
    -         p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr))) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
    +                                                         {0, omit},
    +                                                         "TP_IC_IBCF_BYE_01",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
             } //function
         
             /**
    @@ -901,47 +912,35 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef,
                 boolean p_checkMessage
             ) runs on ImsTestCoordinator  { 
    -        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    +            var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A);
                     
    -        //TODO: to/from
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -            {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))},
    -            {},
    -            {0, omit},
    -            "TP_IC_IBCF_BYE_01",
    -            false,
    -            p_checkMessage
    -         )
    -        );
    -        p_monitorCompRef.done;
    -                            
    -        //TODO: to/from
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -            {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
    -            {},
    -            {0,omit},
    -            "f_mtc_check_response_mx",
    -            false,
    -            false
    -         )
    -        );
    -        p_monitorCompRef.done;
    -    
    -        //TODO: to/from
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -            {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
    -            {},
    -            {0,omit},
    -            "f_mtc_check_response_mx",
    -            false,
    -            false
    -         )
    -        );
    -        p_monitorCompRef.done;
    -        
    +            //TODO: to/from
    +            if (isvalue(p_monitorCompRef)) {
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr))) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
    +                                                         {0, omit},
    +                                                         "TP_IC_IBCF_BYE_02",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                      )
    +                                       );
    +                p_monitorCompRef.done;
    +                
    +                //TODO: to/from
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
    +                                                         {},
    +                                                         {0,omit},
    +                                                         "f_mtc_check_response_mx",
    +                                                         false,
    +                                                         false
    +                                                      )
    +                                      );
    +                p_monitorCompRef.done;
    +            }
            } //function
         
            /**
    @@ -1006,55 +1005,49 @@ module AtsImsIot_TP_behavior_IC
               * @remark source function f_mtc_check_TP_IMS_5107_03_ic
               */
             function f_mtc_check_TP_IC_IBCF_CANCEL_01(
    -            SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage
    -        ) runs on ImsTestCoordinator  {
    -            var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    +                                                  in SipInterfaceMonitor  p_monitorCompRef,
    +                                                  in boolean p_checkMessage := false
    +                                                  ) runs on ImsTestCoordinator  {
    +            var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress_1()/*f_GetEUTScscfAddress(PX_EUT_A)*/);
                     
    -            p_monitorCompRef.start(
    -             f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To
    -                {},
    -                {0, omit},
    -                "TP_IC_IBCF_CANCEL_01",
    -                false,
    -                p_checkMessage
    -             )
    -            );
    -            p_monitorCompRef.done;
    -    
    -            p_monitorCompRef.start(
    -             f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To
    -                {},
    -                {0, omit},
    -                "TP_IC_IBCF_CANCEL_01",
    -                false,
    -                p_checkMessage
    -             )
    -            );
    -            p_monitorCompRef.done;
    -                        
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the CANCEL
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         {
    +                                                             mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))
    +                                                         }, //TODO: From/To
    +                                                         {},
    +                                                         {0, omit},
    +                                                         "TP_IC_IBCF_CANCEL_01 - Request",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                      );
    +                p_monitorCompRef.done;
    +            }
             } //function
             
             function f_mtc_check_TP_IC_IBCF_CANCEL_02(
    -            SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage
    +                                                  in SipInterfaceMonitor  p_monitorCompRef,
    +                                                  in boolean p_checkMessage := false
             ) runs on ImsTestCoordinator  {
    -            var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    -                
    -            p_monitorCompRef.start(
    -             f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))}, //TODO: From/To
    -                {},
    -                {0, omit},
    -                "TP_IC_IBCF_CANCEL_02",
    -                false,
    -                p_checkMessage
    -             )
    -            );
    -            p_monitorCompRef.done;
    +            var template SipUrl v_scscfImsAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress_1()/*f_GetEUTScscfAddress(PX_EUT_A)*/);
                     
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the CANCEL
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         { mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?)) }, //TODO: From/To
    +                                                         {},
    +                                                         {0, omit},
    +                                                         "TP_IC_IBCF_CANCEL_02",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
             } //function
             
             function f_mtc_check_TP_IC_IBCF_CANCEL_03(
    @@ -1091,34 +1084,40 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef
             ) runs on ImsTestCoordinator {
                                 
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    -                {},
    -                {0,omit},
    -                "TP_IC_IBCF_CANCEL_OK_01",
    -                false,
    -                false
    -            )
    -           );
    -           p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the CANCEL
    +               p_monitorCompRef.start(
    +                f_Iot_Sip_receive(
    +                    {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    +                    {},
    +                    {0,omit},
    +                    "TP_IC_IBCF_CANCEL_OK_01",
    +                    false,
    +                    false
    +                )
    +               );
    +               p_monitorCompRef.done;
    +            }
             }
         
             function f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(
                 SipInterfaceMonitor  p_monitorCompRef
             ) runs on ImsTestCoordinator {
                                 
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    -                {},
    -                {0,omit},
    -                "TP_IC_IBCF_CANCEL_OK_02",
    -                false,
    -                false
    -            )
    -           );
    -           p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the CANCEL
    +               p_monitorCompRef.start(
    +                f_Iot_Sip_receive(
    +                    {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    +                    {},
    +                    {0,omit},
    +                    "TP_IC_IBCF_CANCEL_OK_02",
    +                    false,
    +                    false
    +                )
    +               );
    +               p_monitorCompRef.done;
    +            }
             }
         
             function f_mtc_check_TP_IC_IBCF_CANCEL_OK_03(
    @@ -1150,7 +1149,7 @@ module AtsImsIot_TP_behavior_IC
             */
            function f_mtc_check_TP_IC_IBCF_486INVITE_01(
                SipInterfaceMonitor  p_monitorCompRef,
    -           boolean p_checkMessage 
    +           boolean p_checkMessage := false
            ) runs on ImsTestCoordinator {
         //       p_monitorCompRef.start(
         //        f_Iot_Sip_receive(
    @@ -1159,31 +1158,21 @@ module AtsImsIot_TP_behavior_IC
         //       );
         //       p_monitorCompRef.done;
         
    -        //TODO: from/to 
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -             {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    -             {mw_SipResponse(mdw_4XX_Base)},
    -             {0, omit},
    -             "TP_IC_IBCF_486INVITE_01",
    -             false,
    -             p_checkMessage
    -         )
    -        );
    -        p_monitorCompRef.done;
    -        
    -        //TODO: from/to 
    -         p_monitorCompRef.start(
    -          f_Iot_Sip_receive(
    -              {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    -              {mw_SipResponse(mdw_4XX_Base)},
    -              {0, omit},
    -              "TP_IC_IBCF_486INVITE_01",
    -              false,
    -              p_checkMessage
    -          )
    -         );
    -         p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +                //TODO: from/to 
    +                p_monitorCompRef.start(
    +                 f_Iot_Sip_receive(
    +                     {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    +                     {mw_SipResponse(mdw_4XX_Base)},
    +                     {0, omit},
    +                     "TP_IC_IBCF_486INVITE_01",
    +                     false,
    +                     p_checkMessage
    +                 )
    +                );
    +                p_monitorCompRef.done;
    +            }
            } // End of function 
         
            /**
    @@ -1192,34 +1181,24 @@ module AtsImsIot_TP_behavior_IC
              */
            function f_mtc_check_TP_IC_IBCF_486INVITE_02(
                SipInterfaceMonitor  p_monitorCompRef,
    -           boolean p_checkMessage 
    +           boolean p_checkMessage := false
            ) runs on ImsTestCoordinator {
                                 
    -          //TODO: from/to 
    -          p_monitorCompRef.start(
    -           f_Iot_Sip_receive(
    -               {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    -               {mw_SipResponse(mdw_4XX_Base)},
    -               {0, omit},
    -               "TP_IC_IBCF_486INVITE_02",
    -               false,
    -               p_checkMessage
    -           )
    -          );
    -          p_monitorCompRef.done;
    -    
    -        //TODO: from/to 
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -             {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    -             {mw_SipResponse(mdw_4XX_Base)},
    -             {0, omit},
    -             "TP_IC_IBCF_486INVITE_02",
    -             false,
    -             p_checkMessage
    -         )
    -        );
    -        p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +                  //TODO: from/to 
    +                  p_monitorCompRef.start(
    +                   f_Iot_Sip_receive(
    +                       {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    +                       {mw_SipResponse(mdw_4XX_Base)},
    +                       {0, omit},
    +                       "TP_IC_IBCF_486INVITE_02",
    +                       false,
    +                       p_checkMessage
    +                   )
    +                  );
    +                  p_monitorCompRef.done;
    +            }
            } 
         
            /**
    @@ -1308,19 +1287,15 @@ module AtsImsIot_TP_behavior_IC
            function f_mtc_check_TP_IC_IBCF_487INVITE_01(
                SipInterfaceMonitor  p_monitorCompRef
            ) runs on ImsTestCoordinator {
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit },
    -                "TP_IC_IBCF_487INVITE_01", false, false )
    -           );
    -           p_monitorCompRef.done;
    -    
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -             { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit },
    -             "TP_IC_IBCF_487INVITE_01", false, false )
    -        );
    -        p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +               p_monitorCompRef.start(
    +                f_Iot_Sip_receive(
    +                    { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit },
    +                    "TP_IC_IBCF_487INVITE_01", false, false )
    +               );
    +               p_monitorCompRef.done;
    +            }
            } // End of function 
         
            /**
    @@ -1332,18 +1307,21 @@ module AtsImsIot_TP_behavior_IC
                boolean p_checkMessage 
            ) runs on ImsTestCoordinator {
                                 
    -          //TODO: from/to 
    -          p_monitorCompRef.start(
    -           f_Iot_Sip_receive(
    -               {mw_SipResponse(mdw_TP_IC_IBCF_487INVITE_02(?,?))},
    -               {mw_SipResponse(mdw_4XX_Base)},
    -               {0, omit},
    -               "TP_IC_IBCF_487INVITE_02",
    -               false,
    -               p_checkMessage
    -           )
    -          );
    -          p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +              //TODO: from/to 
    +              p_monitorCompRef.start(
    +               f_Iot_Sip_receive(
    +                   {mw_SipResponse(mdw_TP_IC_IBCF_487INVITE_02(?,?))},
    +                   {mw_SipResponse(mdw_4XX_Base)},
    +                   {0, omit},
    +                   "TP_IC_IBCF_487INVITE_02",
    +                   false,
    +                   p_checkMessage
    +               )
    +              );
    +              p_monitorCompRef.done;
    +            }
            } 
         
         } // end group g_IBCF_487INVITE
    @@ -1359,34 +1337,25 @@ module AtsImsIot_TP_behavior_IC
             */
             function f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(
                 SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage
    +            boolean p_checkMessage := false
             ) runs on ImsTestCoordinator  {
                     
    -    //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    -            //TODO: from/to                
    -            p_monitorCompRef.start(
    -             f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    -                {},
    -                {0, omit},
    -                "TP_IC_IBCF_487INVITE_ACK_01",
    -                false,
    -                p_checkMessage
    -             )
    -            );
    -           p_monitorCompRef.done;
    -    
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -               {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    -               {},
    -               {0, omit},
    -               "TP_IC_IBCF_487INVITE_ACK_01",
    -               false,
    -               p_checkMessage
    -            )
    -           );
    -          p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +        //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    +                //TODO: from/to                
    +                p_monitorCompRef.start(
    +                 f_Iot_Sip_receive(
    +                    {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    +                    {},
    +                    {0, omit},
    +                    "TP_IC_IBCF_487INVITE_ACK_01",
    +                    false,
    +                    p_checkMessage
    +                 )
    +                );
    +               p_monitorCompRef.done;
    +            }
                } //function 
         
             /**
    @@ -1401,6 +1370,8 @@ module AtsImsIot_TP_behavior_IC
                 boolean p_checkMessage
             ) runs on ImsTestCoordinator  {
                     
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
         //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
                 //TODO: from/to                
                 p_monitorCompRef.start(
    @@ -1414,18 +1385,7 @@ module AtsImsIot_TP_behavior_IC
                  )
                 );
                p_monitorCompRef.done;
    -    
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -               {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    -               {},
    -               {0, omit},
    -               "TP_IC_IBCF_487INVITE_ACK_02",
    -               false,
    -               p_checkMessage
    -            )
    -           );
    -          p_monitorCompRef.done;
    +           }
                } //function 
         
         } // end group g_IBCF_487INVITE_ACK
    @@ -1441,9 +1401,11 @@ module AtsImsIot_TP_behavior_IC
             */
             function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(
                 SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage
    +            boolean p_checkMessage := false
             ) runs on ImsTestCoordinator  {
                     
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
         //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
                 //TODO: from/to                
                 p_monitorCompRef.start(
    @@ -1457,20 +1419,7 @@ module AtsImsIot_TP_behavior_IC
                  )
                 );
                p_monitorCompRef.done;
    -    
    -           //TODO: from/to                
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -               {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    -               {},
    -               {0, omit},
    -               "TP_IC_IBCF_486INVITE_ACK_01",
    -               false,
    -               p_checkMessage
    -            )
    -           );
    -          p_monitorCompRef.done;
    -    
    +            }
                } //function 
         
             /**
    @@ -1482,9 +1431,11 @@ module AtsImsIot_TP_behavior_IC
             */
             function f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(
                 SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage
    +            boolean p_checkMessage := false
             ) runs on ImsTestCoordinator  {
                     
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
         //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
                 //TODO: from/to                
                 p_monitorCompRef.start(
    @@ -1498,20 +1449,7 @@ module AtsImsIot_TP_behavior_IC
                  )
                 );
                p_monitorCompRef.done;
    -    
    -           //TODO: from/to                
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -               {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    -               {},
    -               {0, omit},
    -               "TP_IC_IBCF_486INVITE_ACK_02",
    -               false,
    -               p_checkMessage
    -            )
    -           );
    -          p_monitorCompRef.done;
    -          
    +            }
                } //function 
         
         } // end group g_IBCF_486INVITE_ACK
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    index 10b01fa..c07349e 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    @@ -1127,15 +1127,21 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     
                     // Check the INVITE
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                             { mw_SipRequest(mw_TP_MW_PCSCF_INVITE_02(
                                                                                                      -, // FIXME Set expected value
    -                                                                                                 mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                 mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                 (
    +                                                                                                   mw_From_NameAddr_SipUrl({quotedString:=v_userInfoB.publicId}, v_userInfoB.publicId, v_userInfoB.domain),
    +                                                                                                   mw_From_AddrUnion_TelUrl(v_userInfoB.publicId)
    +                                                                                                 ),
    +                                                                                                 (
    +                                                                                                   mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/),
    +                                                                                                   mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId
    +                                                                                                 )
                                                                                                      ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
    @@ -1256,11 +1262,12 @@ module AtsImsIot_TP_behavior_MW_PS {
              */
             function f_mtc_check_TP_MW_PCSCF_RE_INVITE_01( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := false
    +                                                      in boolean p_checkMessage := false,
    +                                                      out SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     
                     // Check the RE-INVITE
                     p_monitorCompRef.start(
    @@ -1268,18 +1275,21 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                             {
                                                                 mw_SipRequest(mw_TP_MW_PCSCF_RE_INVITE_01(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                           ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
                                                             {0, omit},
                                                             "TP_MW_PCSCF_RE_INVITE_01 - Request",
    -                                                        false,
    +                                                        true,
                                                             p_checkMessage
                                                             )
                                            );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
    +                log("##### p_sip: ", p_sip);
                 }
             } // End of function TP_MW_PCSCF_RE_INVITE_01
             
    @@ -1329,11 +1339,12 @@ module AtsImsIot_TP_behavior_MW_PS {
              */
             function f_mtc_check_TP_MW_PCSCF_RE_INVITE_02( // FIXME RMI To be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := false
    +                                                      in boolean p_checkMessage := false,
    +                                                      out SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     
                     // Check the RE-INVITE
                     p_monitorCompRef.start(
    @@ -1341,18 +1352,21 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                             {
                                                                 mw_SipRequest(mw_TP_MW_PCSCF_RE_INVITE_02(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                           ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
                                                             {0, omit},
                                                             "TP_MW_PCSCF_RE_INVITE_02 - Request",
    -                                                        false,
    +                                                        true,
                                                             p_checkMessage
                                                             )
                                            );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
    +                log("##### p_sip: ", p_sip);
                 }
             } // End of function TP_MW_PCSCF_RE_INVITE_02
             
    @@ -1855,10 +1869,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              { mw_SipResponse(mw_TP_MW_PCSCF_183SessionProgress_02(
    -                                                                                                       p_sip.request.msgHeader.cSeq,
    -                                                                                                       p_sip.request.msgHeader.fromField,
    -                                                                                                       p_sip.request.msgHeader.toField
    -                                                                          )) 
    +                                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                                               p_sip.request.msgHeader.fromField,
    +                                                                                                               p_sip.request.msgHeader.toField
    +                                                                                                               )) 
                                                              },
                                                              { mw_SipResponse(mw_183SessionProgress_Base) },
                                                              { 0, omit },
    @@ -1972,6 +1986,8 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                       in SipMessage p_sip
                                                       ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
                     // Check the 200 OK
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
    @@ -1979,7 +1995,11 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                                        p_sip.request.msgHeader.cSeq,
                                                                                        p_sip.request.msgHeader.callId,
                                                                                        p_sip.request.msgHeader.fromField,
    -                                                                                   p_sip.request.msgHeader.toField
    +                                                                                   (
    +                                                                                      mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_EUT_B).publicId}),
    +                                                                                      mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_EUT_B).publicId),
    +                                                                                      p_sip.request.msgHeader.toField
    +                                                                                    )
                                                                                        )) 
                                                              },
                                                              { mw_SipResponse(mw_200OK_Base) },
    @@ -1990,6 +2010,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_200OK_01
             
    @@ -2336,7 +2357,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_BYE_01(
                                                     in SipInterfaceMonitor p_monitorCompRef,
                                                     in boolean p_checkMessage := false,
    -                                                in SipMessage p_sip
    +                                                inout SipMessage p_sip
                                                     ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the BYE
    @@ -2344,20 +2365,22 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_MW_PCSCF_BYE_01(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq
                                                                                                    -, // FIXME To be set
                                                                                                    p_sip.request.msgHeader.fromField,
                                                                                                    p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_BYE_01 - Request",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_BYE_01
             
    @@ -2398,7 +2421,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_BYE_02(
                                                     in SipInterfaceMonitor p_monitorCompRef,
                                                     in boolean p_checkMessage := false,
    -                                                in SipMessage p_sip
    +                                                inout SipMessage p_sip
                                                     ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the BYE
    @@ -2406,20 +2429,30 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_MW_PCSCF_BYE_02(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq,
                                                                                                    -, // FIXME To be set
    -                                                                                               p_sip.request.msgHeader.fromField,
    -                                                                                               p_sip.request.msgHeader.toField
    +                                                                                               {
    +                                                                                                 fieldName := FROM_E,
    +                                                                                                 addressField := p_sip.request.msgHeader.toField.addressField,
    +                                                                                                 fromParams := *
    +                                                                                               }, //p_sip.request.msgHeader.fromField,
    +                                                                                               {
    +                                                                                                 fieldName := TO_E,
    +                                                                                                 addressField := p_sip.request.msgHeader.fromField.addressField,
    +                                                                                                 toParams := *
    +                                                                                               } //p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_BYE_02 - Request",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_BYE_02
             
    @@ -2468,13 +2501,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_MW_PCSCF_BYE_03(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq,
                                                                                                    -, // FIXME To be set
                                                                                                    p_sip.request.msgHeader.fromField,
                                                                                                    p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_BYE_03 - Request",
                                                              false,
    @@ -2496,13 +2529,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                            f_Iot_Sip_receive(
                                                              { mw_SipRequest(mw_TP_MW_PCSCF_BYE_04(
                                                                                                    p_sip.request.msgHeader.callId,
    -                                                                                               p_sip.request.msgHeader.cSeq,
    +                                                                                               -, // New CSeq
                                                                                                    -, // FIXME To be set
                                                                                                    p_sip.request.msgHeader.fromField,
                                                                                                    p_sip.request.msgHeader.toField
                                                                                                    )) 
                                                              },
    -                                                         { mw_SipRequest(mw_ACK_Request_Base) },
    +                                                         { mw_SipRequest(mw_BYE_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_BYE_04 - Request",
                                                              false,
    @@ -2835,7 +2868,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_CANCEL_01(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2852,11 +2885,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_CANCEL_01",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_01
             
    @@ -2898,7 +2933,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_CANCEL_02(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2915,18 +2950,20 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_CANCEL_02",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_02
             
             function f_mtc_check_TP_MW_PCSCF_CANCEL_03(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2943,18 +2980,20 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_CANCEL_03",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_03
             
             function f_mtc_check_TP_MW_PCSCF_CANCEL_04(
                                                        in SipInterfaceMonitor p_monitorCompRef,
                                                        in boolean p_checkMessage := false,
    -                                                   in SipMessage p_sip
    +                                                   inout SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the CANCEL
    @@ -2971,11 +3010,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              { mw_SipRequest(mw_CANCEL_Request_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_CANCEL_04",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_04
             
    @@ -3098,7 +3139,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03(
                                                              in SipInterfaceMonitor p_monitorCompRef,
                                                              in boolean p_checkMessage := false,
    -                                                         in SipMessage p_sip
    +                                                         inout SipMessage p_sip
                                                              ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 200 OK CANCEL
    @@ -3114,18 +3155,20 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_200OK_CANCEL_03",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03
             
             function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_04(
                                                              in SipInterfaceMonitor p_monitorCompRef,
                                                              in boolean p_checkMessage := false,
    -                                                         in SipMessage p_sip
    +                                                         inout SipMessage p_sip
                                                              ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 200 OK CANCEL
    @@ -3141,11 +3184,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              { mw_SipResponse(mw_200OK_Base) },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_200OK_CANCEL_04",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_04
             
    @@ -3190,7 +3235,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_486INVITE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3200,9 +3245,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField
    +                                                                                     p_sip.request.msgHeader.toField,
    +                                                                                     omit
                                                                                          )
                                                                               )
                                                              },
    @@ -3211,11 +3257,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_486INVITE_01",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_01
             
    @@ -3256,7 +3304,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_486INVITE_02(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3266,9 +3314,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField
    +                                                                                     p_sip.request.msgHeader.toField,
    +                                                                                     omit
                                                                                          )
                                                                               )
                                                              },
    @@ -3277,18 +3326,20 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_486INVITE_02",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_02
             
             function f_mtc_check_TP_MW_PCSCF_486INVITE_03(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3298,7 +3349,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
                                                                                          p_sip.request.msgHeader.toField
                                                                                          )
    @@ -3309,18 +3360,20 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_486INVITE_03",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_03
             
             function f_mtc_check_TP_MW_PCSCF_486INVITE_04(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 486 Busy
    @@ -3330,7 +3383,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_486Busy( // TODO Enforce template
                                                                                          p_sip.request.msgHeader.callId,
    -                                                                                     p_sip.request.msgHeader.cSeq,
    +                                                                                     -, // New CSeq
                                                                                          p_sip.request.msgHeader.fromField,
                                                                                          p_sip.request.msgHeader.toField
                                                                                          )
    @@ -3341,11 +3394,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_486INVITE_04",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_486INVITE_04
             
    @@ -3390,7 +3445,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_487INVITE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3400,9 +3455,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
    -                                                                                                  p_sip.request.msgHeader.toField
    +                                                                                                  p_sip.request.msgHeader.toField,
    +                                                                                                  omit
                                                                                                       )
                                                                               )
                                                              },
    @@ -3411,11 +3467,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_487INVITE_01",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_01
             
    @@ -3456,7 +3514,7 @@ module AtsImsIot_TP_behavior_MW_PS {
             function f_mtc_check_TP_MW_PCSCF_487INVITE_02(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3466,9 +3524,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
    -                                                                                                  p_sip.request.msgHeader.toField
    +                                                                                                  p_sip.request.msgHeader.toField,
    +                                                                                                  omit
                                                                                                       )
                                                                               )
                                                              },
    @@ -3477,18 +3536,20 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_487INVITE_02",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_02
             
             function f_mtc_check_TP_MW_PCSCF_487INVITE_03(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3498,7 +3559,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
                                                                                                       p_sip.request.msgHeader.toField
                                                                                                       )
    @@ -3509,18 +3570,20 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_487INVITE_03",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_03
             
             function f_mtc_check_TP_MW_PCSCF_487INVITE_04(
                                                           in SipInterfaceMonitor p_monitorCompRef,
                                                           in boolean p_checkMessage := false,
    -                                                      in SipMessage p_sip
    +                                                      inout SipMessage p_sip
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 487 Request Terminated
    @@ -3530,7 +3593,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(
                                                                               mw_487RequestTerminated( // TODO Enforce template
                                                                                                       p_sip.request.msgHeader.callId,
    -                                                                                                  p_sip.request.msgHeader.cSeq,
    +                                                                                                  -, // New CSeq
                                                                                                       p_sip.request.msgHeader.fromField,
                                                                                                       p_sip.request.msgHeader.toField
                                                                                                       )
    @@ -3541,11 +3604,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                              },
                                                              { 0, omit },
                                                              "TP_MW_PCSCF_487INVITE_04",
    -                                                         false,
    +                                                         true,
                                                              p_checkMessage
                                                              )
                                             );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_04
             
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    index 97b314d..7652a1e 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    @@ -241,7 +241,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_REGISTER_02(
                                                          in SipInterfaceMonitor p_monitorCompRef,
    -                                                     in boolean p_checkMessage := true
    +                                                     in boolean p_checkMessage := false
                                                          ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)){
                     var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    @@ -324,7 +324,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_REGISTER_07(
                                                          in SipInterfaceMonitor p_monitorCompRef,
    -                                                     in boolean p_checkMessage := true
    +                                                     in boolean p_checkMessage := false
                                                          ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
    @@ -372,7 +372,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_REGISTER_10(
                                                          in SipInterfaceMonitor p_monitorCompRef,
    -                                                     in boolean p_checkMessage := true
    +                                                     in boolean p_checkMessage := false
                                                          ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
    @@ -441,7 +441,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_SUBSCRIBE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true
    +                                                      in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the SUBSCRIBE
    @@ -506,38 +506,35 @@ module AtsImsIot_TP_behavior_MW_SI {
              *     }
              */
             function f_mtc_check_TP_MW_SCSCF_NOTIFY_01(
    -                                                      in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true
    -                                                      ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { 
    -                                                        mw_SipRequest(mw_NOTIFY_Request_Base),
    -                                                        mw_SipResponse (mw_200OK_Base)
    -                                                    },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_SCSCF_NOTIFY_01",
    -                                                    false,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    -           
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { 
    -                                                        mw_SipRequest(mw_NOTIFY_Request_Base),
    -                                                        mw_SipResponse (mw_200OK_Base)
    -                                                    },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_SCSCF_NOTIFY_01",
    -                                                    false,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    +                                                   in SipInterfaceMonitor p_monitorCompRef,
    +                                                   in boolean p_checkMessage := false
    +                                                   ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the NOTIFY
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipRequest(mw_NOTIFY_Request_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_NOTIFY_01 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Check NOTIFY 200 OK response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipResponse (mw_200OK_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_NOTIFY_01 - Response",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_NOTIFY_01
             
             /**
    @@ -565,23 +562,35 @@ module AtsImsIot_TP_behavior_MW_SI {
              *     }
              */
             function f_mtc_check_TP_MW_SCSCF_NOTIFY_02(
    -                                                      in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true
    -                                                      ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { 
    -                                                        mw_SipRequest(mw_NOTIFY_Request_Base),
    -                                                        mw_SipResponse (mw_200OK_Base)
    -                                                    },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_SCSCF_NOTIFY_02",
    -                                                    false,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    +                                                   in SipInterfaceMonitor p_monitorCompRef,
    +                                                   in boolean p_checkMessage := false
    +                                                   ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the NOTIFY
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipRequest(mw_NOTIFY_Request_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_NOTIFY_01 - Request",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Check NOTIFY 200 OK response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipResponse (mw_200OK_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_NOTIFY_02 - Response",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_NOTIFY_02
             
         } // End of group imsNotify
    @@ -633,20 +642,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_INVITE_01(
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := true,
    +                                                   in boolean p_checkMessage := false,
                                                        in boolean p_forward_to_mtc := false
                                                        ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { mw_SipRequest(mw_INVITE_Request_Base) },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_SCSCF_REGISTER_01",
    -                                                    p_forward_to_mtc,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_REGISTER_01 - Request",
    +                                                        p_forward_to_mtc,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_INVITE_01
             
             /**
    @@ -694,20 +706,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_INVITE_02(
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := true,
    +                                                   in boolean p_checkMessage := false,
                                                        in boolean p_forward_to_mtc := false
                                                        ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { mw_SipRequest(mw_INVITE_Request_Base) },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_SCSCF_REGISTER_01",
    -                                                    p_forward_to_mtc,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_REGISTER_02",
    +                                                        p_forward_to_mtc,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_INVITE_02
             
             /**
    @@ -756,7 +771,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    @@ -824,7 +839,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    @@ -848,7 +863,7 @@ module AtsImsIot_TP_behavior_MW_SI {
             
             function f_mtc_check_TP_MW_SCSCF_RE_INVITE_03( // FIXME RMI case, to be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    @@ -872,7 +887,7 @@ module AtsImsIot_TP_behavior_MW_SI {
             
             function f_mtc_check_TP_MW_SCSCF_RE_INVITE_04( // FIXME RMI case, to be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    @@ -922,7 +937,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_100Trying_01(
                                                           SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -961,7 +976,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_100Trying_02(
                                                           SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1016,20 +1031,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_180RINGING_01(
                                                            in SipInterfaceMonitor p_monitorCompRef,
    -                                                       in boolean p_checkMessage := true,
    +                                                       in boolean p_checkMessage := false,
                                                            in boolean p_forward_to_mtc := false
                                                            ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { mw_SipResponse(mw_180Ringing_Base) },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_SCSCF_180RINGING_01",
    -                                                    p_forward_to_mtc,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 180 RINGING
    +                 p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipResponse(mw_180Ringing_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_180RINGING_01",
    +                                                        p_forward_to_mtc,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_180RINGING_01
             
             /**
    @@ -1071,20 +1089,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_180RINGING_02(
                                                            in SipInterfaceMonitor p_monitorCompRef,
    -                                                       in boolean p_checkMessage := true,
    +                                                       in boolean p_checkMessage := false,
                                                            in boolean p_forward_to_mtc := false
                                                            ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { mw_SipResponse(mw_180Ringing_Base) },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_SCSCF_180RINGING_02",
    -                                                    p_forward_to_mtc,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the 180 RINGING
    +                 p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { mw_SipResponse(mw_180Ringing_Base) },
    +                                                        {},
    +                                                        {0, omit},
    +                                                        "TP_MW_SCSCF_180RINGING_02",
    +                                                        p_forward_to_mtc,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_180RINGING_02
             
         } // End of group ims180Ringing
    @@ -1132,7 +1153,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_200OK_01(
                                                       SipInterfaceMonitor p_monitorCompRef,
    -                                                  in boolean p_checkMessage := true,
    +                                                  in boolean p_checkMessage := false,
                                                       in boolean p_forward_to_mtc := false
                                                       ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1189,7 +1210,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_200OK_02(
                                                       SipInterfaceMonitor p_monitorCompRef,
    -                                                  in boolean p_checkMessage := true,
    +                                                  in boolean p_checkMessage := false,
                                                       in boolean p_forward_to_mtc := false,
                                                       in integer p_skipCount := 1
                                                       ) runs on ImsTestCoordinator {
    @@ -1250,7 +1271,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_ACK_01(
                                                     in SipInterfaceMonitor p_monitorCompRef,
    -                                                in boolean p_checkMessage := true,
    +                                                in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1301,7 +1322,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_ACK_02(
                                                     in SipInterfaceMonitor p_monitorCompRef,
    -                                                in boolean p_checkMessage := true,
    +                                                in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1357,7 +1378,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_BYE_01(
                                                     in SipInterfaceMonitor p_monitorCompRef,
    -                                                in boolean p_checkMessage := true,
    +                                                in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1409,7 +1430,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_BYE_02(
                                                     in SipInterfaceMonitor p_monitorCompRef,
    -                                                in boolean p_checkMessage := true,
    +                                                in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1462,7 +1483,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_BYE_03(
                                                     in SipInterfaceMonitor p_monitorCompRef,
    -                                                in boolean p_checkMessage := true,
    +                                                in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1519,20 +1540,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_CANCEL_01(
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := true,
    +                                                   in boolean p_checkMessage := false,
                                                        in boolean p_forward_to_mtc := false
                                                        ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                    { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME
    -                    {},
    -                    { 0, omit },
    -                    "TP_MW_SCSCF_CANCEL_01",
    -                    p_forward_to_mtc,
    -                    p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the CANCEL
    +                p_monitorCompRef.start(
    +                                      f_Iot_Sip_receive(
    +                                                        { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME
    +                                                        {},
    +                                                        { 0, omit },
    +                                                        "TP_MW_SCSCF_CANCEL_01",
    +                                                        p_forward_to_mtc,
    +                                                        p_checkMessage
    +                                                        )
    +                                      );
    +                p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_CANCEL_01
             
             /**
    @@ -1572,20 +1596,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_CANCEL_02(
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := true,
    +                                                   in boolean p_checkMessage := false,
                                                        in boolean p_forward_to_mtc := false
                                                        ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                    { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME
    -                    {},
    -                    { 0, omit },
    -                    "TP_MW_SCSCF_CANCEL_02",
    -                    p_forward_to_mtc,
    -                    p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the CANCEL
    +                p_monitorCompRef.start(
    +                                      f_Iot_Sip_receive(
    +                                                        { mw_SipRequest(mw_CANCEL_Request_Base(?)) }, //FIXME
    +                                                        {},
    +                                                        { 0, omit },
    +                                                        "TP_MW_SCSCF_CANCEL_02",
    +                                                        p_forward_to_mtc,
    +                                                        p_checkMessage
    +                                                        )
    +                                      );
    +                p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_CANCEL_02
             
         }
    @@ -1628,20 +1655,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_486INVITE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                    { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME
    -                    {},
    -                    { 0, omit },
    -                    "TP_MW_SCSCF_486INVITE_01",
    -                    p_forward_to_mtc,
    -                    p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +                p_monitorCompRef.start(
    +                    f_Iot_Sip_receive(
    +                        { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME
    +                        {},
    +                        { 0, omit },
    +                        "TP_MW_SCSCF_486INVITE_01",
    +                        p_forward_to_mtc,
    +                        p_checkMessage
    +                    )
    +                );
    +                p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_486INVITE_01
             
             /**
    @@ -1680,20 +1710,23 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_486INVITE_02(
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                    { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME
    -                    {},
    -                    { 0, omit },
    -                    "TP_MW_SCSCF_486INVITE_01",
    -                    p_forward_to_mtc,
    -                    p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    +            if (isvalue(p_monitorCompRef)) {
    +                // Check the INVITE
    +                p_monitorCompRef.start(
    +                    f_Iot_Sip_receive(
    +                        { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME
    +                        {},
    +                        { 0, omit },
    +                        "TP_MW_SCSCF_486INVITE_01",
    +                        p_forward_to_mtc,
    +                        p_checkMessage
    +                    )
    +                );
    +                p_monitorCompRef.done;
    +            }
             } // End of function f_mtc_check_TP_MW_SCSCF_486INVITE_02
             
         } // End of group imsBusy
    @@ -1736,7 +1769,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_487INVITE_01(
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    @@ -1788,7 +1821,7 @@ module AtsImsIot_TP_behavior_MW_SI {
              */
             function f_mtc_check_TP_MW_SCSCF_487INVITE_02(
                                                           in SipInterfaceMonitor p_monitorCompRef,
    -                                                      in boolean p_checkMessage := true,
    +                                                      in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
                 p_monitorCompRef.start(
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    index 0252074..84dbcef 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    @@ -151,7 +151,7 @@ module AtsImsIot_Templates_GM {
                                                    template (present) CSeq p_cSeq := ?,
                                                    template (present) From p_from := ?,
                                                    template (present) To p_to := ?,
    -                                               template (present) WwwAuthenticate p_wwwAuthenticate := ?
    +                                               template WwwAuthenticate p_wwwAuthenticate := ?
                                                    ) modifies mw_486Busy_Base := {
                 msgHeader := {
                     callId    := p_callId,
    @@ -167,7 +167,7 @@ module AtsImsIot_Templates_GM {
                                                                 template (present) CSeq p_cSeq := ?,
                                                                 template (present) From p_from := ?,
                                                                 template (present) To p_to := ?,
    -                                                            template (present) WwwAuthenticate p_wwwAuthenticate := ?
    +                                                            template WwwAuthenticate p_wwwAuthenticate := ?
                                                                 ) modifies mw_487RequestTerminated_Base := {
                 msgHeader := {
                     callId    := p_callId,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    index ec3b9de..aea25ea 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    @@ -158,7 +158,7 @@ module AtsImsIot_Templates_MW {
                                                    template (present) CSeq p_cSeq := ?,
                                                    template (present) From p_from := ?,
                                                    template (present) To p_to := ?,
    -                                               template (present) WwwAuthenticate p_wwwAuthenticate := ?
    +                                               template WwwAuthenticate p_wwwAuthenticate := ?
                                                    ) modifies mw_486Busy_Base := {
                 msgHeader := {
                     callId    := p_callId,
    @@ -174,7 +174,7 @@ module AtsImsIot_Templates_MW {
                                                                 template (present) CSeq p_cSeq := ?,
                                                                 template (present) From p_from := ?,
                                                                 template (present) To p_to := ?,
    -                                                            template (present) WwwAuthenticate p_wwwAuthenticate := ?
    +                                                            template WwwAuthenticate p_wwwAuthenticate := ?
                                                                 ) modifies mw_487RequestTerminated_Base := {
                 msgHeader := {
                     callId    := p_callId,
    @@ -538,6 +538,9 @@ module AtsImsIot_Templates_MW {
                                                                  template (present) From p_from := ?,
                                                                  template (present) To p_to := ?
                                                                  ) modifies mw_TP_MW_PCSCF_ACK_01 := {
    +            msgHeader := {
    +                route := omit
    +            }
             } // End of template mw_TP_MW_PCSCF_ACK_02
             
             template (present) ACK_Request mw_TP_MW_PCSCF_ACK_03( // TODO To be enforced
    -- 
    GitLab
    
    
    From 9d0f545160866f664ca207f22d77f96e3e4f2c94 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Thu, 26 Aug 2021 10:29:19 +0000
    Subject: [PATCH 153/176] Updates due to validation on templates and all
     interfaces
    
    ---
     tracefiles/TC_VxLTE_INT_REG_01.pcapng         | Bin 20762 -> 21832 bytes
     .../AtsImsIot_Diameter_Templates.ttcn         | 189 +++++++++++--
     ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn          |   7 +-
     ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn          |   9 +-
     ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn          | 254 ++++++++++--------
     ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn          |  32 ++-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn  |  58 ++--
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn  |  88 ++++--
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn  |   4 +-
     .../AtsImsIot_TP_behavior_MW_PS.ttcn          |  58 ++--
     .../AtsImsIot_TP_behavior_MW_SI.ttcn          |   4 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn  |   4 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn |  62 +++--
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn  |  62 +++--
     ttcn/AtsImsIot/AtsImsIot_Templates.ttcn       |  14 +-
     ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn    |  16 ++
     ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn    |  16 ++
     ttcn/LibSip                                   |   2 +-
     18 files changed, 617 insertions(+), 262 deletions(-)
    
    diff --git a/tracefiles/TC_VxLTE_INT_REG_01.pcapng b/tracefiles/TC_VxLTE_INT_REG_01.pcapng
    index b1bff0e3cadcf708c1ba9fe3f787fde404f05a1e..565e901c86bcb15bfbf78defc97b5be2f3d9918c 100644
    GIT binary patch
    literal 21832
    zcmeHPYm6J$b-tXXUK=eWW#hn3rC>}yAWJ*k89rwC_P$q?tkrgRwXy`&)^Io^N8*yy
    z%y1<+2CTL&j8-n%1Oe(GYbXv9Cuz1Y;G&6T)y)QWfTYNe#1<`P;t#z3x}KUw8l86ZcLG
    zk0vLlh9_uEDMgeS%{x<&SeEn7NX9?@Y^hX`^)p5Fl((p6>B;1Hug}YNbxtc{#JcM}
    zJTy*og3s#j6H+8QLt5%YN_IRu|xeW@%+Y>E{_AwL)7!r^pSKRc@YZ00ccXf_4{gNbW8Z%~&F_SE0pyU40@o{FDIXpGdKgNs<4Mpj)
    z4ui=^GQ3?$GdL@8W3*Uy5I&q^gDec?V6mXf1)X_7E@bswgoao4m-SpxRUQ#_rC5m2
    zLrPZGbh@l6anG_Q+|yImWVIm9$Z=2G)8pw;Wvx^!Xiyoi#r#a%v*e_DdJ4sYWK^LQ
    z_@Jz+=;xS{TGVApm($Qfi4ireC^6?`&C}I6e72;(dtg9W{OjtRESE|}6^cgalBnlk
    z5c2urnFyU6n@&y*_Y52z?iuVK8ytS1r+@H3&)A`<2@4l=Ma9s!{%N%HZ==Jzh?i64AX`FV34+ku-%-W^_64saDozVA`UUmI`MWrJ(3cS<{s0tdf?C(Y=uE
    zRSKF8OAm%H28~Cu+KdQGTUH_=J{014*2l1ZAs7xaY@*h(Xb7Tyt_0Ok&dPaF^}+B?
    z$fwINzSdYy6w5l?80*#eWX{Wl{g60V^dUByR}&!CFzl5wx~$G91rWbNwr`0c!n)ND
    z6?F+lD8^O)63~}%W?In{nAzHTfu#sz74RzBDOH4_^3I5-x;nc$Q6uJlMv<$a9x;JN
    zoZ8xJ>P66qIoFlx@Ai?tjYm`SpM0txQcQe)+s?VUU;ppL{p7FC-@YODXA0<6*XGXr
    zvxlF`o%}?=MOK0+8x(xi;p4`*khusWjx$N2+TkGR}W
    zo`!!r;oq%!1br`8XU5URgdFI
    zJq*t+M24xMj=}w23z1t{5-1^EZ&PFsNCzh88lrYyFzltf|EPWqxw3O}zZG!}1s;R>
    zG}q8HN(o5FzxS=bglz3whxGzOxnetHjb__9lQ{cxmD!i!+L~qP>Y~!{x$}hN%sM33
    zx2T;*ijen-gG0ueEWq_v5!^;X$T_&)oz8?pQUE+!J{1T^d|2QFKObVlK30-MQ4XWz
    z{OSKuWGhGwCX;nA<;SqJKRo&>=$0Mdd;xg}cVIt%q;@W3g<_0pqd3=D7^EPiuJ%}lcE0gvltd2v92
    z3cf%fEPR}Z&|7fY2&cDb*EQG|G@ZM@{XqxW1CAXgCuQW?dEo_vcKyS8%BbVe+}yh^
    zq>Ns?2smI;Mi+oGdJP&u%E;PcTQ6i;C(5Wjvd#a)4#ERnf(b^hZgY~_J^hk_$(!pj
    z`CZq={cgd)n$-h}3F2?Y&UDrkclUXRSY)roS=-3;(+1L)X3S~13
    zHNp<2h$`9c!4{(Q^Mr&05s(TBr55D$4eu1+oz~{C7VWyZ`J=o}QIe
    z4I*afIPKxQtcR8hQZWrN4EW&i)Cd#u+@FXg4^B>&Q<|hIB@C}g#Ku)+7O1x5P@?S(
    z>{xHDa%|F!0vT6}86_`6yX90~k&t>~DXg)vVjSX)u+S!`4-mP?prUc?T{Kr*KjW++gs
    zw{jaBJ_~_UIN^y{ul?G1)9PPW2_;(9`|Km(_&ms}d>#htK!DfbiDcqV@1E%7ly}dg
    z@bAI+z@&9GHc`ELz`N(pSg);4>v8C6QVAnYuj`f;#jXJR*IU|^s&)&>U3CEx`#7`PZQrI{_k
    zm5~$cZPLBoMI>{P$FLwxA@$vOfwerdnh5n8V);8eCx%?WY*uyPQaW)!R8^3fBq$J5
    zC{cPEAJ%l|iei*nD!zt3_c{>*upUtS3-vGMT1j
    z&YmY^pV{WhaS$zvD_w4~4_E_C&aFImZzN!C*Z5eLK6GHU8+Z`M
    zy0Sn^2t-aqWiuc&ZpMSQ9})?@uZ#b+lkBT!IvREmSIK!8JBVjAJ#$jyeX}Q5u!FeR
    z_6NjnVVJFg=*j@3Kt!k0-oRMT#!~Iu6H$yZj+b)9f(%VomO5jPH3dzawc*9XT&
    zvHy%xRN@Ud7{w6T=2LNk|PPgqA1Y#L}*I+f#@*%>9I_L
    zE1&k$$wSG;AZ{bvd%c8zxpCxc8@^h9{sY5fovQ`Ha%&H9bRx7^GqZb*BLbj6_JWIw
    zLGE?FYP{Z4jaU8D&KOiN&Wu=YEfn=6Vin67&JZ-1(sfy}UaNk>2&@0pXWe8NRxu`L
    zKu3pgdPfO1p2JC+n;OrZ3m$ZUNu+0BQC$Tp7?X2R
    zQCE%+6Nq2dzKDxzepk;%`ZL>h<}cm5b-O7pInk!f2&cCY{q)H5ej3r0miR#CWqR%P@`UB5;vQA!1_-$C8sSzz)bv?^z7)}HOqZav^Tt)s?auY*VM
    zpBqlZ8t^XTkyyqe{hK@U>*R4aab4+E_^u{m{=+kFG5}JJsj5FJXZ@(a=m!|$68ow>
    z#D${2`17iWw2<_QY1$xg2GwFo+bYG7G`gz})9LK|BeXQRP2hp2Fq1flQ
    z(aeJLw>`Cky6S@s|(GDgDlKV4G|pMsiN6`&Y+y
    z;FNy-PwZ3b{(0m-%-;ksIHz{BFa8WhMH*HKKr0l3pg&BTeXstmMsp=*pSqC?nS+C+>0?2DTG_j9G_O;B;oMD4s2h18FdUGy
    zX+Z7k?#}f@$CsQC*AhsU2OkyH0tct;x~K)3RSkNp
    z{q?k*>h*7yKf<>UKt;=Y=(Pn`Q3&uy{+SreP7238F^
    zz44PBzMU$SgaY_>#ZaJ7%7lG-+3@Y!o27P#*%Xguqg-rsfqh|c;W1SsSYdY<_l2qXpS_9}`r}Ek&|gI>z5AElSE;A2l$?lE)jK!+Zm(f@
    zr?o)fOkRWYs7;)!CGBlhmSixF)6N)#dKG?CZVK0eC2rW}F@hFYqV`|eGkwkd^hUBB
    zq!^Qfdd*SP@duE4{p*OGdUgF*?&zYDTywsbPh7SMkap9n1uWKjVgtwqlVPpIvcWx!
    zV@yxY9kLOnYr8#fi;Gwn!t!&wHV;
    T86k1k#q?^jz}9x6yE^|L-vY3w
    
    literal 20762
    zcmeHPe{37qeSf4BN22X^j*u=x9qh`)sAucQyW@}J@mC~^lET=QRZ)@~7pQ$Y9;uVa
    zJNigUmeZilk0ENYKendGGGpu7p=kHRSd09z&MVS7TZUm8F+c%<(|Kb
    zpPCvSPiLk_r>L@0iYmpjuc%54!}^Mn@e#Z!Vx~q3E?4D;CyU20wwI@;hkm`F>1Y`epX65l(hYN~`?_IpMzloS{vN`)Ex+waL#OC?RO$k`}W5-aoYf`x*%9Hr6|v+3#4
    z!DEk(4vq{@jEtTb93DA7IB{w^J@)9}%w%d9Zca|&we-Z;slk(@nauF`=-{cz>GY|I
    zjJb58RH-pp8?q*2NAo^hcb_7a68x8OS)E(B~S~XUrMxCE^89K
    zBA0KU265_2wnYF?p@VYND~W2hv}?7?lzhGl8rssvQ(CnGUks~nyfW)!g#Z*5q&~vL
    z3VIUQ8WeY}O-0s=iVDU_%@3`yMA)~kM#YK*`Zvzj|B^uJNqSZ(E5HN|YYLVfG;z?U
    zloxdo6tS-;E?O$_6KDF!P4JDdfJ&U+=QkB2sKj~K_0&&>$k3j}k6yXw`C%w=@r4f_
    zyu3K{qpQ?!v6t?YlPg7b8J7pTZ8+*WWECoMcj|V
    z_hJ0LDW4FBfC&u|A~=N$p5NUog^p+h1NlC353C#(lh!8P(FnSF&s;)^&%T1xMyh}C
    zp!fn(`|{$kXD;2h&+YkNcsx*iZ(;dL0>7#AG$kAJ@};7Oq=z
    z38ZnKf$v8xx$LG-kVDR_^pPXL9ax+)_efwKLPg91x
    z$R)rb|30+y9I|g{2jm5oa?{#qo2c!iBvSu(Yt)yaZc!Pg+L0R`yF|#m*@w&zb=3Am
    zgL`{Vra~|lQK7z1gwPV|D^Ne2%|#+oP!0ydbHSh#7I>Bqgd>c=F_I*TvVffP_QgK3
    zAGijK8GM-hW7ymGs5o%Wftx2W{J=0|;I)C5U2pL}ui*()kYTAA6`zUWtemyQ?wfJ8
    zJ3|8R!;r&7L*~P(CQEbtTss`1#l37sAv(oZr%#`z5h4K8K#{;fsv`uAV7=LSs=MD|
    zMhFODHj>Q-*enwk!y#sl$#J;|E9d5dyvT@hkP~FdJ9u6zCA>&DaM9Wz6lQ$-)Z=~R
    z9Z*JC2>B#&J!~RWhH3uM>OT{5>A=c8h)W?ph1itq)h9mPnK`yj#cc`~4cgT>R1j#+
    zM#auNcxz#)_YD)o2K&h;0K3HE1Soq?lA8!nKJisMK-nvN{qfC$6x+rk0vp^`fReqX
    z0A(P|acqbeg53KFpxhehXaS8*-L(VNx#EBAMMZrjxkK{rTAu=cC!U*Qw!9%wR4;7hyq5~d^
    z#dJd&c<5c()z=XZz4)hgJoK)~*T1@1RkLwCG`Bd%E^x48Qm)F9DwUwVLwM*d(O#Qz
    z(VBNlZYLgkM;WzIMt9)X_rd1QE{0zvuD=`n`rim7EI!Z-HKk5prJjAW8Gd~X0XeS&
    ze%%L9lLqnmx}hck!;W1AHSIq5^$YQSas=W#EKcaib@0rSNb%WkG($(vzIl0Z^k)bi
    zjs6?Z$Apfi7p_0%fk6;DvHJkw8(^%0{u<*zSz<|*W&
    zQ(tJ7zt6vNd2#$Ll)vBnTa$}`gU%o)xkw)w+IcS8A^F=9boyle)45h+8_9
    z-0*f*+~4RN&zKn}le(5u3Nnmaohv9(I*X8AWd$B=)nNNGdXx`_tu(B-zkUk_bo6q5
    zuQ$cLJNqbWCv$auP8#xG6tOU-6kscO1fpVDS43lRFhpKSvc|ib_4u@||x
    zDDJO)jgMY{Br7C%GVZt6jVEpWakbQ>Ej`b^5{}n{Tea6i-w~3*W~S1~kNA$nGSj{z
    zpMuYmiDMb7HZfJNo$wv`NZfDh(|sNM&9oXWm4GRYBsAn#Sx*{#E9(=GS(Zees)%J{
    z8+u8@1Ssb=Ib;tALfmimHTuL;a!#xkDi4clwgAG0)OTL8WCN4xlJEcu0y)giDw`ug
    z&A1cyx0#;517~))3<7B~DR=uB)pE~Pop?;tb>NvaC=in=
    zk$YM%HgxBvG8VcjzLq)rofZOYJy`LDYlKXj*517cbz^f^l5%HttyN5*eX*%cu5FtO
    zmk4>-9CPz_5Iu@7{(3)216Ys6xuw?|qb9(kIB?@V`<7nsN24KY*9Ox4s8h$cx{(Jt
    zuZ_e_rz!20Qv~_D$(U>=m?q5p(v7EI!t9%pi|yF`);Aa$uvra1-YQsU>_#n1EBSyj
    z&uM`8ZyPcRnar4Vr=WSI!KOfhm($_E)UVc78+RyTn39|*&1_
    z9Ewwv6(Stg&CjC#f-7?vMOUvT9y_o
    ziRN6n7|x$oG$qku2xFKr*Zvl+ZhhKgRaHXYh#t;nA%VIKIn~-7@zVDfS@)teCC=jar@HMv?uwbr0&y^3HM#XaCuMNd=?@QkwxH<4v
    z&+|8Omf6P9yuXKGAJv{`IDnZtr1^=IswWEaH?F7WbX4i?}*bN^JPqe&aj>
    zD3GHNqhii$Q?Qz74pkHNK-Ck6F2(^9E3Sp6-ekPyI>Uj57GJvQR@`s(PZ|dg-u+BJ
    z83#$m;!N!55ms+tV#o5g?1>#chyLkJr;A_{8K;Sd$8}HsY&uM|Ee5oa&S5vDogIOl
    zPv@|2;v+{ilvdlLESA?30Jmo|K2IAne*27l&BqIb>t{gq}z6)%gmSh
    z<5$5z0ve2^j^%-wL<8x*GBk+>^26T&1NnV4k^^rI+;l(x+pA8osx#)UH+zO-o7aS#
    zT&V^^?Na2{w1T=U$;uKOA#pfkzW~;;;WgeiE83Bhe}2|OQozMnoJn8qF!>iu`g-a`
    zd(xNNn|U%bb1XA5l|D8~ITcUCsjC?cXM<*Y5U~!IwluSxH}l+RAiz-dhr%t#!BK&a
    z7zam#0XSpIY{$XTK!lC(Tp-Mb+T~^0qn%a-2uEcG8)t9?-&(qHI}f3bE&=i!rF1#p
    za87LMYi;XVzO**)&>uD*fUJ&zx=
    zW%t~4U;Ude*U8(3r&^rr+TwRS*%(?nF9pgR!{x;Q9BWmw*`||?EnHX27tI9(XjnhA
    zC~TEYGbw9C$kdfsP8Q)zmKY36e1OXdLMR**d3i1(2-2-PkhmdEak_o2>)vGb0T^iE
    z4Z~}Z@$m2(TxA!oZG;lqgeBA#f^w79z2`mTW!Ub+;)LK_e?}G15xAMFLvS}CarzJV
    zuXl6=Hp3^)BE6QK1
    zwZ_V>UtesJ55f_SGUr}D@7-Q2+KFfU9z^?Qjj7w2qD66cp-o#jquwTSpg8pi|0zpSn%W8x$LRQ
    zR<74Lk$(=-~$zD)2)IxoV*R;0BIX
    z2K#}CDJ5z!n3J`9sfGoHKX48SlKmvu|d+C_+sJh;*dlA%6k}4vP~+a{b=w
    zP2+UXX*-DI`pnZ`aT>XbZXlEF?i!
    zX@Xw;b@S9l@=Sw-W7lmGOtaZ4wVn4i+NG8^TbF6tmNzrs6wMN5KU5#tOP&CWgvE(m
    zxys~U5xIK$({|*_b@s>ComT0#sW2mN;nt`mRF~ie*?*X9dpFC>xar1;z2pEuK3E*E
    z&%C>56$k>b&zJ15kLy4Ga?VMRx+!P`5*vttHnysEC!&jbZ_LE5=vz2v&5&lD5O+(c
    XlfXoYhHGzw^R}0a-4htL2A2FkA33X|
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    index 324e689..fc1a232 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    @@ -232,10 +232,10 @@ module AtsImsIot_Diameter_Templates {
                     max_Requested_Bandwidth_DL    := *,
                     guaranteed_Bitrate_UL         := *,
                     guaranteed_Bitrate_DL         := *,
    -                bearer_Identifier             := ?,
    +                bearer_Identifier             := *,
                     allocation_Retention_Priority := *,
    -                aPN_Aggregate_Max_Bitrate_UL  := ?,
    -                aPN_Aggregate_Max_Bitrate_DL  := ?,
    +                aPN_Aggregate_Max_Bitrate_UL  := *,
    +                aPN_Aggregate_Max_Bitrate_DL  := *,
                     aVP_Type                      := *
                 }
                 
    @@ -959,56 +959,85 @@ module AtsImsIot_Diameter_Templates {
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
                         }
                     }
    +                
    +                template STA_MSG mw_STA_diamSuccess modifies mw_STA_basic := {
    +                    sTA_Body :={
    +                        result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
    +                    }
    +                }
                 }// end group RxRequestMessageTemplates
             }//end group RxMessageTemplates
             
             group GxMessageTemplates{
    +            group GxRequestBasicTemplates{
    +
    +                template CCR_MSG mw_CCR_basic modifies mw_CCR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdGx)
    +                }
    +
    +                template RAR_MSG mw_RAR_Gx_basic modifies mw_RAR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(RAR_E, c_applIdGx)
    +                }
    +                
    +            }
                 group GxRequestMessageTemplates{
     
    -                template CCR_MSG mw_CCR_RequestType(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := {
    +                template CCR_MSG mw_CCR_RequestType(CC_Request_Ty_Type p_avpData) modifies mw_CCR_basic := {
                         cCR_Body :={
                             cC_Request_Type := mw_cC_Request_Type(p_avpData)
                         }
                     }
                     
    -                template CCR_MSG mw_CCR_SubscriberIMSI_qosInformation_class5(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := {
    +                template CCR_MSG mw_CCR_SubscriberIMSI_qosInformation_class5(CC_Request_Ty_Type p_avpData) modifies mw_CCR_basic := {
                         cCR_Body :={
                             cC_Request_Type        := mw_cC_Request_Type(p_avpData),
                             subscription_Id        := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
                             iP_CAN_Type            := ?,
                             rat_Type               := ?,
                             called_Station_Id      := ?,
    -                        pDN_Connection_ID      := ?,
    +                        pDN_Connection_ID      := *,
                             framed_IP_Address      := ?,
                             //framed_IPv6_Prefix     := *,
    -                        bearer_Usage           := mw_bearer_Usage(IMS_SIGNALLING_E),
    +                        //bearer_Usage           := mw_bearer_Usage(IMS_SIGNALLING_E),
                             qoS_Information        := mw_qoS_Information,
                             default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5
                         }
                     }
     
    -                template RAR_MSG mw_RAR_ChargingRuleInstall(template Charging_Rule_Install_AVP p_Charging_Rule_Install) modifies mw_RAR_dummy := {
    +                template RAR_MSG mw_RAR_ChargingRuleInstall(template Charging_Rule_Install_AVP p_Charging_Rule_Install) modifies mw_RAR_Gx_basic := {
                         rAR_Body :={
                             charging_Rule_Install := {p_Charging_Rule_Install}
                         }
                     }
     
    -                template RAR_MSG mw_RAR_ChargingRuleRemove modifies mw_RAR_dummy := {
    +                template RAR_MSG mw_RAR_ChargingRuleRemove modifies mw_RAR_Gx_basic := {
                         rAR_Body :={
                             charging_Rule_Remove := {mw_chrgRuleRemove_Name}
                         }
                     }
                 
                 }// end group GxRequestMessageTemplates
    +            
    +            group GxAnswerBasicTemplates{
    +                
    +                template CCA_MSG mw_CCA_basic modifies mw_CCA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(CCA_E, c_applIdGx)
    +                }
    +                
    +                template RAA_MSG mw_RAA_Gx_basic modifies mw_RAA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(RAA_E, c_applIdGx)
    +                }
    +            }
    +            
                 group GxAnswertMessageTemplates{
                     
    -                template CCA_MSG mw_CCA_resultCode modifies mw_CCA_dummy := {
    +                template CCA_MSG mw_CCA_resultCode modifies mw_CCA_basic := {
                         cCA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
                         }
                     }
                     
    -                template CCA_MSG mw_CCA_qosInformation_class5 modifies mw_CCA_dummy := {
    +                template CCA_MSG mw_CCA_qosInformation_class5 modifies mw_CCA_basic := {
                         cCA_Body :={
                             result_Code            := mw_resultCode(mw_resultCode_diameterSuccess),
                             qoS_Information        := {mw_qoS_Information},
    @@ -1016,7 +1045,7 @@ module AtsImsIot_Diameter_Templates {
                         }
                     }
                     
    -                template RAA_MSG mw_RAA_resultCode modifies mw_RAA_dummy := {
    +                template RAA_MSG mw_RAA_resultCode modifies mw_RAA_Gx_basic := {
                         rAA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
                         }
    @@ -1025,6 +1054,25 @@ module AtsImsIot_Diameter_Templates {
             }//end group GxMessageTemplates
             
             group S6aMessageTemplates{
    +            group S6aRequestBasicTemplates{
    +
    +                template AIR_MSG mw_AIR_basic modifies mw_AIR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(AIR_E, c_applIdS6a)
    +                }
    +
    +                template CLR_MSG mw_CLR_basic modifies mw_CLR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(CLR_E, c_applIdS6a)
    +                }
    +
    +                template PUER_MSG mw_PUER_basic modifies mw_PUER_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(PUER_E, c_applIdS6a)
    +                }
    +
    +                template ULR_MSG mw_ULR_basic modifies mw_ULR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(ULR_E, c_applIdS6a)
    +                }
    +                
    +            }
                 group S6aRequestMessageTemplates{
     
                     template AIR_MSG mw_AIR modifies mw_AIR_dummy := {
    @@ -1061,34 +1109,53 @@ module AtsImsIot_Diameter_Templates {
     
                 
                 }// end group S6aRequestMessageTemplates
    +            group S6aAnswerBasicTemplates{
    +
    +                template AIA_MSG mw_AIA_basic modifies mw_AIA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(AIA_E, c_applIdS6a)
    +                }
    +
    +                template CLA_MSG mw_CLA_basic modifies mw_CLA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(CLA_E, c_applIdS6a)
    +                }
    +
    +                template PUEA_MSG mw_PUEA_basic modifies mw_PUEA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(PUEA_E, c_applIdS6a)
    +                }
    +
    +                template ULA_MSG mw_ULA_basic modifies mw_ULA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(ULA_E, c_applIdS6a)
    +                }
    +                
    +            }
                 group S6aAnswertMessageTemplates{
                     
    -                template AIA_MSG mw_AIA_resultCode modifies mw_AIA_dummy := {
    +                template AIA_MSG mw_AIA_resultCode modifies mw_AIA_basic := {
                         aIA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
                             authentication_Info := ?
                         }
                     }
     
    -                template CLA_MSG mw_CLA_resultCode modifies mw_CLA_dummy := {
    +                template CLA_MSG mw_CLA_resultCode modifies mw_CLA_basic := {
                         cLA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
                         }
                     }
     
    -                template PUEA_MSG mw_PUEA_resultCode modifies mw_PUEA_dummy := {
    +                template PUEA_MSG mw_PUEA_resultCode modifies mw_PUEA_basic := {
                         pUEA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
                         }
                     }
     
    -                template ULA_MSG mw_ULA_resultCode modifies mw_ULA_dummy := {
    +                template ULA_MSG mw_ULA_resultCode modifies mw_ULA_basic := {
                         uLA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
                         }
                     }
     
    -                template ULA_MSG mw_ULA_resultCode_flags modifies mw_ULA_dummy := {
    +                template ULA_MSG mw_ULA_resultCode_flags modifies mw_ULA_basic := {
                         uLA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
                             ula_Flags := ?
    @@ -1124,9 +1191,35 @@ module AtsImsIot_Diameter_Templates {
                 }// end group ShRequestMessageTemplates
             }//end group ShMessageTemplates
             group S9MessageTemplates{
    +            
    +            group S9RequestBasicTemplates{
    +                
    +                template AAR_MSG mw_AAR_S9_basic modifies mw_AAR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(AAR_E, c_applIdRx/*TODO c_applIdS9*/)
    +                }
    +                
    +                template ASR_MSG mw_ASR_S9_basic modifies mw_ASR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(ASR_E, c_applIdRx/*TODO c_applIdS9*/)
    +                }
    +
    +                template CCR_MSG mw_CCR_S9_basic modifies mw_CCR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdGx/*TODO c_applIdS9*/)
    +                }
    +
    +                template STR_MSG mw_STR_S9_basic modifies mw_STR_dummy := {
    +                    header := mw_diameterHeaderReq_dummy(STR_E, c_applIdGx/*TODO c_applIdS9*/)
    +                }
    +                
    +            }
                 group S9RequestMessageTemplates{
    +
    +                template ASR_MSG mw_ASR_S9_abortCause(template (present) Abort_Cause_Type p_avpData) modifies mw_ASR_S9_basic := {
    +                    aSR_Body :={
    +                        abort_cause := mw_abortCause(p_avpData)
    +                    }
    +                }
                     
    -                template CCR_MSG mw_CCR_S9_Establishment(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := {
    +                template CCR_MSG mw_CCR_S9_Establishment(CC_Request_Ty_Type p_avpData) modifies mw_CCR_S9_basic := {
                         cCR_Body :={
                             cC_Request_Type        := mw_cC_Request_Type(p_avpData),
                             subscription_Id        := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
    @@ -1143,7 +1236,7 @@ module AtsImsIot_Diameter_Templates {
                         }
                     }
                     
    -                template CCR_MSG mw_CCR_S9_Termination(CC_Request_Ty_Type p_avpData) modifies mw_CCR_dummy := {
    +                template CCR_MSG mw_CCR_S9_Termination(CC_Request_Ty_Type p_avpData) modifies mw_CCR_S9_basic := {
                         cCR_Body :={
                             cC_Request_Type        := mw_cC_Request_Type(p_avpData),
                             subsesion_Enforcement_Info := ? //AXR {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (TERMINATION_E))}
    @@ -1151,23 +1244,75 @@ module AtsImsIot_Diameter_Templates {
                     }
                 
                 }// end group S9RequestMessageTemplates
    +            
    +            group S9AnswerBasicTemplates{
    +                
    +                template AAA_MSG mw_AAA_S9_basic modifies mw_AAA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(AAA_E, c_applIdRx/*TODO c_applIdS9*/)
    +                }
    +                
    +                template ASA_MSG mw_ASA_S9_basic modifies mw_ASA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(ASA_E, c_applIdRx/*TODO c_applIdS9*/)
    +                }
    +                
    +                template CCA_MSG mw_CCA_S9_basic modifies mw_CCA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(CCA_E, c_applIdGx/*TODO c_applIdS9*/)
    +                }
    +                
    +                template STA_MSG mw_STA_S9_basic modifies mw_STA_dummy := {
    +                    header := mw_diameterHeaderAns_dummy(STA_E, c_applIdGx/*TODO c_applIdS9*/)
    +                }
    +            }
    +            
                 group S9AnswertMessageTemplates{
                     
    -                template CCA_MSG mw_CCA_subsessionDecisionAny modifies mw_CCA_dummy := {
    +                template AAA_MSG mw_AAA_S9_resultCode modifies mw_AAA_S9_basic := {
    +                    aAA_Body :={
    +                        result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
    +                    }
    +                }
    +                
    +                template AAA_MSG mw_AAA_S9_AcceptableService modifies mw_AAA_S9_basic := {
    +                    aAA_Body :={
    +                        result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
    +                        acceptable_service_info := {
    +                            media_component_description := 
    +                                {mw_mediaComponentDescription_SubComponentFlowStatusEnabled
    +                                }
    +                        },
    +                        ip_Can_Type := ?,
    +                        rat_Type := ?
    +                        
    +                    }
    +                }
    +                
    +                template AAA_MSG mw_AAA_S9_resultCode_mediaCopmonentDescription modifies mw_AAA_S9_basic := {
    +                    aAA_Body :={
    +                        result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
    +                        acceptable_service_info := {
    +                            media_component_description := 
    +                                {mw_mediaComponentDescription_SubComponentFlowStatusEnabled
    +                                }
    +                        }
    +                        
    +                    }
    +                }
    +                
    +                template CCA_MSG mw_CCA_S9_subsessionDecisionAny modifies mw_CCA_S9_basic := {
                         cCA_Body :={
                             result_Code              := mw_resultCode(mw_resultCode_diameterSuccess),
                             subsession_Decision_Info := {mw_subses_Decision_Info_any}
                         }
                     }
                     
    -                template CCA_MSG mw_CCA_subsessionDecision_qosInfoAndDefaultEpsBearer modifies mw_CCA_dummy := {
    +                template CCA_MSG mw_CCA_S9_subsessionDecision_qosInfoAndDefaultEpsBearer modifies mw_CCA_S9_basic := {
                         cCA_Body :={
                             result_Code              := mw_resultCode(mw_resultCode_diameterSuccess),
                             subsession_Decision_Info := {mw_subses_Decision_Info_qosInfoAndDefaultEpsBearer}
                         }
                     }
                     
    -                template STA_MSG mw_STA_diamSuccess modifies mw_STA_dummy := {
    +                template STA_MSG mw_STA_S9_diamSuccess modifies mw_STA_S9_basic := {
                         sTA_Body :={
                             result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
                         }
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn
    index 2ae8396..85b972b 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn
    @@ -68,9 +68,10 @@ module AtsImsIot_TD_ATT{
                         // test body
                         // Check that user A can register to IMS A
                         //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
    -                    f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2)
    -                    f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) 
    -                    f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCR, CCA – Events 4, 5)
    +                    
    +                    //f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
    +                    f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a);        // Check (ULA – Event 3) 
    +                    f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5)
                         //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
             
                         // postamble
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    index 7f55cb8..d6a53ea 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    @@ -132,8 +132,8 @@ module AtsImsIot_TD_DRG{
                         
                         f_mtc_check_TP_CX_HSS_RTA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 1, 8
                         
    -                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Event 2
    -                    //f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // Events 3
    +                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Event 2, 5
    +                    f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // Events 3, 4
                         //f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, false); // Events 4
                         //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS,-); // Event 5
                         //f_mtc_check_TP_MW_PCSCF_NOTIFY_02(vc_vxlte_monitor_components.mwPS, false, true); // Event 6, 7
    @@ -190,7 +190,7 @@ module AtsImsIot_TD_DRG{
                         // test body
                         f_mtc_check_TP_RX_PCRF_STA_02(vc_vxlte_monitor_components.rx); // Event 1, 14
                         
    -                    //f_mtc_check_TP_MW_PCSCF_REGISTER_09(vc_vxlte_monitor_components.mwPS, false, true); // Event 2
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_09(vc_vxlte_monitor_components.mwPS); // Event 2
                         
                         f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4
                         
    @@ -200,8 +200,7 @@ module AtsImsIot_TD_DRG{
                         
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_07(vc_vxlte_monitor_components.mwSI, false, true); // Event 8
                         
    -                    //f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS, false); // Events 11
    -                    //f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, false, true); // Event 12
    +                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Events 11, 12
                         //f_mtc_check_TP_MW_SCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwIB, false, true); // Event 10, 13
                         
                         f_mtc_check_TP_GX_PGW_RAA_04(vc_vxlte_monitor_components.gx); // Event 15, 16
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    index 19a1f20..ed9e951 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    @@ -94,11 +94,11 @@ module AtsImsIot_TD_INI{
                             //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9
     
     
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 6
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 10
                             f_mtc_check_TP_MW_PCSCF_100Trying_01(vc_vxlte_monitor_components.mwPS, -, v_sip);
             
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 8
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 8
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 12
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 12
                             f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8
                             
                             // 183 Session Progress
    @@ -116,12 +116,12 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // Event 18
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19
                             
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 22
                             f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
                             f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
                             
    -                        f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11
    -                        f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16
    +                        f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 24
    +                        f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25
                             
                             // PRACK after 180 Session Progress: require field is present
                             // FIXME Add check of requires SIP message header to check PRACK
    @@ -137,17 +137,17 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
                             f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
     
    -                        f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 20
    +                        f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 28
                             
    -                        f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25
    +                        f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29
     
    -                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 
    -                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 27
    +                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 30 
    +                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 31
                             
    -                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 33
     
    -                        f_mtc_userCheckCallEstablished(v_ueA); // Event 30
    -                        f_mtc_userCheckCallEstablished(v_ueB); // Event 30
    +                        f_mtc_userCheckCallEstablished(v_ueA); // Event 34
    +                        f_mtc_userCheckCallEstablished(v_ueB); // Event 34
                             
                             // Postamble
                             f_mtc_EndCall(v_ueA);
    @@ -225,8 +225,6 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1                        
                             
                             f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // ( Event 3)
    -                        log("v_sip", v_sip);
    -                        
                             f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, -, v_sip);
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
    @@ -237,13 +235,12 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 9,10
                             //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 8,11
                             //TP_GM_PCSCF_INVITE_02 ( Event 8)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 8
    -                        
    +
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 12
                             
                             // 183 Session Progress
                             f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 13
    -                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 13
    -                        
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 18
                             
                             //Rx/Gx exchange after 183 (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 14)
    @@ -253,31 +250,31 @@ module AtsImsIot_TD_INI{
                             
                             
                             //TP_GM_PCSCF_180RINGING_02 ( Event 9)
    -                        f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 21
    +                        f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 22
                             //TP_MW_PCSCF_180RINGING_02 ( Event 14)
    -                        f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 22
    +                        f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 23
                             //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16)
                             //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16)
                             //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) 
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16
    -                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16
    -                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 16
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 25
    +                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 25
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 25
                             
                             //TP_IC_IBCF_2XXRESP_01 (200 OK – Event 25)
                             //TP_IC_IBCF_2XXRESP_02 (200 OK – Event 25)
                             //TP_IC_IBCF_2XXRESP_03 (200 OK – Event 25)
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 25
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 29
                             //TP_MW_PCSCF_ACK_02 (Event 28)
    -                        f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 28
    +                        f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 32
                             
                             //TP_GM_PCSCF_ACK_02 (Event 29)
    -                        f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 29 
    +                        f_mtc_check_TP_GM_PCSCF_ACK_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 33
     
                     
    -                        f_mtc_userCheckCallEstablished(v_ueA); // Event 30
    -                        f_mtc_userCheckCallEstablished(v_ueB); // Event 30
    +                        f_mtc_userCheckCallEstablished(v_ueA); // Event 34
    +                        f_mtc_userCheckCallEstablished(v_ueB); // Event 34
                     
                             // Postamble
                             f_mtc_EndCall(v_ueA);
    @@ -365,12 +362,12 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12)
                             
    -                        f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3
    -                        //f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwIS); // Event 4
    +                        f_mtc_check_TP_MW_PCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 7
    +                        //f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwIS); // Event 8
     
    -                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 5
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 6   
    -                        f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 8    
    +                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 9
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 10
    +                        f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 12
     
                             //Rx/Gx exchange after 200 OK (SDP) on reINVITE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); //(AAR – Event 13)
    @@ -378,12 +375,12 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12)
                                                 
    -                        f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13                        
    -                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 14
    -                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15                                       
    +                        f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 17
    +                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18
    +                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 19    
                              
    -                        f_mtc_userCheckCallEstablished(v_ueA); // Event 18
    -                        f_mtc_userCheckCallEstablished(v_ueB); // Event 18
    +                        f_mtc_userCheckCallEstablished(v_ueA); // Event 22
    +                        f_mtc_userCheckCallEstablished(v_ueB); // Event 22
                                                     
                             // Postamble
                             f_mtc_EndCall(v_ueA);
    @@ -464,12 +461,12 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_precond_TC_VxLTE_INT_INI_04();
                             
                             // Test body
    -                        f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmA); // Event 2
    -                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 3
    -                        //f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 4
    +                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 2
    +                        //f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwIS); // Event 3
                             //f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIB); // Event 5
    -                        f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 3
    +                        f_mtc_check_TP_MW_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 4
                             log("v_sip", v_sip);
    +                        f_mtc_check_TP_GM_PCSCF_RE_INVITE_02(vc_vxlte_monitor_components.gmA); // Event 9
                             
                             //Rx/Gx exchange after reINVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Event 5)
    @@ -483,16 +480,16 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 13)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 14)
                             
    -                        f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11
    -                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 17
    -                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 16
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 13
    +                        f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15
    +                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 21
    +                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 20
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 17
                             
     //                        f_mtc_userCheckNewMediaStream(v_ueA);
     //                        f_mtc_userCheckNewMediaStream(v_ueB);
                             
    -                        f_mtc_userCheckCallEstablished(v_ueA); // Event 18
    -                        f_mtc_userCheckCallEstablished(v_ueB); // Event 18
    +                        f_mtc_userCheckCallEstablished(v_ueA); // Event 22
    +                        f_mtc_userCheckCallEstablished(v_ueB); // Event 22
                             // Postamble
                             f_mtc_EndCall(v_ueA);
                             f_PO_user_home_deregistration(v_ueA);
    @@ -671,7 +668,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9)     
                             
                             f_mtc_check_TP_MW_PCSCF_200OK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 12
    -                        f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13        
    +                        f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13
             
                             f_mtc_userCheckCallTerminated(v_ueA); // Event 14
                             f_mtc_userCheckCallCancelled(v_ueB); // Event 15
    @@ -764,6 +761,13 @@ module AtsImsIot_TD_INI{
                             f_mtc_userCheckCallTerminated(v_ueA); // Event 14
                             f_mtc_userCheckCallCancelled(v_ueB); // Event 15
                             
    +                        f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 10
    +                        f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 13
    +                        f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwIS, -, v_sip); // Event 13
    +
    +                        f_mtc_userCheckCallTerminated(v_ueA); // Event 14
    +                        f_mtc_userCheckCallCancelled(v_ueB); // Event 15
    +                        
                             // Postamble
                             f_PO_user_home_deregistration(v_ueA);
                             f_PO_user_home_deregistration(v_ueB);
    @@ -823,6 +827,13 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
                             
    +                        // Preamble
    +                        f_mtc_userRegistration(v_ueA, v_userInfoA); 
    +                        f_mtc_userRegistration(v_ueB, v_userInfoB); 
    +                        f_mtc_userInitiateCall (v_ueA, v_userInfoB);
    +                        f_mtc_userCheckRinging(v_ueB);
    +                        f_mtc_userCheckPeerIsRinging(v_ueA);
    +                        f_mtc_userTriggerCancelCall(v_ueA);
                             f_mtc_check_precond_TC_VxLTE_INT_ABT_01();
     
                             //test body
    @@ -903,11 +914,10 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_487INVITE_ACK_01 (ACK – Event 37)
                             f_mtc_check_TP_IC_IBCF_487INVITE_ACK_01(vc_vxlte_monitor_components.ic); //  (ACK – Event 37)
                             //Rtp     TP_RTP_01 (Events 41,42)
    +
                             f_mtc_userCheckCallCancelled(v_ueA); // Event 40
                             f_mtc_userCheckCallEnded(v_ueB); // Event 41
     
    -
    -            
                             //unmap/disconnect component ports
                             f_cf_user_down ( v_ueB );
                             f_cf_user_down ( v_ueA );
    @@ -958,6 +968,13 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_userRegistration(v_ueA, v_userInfoA); 
    +                        f_mtc_userRegistration(v_ueB, v_userInfoB); 
    +                        f_mtc_userInitiateCall (v_ueA, v_userInfoB);
    +                        f_mtc_userCheckRinging(v_ueB);
    +                        f_mtc_userCheckPeerIsRinging(v_ueA);
    +                        f_mtc_userTriggerCancelCall(v_ueA);
                             f_mtc_check_precond_TC_VxLTE_INT_REJ_01();
                             
                             //test body
    @@ -980,23 +997,23 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_03 (INVITE, ENUM – Event 10)
                             //Ic      TP_IC_IBCF_INVITE_01 (INVITE – Event 10)
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 10)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 8)
    -                        f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 10)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 10)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 10)
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 12)
    +                        f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 13)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 14)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 14)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 14)
     
                             //Rtp     TP_RTP_02 (Event 18)
    -                        f_mtc_userCheckPeerIsRinging(v_ueA); // Event 18                        
    +                        f_mtc_userCheckPeerIsRinging(v_ueA);
     
                             //Ic      TP_IC_IBCF_486INVITE_01 (Event 11)
                             //MwSI    TP_MW_SCSCF_486INVITE_01 (Event 12)
                             //MwPS    TP_MW_PCSCF_486INVITE_01 (Event 13)
                             //Gm      TP_GM_PCSCF_486INVITE_01 (Event 14)                        
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic); // (Event 11)
    -                        f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 12)
    -                        f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
    -                        f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 14)       
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_01(vc_vxlte_monitor_components.ic); // (Event 15)
    +                        f_mtc_check_TP_MW_SCSCF_486INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 16)
    +                        f_mtc_check_TP_MW_PCSCF_486INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 17)
    +                        f_mtc_check_TP_GM_PCSCF_486INVITE_01(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 22)
                             
                             //Rx/Gx exchange after 468/600 was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_05(vc_vxlte_monitor_components.rx); // (STR – Event 15)
    @@ -1005,11 +1022,11 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18)
                                                     
                             //Ic      TP_IC_IBCF_486INVITE_ACK_01 (Event 22)
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.gmB); // (Event 22)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.gmB); // (Event 26)
                                                     
                             //Rtp     TP_RTP_01 (Events 23,24)
    -                        f_mtc_userCheckCallCancelled(v_ueA); // Event 23
    -                        f_mtc_userCheckCallEnded(v_ueB); // Event 24
    +                        f_mtc_userCheckCallCancelled(v_ueA); // Event 27
    +                        f_mtc_userCheckCallEnded(v_ueB); // Event 28
     
                 
                             //unmap/disconnect component ports
    @@ -1064,8 +1081,6 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    -                        //test body
    -
                             // Preamble
                             f_mtc_userRegistration(v_ueA, v_userInfoA); 
                             f_mtc_userRegistration(v_ueB, v_userInfoB); 
    @@ -1090,11 +1105,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
                             f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4)
                             
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // ( Event 3)
    -                        log("v_sip", v_sip);
    -
                             
    -                        f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, -, v_sip);
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6)
                             f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7)
    @@ -1106,10 +1117,14 @@ module AtsImsIot_TD_INI{
                             //Gm      TP_GM_PCSCF_INVITE_02 (Event 10)
                             //Gm      TP_GM_PCSCF_180RINGING_02 (Event 11)
                             f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 10)
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // ( Event 14)
    +                        log("v_sip", v_sip);
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, -, v_sip);
    +
                             
                             //TODO 183
    -                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.gmB, -, v_sip);
    -                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.mwPS, -, v_sip);
    +                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 15
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 20
                             
                             //Rx/Gx exchange after 183 (SDP) received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 12)
    @@ -1117,30 +1132,30 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 14)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 15)
                             
    -                        f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11)
    +                        f_mtc_check_TP_GM_PCSCF_180RINGING_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 24)
     
                             //MwPS    TP_MW_PCSCF_180RINGING _02 (Event 16)
                             //MwSI    TP_MW_SCSCF_180RINGING _02 (Event 17)
                             //Ic      TP_IC_IBCF_180RESP_01 (180 Ringing – Event 18)
                             //Ic      TP_IC_IBCF_180RESP_02 (180 Ringing – Event 18)
                             //Ic      TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 18)
    -                        f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 16)
    -                        f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.mwIS); // (Event 17)
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18)
    -                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18)
    -                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 18)
    +                        f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 25)
    +                        f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.mwIS); // (Event 26)
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 27)
    +                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 27)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 27)
                             
                             //Rtp     TP_RTP_02 (Event 19)
    -                        f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19
    +                        f_mtc_userCheckPeerIsRinging(v_ueA); 
     
                             //Ic      TP_IC_IBCF_CANCEL_02 (CANCEL – Event 20)
                             //MwSI    TP_MW_SCSCF_CANCEL_02 (Event 21)
                             //MwPS    TP_MW_PCSCF_CANCEL_02 (Event 22)
                             //Gm      TP_GM_PCSCF_CANCEL_02 (Event 23)
    -                        f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 20)
    -                        f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.mwIS); // (Event 21)
    -                        f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 22)
    -                        f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 23)
    +                        f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 28)
    +                        f_mtc_check_TP_MW_SCSCF_CANCEL_02(vc_vxlte_monitor_components.mwIS); // (Event 29)
    +                        f_mtc_check_TP_MW_PCSCF_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 30)
    +                        f_mtc_check_TP_GM_PCSCF_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 35)
                             		
                             //Rx/Gx exchange after CANCEL was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 24)
    @@ -1153,20 +1168,20 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_CANCEL_OK_02 (OK – Event 31)
                             //Gm      TP_GM_PCSCF_487INVITE_02 (Event 32)
                             //MwPS    TP_MW_PCSCF_487INVITE_02 (Event 33)
    -                        f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 28)
    -                        f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29)
    -                        f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 31)
    -                        f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32)
    -                        f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33)
    +                        f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 36)
    +                        f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 37)
    +                        f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 39)
    +                        f_mtc_check_TP_GM_PCSCF_487INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 40)
    +                        f_mtc_check_TP_MW_PCSCF_487INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 41)
                             
                             //Ic      TP_IC_IBCF_487INVITE_02 (487 INVITE – Event 35)
                             //Ic      TP_IC_IBCF_487INVITE_ACK_02 (ACK – Event 38)
    -                        f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 35)
    -                        f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 38)
    +                        f_mtc_check_TP_IC_IBCF_487INVITE_02(vc_vxlte_monitor_components.ic, false); // (487 INVITE – Event 43)
    +                        f_mtc_check_TP_IC_IBCF_487INVITE_ACK_02(vc_vxlte_monitor_components.ic, false); // (ACK – Event 46)
                             
                             //Rtp     TP_RTP_01 (Events 41,42)
    -                        f_mtc_userCheckCallCancelled(v_ueA); // Event 40
    -                        f_mtc_userCheckCallEnded(v_ueB); // Event 41
    +                        f_mtc_userCheckCallCancelled(v_ueA); // Event 48
    +                        f_mtc_userCheckCallEnded(v_ueB); // Event 49
                             
                     
                             // Postamble
    @@ -1224,6 +1239,13 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
                             
    +                        // Preamble
    +                        f_mtc_userRegistration(v_ueA, v_userInfoA); 
    +                        f_mtc_userRegistration(v_ueB, v_userInfoB); 
    +                        f_mtc_userInitiateCall (v_ueA, v_userInfoB);
    +                        f_mtc_userCheckRinging(v_ueB);
    +                        f_mtc_userCheckPeerIsRinging(v_ueA);
    +                        f_mtc_userTriggerCancelCall(v_ueA);
                             f_mtc_check_precond_TC_VxLTE_INT_REJ_02();
     
                             //test body
    @@ -1238,7 +1260,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 3)
                             f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 4)
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 5)
                             f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4)
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
    @@ -1254,13 +1276,13 @@ module AtsImsIot_TD_INI{
                             //MwPS    TP_MW_PCSCF_486INVITE_02 (Event 12)
                             //MwSI    TP_MW_SCSCF_486INVITE_02 (Event 13)
                             //Ic      TP_IC_IBCF_486INVITE_02 (486 Busy  – Event 14)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 10)
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 14)
                             
                             
    -                        f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11)
    -                        f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 12)
    -                        f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 13)
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic); // (486 Busy  – Event 14)
    +                        f_mtc_check_TP_GM_PCSCF_486INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15)
    +                        f_mtc_check_TP_MW_PCSCF_486INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 20)
    +                        f_mtc_check_TP_MW_SCSCF_486INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 21)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_02(vc_vxlte_monitor_components.ic); // (486 Busy  – Event 22)
                             
                             
                             //Rx/Gx exchange after 486/600 response was received at P-CSCF
    @@ -1270,11 +1292,11 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18)
                             
                             //Ic      TP_IC_IBCF_486INVITE_ACK_02 (ACK – Event 19)
    -                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(vc_vxlte_monitor_components.ic); // (ACK – Event 19)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_02(vc_vxlte_monitor_components.ic); // (ACK – Event 23)
                                                     
                             //Rtp     TP_RTP_01 (Events 23,24)
    -                        f_mtc_userCheckCallCancelled(v_ueA); // Event 23
    -                        f_mtc_userCheckCallEnded(v_ueB); // Event 24
    +                        f_mtc_userCheckCallCancelled(v_ueA); // Event 27
    +                        f_mtc_userCheckCallEnded(v_ueB); // Event 28
                 
                             //unmap/disconnect component ports
                             f_cf_user_down ( v_ueB );
    @@ -1337,7 +1359,7 @@ module AtsImsIot_TD_INI{
                             //test body
     
                             //Gm      TP_GM_PCSCF_INVITE_03 (Event 1)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1)
    +//                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1)
                             
                             //Rx      TP_RX_PCSCF_AAR_03 (AAR – Events 2)
                             //S9      TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26)
    @@ -1355,15 +1377,15 @@ module AtsImsIot_TD_INI{
                             //MwPS    TP_MW_PCSCF_INVITE_03 (Event 8)
                             //Ic      TP_IC_IBCF_INVITE_04 (INVITE – Event 9)
                             //Ic      TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 8)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    -                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9)
    +//                        f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 8)
    +//                        f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    +//                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9)
                             
                             //Ic      TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 12)
                             //MwPS    TP_MW_PCSCF_180RINGING_03 (Event 13)
                             //Rx      TP_RX_PCSCF_AAR_04 (AAR – Events 14)
    -                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12)
    -                        f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
    +//                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12)
    +//                        f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
                             f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14)
     
                             //S9      TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26)
    @@ -1381,9 +1403,9 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_2XXRESP_05  (200 OK Event 23)
                             //MwPS    TP_MW_PCSCF_200OK_03 (Event 24)
                             //Rx      TP_RX_PCSCF_AAR_05 (AAR – Events 25)
    -                        f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 20)
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); //  (200 OK Event 23)
    -                        f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24)
    +//                        f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 20)
    +//                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); //  (200 OK Event 23)
    +//                        f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24)
                             f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25)
     
                             //S9      TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26)
    @@ -1400,9 +1422,9 @@ module AtsImsIot_TD_INI{
                             //Gm      TP_GM_PCSCF_200OK_03 (Event 31)
                             //Gm      TP_GM_PCSCF_ACK_03 (Event 32)
                             //MwPS    TP_MW_PCSCF_ACK_03 (Event 33)
    -                        f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 31)
    -                        f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32)
    -                        f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33)
    +//                        f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 31)
    +//                        f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 32)
    +//                        f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 33)
                             
                             //Rtp     TP_RTP_06 (Event 36)
     
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    index fb72bde..b2b8ff2 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    @@ -89,9 +89,9 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPS); // Events 22, 23
                         f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_01(vc_vxlte_monitor_components.mwPI); // Events 22, 23
     
    -                    f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // TODO Events 21, 24
    -                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // TODO Events 22, 23
    -                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPI); // TODO Events 22, 23
    +                    f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // Events 30, 31
    +                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Events 29, 32
    +                    f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPI); // Events 29, 32
     
                         f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx, true);// Event 25 //true because AAR repeated in next TP
                         f_mtc_check_TP_RX_PCRF_AAA_01(vc_vxlte_monitor_components.rx); // Event 26
    @@ -286,16 +286,18 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12
                         f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6//may be removed because in other network
    -                    f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9//may be removed because in other network
    +                    //Cx in IMS A and not checked here
    +                    //f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6//may be removed because in other network
    +                    //f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9//may be removed because in other network
                         
                         f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 28
                         f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 27
                         f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 26
                         f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 24
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20
    -                    f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23
    +                    //Cx in IMS A and not checked here
    +                    //f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20
    +                    //f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23
                         
                         f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 29, 36
                         f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 30, 35
    @@ -358,7 +360,8 @@ module AtsImsIot_TD_REG{
                         //f_mtc_check_TP_IC_IBCF_REGISTER_0X(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 //Check during validation if TD and TP need to be written in TD document because Ic interface
                         f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4
    +                    //Cx in IMS A and not checked here
    +                    //f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4
                         
                         f_mtc_check_TP_RX_PCSCF_AAR_02(vc_vxlte_monitor_components.rx);// Event 7
             
    @@ -416,19 +419,22 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12
                         f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6
    -                    f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9
    +                    //Cx in IMS A and not checked here
    +                    //f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6
    +                    //f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9
                         
                         f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32
                         f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 31
                         f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 30
                         f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 28
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20
    -                    f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23
    +                    //Cx in IMS A and not checked here
    +                    //f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20
    +                    //f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23
                         
                         f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 24, 27
    -                    f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 25, 26
    +                    //Sh in IMS A and not checked here
    +                    //f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 25, 26
                         
                         f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 33, 40
                         f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Events 35, 38
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    index cd8c98c..4b08ba0 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    @@ -3128,15 +3128,26 @@ module AtsImsIot_TP_behavior_GM {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              { 
    -                                                            mw_SipResponse(
    -                                                                          mw_486Busy( // TODO Enforce template
    -                                                                                     p_sip.request.msgHeader.callId,
    -                                                                                     -, // New CSeq
    -                                                                                     p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField,
    -                                                                                     omit
    -                                                                                     )
    -                                                                          )
    +                                                            (
    +                                                             mw_SipResponse(
    +                                                                            mw_486Busy( // TODO Enforce template
    +                                                                                       p_sip.request.msgHeader.callId,
    +                                                                                       -, // New CSeq
    +                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                       p_sip.request.msgHeader.toField,
    +                                                                                       omit
    +                                                                                       )
    +                                                                            ),
    +                                                             mw_SipResponse(
    +                                                                            mw_600BusyEverywhere( // TODO Enforce template
    +                                                                                                 p_sip.request.msgHeader.callId,
    +                                                                                                 -, // New CSeq
    +                                                                                                 p_sip.request.msgHeader.fromField,
    +                                                                                                 p_sip.request.msgHeader.toField,
    +                                                                                                 omit
    +                                                                                                 )
    +                                                                            )
    +                                                             )
                                                              },
                                                              { 
                                                                  mw_SipResponse(mdw_4XX_Base)
    @@ -3190,15 +3201,26 @@ module AtsImsIot_TP_behavior_GM {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              { 
    -                                                            mw_SipResponse(
    -                                                                          mw_486Busy( // TODO Enforce template
    -                                                                                     p_sip.request.msgHeader.callId,
    -                                                                                     -, // New CSeq
    -                                                                                     p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField,
    -                                                                                     omit
    -                                                                                     )
    -                                                                          )
    +                                                            (
    +                                                             mw_SipResponse(
    +                                                                            mw_486Busy( // TODO Enforce template
    +                                                                                       p_sip.request.msgHeader.callId,
    +                                                                                       -, // New CSeq
    +                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                       p_sip.request.msgHeader.toField,
    +                                                                                       omit
    +                                                                                       )
    +                                                                            ),
    +                                                             mw_SipResponse(
    +                                                                            mw_600BusyEverywhere( // TODO Enforce template
    +                                                                                                 p_sip.request.msgHeader.callId,
    +                                                                                                 -, // New CSeq
    +                                                                                                 p_sip.request.msgHeader.fromField,
    +                                                                                                 p_sip.request.msgHeader.toField,
    +                                                                                                 omit
    +                                                                                                 )
    +                                                                            )
    +                                                             )
                                                              },
                                                              { 
                                                                  mw_SipResponse(mdw_4XX_Base)
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    index 7684112..6591c8e 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    @@ -92,7 +92,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PGW_CCR_01 - CCR",
                         p_forward_to_mtc,
    @@ -145,7 +147,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PGW_CCR_02 - CCR",
                         p_forward_to_mtc,
    @@ -212,7 +216,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)}
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PGW_RAA_01 - RAR",
                         p_forward_to_mtc,
    @@ -226,7 +232,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode}
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PGW_RAA_01 - RAA",
                         p_forward_to_mtc,
    @@ -277,10 +285,12 @@ group g_PGW {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_RX_PGW_RAA_02 - RAR",
                         p_forward_to_mtc,
    @@ -294,7 +304,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic}
    +                    },
                         {0, omit},
                         "TP_RX_PGW_RAA_02 - RAA",
                         p_forward_to_mtc,
    @@ -345,10 +357,12 @@ group g_PGW {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic}
    +                    },
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy}
                         },
    -                    {},
                         {0, omit},
                         "TP_RX_PGW_RAA_03 - RAR",
                         p_forward_to_mtc,
    @@ -362,7 +376,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PGW_RAA_03 - RAA",
                         p_forward_to_mtc,
    @@ -418,7 +434,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PGW_RAA_04 - RAR",
                         p_forward_to_mtc,
    @@ -432,7 +450,9 @@ group g_PGW {
                         {
                             DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PGW_RAA_04 - RAA",
                         p_forward_to_mtc,
    @@ -532,7 +552,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_01 - CCR",
                         p_forward_to_mtc,
    @@ -546,7 +568,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_01 - CCA",
                         p_forward_to_mtc,
    @@ -603,7 +627,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_02 - CCR",
                         p_forward_to_mtc,
    @@ -617,7 +643,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_02 - CCA",
                         p_forward_to_mtc,
    @@ -673,7 +701,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_03 - CCR",
                         p_forward_to_mtc,
    @@ -687,7 +717,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_03 - CCA",
                         p_forward_to_mtc,
    @@ -755,7 +787,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_04 - CCA",
                         p_forward_to_mtc,
    @@ -810,7 +844,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_CCA_05 - CCA",
                         p_forward_to_mtc,
    @@ -884,7 +920,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)}
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic}
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_RAR_01 - RAR",
                         p_forward_to_mtc,
    @@ -939,7 +977,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove}
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic}
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_RAR_02 - RAR",
                         p_forward_to_mtc,
    @@ -1011,7 +1051,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) } //During validation some additions may be required
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic } 
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_RAR_03 - RAR",
                         p_forward_to_mtc,
    @@ -1065,7 +1107,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove } //During validation some additions may be required
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                    },
                         {0, omit},
                         "TP_RX_PCRF_RAR_04 - RAR",
                         p_forward_to_mtc,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    index 04dc7e6..8d50782 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    @@ -1163,7 +1163,7 @@ module AtsImsIot_TP_behavior_IC
                     //TODO: from/to 
                     p_monitorCompRef.start(
                      f_Iot_Sip_receive(
    -                     {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    +                     {(mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?)), mw_SipResponse(mw_Response_Base(c_statusLine600)))}, // FIXME Enforce template checks
                          {mw_SipResponse(mdw_4XX_Base)},
                          {0, omit},
                          "TP_IC_IBCF_486INVITE_01",
    @@ -1213,7 +1213,7 @@ module AtsImsIot_TP_behavior_IC
               //TODO: from/to 
               p_monitorCompRef.start(
                f_Iot_Sip_receive(
    -               {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    +               {(mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?)),mw_SipResponse(mw_Response_Base(c_statusLine600)))},
                    {mw_SipResponse(mdw_4XX_Base)},
                    {0, omit},
                    "TP_IC_IBCF_486INVITE_03",
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    index c07349e..94e3d84 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    @@ -3242,15 +3242,26 @@ module AtsImsIot_TP_behavior_MW_PS {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              { 
    -                                                            mw_SipResponse(
    -                                                                          mw_486Busy( // TODO Enforce template
    -                                                                                     p_sip.request.msgHeader.callId,
    -                                                                                     -, // New CSeq
    -                                                                                     p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField,
    -                                                                                     omit
    -                                                                                     )
    -                                                                          )
    +                                                            (
    +                                                             mw_SipResponse(
    +                                                                            mw_486Busy( // TODO Enforce template
    +                                                                                       p_sip.request.msgHeader.callId,
    +                                                                                       -, // New CSeq
    +                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                       p_sip.request.msgHeader.toField,
    +                                                                                       omit
    +                                                                                       )
    +                                                                            ),
    +                                                             mw_SipResponse(
    +                                                                            mw_600BusyEverywhere( // TODO Enforce template
    +                                                                                                 p_sip.request.msgHeader.callId,
    +                                                                                                 -, // New CSeq
    +                                                                                                 p_sip.request.msgHeader.fromField,
    +                                                                                                 p_sip.request.msgHeader.toField,
    +                                                                                                 omit
    +                                                                                                 )
    +                                                                            )
    +                                                             )
                                                              },
                                                              { 
                                                                  mw_SipResponse(mdw_4XX_Base)
    @@ -3311,15 +3322,26 @@ module AtsImsIot_TP_behavior_MW_PS {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              { 
    -                                                            mw_SipResponse(
    -                                                                          mw_486Busy( // TODO Enforce template
    -                                                                                     p_sip.request.msgHeader.callId,
    -                                                                                     -, // New CSeq
    -                                                                                     p_sip.request.msgHeader.fromField,
    -                                                                                     p_sip.request.msgHeader.toField,
    -                                                                                     omit
    -                                                                                     )
    -                                                                          )
    +                                                            (
    +                                                             mw_SipResponse(
    +                                                                            mw_486Busy( // TODO Enforce template
    +                                                                                       p_sip.request.msgHeader.callId,
    +                                                                                       -, // New CSeq
    +                                                                                       p_sip.request.msgHeader.fromField,
    +                                                                                       p_sip.request.msgHeader.toField,
    +                                                                                       omit
    +                                                                                       )
    +                                                                            ),
    +                                                             mw_SipResponse(
    +                                                                            mw_600BusyEverywhere( // TODO Enforce template
    +                                                                                                 p_sip.request.msgHeader.callId,
    +                                                                                                 -, // New CSeq
    +                                                                                                 p_sip.request.msgHeader.fromField,
    +                                                                                                 p_sip.request.msgHeader.toField,
    +                                                                                                 omit
    +                                                                                                 )
    +                                                                            )
    +                                                             )
                                                              },
                                                              { 
                                                                  mw_SipResponse(mdw_4XX_Base)
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    index 7652a1e..400018b 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    @@ -1662,7 +1662,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     // Check the INVITE
                     p_monitorCompRef.start(
                         f_Iot_Sip_receive(
    -                        { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME
    +                        { (mw_SipResponse(mw_Response_Base(c_statusLine486)), mw_SipResponse(mw_Response_Base(c_statusLine600))) }, //FIXME
                             {},
                             { 0, omit },
                             "TP_MW_SCSCF_486INVITE_01",
    @@ -1717,7 +1717,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     // Check the INVITE
                     p_monitorCompRef.start(
                         f_Iot_Sip_receive(
    -                        { /*mw_SipResponse(mw_Response_Base(c_statusLine486))*/ }, //FIXME
    +                        { (mw_SipResponse(mw_Response_Base(c_statusLine486)), mw_SipResponse(mw_Response_Base(c_statusLine600))) }, //FIXME
                             {},
                             { 0, omit },
                             "TP_MW_SCSCF_486INVITE_01",
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
    index 2468838..606a44d 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
    @@ -674,7 +674,7 @@ group g_PCSCF_AAR {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
                                                           mw_rxRequestType(INITIAL_REQUEST_E),
                                                           mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E),
    -                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) //TODO convertIPv4 to oct
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR)))
                                          }
                         },
                         {
    @@ -1216,7 +1216,7 @@ group g_PCSCF_AAR {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4(
                                                           mw_rxRequestType(UPDATE_REQUEST_E),
                                                           mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E),
    -                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) //TODO convertIPv4 to oct
    +                                                      mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR)))
                                          }
                         },
                         {
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn
    index 32892ba..ebfc870 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn
    @@ -67,10 +67,12 @@ group g_HSS {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ aIR_MSG := mw_AIR_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ aIR_MSG := mw_AIR_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_S6A_HSS_AIA_01 - AIR",
                         p_forward_to_mtc,
    @@ -84,7 +86,9 @@ group g_HSS {
                         {
                             DIAMETER_MSG:{ aIA_MSG := mw_AIA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ aIA_MSG := mw_AIA_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_HSS_AIA_01 - AIA",
                         p_forward_to_mtc,
    @@ -139,7 +143,9 @@ group g_HSS {
                         {
                             DIAMETER_MSG:{ cLR_MSG := mw_CLR_cancelation }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cLR_MSG := mw_CLR_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_HSS_CLR_01 - CLR",
                         p_forward_to_mtc,
    @@ -189,10 +195,12 @@ group g_HSS {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ pUER_MSG := mw_PUER_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ pUER_MSG := mw_PUER_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_S6A_HSS_PUA_01 - PUR",
                         p_forward_to_mtc,
    @@ -206,7 +214,9 @@ group g_HSS {
                         { 
                             DIAMETER_MSG:{ pUEA_MSG := mw_PUEA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ pUEA_MSG := mw_PUEA_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_HSS_PUA_01 - PUA",
                         p_forward_to_mtc,
    @@ -258,9 +268,11 @@ group g_HSS {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ uLR_MSG := mw_ULR_dummy }
    +                        DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName }
    +                    },
    +                    {
    +                        DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic }
                         },
    -                    {},
                         {0, omit},
                         "TP_S6A_HSS_ULA_01 - ULR",
                         p_forward_to_mtc,
    @@ -274,7 +286,9 @@ group g_HSS {
                         {
                             DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_HSS_ULA_01 - ULA",
                         p_forward_to_mtc,
    @@ -325,10 +339,12 @@ group g_HSS {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ uLR_MSG := mw_ULR_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_S6A_HSS_ULA_02 - ULR",
                         p_forward_to_mtc,
    @@ -342,7 +358,9 @@ group g_HSS {
                         {
                             DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_HSS_ULA_02 - ULA",
                         p_forward_to_mtc,
    @@ -402,7 +420,9 @@ group g_MME {
                         {
                             DIAMETER_MSG:{ aIR_MSG := mw_AIR }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ aIR_MSG := mw_AIR_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_MME_AIR_01 - AIR",
                         p_forward_to_mtc,
    @@ -452,10 +472,12 @@ group g_MME {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ cLR_MSG := mw_CLR_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ cLR_MSG := mw_CLR_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_S6A_MME_CLA_01 - CLR",
                         p_forward_to_mtc,
    @@ -469,7 +491,9 @@ group g_MME {
                         {
                             DIAMETER_MSG:{ cLA_MSG := mw_CLA_resultCode }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cLA_MSG := mw_CLA_basic}
    +                    },
                         {0, omit},
                         "TP_S6A_MME_CLA_01 - CLA",
                         p_forward_to_mtc,
    @@ -522,7 +546,9 @@ group g_MME {
                         {
                             DIAMETER_MSG:{ pUER_MSG := mw_PUER_userName }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ pUER_MSG := mw_PUER_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_MME_PUR_01 - PUR",
                         p_forward_to_mtc,
    @@ -578,7 +604,9 @@ group g_MME {
                         {
                             DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic}
    +                    },
                         {0, omit},
                         "TP_S6A_MME_ULR_01 - ULR",
                         p_forward_to_mtc,
    @@ -634,7 +662,9 @@ group g_MME {
                         {
                             DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic }
    +                    },
                         {0, omit},
                         "TP_S6A_MME_ULR_02 - ULR",
                         p_forward_to_mtc,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn
    index 9a253fd..8f4e4cf 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn
    @@ -63,10 +63,12 @@ group g_PCRF {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ aAR_MSG := mw_AAR_S9_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_AAR_01 - AAR",
                         p_forward_to_mtc,
    @@ -135,9 +137,11 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_AcceptableService }
    +                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_resultCode /*mw_AAA_S9_AcceptableService*/ }
    +                    },
    +                    {
    +                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_basic }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_AAA_01 - AAA",
                         p_forward_to_mtc,
    @@ -191,9 +195,11 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode_mediaCopmonentDescription }
    +                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_resultCode_mediaCopmonentDescription }
    +                    },
    +                    {
    +                        DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_basic }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_AAA_02 - AAA",
                         p_forward_to_mtc,
    @@ -244,9 +250,11 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) }
    +                        DIAMETER_MSG:{ aSR_MSG := mw_ASR_S9_abortCause(BEARER_RELEASED_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ aSR_MSG := mw_ASR_S9_basic }
    +                        },
                         {0, omit},
                         "TP_S9_PCRF_ASR_01 - ASR",
                         p_forward_to_mtc,
    @@ -293,10 +301,12 @@ group g_PCRF {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ aSA_MSG := mw_ASA_S9_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ aSA_MSG := mw_ASA_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_ASA_01 - ASA",
                         p_forward_to_mtc,
    @@ -379,7 +389,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Establishment(INITIAL_REQUEST_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_basic }
    +                    },
                         {0, omit},
                         "TP_S9_PCRF_CCR_01 - CCR",
                         p_forward_to_mtc,
    @@ -437,7 +449,9 @@ group g_PCRF {
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Termination(INITIAL_REQUEST_E) }
                         },
    -                    {},
    +                    {
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_basic }
    +                    },
                         {0, omit},
                         "TP_S9_PCRF_CCR_02 - CCR",
                         p_forward_to_mtc,
    @@ -504,9 +518,11 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_subsessionDecision_qosInfoAndDefaultEpsBearer }
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_subsessionDecision_qosInfoAndDefaultEpsBearer }
    +                    },
    +                    {
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_basic }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_CCA_01 - CCA",
                         p_forward_to_mtc,
    @@ -560,9 +576,11 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_subsessionDecisionAny }
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_subsessionDecisionAny }
    +                    },
    +                    {
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_basic }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_CCA_02 - CCA",
                         p_forward_to_mtc,
    @@ -609,10 +627,12 @@ group g_PCRF {
             if (isvalue(p_monitorCompRef)){
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
    +                    {
    +                        DIAMETER_MSG:{ sTR_MSG := mw_STR_S9_basic }
    +                    },
                         {
                             DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_STR_01 - STR",
                         p_forward_to_mtc,
    @@ -663,9 +683,11 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess }
    +                        DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_diamSuccess }
    +                    },
    +                    {
    +                        DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_basic }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_STA_01 - STA",
                         p_forward_to_mtc,
    @@ -716,9 +738,11 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess }
    +                        DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_diamSuccess }
    +                    },
    +                    {
    +                        DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_basic }
                         },
    -                    {},
                         {0, omit},
                         "TP_S9_PCRF_STA_02 - STA",
                         p_forward_to_mtc,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    index 85378af..83ca2a7 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    @@ -1952,7 +1952,7 @@ module AtsImsIot_Templates {
     		
         template Response mw_480TemporaryUnavailable_Base  modifies m_Response_Dummy :=
         {
    -        statusLine := {c_sipNameVersion, 480, ?},
    +        statusLine := c_statusLine480,
             msgHeader := ?,
             messageBody := *,
             payload := *
    @@ -1960,7 +1960,15 @@ module AtsImsIot_Templates {
             
         template Response mw_486Busy_Base  modifies m_Response_Dummy :=
         {
    -        statusLine := {c_sipNameVersion, 486, ?},
    +        statusLine := c_statusLine486,
    +        msgHeader := ?,
    +        messageBody := *,
    +        payload := *
    +    }
    +        
    +    template Response mw_600BusyEverywhere_Base  modifies m_Response_Dummy :=
    +    {
    +        statusLine := c_statusLine600,
             msgHeader := ?,
             messageBody := *,
             payload := *
    @@ -1968,7 +1976,7 @@ module AtsImsIot_Templates {
             
         template Response mw_487RequestTerminated_Base  modifies m_Response_Dummy :=
         {
    -        statusLine := {c_sipNameVersion, 487, ?},
    +        statusLine := c_statusLine487,
             msgHeader := ?,
             messageBody := *,
             payload := *
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    index 84dbcef..ce18a37 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
    @@ -162,6 +162,22 @@ module AtsImsIot_Templates_GM {
                 }
             } // End of template mw_486Busy
             
    +        template (present) Response mw_600BusyEverywhere(
    +                                                         template (present) CallId p_callId := ?,
    +                                                         template (present) CSeq p_cSeq := ?,
    +                                                         template (present) From p_from := ?,
    +                                                         template (present) To p_to := ?,
    +                                                         template WwwAuthenticate p_wwwAuthenticate := ?
    +                                                         ) modifies mw_600BusyEverywhere_Base := {
    +            msgHeader := {
    +                callId    := p_callId,
    +                cSeq      := p_cSeq,
    +                fromField := p_from,
    +                toField   := p_to,
    +                wwwAuthenticate := p_wwwAuthenticate
    +            }
    +        } // End of template mw_600BusyEverywhere
    +        
             template (present) Response mw_487RequestTerminated(
                                                                 template (present) CallId p_callId := ?,
                                                                 template (present) CSeq p_cSeq := ?,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    index aea25ea..b070845 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    @@ -169,6 +169,22 @@ module AtsImsIot_Templates_MW {
                 }
             } // End of template mw_486Busy
             
    +        template (present) Response mw_600BusyEverywhere(
    +                                                         template (present) CallId p_callId := ?,
    +                                                         template (present) CSeq p_cSeq := ?,
    +                                                         template (present) From p_from := ?,
    +                                                         template (present) To p_to := ?,
    +                                                         template WwwAuthenticate p_wwwAuthenticate := ?
    +                                                         ) modifies mw_600BusyEverywhere_Base := {
    +            msgHeader := {
    +                callId    := p_callId,
    +                cSeq      := p_cSeq,
    +                fromField := p_from,
    +                toField   := p_to,
    +                wwwAuthenticate := p_wwwAuthenticate
    +            }
    +        } // End of template mw_600BusyEverywhere
    +        
             template (present) Response mw_487RequestTerminated(
                                                                 template (present) CallId p_callId := ?,
                                                                 template (present) CSeq p_cSeq := ?,
    diff --git a/ttcn/LibSip b/ttcn/LibSip
    index 7d79616..a227e9f 160000
    --- a/ttcn/LibSip
    +++ b/ttcn/LibSip
    @@ -1 +1 @@
    -Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d
    +Subproject commit a227e9fca956475c5b481fb6042ecfcc9d632502
    -- 
    GitLab
    
    
    From 5e0a89fa2a241f72b03a9d7450692a97f149b6ef Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Fri, 3 Sep 2021 09:29:25 +0000
    Subject: [PATCH 154/176] Updates due to week35 validation on ic interface
    
    ---
     ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn          | 274 +++++++++++++++---
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn  |   4 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn  | 147 +++++++---
     .../AtsImsIot_TP_behavior_MW_IS.ttcn          |   7 +-
     .../AtsImsIot_TP_behavior_MW_PS.ttcn          |   6 +-
     .../AtsImsIot_TP_behavior_MW_SI.ttcn          |  51 ++--
     ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn    | 166 ++++++-----
     7 files changed, 488 insertions(+), 167 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    index ed9e951..f28921b 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    @@ -6,6 +6,8 @@
      */
     module AtsImsIot_TD_INI{
     
    +    import from AtsImsIot_Templates all;
    +
         // LibCommon
         // LibSip
         // LibIms
    @@ -97,10 +99,11 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 10
                             f_mtc_check_TP_MW_PCSCF_100Trying_01(vc_vxlte_monitor_components.mwPS, -, v_sip);
             
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 12
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // INVITE Event 12
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
                             f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8
    -                        
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 13
    +
                             // 183 Session Progress
                             f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 15
                             f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
    @@ -116,8 +119,8 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // Event 18
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19
                             
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 22
    -                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
    +//                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 22
    +//                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 9
                             f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
                             
                             f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 24
    @@ -133,8 +136,8 @@ module AtsImsIot_TD_INI{
                             f_mtc_userCheckPeerIsRinging(v_ueA);
                             f_mtc_userAnswerCall(v_ueB);
                             
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
                             f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
     
                             f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 28
    @@ -196,7 +199,7 @@ module AtsImsIot_TD_INI{
             
                         f_setVxLteMonIterfacesAvailability();
                         //Check required monitor interfaces due to TD
    -                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
    +                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMB_INTERFACENAME,
                                                                   PX_DIAMETER_GX_INTERFACENAME,
                                                                   PX_DIAMETER_RX_INTERFACENAME,
                                                                   PX_SIP_IC_INTERFACENAME,
    @@ -220,12 +223,14 @@ module AtsImsIot_TD_INI{
                     
                             // Test body
                             
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, false); // INVITE Event 1
    -                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, false); // INVITE Event 1
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 1
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 1
                             f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1                        
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 20
    +
                             
                             f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // ( Event 3)
    -                        f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, -, v_sip);
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_02(vc_vxlte_monitor_components.mwPS, -, v_sip);
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4)
    @@ -237,6 +242,7 @@ module AtsImsIot_TD_INI{
                             //TP_GM_PCSCF_INVITE_02 ( Event 8)
     
                             f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 12
    +                        f_mtc_check_TP_GM_PCSCF_100Trying_02(vc_vxlte_monitor_components.gmB, -, v_sip);
                             
                             // 183 Session Progress
                             f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 13
    @@ -256,16 +262,19 @@ module AtsImsIot_TD_INI{
                             //TP_IC_IBCF_180RESP_01 (180 Ringing – Event 16)
                             //TP_IC_IBCF_180RESP_02 (180 Ringing – Event 16)
                             //TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 16) 
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 25
    -                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 25
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 25
    +                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 25
                             f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 25
                             
                             //TP_IC_IBCF_2XXRESP_01 (200 OK – Event 25)
                             //TP_IC_IBCF_2XXRESP_02 (200 OK – Event 25)
                             //TP_IC_IBCF_2XXRESP_03 (200 OK – Event 25)
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 29
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 29
                             f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 29
    +                        
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 30
    +                        
                             //TP_MW_PCSCF_ACK_02 (Event 28)
                             f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 32
                             
    @@ -366,6 +375,7 @@ module AtsImsIot_TD_INI{
                             //f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(vc_vxlte_monitor_components.mwIS); // Event 8
     
                             f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 9
    +                        //f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,0); // (INVITE, 100 Trying – Event 2)
                             f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic); // 200 OK – Event 10
                             f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 12
     
    @@ -407,6 +417,17 @@ module AtsImsIot_TD_INI{
                            //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false);
                            //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false);
                            //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false);
    +
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 13
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 33                                                
    +
                         } // End of function f_mtc_check_precond_TC_VxLTE_INT_INI_03
                         
                    } // End of group f_TC_VxLTE_INT_INI_03
    @@ -515,6 +536,17 @@ module AtsImsIot_TD_INI{
                            //f_mtc_check_TP_GM_PCSCF_REGISTER_01(vc_vxlte_monitor_components.gmA, false);
                            //f_mtc_check_TP_MW_PCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPI, false);
                            //f_mtc_check_TP_MW_SCSCF_REGISTER_01(vc_vxlte_monitor_components.mwPS, false);
    +
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 13
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 33                                                
    +
                         } // End of function f_mtc_check_precond_TC_VxLTE_INT_INI_04
                         
                    } // End of group f_TC_VxLTE_INT_INI_04
    @@ -605,6 +637,17 @@ module AtsImsIot_TD_INI{
                         
                         function f_mtc_check_precond_TC_VxLTE_INT_REL_01(out SipMessage p_sip) runs on ImsTestCoordinator {
                             f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, p_sip);
    +
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 13
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 9
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 18
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 33                                                
    +                          
                          } // End of function f_mtc_check_precond_TC_VxLTE_INT_REL_01
                          
                     } // End of f_TC_VxLTE_INT_REL_01
    @@ -692,6 +735,19 @@ module AtsImsIot_TD_INI{
                         
                         function f_mtc_check_precond_TC_VxLTE_INT_REL_02(out SipMessage p_sip) runs on ImsTestCoordinator {
                             f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, p_sip);
    +                        
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 1
    +                        f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 1
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, false); // INVITE ENUM Event 1                        
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 20
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 25
    +                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 25
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // 180 Ringing – Event 25
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic, false); // 200 OK – Event 29
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 30                                               
    +                        
                          } // End of function f_mtc_check_precond_TC_VxLTE_INT_REL_02
                          
                     } // End of f_TC_VxLTE_INT_REL_02
    @@ -855,7 +911,7 @@ module AtsImsIot_TD_INI{
                             //MwSI    TP_MW_SCSCF_INVITE_01 (Event 9)
                             //MwSI    TP_MW_SCSCF_INVITE_01 (Event 9)
                             f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 8)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); //  (INVITE, ENUM – Event 8)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic,true); //  (INVITE, ENUM – Event 8)
                             f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 9)
                             f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIB); // (Event 9)
     
    @@ -863,7 +919,7 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 10)
                             //Ic      TP_IC_IBCF_180RESP_01 (180 Ringing – Event 11)
                             //Ic      TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 11)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); //  (INVITE – Event 10)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic,true); //  (INVITE – Event 10)
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); //  (INVITE – Event 10)
                             
                             //TODO 183
    @@ -874,8 +930,9 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 16)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 17)
                             
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 15
                             
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); //  (180 Ringing – Event 11)
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); //  (180 Ringing – Event 11)
                             f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic); //  (180 Ringing – Event 11)
     
                             //Rtp     TP_RTP_02 (Event 19)
    @@ -999,10 +1056,14 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 10)
                             f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 12)
                             f_mtc_check_TP_MW_SCSCF_INVITE_01(vc_vxlte_monitor_components.mwIS); // (Event 13)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 14)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 14)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic,true); // (INVITE, ENUM – Event 14)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic,true); // (INVITE – Event 14)
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 14)
     
    +                        // NOTE: inserted during validation due to message trace in wireshark at MW_PS
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,false); // 183 Event 15
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); //  (180 Ringing – Event 11)
    +
                             //Rtp     TP_RTP_02 (Event 18)
                             f_mtc_userCheckPeerIsRinging(v_ueA);
     
    @@ -1100,9 +1161,12 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 3)
                             //MwSI    TP_MW_SCSCF_INVITE_02 (Event 4)
                             //MwPS    TP_MW_PCSCF_INVITE_02 (Event 5)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 3)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic,true); // (INVITE, ENUM – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic,true); // (INVITE – Event 3)
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
    +                        
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic, false); // 183 Event 15                        
    +                        
                             f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4)
                             
                             
    @@ -1141,8 +1205,8 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_1XXRESP_01 (180 Ringing – Event 18)
                             f_mtc_check_TP_MW_PCSCF_180RINGING_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 25)
                             f_mtc_check_TP_MW_SCSCF_180RINGING_02(vc_vxlte_monitor_components.mwIS); // (Event 26)
    -                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 27)
    -                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 27)
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // (180 Ringing – Event 27)
    +                        f_mtc_check_TP_IC_IBCF_180RESP_02(vc_vxlte_monitor_components.ic, true); // (180 Ringing – Event 27)
                             f_mtc_check_TP_IC_IBCF_1XXRESP_01(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 27)
                             
                             //Rtp     TP_RTP_02 (Event 19)
    @@ -1257,11 +1321,15 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_02 (INVITE – Event 3)
                             //MwSP    TP_MW_PCSCF_INVITE_02 (Event 4)
                             //MwSI    TP_MW_SCSCF_INVITE_02 (Event 4)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // (INVITE, ENUM – Event 3)
    -                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic, true); // (INVITE, ENUM – Event 3)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // (INVITE – Event 3)
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
                             f_mtc_check_TP_MW_PCSCF_INVITE_02(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 5)
                             f_mtc_check_TP_MW_SCSCF_INVITE_02(vc_vxlte_monitor_components.mwIS); // (Event 4)
    +
    +                        // NOTE: inserted during validation due to message trace in wireshark at MW_PS
    +                        f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,false); // 183 Event 15
    +                        f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, false); //  (180 Ringing – Event 11)
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6)
    @@ -1356,7 +1424,11 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    -                        //test body
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_INI_01();
    +
    +                        //test body 
    +                        //!!!!!!TODO!!!! update call flows like in INT group here in TTCN and in TD documenet
     
                             //Gm      TP_GM_PCSCF_INVITE_03 (Event 1)
     //                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1)
    @@ -1378,13 +1450,13 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_INVITE_04 (INVITE – Event 9)
                             //Ic      TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9)
     //                        f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 8)
    -//                        f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    -//                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9)
                             
                             //Ic      TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 12)
                             //MwPS    TP_MW_PCSCF_180RINGING_03 (Event 13)
                             //Rx      TP_RX_PCSCF_AAR_04 (AAR – Events 14)
    -//                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12)
     //                        f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
                             f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14)
     
    @@ -1401,10 +1473,12 @@ module AtsImsIot_TD_INI{
                                                     
                             //Gm      TP_GM_PCSCF_180RINGING_03 (Event 20)
                             //Ic      TP_IC_IBCF_2XXRESP_05  (200 OK Event 23)
    +                        //Ic      TP_IC_IBCF_ACK_01 (ACK – Event 33)
                             //MwPS    TP_MW_PCSCF_200OK_03 (Event 24)
                             //Rx      TP_RX_PCSCF_AAR_05 (AAR – Events 25)
     //                        f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 20)
    -//                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); //  (200 OK Event 23)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); //  (200 OK Event 23)
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33)
     //                        f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24)
                             f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25)
     
    @@ -1439,6 +1513,16 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_INI_01
    +
    +                group f_TC_VxLTE_RMI_INI_01 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_INI_01() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                        // TODO Add real code to check pre-conditions
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_INI_01
    +                     
    +                } // End of f_TC_VxLTE_INT_RMI_01
    +
                 } //End of group OriginatingLeg
                 group TerminatingLeg {
                     
    @@ -1474,6 +1558,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_INI_02();
    +                        
                             //test body
     
                             //Ic      TP_IC_IBCF_INVITE_04 (INVITE – Event 2)
    @@ -1558,6 +1645,15 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_INI_02
    +
    +                group f_TC_VxLTE_RMI_INI_02 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_INI_02() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                        // TODO Add real code to check pre-conditions
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_INI_02
    +                     
    +                } // End of f_TC_VxLTE_INT_RMI_02
                 } //End of group TerminatingLeg
                 
             } //End of group SIPsessionEstablisment
    @@ -1596,6 +1692,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_INI_03();
    +
                             //test body
     
                             //Rtp     TP_RTP_06 (Event 1)
    @@ -1608,7 +1707,7 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GM_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2)
                             f_mtc_check_TP_MW_PCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 3)
                             f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIS); // (Event 4)
    -                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 5)
    +                        f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 5)
                             f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 8)  
     
                             //Rx      TP_RX_PCSCF_AAR_09 (AAR – Events 11) 
    @@ -1643,6 +1742,16 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_INI_03
    +
    +                group f_TC_VxLTE_RMI_INI_03 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_INI_03() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                        // TODO Add real code to check pre-conditions
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_INI_03
    +                     
    +                } // End of f_TC_VxLTE_RMI_INI_03
    +
                 } //End of group OriginatingLeg
                 group TerminatingLeg {
                     
    @@ -1678,6 +1787,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_INI_04();
    +
                             //test body
     
     						//Rtp     TP_RTP_06 (Event 1)
    @@ -1685,7 +1797,7 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_REINVITE_01 (INVITE – Event 3)
                             //MwSI    TP_MW_SCSCF_RE_INVITE_04 (Event 4)
                             //MwPS    TP_MW_PCSCF_RE_INVITE_04 (Event 5)
    -						f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic, 1); // (INVITE – Event 3)
    +						f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 3)
     						f_mtc_check_TP_MW_SCSCF_RE_INVITE_04(vc_vxlte_monitor_components.mwIS); // (Event 4)
     						f_mtc_check_TP_MW_PCSCF_RE_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 5)
     
    @@ -1730,6 +1842,16 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_INI_04
    +
    +                group f_TC_VxLTE_RMI_INI_04 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_INI_04() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                        // TODO Add real code to check pre-conditions
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_INI_04
    +                     
    +                } // End of f_TC_VxLTE_RMI_INI_04
    +
                 } //End of group TerminatingLeg
             } //End of group SIPsessionModification
             group SIPsessionRelease {
    @@ -1760,6 +1882,9 @@ module AtsImsIot_TD_INI{
                             var SipMessage v_sip;
                             
                             f_cf_createVxLteMonitor();    
    +
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REL_01();
                     
                             // map/connect component ports
                             f_cf_adapter_up ( );
    @@ -1810,6 +1935,16 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_REL_01
    +                
    +                group f_TC_VxLTE_RMI_REL_01 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_REL_01() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                        // TODO Add real code to check pre-conditions
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REL_01
    +                     
    +                } // End of f_TC_VxLTE_RMI_REL_01                                
    +                
                 } //End of group OriginatingUEInitiatedSessionRelease
                 group TerminatingUEInitiatedSessionRelease {
                     
    @@ -1845,6 +1980,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REL_02();
    +
                             //test body
     
     						//Rtp     TP_RTP_06 (Event 1)
    @@ -1886,6 +2024,16 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_REL_02
    +
    +                group f_TC_VxLTE_RMI_REL_02 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_REL_02() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                        // TODO Add real code to check pre-conditions
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REL_02
    +                     
    +                } // End of f_TC_VxLTE_RMI_REL_02                                
    +
                 } //End of group TerminatingUEInitiatedSessionRelease
                 group OriginatingNetworkInitiatedSessionRelease{
                     /**
    @@ -1920,6 +2068,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REL_03();
    +                        
                             //test body
     
     						//Rtp     TP_RTP_06 (Event 1)
    @@ -1964,6 +2115,17 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_REL_03
    +                
    +                group f_TC_VxLTE_RMI_REL_03 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_REL_03() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                        // TODO Add real code to check pre-conditions
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REL_03
    +                     
    +                } // End of f_TC_VxLTE_RMI_REL_03                                
    +                
    +                
                 } //End of group 
             } //End of group SIPsessionRelease
             group SIPsessionAbortReject {
    @@ -2000,6 +2162,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_ABT_01();
    +
                             //test body
     
     						//Rtp     TP_RTP_04 (Events 1)
    @@ -2093,6 +2258,14 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_ABT_01
    +
    +                group f_TC_VxLTE_RMI_ABT_01 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_ABT_01() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_ABT_01
    +                     
    +                } // End of f_TC_VxLTE_RMI_ABT_01
                    
                     /**
                     * @desc    Initial SIP session reject.
    @@ -2126,6 +2299,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REJ_01();
    +
                             //test body
     
     						//Rtp     TP_RTP_04 (Events 1)
    @@ -2185,7 +2361,14 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_REJ_01
    -               
    +
    +                group f_TC_VxLTE_RMI_REJ_01 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_REJ_01() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REJ_01
    +                     
    +                } // End of f_TC_VxLTE_RMI_REJ_01               
                     
                 } //End of group OriginatingLeg
                 group TerminatingLeg {
    @@ -2221,6 +2404,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_ABT_02();
    +
                             //test body
     
     						//Rtp     TP_RTP_04 (Events 1)
    @@ -2311,6 +2497,14 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_ABT_02
    +
    +                group f_TC_VxLTE_RMI_ABT_02 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_ABT_02() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_ABT_02
    +                     
    +                } // End of f_TC_VxLTE_RMI_ABT_02
                    
                    /**
                     * @desc    Initial SIP session reject.
    @@ -2344,6 +2538,9 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REJ_02();
    +
                             //test body
     
     						//Rtp     TP_RTP_04 (Events 1)
    @@ -2402,6 +2599,15 @@ module AtsImsIot_TD_INI{
                             setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                         }
                     } // End of TC TC_VxLTE_RMI_REJ_02
    +                
    +                group f_TC_VxLTE_RMI_REJ_02 {
    +                    
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_REJ_02() runs on ImsTestCoordinator {
    +                        log("If the test case fails, please check the preconditions");
    +                     } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REJ_02
    +                     
    +                } // End of f_TC_VxLTE_RMI_REJ_02                              
    +                
                 } //End of group TerminatingLeg
             } //End of group SIPsessionAbortReject
         } // End of group Roaming
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    index 4b08ba0..c449376 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    @@ -656,6 +656,7 @@ module AtsImsIot_TP_behavior_GM {
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
                                                         { 
    @@ -670,7 +671,7 @@ module AtsImsIot_TP_behavior_GM {
                                                         )
                                        );
                p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_10
    +        }} // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_10
             
         } // End of group imsDeRegistration
         
    @@ -1044,6 +1045,7 @@ module AtsImsIot_TP_behavior_GM {
                     p_monitorCompRef.done;
                     // Retrieve messge
                     f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
    +                log("##### GM p_sip: ", p_sip);
                 }
             } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_01
             
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    index 8d50782..0180a3e 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    @@ -101,10 +101,11 @@ module AtsImsIot_TP_behavior_IC
                                                f_Iot_Sip_receive(
                                                                  {
                                                                      mw_SipRequest(
    +//                                                                                 mw_INVITE_Request_Base)
                                                                                    mdw_TP_IC_IBCF_INVITE_01(
                                                                                                             (
    -                                                                                                         mw_SipUrl_Host(v_EUT_A_Addr),
    -                                                                                                         mw_SipUrl_Host(f_GetEUTScscfIpAddress(PX_EUT_A))
    +                    //                                                                                     mw_SipUrl_Host(v_EUT_A_Addr), // v_EUT_A_Addr
    +                                                                                                         mw_SipUrl_Host(v_EUT_A_Addr) //f_GetEUTScscfIpAddress(PX_EUT_A)
                                                                                                             )
                                                                                    ))
                                                                  },
    @@ -133,10 +134,15 @@ module AtsImsIot_TP_behavior_IC
                                               f_Iot_Sip_receive(
                                                                 { 
                                                                     mw_SipRequest(
    +                                                                
    +                                                                
                                                                                   mdw_TP_IC_IBCF_INVITE_02(
                                                                                                            mw_SIP_URI_Base, 
                                                                                                            mw_TEL_URI_Base
    -                                                                              ))
    +                                                                              )
    +                                                                              
    +                                                                              
    +                                                                              )
                                                                 },
                                                                 { mw_SipRequest(mw_INVITE_Request_Base) },
                                                                 {0, omit},
    @@ -165,7 +171,8 @@ module AtsImsIot_TP_behavior_IC
                                                                 {
                                                                     mw_SipRequest(
                                                                                   mdw_TP_IC_IBCF_INVITE_03(
    -                                                                                                       v_eutBUri
    +                                                                                                       mw_TEL_URI_Base,
    +                                                                                                       mw_SIP_URI_Base 
                                                                                   ))
                                                                 },
                                                                 { mw_SipRequest(mw_INVITE_Request_Base) },
    @@ -188,6 +195,7 @@ module AtsImsIot_TP_behavior_IC
                     SipInterfaceMonitor  p_monitorCompRef,
                     boolean p_checkMessage
                 ) runs on ImsTestCoordinator  {
    +            if (isvalue(p_monitorCompRef)) {
                    var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));
                    var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A));
                     var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B);
    @@ -235,7 +243,7 @@ module AtsImsIot_TP_behavior_IC
                    } else {
                     f_setIotVerdictFAIL("TP_IC_IBCF_INVITE_04");
                    }
    -            }
    +            }}
         
             /**
              * @desc Starts monitor component behavior for TP_IC_IBCF_INVITE_05
    @@ -246,6 +254,7 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef,
                 boolean p_checkMessage
             ) runs on ImsTestCoordinator {
    +         if (isvalue(p_monitorCompRef)) {
                //TODO: from/to 
                var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from
                var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to       
    @@ -274,7 +283,7 @@ module AtsImsIot_TP_behavior_IC
                 )
                );
                p_monitorCompRef.done;
    -        }
    +        }}
             
         } // end group g_IBCF_INVITE
         
    @@ -287,7 +296,7 @@ module AtsImsIot_TP_behavior_IC
              */
             function f_mtc_check_TP_IC_IBCF_REINVITE_01(
                                                         in SipInterfaceMonitor  p_monitorCompRef,
    -                                                    in integer p_skipCount := 1
    +                                                    in boolean p_checkMessage := false //in integer p_skipCount := 1
                                                         ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     var template SipUrl v_SCSCF_A_Uri := (
    @@ -298,17 +307,17 @@ module AtsImsIot_TP_behavior_IC
                                                                          f_GetEUTScscfIpAddress_1()//f_GetEUTScscfIpAddress(PX_EUT_A)
                                                                          )
                                                           );
    -                var template SkipType v_skip := {0, omit};
    -                
    -                if(p_skipCount > 0) {
    -                    v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    -                }
    +//                var template SkipType v_skip := {0, omit};
    +//                
    +//                if(p_skipCount > 0) {
    +//                    v_skip := {1, mw_SipRequest(mw_INVITE_Request_Base)};
    +//                }
                     
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              {mw_SipRequest(mdw_TP_IC_IBCF_REINVITE_01(v_SCSCF_A_Uri))},
                                                              {mw_SipRequest(mw_INVITE_Request_Base)},
    -                                                         v_skip,
    +                                                         {0, omit},
                                                              "TP_IC_IBCF_REINVITE_01",
                                                              false,
                                                              false
    @@ -333,6 +342,7 @@ module AtsImsIot_TP_behavior_IC
                 boolean p_checkMessage,
                 integer p_skipCount
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
                    
                 var template SkipType v_skip := {0, omit};
                     
    @@ -364,7 +374,7 @@ module AtsImsIot_TP_behavior_IC
                 );
                 p_monitorCompRef.done;
                
    -        }
    +        }}
         
             /**
               * @desc Starts monitor component behavior for TP_IMS_5070_02
    @@ -376,6 +386,7 @@ module AtsImsIot_TP_behavior_IC
                 boolean p_checkMessage,
                 integer p_skipCount
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
                    
                 var template SkipType v_skip := {0, omit};
                     
    @@ -407,7 +418,7 @@ module AtsImsIot_TP_behavior_IC
                 );
                 p_monitorCompRef.done;
                
    -        }
    +        }}
         
         } // end group g_IBCF_100TRY
         
    @@ -570,6 +581,7 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef,
                 boolean p_checkMessage 
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
                 var template RecordRoute v_recordRoute := ?;
                                 
                 p_monitorCompRef.start(
    @@ -594,7 +606,7 @@ module AtsImsIot_TP_behavior_IC
                     )
                 );
                 p_monitorCompRef.done;
    -        } 
    +        }} 
         
             /**
               * @desc Starts monitor component behavior
    @@ -605,6 +617,7 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef,
                 boolean p_checkMessage 
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
                 var template RecordRoute v_recordRoute := ?;
                                 
                 p_monitorCompRef.start(
    @@ -618,7 +631,43 @@ module AtsImsIot_TP_behavior_IC
                     )
                 );
                 p_monitorCompRef.done;
    -        } 
    +        }} 
    +
    +        /**
    +          * @desc Starts monitor component behavior
    +          * @param p_monitorCompRef Reference to monitor component
    +          * @remark source function f_mtc_check_TP_IMS_5115_03_ic
    +          */
    +        function f_mtc_check_TP_IC_IBCF_183RESP_01(
    +                                                   in SipInterfaceMonitor p_monitorCompRef,
    +                                                   in boolean p_checkMessage := false
    +        ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                
    +                // Check first 1xx response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipResponse(
    +                                                                           mdw_TP_IC_IBCF_183RESP_01(mw_SIP_URI_Base, mw_TEL_URI_Base)/*FIXME(
    +                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain),
    +                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                      mw_Authorization_other //(mw_credentialIntegrityYes)
    +                                                                                                      )*/
    +                                                                           )
    +                                                        },
    +                                                        { mw_SipResponse(m_Response_Dummy) }, // FIXME Create mdw_1XX_Base
    +                                                        {0, omit},
    +                                                        "TP_IC_IBCF_183RESP_01",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
    +        }
             
         } // end group g_IBCF_1XXRESP
         
    @@ -742,22 +791,15 @@ module AtsImsIot_TP_behavior_IC
              */
             function f_mtc_check_TP_IC_IBCF_2XXRESP_04(
                 SipInterfaceMonitor  p_monitorCompRef,
    -            integer p_skipCount := 1
    +            integer p_skipCount := 0
             ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -                var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    -                var template SkipType v_skip := {0, omit};
    -                    
    -                if(p_skipCount > 0) {
    -                    v_skip := {1, mw_SipResponse(mdw_2XX_Base)};
    -                }
    -                    
    -                        
    +                
                    p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)},
                         {mw_SipResponse(mdw_2XX_Base)},
    -                    v_skip,
    +                    {p_skipCount, omit},
                         "TP_IC_IBCF_2XXRESP_04",
                         false,
                         false
    @@ -776,6 +818,8 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef,
                 integer p_skipCount
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
    +
                var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));            
                var template RecordRoute v_recordRoute := ?;
                                
    @@ -790,7 +834,7 @@ module AtsImsIot_TP_behavior_IC
                 )
                );
                p_monitorCompRef.done;
    -        }
    +        }}
         
             /**
              * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_06
    @@ -801,6 +845,8 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef,
                 integer p_skipCount
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
    +
                var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));            
                var template RecordRoute v_recordRoute := ?;
                                
    @@ -828,7 +874,7 @@ module AtsImsIot_TP_behavior_IC
                 )
                );
                p_monitorCompRef.done;
    -        }
    +        }}
             
         } // end group g_IBCF_2XXRESP
         
    @@ -952,6 +998,8 @@ module AtsImsIot_TP_behavior_IC
                SipInterfaceMonitor  p_monitorCompRef,
                boolean p_checkMessage
            ) runs on ImsTestCoordinator  { 
    +       if (isvalue(p_monitorCompRef)) {
    +
            var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
                     
            //TODO: to/from
    @@ -993,7 +1041,7 @@ module AtsImsIot_TP_behavior_IC
            );
            p_monitorCompRef.done;
             
    -      } //function
    +      }} //function
         
         } // end group g_IBCF_BYE
         
    @@ -1015,6 +1063,7 @@ module AtsImsIot_TP_behavior_IC
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              {
    +//                                                             mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))
                                                                  mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))
                                                              }, //TODO: From/To
                                                              {},
    @@ -1054,6 +1103,8 @@ module AtsImsIot_TP_behavior_IC
                 SipInterfaceMonitor  p_monitorCompRef,
                 boolean p_checkMessage
             ) runs on ImsTestCoordinator  {
    +          if (isvalue(p_monitorCompRef)) {
    +
                 var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
                     
                 p_monitorCompRef.start(
    @@ -1068,7 +1119,7 @@ module AtsImsIot_TP_behavior_IC
                 );
                 p_monitorCompRef.done;
                     
    -        } //function
    +        }} //function
         
         } // end group g_IBCF_CANCEL
         
    @@ -1123,6 +1174,8 @@ module AtsImsIot_TP_behavior_IC
             function f_mtc_check_TP_IC_IBCF_CANCEL_OK_03(
                 SipInterfaceMonitor  p_monitorCompRef
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
    +
                 p_monitorCompRef.start(
                  f_Iot_Sip_receive(
                      {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    @@ -1134,7 +1187,7 @@ module AtsImsIot_TP_behavior_IC
                  )
                 );
                 p_monitorCompRef.done;
    -        }
    +        }}
         
         } // end group g_IBCF_CANCEL_OK
         
    @@ -1163,7 +1216,9 @@ module AtsImsIot_TP_behavior_IC
                     //TODO: from/to 
                     p_monitorCompRef.start(
                      f_Iot_Sip_receive(
    -                     {(mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?)), mw_SipResponse(mw_Response_Base(c_statusLine600)))}, // FIXME Enforce template checks
    +                     {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))
    +                         //, mw_SipResponse(mw_Response_Base(c_statusLine600)))
    +                         }, // FIXME Enforce template checks
                          {mw_SipResponse(mdw_4XX_Base)},
                          {0, omit},
                          "TP_IC_IBCF_486INVITE_01",
    @@ -1209,6 +1264,7 @@ module AtsImsIot_TP_behavior_IC
                SipInterfaceMonitor  p_monitorCompRef,
                boolean p_checkMessage 
            ) runs on ImsTestCoordinator {
    +         if (isvalue(p_monitorCompRef)) {
                                 
               //TODO: from/to 
               p_monitorCompRef.start(
    @@ -1235,7 +1291,7 @@ module AtsImsIot_TP_behavior_IC
              )
             );
             p_monitorCompRef.done;
    -       } 
    +       }} 
         
            /**
              * @desc Starts monitor component behavior
    @@ -1245,6 +1301,7 @@ module AtsImsIot_TP_behavior_IC
                SipInterfaceMonitor  p_monitorCompRef,
                boolean p_checkMessage 
            ) runs on ImsTestCoordinator {
    +         if (isvalue(p_monitorCompRef)) {
                                 
               //TODO: from/to 
               p_monitorCompRef.start(
    @@ -1271,7 +1328,7 @@ module AtsImsIot_TP_behavior_IC
              )
             );
             p_monitorCompRef.done;
    -       } 
    +       }} 
         
         } // end group g_IBCF_486INVITE
         
    @@ -1464,6 +1521,8 @@ module AtsImsIot_TP_behavior_IC
                 function f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(
                     SipInterfaceMonitor  p_monitorCompRef/*, Response p_200OK*/, boolean p_checkMessage
                 ) runs on ImsTestCoordinator {
    +              if (isvalue(p_monitorCompRef)) {
    +                
                     var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B);
                     var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));        
                     var SipMessage v_sip := {request := valueof(m_INVITE_Dummy)};
    @@ -1506,7 +1565,7 @@ module AtsImsIot_TP_behavior_IC
                         )
                     );
                     p_monitorCompRef.done;  
    -            }
    +            }}
         
         } // end group g_IBCF_SUBSCRIBE
         
    @@ -1521,6 +1580,7 @@ module AtsImsIot_TP_behavior_IC
             function f_mtc_check_TP_IC_IBCF_NOTIFY_01(
                 SipInterfaceMonitor  p_monitorCompRef, boolean p_checkMessage
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
         
                 var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));
         
    @@ -1561,7 +1621,7 @@ module AtsImsIot_TP_behavior_IC
                     )
                 );
                 p_monitorCompRef.done;        
    -        }
    +        }}
         
         } // end group g_IBCF_NOTIFY
         
    @@ -1575,6 +1635,8 @@ module AtsImsIot_TP_behavior_IC
             function f_mtc_check_TP_IC_IBCF_REGISTER_01(
                 SipInterfaceMonitor  p_monitorCompRef, boolean p_checkMessage
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
    +
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_01)},
    @@ -1612,7 +1674,7 @@ module AtsImsIot_TP_behavior_IC
                       )
                      );
                      p_monitorCompRef.done;
    -        }
    +        }}
         
             /**
             * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_02
    @@ -1622,6 +1684,7 @@ module AtsImsIot_TP_behavior_IC
             function f_mtc_check_TP_IC_IBCF_REGISTER_02(
                 SipInterfaceMonitor  p_monitorCompRef, boolean p_checkMessage
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                 f_Iot_Sip_receive(
                     {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_02)},
    @@ -1665,7 +1728,7 @@ module AtsImsIot_TP_behavior_IC
                     )
                 );
                 p_monitorCompRef.done;
    -        }
    +        }}
         
             /**
             * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_03
    @@ -1675,6 +1738,7 @@ module AtsImsIot_TP_behavior_IC
             function f_mtc_check_TP_IC_IBCF_REGISTER_03(
                 SipInterfaceMonitor  p_monitorCompRef, boolean p_checkMessage
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                 f_Iot_Sip_receive(
                     {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: UE_A,IMS_B 
    @@ -1718,7 +1782,7 @@ module AtsImsIot_TP_behavior_IC
                     )
                 );
                 p_monitorCompRef.done;
    -        }
    +        }}
         
             /**
             * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_04
    @@ -1728,6 +1792,7 @@ module AtsImsIot_TP_behavior_IC
             function f_mtc_check_TP_IC_IBCF_REGISTER_04(
                 SipInterfaceMonitor  p_monitorCompRef, boolean p_checkMessage
             ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                 f_Iot_Sip_receive(
                     {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B 
    @@ -1783,7 +1848,7 @@ module AtsImsIot_TP_behavior_IC
                     )
                 );
                 p_monitorCompRef.done;
    -        }
    +        }}
         
             /**
             * @desc Starts monitor component behavior for TP_IC_IBCF_REGISTER_05
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
    index 8e66cb3..52b065a 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
    @@ -399,6 +399,8 @@ module AtsImsIot_TP_behavior_MW_IS {
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    +
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
                                                         { 
    @@ -413,12 +415,13 @@ module AtsImsIot_TP_behavior_MW_IS {
                                                         )
                                        );
                p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_04
    +        }} // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_04
             
             function f_mtc_check_TP_MW_ICSCF_REGISTER_05( // FIXME RMI To be reviewed
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
                                                         { 
    @@ -433,7 +436,7 @@ module AtsImsIot_TP_behavior_MW_IS {
                                                         )
                                        );
                p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_05
    +        }} // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_05
             
         } // End of group imsRegistration
         
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    index 94e3d84..fbca514 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    @@ -451,6 +451,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
                                                         { 
    @@ -465,12 +466,13 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                         )
                                        );
                p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_04
    +        }} // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_04
             
             function f_mtc_check_TP_MW_PCSCF_REGISTER_05( // FIXME RMI To be reviewed
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
                                                         { 
    @@ -485,7 +487,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                         )
                                        );
                p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_05
    +        }} // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_05
             
         } // End of group imsRegistration
         
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    index 400018b..8526091 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    @@ -326,6 +326,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := false
                                                          ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
                                                         { 
    @@ -340,7 +341,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                         )
                                        );
                p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_07
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_07
             
             /**
              * @desc Verify that the S-CSCF successfully processes a user de-registration (no SIP session active).
    @@ -374,6 +375,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := false
                                                          ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                                        f_Iot_Sip_receive(
                                                         { 
    @@ -403,7 +405,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                         )
                                        );
                p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_10
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_10
             
         } // End of group imsDeRegistration
         
    @@ -775,6 +777,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 var template SkipType v_skip := {0, omit};
                 
                 if(p_skipCount > 0) {
    @@ -791,7 +794,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                  )
                );
                p_monitorCompRef.done;
    -        } // End of function TP_MW_SCSCF_RE_INVITE_01
    +        }} // End of function TP_MW_SCSCF_RE_INVITE_01
             
             /**
              * @desc Verify that the S-CSCF successfully processes an initial RE-INVITE (Terminating Leg).
    @@ -843,6 +846,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 var template SkipType v_skip := {0, omit};
                 
                 if(p_skipCount > 0) {
    @@ -859,7 +863,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                  )
                );
                p_monitorCompRef.done;
    -        } // End of function TP_MW_SCSCF_RE_INVITE_02
    +        }} // End of function TP_MW_SCSCF_RE_INVITE_02
             
             function f_mtc_check_TP_MW_SCSCF_RE_INVITE_03( // FIXME RMI case, to be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    @@ -867,6 +871,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 var template SkipType v_skip := {0, omit};
                 
                 if(p_skipCount > 0) {
    @@ -883,7 +888,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                  )
                );
                p_monitorCompRef.done;
    -        } // End of function TP_MW_SCSCF_RE_INVITE_03
    +        }} // End of function TP_MW_SCSCF_RE_INVITE_03
             
             function f_mtc_check_TP_MW_SCSCF_RE_INVITE_04( // FIXME RMI case, to be reviewed
                                                           in SipInterfaceMonitor p_monitorCompRef,
    @@ -891,6 +896,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_forward_to_mtc := false,
                                                           in integer p_skipCount := 1
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 var template SkipType v_skip := {0, omit};
                 
                 if(p_skipCount > 0) {
    @@ -907,7 +913,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                  )
                );
                p_monitorCompRef.done;
    -        } // End of function TP_MW_SCSCF_RE_INVITE_04
    +        }} // End of function TP_MW_SCSCF_RE_INVITE_04
             
             
         } // End of group imsInvite
    @@ -940,6 +946,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipResponse(mw_100Trying_Base) },
    @@ -951,7 +958,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_100Trying_01
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_100Trying_01
             
             /**
              * @desc Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg).
    @@ -979,6 +986,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipResponse(mw_100Trying_Base) },
    @@ -990,7 +998,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_100Trying_02
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_100Trying_02
             
         } // End of group ims100Trying
         
    @@ -1156,6 +1164,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                       in boolean p_checkMessage := false,
                                                       in boolean p_forward_to_mtc := false
                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipResponse(mw_200OK_Base) },
    @@ -1167,7 +1176,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_200OK_01
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_200OK_01
             
             /**
              * @desc Verify that the S-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg).
    @@ -1214,6 +1223,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                       in boolean p_forward_to_mtc := false,
                                                       in integer p_skipCount := 1
                                                       ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 var template SkipType v_skip := {0, omit};
                 
                 if(p_skipCount > 0) {
    @@ -1230,7 +1240,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_200OK_02
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_200OK_02
             
         } // End of group ims200Ok
         
    @@ -1274,6 +1284,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                     in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME
    @@ -1285,7 +1296,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_ACK_01
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_ACK_01
             
             /**
              * @desc Verify that the S-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg).
    @@ -1325,6 +1336,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                     in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipRequest(mw_ACK_Request_Base(?)) }, //FIXME
    @@ -1336,7 +1348,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_ACK_02
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_ACK_02
             
         } // End of group imsAck
         
    @@ -1381,6 +1393,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                     in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipRequest(mw_BYE_Request_Base) }, //FIXME
    @@ -1392,7 +1405,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_BYE_01
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_BYE_01
             
             /**
              * @desc Verify that the S-CSCF successfully processes a BYE (Terminating Leg).
    @@ -1433,6 +1446,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                     in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipRequest(mw_BYE_Request_Base) },
    @@ -1444,7 +1458,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_BYE_02
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_BYE_02
             
             /**
              * @desc Verify that the S-CSCF successfully processes a BYE (Originating Network).
    @@ -1486,6 +1500,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                     in boolean p_checkMessage := false,
                                                     in boolean p_forward_to_mtc := false
                                                     ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipRequest(mw_BYE_Request_Base) },
    @@ -1497,7 +1512,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_BYE_03
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_BYE_03
             
         } // End of group imsBye
         
    @@ -1772,6 +1787,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME
    @@ -1783,7 +1799,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_01
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_01
             
             /**
              * @desc Verify that the S-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Terminating Leg).
    @@ -1824,6 +1840,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                           in boolean p_checkMessage := false,
                                                           in boolean p_forward_to_mtc := false
                                                           ) runs on ImsTestCoordinator {
    +            if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { /*mw_SipResponse(mw_Response_Base(c_statusLine487))*/ }, //FIXME
    @@ -1835,7 +1852,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                     )
                 );
                 p_monitorCompRef.done;
    -        } // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_02
    +        }} // End of function f_mtc_check_TP_MW_SCSCF_487INVITE_02
             
         } // End of group imsRequestTermination
         
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    index a5c2704..dcb54d6 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    @@ -9,56 +9,44 @@ module AtsImsIot_Templates_IC
     	import from LibCommon_BasicTypesAndValues {type UInt16;}
     	import from LibCommon_VerdictControl {type FncRetCode;}
     	import from LibIot_TypesAndValues {
    -		type
    -			InterfaceInfoList,
    -			ProtocolFilter,
    -			GeneralConfigurationReq,
    -			GeneralConfigurationRsp,
    -			SetFilterReq,
    -			SetFilterRsp,
    -			StartTrafficCaptureReq,
    -			StartTrafficCaptureRsp,
    -			StopTrafficCaptureReq,
    -			StopTrafficCaptureRsp,
    -			IpAddress,
    -			Status;
    -	}
    -	import from AtsImsIot_TypesAndValues {
    -		type 
    -			SipMessage, NAPTRmessage
    -	};
    +        type
    +            InterfaceInfoList,
    +            ProtocolFilter,
    +            GeneralConfigurationReq,
    +            GeneralConfigurationRsp,
    +            SetFilterReq,
    +            SetFilterRsp,
    +            StartTrafficCaptureReq,
    +            StartTrafficCaptureRsp,
    +            StopTrafficCaptureReq,
    +            StopTrafficCaptureRsp,
    +            IpAddress,
    +            Status;
    +    }
    +	import from AtsImsIot_TypesAndValues {type SipMessage, NAPTRmessage;}
     	import from LibSip_SIPTypesAndValues all;
     	import from LibSip_Templates all;
    -	import from LibSip_Common {
    -		type 
    -			GenericParam,
    -			SemicolonParam_List
    -	}
    -	import from LibMsrp_TypesAndValues {
    -		type 
    -			SEND_request, 
    -			RECEIVE_response 
    -	};
    +	import from LibSip_Common {type GenericParam, SemicolonParam_List;}
    +	import from LibMsrp_TypesAndValues {type SEND_request, RECEIVE_response;}
     	import from LibIot_PIXITS {
    -		modulepar
    -			PX_IOT_TIMESTAMP_OFFSET,
    -			PX_IOT_PCAP_SESSIONS_PATH,
    -			PX_IOT_RECORD_MODE,
    -			PX_IOT_EUTs_IFACE_INFO_LIST,
    -			PX_IOT_FILE_MERGE_LIST,
    -			PX_IOT_FILE_MERGE_PATH,
    -			PX_IOT_MERGE_TOOL_PATH,
    -			PX_IOT_IFACES;
    -	}
    -	import from AtsImsIot_PIXITS { 
    -		modulepar 
    -			PX_IMS_SUT_CONF_FACTORY_NAME, PX_IMS_SUT_CONF_HOME_DOMAIN, PX_IMS_A_ICID 
    -	};
    +        modulepar
    +            PX_IOT_TIMESTAMP_OFFSET,
    +            PX_IOT_PCAP_SESSIONS_PATH,
    +            PX_IOT_RECORD_MODE,
    +            PX_IOT_EUTs_IFACE_INFO_LIST,
    +            PX_IOT_FILE_MERGE_LIST,
    +            PX_IOT_FILE_MERGE_PATH,
    +            PX_IOT_MERGE_TOOL_PATH,
    +            PX_IOT_IFACES;
    +    }
    +	import from AtsImsIot_PIXITS {
    +        modulepar
    +            PX_IMS_SUT_CONF_FACTORY_NAME,
    +            PX_IMS_SUT_CONF_HOME_DOMAIN,
    +            PX_IMS_A_ICID;
    +    }
     	
    -	import from AtsImsIot_Templates {
    -	       template mdw_2XX_Base, mw_180Ringing_Base, mw_200OK_Base, mw_PChargingVector, mw_SIP_URI_Base, mw_TEL_URI_Base, 
    -	                mw_credentialIntegrityNo, mw_401Unauthorized_Base, mw_WwwAuthenticate_AKA, mw_PathDef, mw_ServiceRoute, mdw_4XX_Base
    -	};
    +	import from AtsImsIot_Templates all;
     	
     	group g_IBCF {
     
    @@ -86,9 +74,13 @@ module AtsImsIot_Templates_IC
     		  * @desc INVITE Request checking TP_IC_IBCF_INVITE_01
     		  * @remark source template mdw_TP_IMS_5097_01_ic
     		  */
    -		 template(present)  INVITE_Request mdw_TP_IC_IBCF_INVITE_01 (template (present) SipUrl p_SCSCF_SIP_URI := ?)
    +		 template(present)  INVITE_Request mdw_TP_IC_IBCF_INVITE_01 (template (present) SipUrl p_SCSCF_SIP_URI := ?,
    +                                                                     template (present) From p_from := ?,
    +                                                                     template (present) To p_to := ?)
     		  modifies mw_INVITE_Request_Base := {
     		   msgHeader := {
    +		     fromField := p_from,
    +             toField := p_to,
     			 route := ({
     				 fieldName := ROUTE_E,
     				 routeBody := {
    @@ -105,11 +97,11 @@ module AtsImsIot_Templates_IC
     				 fieldName := P_CHARGING_VECTOR_E,
     				 chargeParams := {
     					 *,
    -					 {id := "icid-value", paramValue := ?},
    +//					 {id := "icid-value", paramValue := ?},
     					 *,
     					 {id := "orig-ioi", paramValue := ?},
     					 *,
    -					 complement({id := "term-ioi", paramValue := ?}),
    +//					 complement({id := "term-ioi", paramValue := ?}),
     					 *,
     					 complement({id := "access-network-charging-info", paramValue := ?}),
     					 *
    @@ -126,17 +118,26 @@ module AtsImsIot_Templates_IC
     		  */
     		template (present) INVITE_Request mdw_TP_IC_IBCF_INVITE_02 (
     			template (present) SipUrl p_SIP_URI := ?,
    -			template (present) SipUrl p_TEL_URI := ?)
    +			template (present) SipUrl p_TEL_URI := ?,
    +            template (present) From p_from := ?,
    +            template (present) To p_to := ?)
     		 modifies mw_INVITE_Request_Base := {
     		  msgHeader := {
    +            fromField := p_from,
    +            toField := p_to,
     			pAssertedID := {
     				fieldName := P_ASSERTED_ID_E,
     				pAssertedIDValueList := {
    -					*, 
    +					(*, 
     					({ nameAddr := mw_NameAddr(p_SIP_URI)}, {addrSpecUnion := mw_SIP_URI_Base}),  
     					*, 
     					({nameAddr := mw_NameAddr(p_TEL_URI)}, {addrSpecUnion := mw_TEL_URI_Base}), 
    -					*
    +					*),
    +					(*, 
    +                    ({ nameAddr := mw_NameAddr(p_TEL_URI)}, {addrSpecUnion := mw_TEL_URI_Base}),  
    +                    *, 
    +                    ({nameAddr := mw_NameAddr(p_SIP_URI)}, {addrSpecUnion := mw_SIP_URI_Base}), 
    +                    *)
     				}
     			}                   
     		  }
    @@ -147,15 +148,16 @@ module AtsImsIot_Templates_IC
     		  * @desc INVITE Request checking TP_IC_IBCF_INVITE_03
     		  * @remark source template mdw_TP_IMS_5097_04_ic
     		  */
    -		template (present) INVITE_Request mdw_TP_IC_IBCF_INVITE_03(in template (present) SipUrl p_requestUri := ?)
    +		template (present) INVITE_Request mdw_TP_IC_IBCF_INVITE_03(
    +            template (present) SipUrl p_SIP_URI := ?,
    +            template (present) SipUrl p_TEL_URI := ?,
    +            template (present) From p_from := ?,
    +            template (present) To p_to := ?)
     		 modifies mw_INVITE_Request_Base := {
    -		  requestLine := {
    -			method := INVITE_E,
    -			requestUri := p_requestUri,
    -			sipVersion := c_sipNameVersion
    -		  },
     		  msgHeader := {        
    -			pChargingVector := {
    +            fromField := p_from,
    +            toField := p_to,
    +            pChargingVector := {
     				fieldName := P_CHARGING_VECTOR_E,
     				chargeParams := {
     					*,
    @@ -304,8 +306,8 @@ module AtsImsIot_Templates_IC
     				pAssertedIDValueList := {
     					*, 
     					{ nameAddr := mw_NameAddr(p_SIP_URI)}, 
    -					*, 
    -					{nameAddr := mw_NameAddr(p_TEL_URI)},
    +//					*, 
    +//					{nameAddr := mw_NameAddr(p_TEL_URI)}, // only if availble, ie. optional
     					*
     				}
     			}
    @@ -338,6 +340,30 @@ module AtsImsIot_Templates_IC
                 recordRoute := p_recordRoute
     		  }
     		} 
    +
    +        /**
    +          * 
    +          * @desc 183 Ringing Response checking TP_IC_IBCF_183RESP_01
    +          * @remark source template mdw_TP_IMS_5115_03_ic
    +          */
    +        template Response mdw_TP_IC_IBCF_183RESP_01(
    +            template SipUrl p_SIP_URI,
    +            template SipUrl p_TEL_URI)
    +         modifies mw_183SessionProgress_Base := {
    +          msgHeader := {
    +            pAssertedID := {
    +                fieldName := P_ASSERTED_ID_E,
    +                pAssertedIDValueList := {
    +                    *, 
    +                    { nameAddr := mw_NameAddr(p_SIP_URI)}, 
    +//                    *, 
    +//                    {nameAddr := mw_NameAddr(p_TEL_URI)}, // only if available, ie. optional!
    +                    *
    +                }
    +            }
    +          }
    +        }   
    +
         
     	} // end group g_IBCF_1XXRESP
     
    @@ -458,7 +484,7 @@ module AtsImsIot_Templates_IC
     
     		/**
     		  * 
    -		  * @desc 487 Ringing Response checking TP_IC_IBCF_487INVITE_02
    +		  * @desc 486 Ringing Response checking TP_IC_IBCF_486INVITE_02
     		  * @remark source template mdw_TP_IC_IBCF_1XXRESP_01
     		  */
     		template Response mdw_TP_IC_IBCF_486INVITE_02(
    @@ -467,8 +493,8 @@ module AtsImsIot_Templates_IC
     		 modifies mdw_4XX_Base := {
     		  statusLine := {c_sipNameVersion, 486, ?},
     		  msgHeader := {
    -			fromField := mw_From (p_eutAUri),
    -			toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?)
    +			fromField := ?,//mw_From (p_eutAUri),
    +			toField := ?//mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?)
     		  }
     		}   
         
    @@ -514,8 +540,8 @@ module AtsImsIot_Templates_IC
     				callId := p_callId,
     				contentLength := *,
     				cSeq := p_cSeq,
    -                fromField := mw_From (p_eutAUri),
    -                toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),
    +                fromField := ?,//mw_From (p_eutAUri),
    +                toField := ?,//mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),
     				maxForwards := *,
     				via := ?
     			}
    @@ -569,8 +595,8 @@ module AtsImsIot_Templates_IC
     		                                                     template charstring p_EUTB_PublicId)
     		modifies mw_ACK_Request_Base := {
     			msgHeader := {
    -				fromField := mw_From (p_eutAUri),
    -				toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?)
    +				fromField := ?,//mw_From (p_eutAUri),
    +				toField := ?//mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?)
     			}
     		}    
         
    @@ -611,8 +637,8 @@ module AtsImsIot_Templates_IC
     		  template SipUrl p_eutAUri, template charstring p_EUTB_PublicId) 
     		modifies mw_CANCEL_Request_Base := {
     			msgHeader := {
    -				fromField := mw_From (p_eutAUri),
    -				toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),
    +				fromField := ?,//mw_From (p_eutAUri),
    +				toField := ?,//mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),
     				route := (
     					omit, 
     						{
    -- 
    GitLab
    
    
    From 8542a2065f915d915e396ad611958eff77ca5d72 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Tue, 21 Sep 2021 12:36:55 +0000
    Subject: [PATCH 155/176] Validated test TD_VxLTE_INT_ATT_01 with Gx and S6a
     interfaces
    
    ---
     .../AtsImsIot_Diameter_Templates.ttcn         |  2 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn  | 16 +-------------
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn  | 21 ++++++++-----------
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn |  6 ++++--
     ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn    | 20 ++++++++++--------
     ttcn/LibDiameter                              |  2 +-
     6 files changed, 27 insertions(+), 40 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    index fc1a232..6e71a43 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    @@ -991,7 +991,7 @@ module AtsImsIot_Diameter_Templates {
                     template CCR_MSG mw_CCR_SubscriberIMSI_qosInformation_class5(CC_Request_Ty_Type p_avpData) modifies mw_CCR_basic := {
                         cCR_Body :={
                             cC_Request_Type        := mw_cC_Request_Type(p_avpData),
    -                        subscription_Id        := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
    +                        subscription_Id        := {*,mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
                             iP_CAN_Type            := ?,
                             rat_Type               := ?,
                             called_Station_Id      := ?,
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    index 6591c8e..146c35d 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    @@ -521,20 +521,6 @@ group g_PCRF {
          *         the EPC_PCRF_A entity sends the CCA containing
          *             Result_Code_AVP
          *                 indicating value DIAMETER_SUCCESS
    -     *             QoS_Information_AVP containing
    -     *                 APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
    -     *                 APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
    -     *                 Bearer_Identifier_AVP;,
    -     *             Default_EPS_Bearer_QoS_AVP containing
    -     *                 QoS_Class_Identifier_AVP
    -     *                     indicating value '5'
    -     *                 Allocation_Retention_Priority_AVP containing
    -     *                     Priority_Level_AVP
    -     *                     Pre_emption_Capablity_AVP
    -     *                     Pre_emption_Vulnerability_AVP
    -     *                 ;
    -     *             ;
    -     *         ;
          *         to the EPC_PGW_A entity
          *     }
          * }
    @@ -566,7 +552,7 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 }
    +                        DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode }
                         },
                         {
                             DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    index 0180a3e..7c50854 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    @@ -165,7 +165,6 @@ module AtsImsIot_TP_behavior_IC
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                     if (isvalue(p_monitorCompRef)) {
    -                    var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
                         p_monitorCompRef.start(
                                               f_Iot_Sip_receive(
                                                                 {
    @@ -820,7 +819,6 @@ module AtsImsIot_TP_behavior_IC
             ) runs on ImsTestCoordinator {
               if (isvalue(p_monitorCompRef)) {
     
    -           var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));            
                var template RecordRoute v_recordRoute := ?;
                                
                p_monitorCompRef.start(
    @@ -846,8 +844,7 @@ module AtsImsIot_TP_behavior_IC
                 integer p_skipCount
             ) runs on ImsTestCoordinator {
               if (isvalue(p_monitorCompRef)) {
    -
    -           var template SipUrl v_SCSCF_A_Uri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));            
    +          
                var template RecordRoute v_recordRoute := ?;
                                
                //TODO: from/to 
    @@ -1000,7 +997,7 @@ module AtsImsIot_TP_behavior_IC
            ) runs on ImsTestCoordinator  { 
            if (isvalue(p_monitorCompRef)) {
     
    -       var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    +       var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A)
                     
            //TODO: to/from
            p_monitorCompRef.start(
    @@ -1105,7 +1102,7 @@ module AtsImsIot_TP_behavior_IC
             ) runs on ImsTestCoordinator  {
               if (isvalue(p_monitorCompRef)) {
     
    -            var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
    +            var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_B)
                     
                 p_monitorCompRef.start(
                  f_Iot_Sip_receive(
    @@ -1699,7 +1696,7 @@ module AtsImsIot_TP_behavior_IC
         
                 // @remark source function f_mtc_check_TP_IMS_5092_01_ic
                 var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
    -            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
    +            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_B)
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    @@ -1715,7 +1712,7 @@ module AtsImsIot_TP_behavior_IC
         
                 // @remark source function f_mtc_check_TP_IMS_5092_01_ic
                 v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B);
    -            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    +            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_A)
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    @@ -1753,7 +1750,7 @@ module AtsImsIot_TP_behavior_IC
         
                 // @remark source function f_mtc_check_TP_IMS_5092_01_ic
                 var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
    -            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
    +            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_B)
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    @@ -1769,7 +1766,7 @@ module AtsImsIot_TP_behavior_IC
         
                 // @remark source function f_mtc_check_TP_IMS_5092_01_ic
                 v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B);
    -            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    +            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_A)
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    @@ -1819,7 +1816,7 @@ module AtsImsIot_TP_behavior_IC
                 
                 // @remark source function f_mtc_check_TP_IMS_5092_01_ic
                 var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
    -            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
    +            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_B)
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    @@ -1835,7 +1832,7 @@ module AtsImsIot_TP_behavior_IC
         
                 // @remark source function f_mtc_check_TP_IMS_5092_01_ic
                 v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B);
    -            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A));
    +            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_A)
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
    index 58e232b..47accc9 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
    @@ -25,6 +25,7 @@ module AtsImsIot_TP_behavior_ISC
     	}   
         
     	import from AtsImsIot_Functions all;
    +	import from AtsImsIot_Templates_MW all;
     	import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;}
     	// LibSip
     	import from LibSip_SDPTypes { type SDP_media_desc_list };
    @@ -57,11 +58,12 @@ group g_ISC {
             boolean p_checkMessage := false
         ) runs on ImsTestCoordinator {
             if (isvalue(p_monitorCompRef)){
    -            var template SipUrl v_request_uri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));
    +            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
         
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    -                    {mw_SipRequest(mdw_TP_ISC_SCSCF_REGISTER_01(?,?,v_request_uri))},
    +                    {mw_SipRequest(mdw_TP_ISC_SCSCF_REGISTER_01(mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain)))},
                         {mw_SipRequest(mw_REGISTER_Request_Base)},
                         {0, omit},
                         "TP_ISC_SCSCF_REGISTER_01 - REGISTER",
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    index dcb54d6..1408758 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    @@ -757,19 +757,21 @@ module AtsImsIot_Templates_IC
     		* @desc REGISTER Request checking TP_ISC_SCSCF_REGISTER_01.
     		*/
     		template REGISTER_Request mdw_TP_ISC_SCSCF_REGISTER_01(
    -			template SipUrl p_eutAUri, 
    -			template charstring p_EUTB_PublicId,
    -		    template SipUrl p_PCSCF_SIP_URI
    +                                                              template (present) From p_from := ?,
    +                                                              template (present) To p_to := ?,
    +                                                              template Authorization p_authorization := *,
    +                                                              template PChargingVector p_pChargingVector := ?,
    +                                                              template PVisitedNetworkID p_pVisitedNetworkID := ?
     		) modifies mw_REGISTER_Request_Base := {
    -            requestLine := { requestUri := p_PCSCF_SIP_URI }, 
    +            //requestLine := { requestUri := p_PCSCF_SIP_URI }, 
     			msgHeader := {
    -				fromField := mw_From (p_eutAUri),
    -				toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),
    -				authorization := mw_Authorization(mw_credentialIntegrityNo),
    -				pChargingVector := ?,
    +				fromField := p_from,
    +				toField := p_to,
    +				authorization := p_authorization,
    +				pChargingVector := p_pChargingVector,
     				pChargingFunctionAddresses := ?,
     				pAccessNetworkInfo := ?,
    -				pVisitedNetworkID := ?,
    +				pVisitedNetworkID := p_pVisitedNetworkID,
     				contact := {
     					fieldName := CONTACT_E,
     					contactBody := {
    diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
    index 1bf5e31..1f3760b 160000
    --- a/ttcn/LibDiameter
    +++ b/ttcn/LibDiameter
    @@ -1 +1 @@
    -Subproject commit 1bf5e310ba324943a88b4922c5d479b13ef5548a
    +Subproject commit 1f3760b09ac67c211d11508263c565c50776c98a
    -- 
    GitLab
    
    
    From 68578bba0c183c3aafdf5b12faaab5abfcf9dc01 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Fri, 24 Sep 2021 10:06:50 +0200
    Subject: [PATCH 156/176] TPs updated due to validation week35
    
    ---
     test_purposes/Gx/TP_GX.tplan2    | 19 +-------------
     test_purposes/Ic/TP_IC.tplan2    | 45 +++++++++++++++++++++++++-------
     test_purposes/Mw/TP_MW_IS.tplan2 |  7 ++++-
     test_purposes/S9/TP_S9.tplan2    | 16 +-----------
     4 files changed, 44 insertions(+), 43 deletions(-)
    
    diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2
    index dcbdeca..90a2efa 100644
    --- a/test_purposes/Gx/TP_GX.tplan2
    +++ b/test_purposes/Gx/TP_GX.tplan2
    @@ -48,15 +48,9 @@ Package TP_GX {
                             IP_CAN_Type_AVP
                             RAT_Type_AVP
                             Called_Station_Id_AVP
    -                        PDN_Connection_Id_AVP
                             Framed_IP_Address_AVP
                             "or" Framed_IP6_IP_Address_AVP
    -                        Bearer_Usage_AVP
    -                            indicating value IMS_SIGNALLING
                             QoS_Information_AVP
    -                            APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
    -                            APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
    -                            Bearer_Identifier_AVP
                             Default_EPS_Bearer_QoS_AVP containing
                                 QoS_Class_Identifier_AVP
                                     indicating value '5'
    @@ -69,18 +63,7 @@ Package TP_GX {
                     then {
                         the EPC_PCRF_A entity sends the CCA containing
                             Result_Code_AVP
    -                            indicating value DIAMETER_SUCCESS
    -                        QoS_Information_AVP containing
    -                            APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
    -                            APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
    -                            Bearer_Identifier_AVP;,
    -                        Default_EPS_Bearer_QoS_AVP containing
    -                            QoS_Class_Identifier_AVP
    -                                indicating value '5'
    -                            Allocation_Retention_Priority_AVP containing
    -                                Priority_Level_AVP
    -                                Pre_emption_Capablity_AVP
    -                                Pre_emption_Vulnerability_AVP;;;
    +                            indicating value DIAMETER_SUCCESS;
                         to the EPC_PGW_A entity
                     }
                 }  
    diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2
    index b7aab22..607bed7 100644
    --- a/test_purposes/Ic/TP_IC.tplan2
    +++ b/test_purposes/Ic/TP_IC.tplan2
    @@ -103,7 +103,7 @@ Package TP_IC {
                         the IMS_IBCF_A entity forwards the initial INVITE containing
                             Route not indicating value PX_S_CSCF_A_SIP_URI, 
                             PChargingVector containing
    -                            Icid,
    +                            Icid_value,
                                 Orig_Ioi indicating value PX_IMS_A_ICID,
                                 not Access_Network_Charging_Info,
                                 not Term_Ioi;,
    @@ -358,15 +358,44 @@ Package TP_IC {
             }
         }  // End of TP TP_IC_IBCF_180RESP_02
     
    -
    -
    -
    +    Test Purpose {
    +        TP Id  TP_IC_IBCF_183RESP_01
    +        Test objective
    +            "S-CSCF inserts P-Asserted-Identity header in 183 response indicating a 
    +             registered SIP URI."
    +        Reference
    +            "TS 124 229 [1], clause 5.4.3.3 (item 3 in 3rd numbered list)"
    +            
    +        Config Id CF_VxLTE_INT
    +        
    +        PICS Selection  NONE
    +        
    +        Initial conditions with {
    +            the UE_A entity isRegisteredTo the IMS_A and
    +            the UE_B entity isRegisteredTo the IMS_B and
    +            the UE_A entity registeredPublicIdsWithTelUriAndSipUri and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +        }
    +        
    +        Expected behaviour
    +            ensure that {
    +                when {
    +                    the UE_A entity sends a 183_SessionProgress response "addressed to UE_B" to the IMS_A entity 
    +                }
    +                then {
    +                    the IMS_IBCF_A entity sends the 183_SessionProgress response containing
    +                        PAssertedID containing 
    +                            PAssertedIDValue indicating value PX_UE_A_SIP_URI;;
    +                    to the IMS_IBCF_B entity 
    +                }
    +        }
    +    }  // End of TP TP_IC_IBCF_183RESP_01
     
         Test Purpose {  // Former TP TP_IMS_5115_03
             TP Id  TP_IC_IBCF_1XXRESP_01
             Test objective
    -            "S-CSCF inserts a second P-Asserted-Identity header in 1xx response indicating a 
    -             registered tel URI or SIP URI whichever is not present"
    +            "S-CSCF inserts P-Asserted-Identity header in 1xx response indicating a 
    +             registered SIP URI"
             Reference
                 "TS 124 229 [1], clause 5.4.3.3 (item 3 in 3rd numbered list)"
                 
    @@ -389,15 +418,13 @@ Package TP_IC {
                     then {
                         the IMS_IBCF_A entity sends the 180_Ringing response containing
                             PAssertedID containing 
    -                            PAssertedIDValue indicating value PX_UE_A_SIP_URI ,
    -                            PAssertedIDValue indicating value PX_UE_A_TEL_URI;;
    +                            PAssertedIDValue indicating value PX_UE_A_SIP_URI;;
                         to the IMS_IBCF_B entity 
                     }
             }
         }  // End of TP TP_IC_IBCF_1XXRESP_01
     
     
    -
         Test Purpose {  // Former TP TP_IMS_5055_01
             TP Id  TP_IC_IBCF_1XXRESP_02
             Test objective
    diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2
    index a40ee2f..8e05b45 100644
    --- a/test_purposes/Mw/TP_MW_IS.tplan2
    +++ b/test_purposes/Mw/TP_MW_IS.tplan2
    @@ -195,7 +195,12 @@ Package TP_MW_IS {
                         from the IMS_P_CSCF_A entity
                     }
                     then {
    -                    the IMS_I_CSCF_A entity sends an 404_NotFound containing
    +                    the IMS_I_CSCF_A entity sends an 403_Forbiden containing
    +                        From indicating value PX_UE_A_SIP_URI,
    +                        To indicating value PX_UE_A_SIP_URI,
    +                        CallId indicating value PX_UE_A_CALLID;
    +                    to the IMS_P_CSCF_A entity or 
    +                    the IMS_I_CSCF_A entity sends an 480_Temporary_Unavailable containing
                             From indicating value PX_UE_A_SIP_URI,
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID;
    diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2
    index 4cdbec2..607ac32 100644
    --- a/test_purposes/S9/TP_S9.tplan2
    +++ b/test_purposes/S9/TP_S9.tplan2
    @@ -75,21 +75,7 @@ Package TP_S9 {
                     then {
                         the EPC_PCRF_A entity sends a AAA containing
                             Result_Code_AVP
    -                            indicating value DIAMETER_SUCCESS
    -                        Acceptable_Service_Info_AVP containing
    -                            "one or more" Media_Component_Description_AVP containing
    -                                Media_Component_Number_AVP
    -                                    indicating value 0,
    -                                Media_Sub_Component_AVP containing
    -                                    Flow_Description_AVP
    -                                    Flow_Usage_AVP
    -                                        indicating value AF_SIGNALING,
    -                                    Flow_Status_AVP
    -                                        indicating value ENABLED,
    -                                    AF_Signalling_Protocol_AVP
    -                                        indicating value SIP;;;,
    -                        IP_CAN_AVP
    -                        RAT_Type_AVP;
    +                            indicating value DIAMETER_SUCCESS;
                         to the EPC_PCRF_B entity
                     }
                 }  
    -- 
    GitLab
    
    
    From 133ca9bb8c03e4c52920b16772cf1da9cf567de2 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Fri, 15 Oct 2021 07:39:53 +0000
    Subject: [PATCH 157/176] Validation of RMI test cases at Ic
    
    ---
     .../AtsImsIot_Diameter_Templates.ttcn         |  22 +-
     ttcn/AtsImsIot/AtsImsIot_Functions.ttcn       |   9 +
     ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn          | 180 +++----
     ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn          |  22 +-
     ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn          |  42 +-
     ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn          | 456 +++++++++---------
     ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn          |  34 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn  | 355 +++-----------
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn |   7 +-
     ttcn/AtsImsIot/AtsImsIot_Templates.ttcn       |  17 +-
     ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn    | 123 +++--
     11 files changed, 493 insertions(+), 774 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    index 6e71a43..9680275 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
    @@ -1195,19 +1195,19 @@ module AtsImsIot_Diameter_Templates {
                 group S9RequestBasicTemplates{
                     
                     template AAR_MSG mw_AAR_S9_basic modifies mw_AAR_dummy := {
    -                    header := mw_diameterHeaderReq_dummy(AAR_E, c_applIdRx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderReq_dummy(AAR_E, ?/*TODO c_applIdS9*/)
                     }
                     
                     template ASR_MSG mw_ASR_S9_basic modifies mw_ASR_dummy := {
    -                    header := mw_diameterHeaderReq_dummy(ASR_E, c_applIdRx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderReq_dummy(ASR_E, ?/*TODO c_applIdS9*/)
                     }
     
                     template CCR_MSG mw_CCR_S9_basic modifies mw_CCR_dummy := {
    -                    header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdGx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderReq_dummy(CCR_E, ?/*TODO c_applIdS9*/)
                     }
     
                     template STR_MSG mw_STR_S9_basic modifies mw_STR_dummy := {
    -                    header := mw_diameterHeaderReq_dummy(STR_E, c_applIdGx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderReq_dummy(STR_E, ?/*TODO c_applIdS9*/)
                     }
                     
                 }
    @@ -1222,14 +1222,14 @@ module AtsImsIot_Diameter_Templates {
                     template CCR_MSG mw_CCR_S9_Establishment(CC_Request_Ty_Type p_avpData) modifies mw_CCR_S9_basic := {
                         cCR_Body :={
                             cC_Request_Type        := mw_cC_Request_Type(p_avpData),
    -                        subscription_Id        := {mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
    +                        subscription_Id        := {*,mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
                             iP_CAN_Type            := ?,
                             rat_Type               := ?,
                             called_Station_Id      := ?,
    -                        pDN_Connection_ID      := ?,
    +                        pDN_Connection_ID      := *,
                             framed_IP_Address      := ?,
                             //framed_IPv6_Prefix     := *,
    -                        bearer_Usage           := mw_bearer_Usage(IMS_SIGNALLING_E),
    +                        bearer_Usage           := *,//mw_bearer_Usage(IMS_SIGNALLING_E),
                             qoS_Information        := mw_qoS_Information,
                             default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5,
                             subsesion_Enforcement_Info := ? //AXR {mw_subses_Enforcement_Info(mw_subsession_Operation_AVP (ESTABLISHMENT_E))}
    @@ -1248,19 +1248,19 @@ module AtsImsIot_Diameter_Templates {
                 group S9AnswerBasicTemplates{
                     
                     template AAA_MSG mw_AAA_S9_basic modifies mw_AAA_dummy := {
    -                    header := mw_diameterHeaderAns_dummy(AAA_E, c_applIdRx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderAns_dummy(AAA_E, ?/*TODO c_applIdS9*/)
                     }
                     
                     template ASA_MSG mw_ASA_S9_basic modifies mw_ASA_dummy := {
    -                    header := mw_diameterHeaderAns_dummy(ASA_E, c_applIdRx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderAns_dummy(ASA_E, ?/*TODO c_applIdS9*/)
                     }
                     
                     template CCA_MSG mw_CCA_S9_basic modifies mw_CCA_dummy := {
    -                    header := mw_diameterHeaderAns_dummy(CCA_E, c_applIdGx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderAns_dummy(CCA_E, ?/*TODO c_applIdS9*/)
                     }
                     
                     template STA_MSG mw_STA_S9_basic modifies mw_STA_dummy := {
    -                    header := mw_diameterHeaderAns_dummy(STA_E, c_applIdGx/*TODO c_applIdS9*/)
    +                    header := mw_diameterHeaderAns_dummy(STA_E, ?/*TODO c_applIdS9*/)
                     }
                 }
                 
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    index 02da7b0..9a94e23 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn
    @@ -2290,6 +2290,15 @@ module AtsImsIot_Functions {
                     return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found.";
                 }
             }
    +
    +        /**
    +         * @desc Get the P-CSCF FQDN address of referenced EUT 
    +         * @return if a P-CSCF is avaiable, the IP Address of the P-CSCF, 
    +         *         otherwise error_string
    +         */
    +        function f_GetEUTPcscfIpAddress_1() return charstring {
    +            return PX_SIP_MW_P_CSCF_IPADDR;
    +        }
             
             /**
              * @desc Get the P-CSCF FQDN address of referenced EUT 
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn
    index 85b972b..ca42c58 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn
    @@ -1,8 +1,8 @@
     /**
    - *  @author     STF 574
    + *  @author     STF 574, TTF 006
      *  @version    $Id: $
      *  @desc       This module provides ATS specific test case definitions for Network Attachment.
    - *  @see        ETSI TS 103 653-2 (2020)
    + *  @see        ETSI TS 103 653-2 (2021)
      */
     module AtsImsIot_TD_ATT{
     
    @@ -46,41 +46,31 @@ module AtsImsIot_TD_ATT{
                 testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
    -    
    +                
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    -                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
                         f_cf_createVxLteMonitor();    
    -            
    +                    
                         // map/connect component ports
                         f_cf_adapter_up ( );
                         f_cf_user_up ( v_ueA );
    -                    //f_cf_user_up ( v_ueB );
                         f_cf_VxLteMonitor_Up();
    -        
    +                    
                         // preamble
                         f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -                    //f_mtc_userRegistration ( v_ueB, v_userInfoB );
    -        
    -                    // test body
    -                    // Check that user A can register to IMS A
    -                    //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
                         
    -                    //f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
    +                    // test body
    +                    // Check that user A starts initial network attachment
    +                    f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
                         f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a);        // Check (ULA – Event 3) 
                         f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5)
    -                    //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    -        
    +                    
                         // postamble
    -                    //f_PO_user_home_deregistration ( v_ueB );
    -                    //f_PO_user_home_deregistration ( v_ueA );
                         f_mtc_userRadioEnabled ( v_ueA, false, true );
    -        
    +                    
                         //unmap/disconnect component ports
    -                    //f_cf_user_down ( v_ueB );
                         f_cf_user_down ( v_ueA );
                         f_cf_VxLteMonitor_Down();
                         f_cf_adapter_down ( );
    @@ -103,54 +93,43 @@ module AtsImsIot_TD_ATT{
                 testcase TC_VxLTE_RMI_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
    -    
    +                
                     f_setVxLteMonIterfacesAvailability();
    -				//Check required monitor interfaces due to TD
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
    -	                f_cf_createVxLteMonitor();    
    -	        
    -	                // map/connect component ports
    -	                f_cf_adapter_up ( );
    -	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
    -	                f_cf_VxLteMonitor_Up();
    -	    
    -	                // preamble
    -	                f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -	                //f_mtc_userRegistration ( v_ueB, v_userInfoB );
    -	    
    -	                // test body
    -	                // Check that user A can register to IMS A
    -	                //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
    -	                //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check
    -	                f_mtc_check_TP_S6A_MME_AIR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (AIR – Event 2)
    -	                f_mtc_check_TP_S6A_HSS_AIA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (AIA – Event 3)
    -	                f_mtc_check_TP_S6A_MME_ULR_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 4)
    -	                f_mtc_check_TP_S6A_HSS_ULA_02 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 5)
    -	                f_mtc_check_TP_GX_PGW_CCR_01  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR - Event 6)
    -	                f_mtc_check_TP_S9_PCRF_CCR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 7)
    -	                f_mtc_check_TP_S9_PCRF_CCA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA - Event 8)
    -	                f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA - Event 9)
    -	                //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    -	                //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
    -	    
    -	                // postamble
    -	                //f_PO_user_home_deregistration ( v_ueB );
    -	                //f_PO_user_home_deregistration ( v_ueA );
    -	                f_mtc_userRadioEnabled ( v_ueA, false, true );
    -	    
    -	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
    -	                f_cf_user_down ( v_ueA );
    -	                f_cf_VxLteMonitor_Down();
    -	                f_cf_adapter_down ( );
    -				}else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                //Check required monitor interfaces due to TD
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
    +                    f_cf_createVxLteMonitor();    
    +                    
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    f_cf_VxLteMonitor_Up();
    +                    
    +                    // preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    
    +                    // test body
    +                    // Check that user A starts initial network attachment
    +                    f_mtc_check_TP_S6A_MME_AIR_01 ( vc_vxlte_monitor_components.s6a); // Check (AIR – Event 2) //Not yet validate
    +                    f_mtc_check_TP_S6A_HSS_AIA_01 ( vc_vxlte_monitor_components.s6a); // Check (AIA – Event 3) //Not yet valiated
    +                    f_mtc_check_TP_S6A_MME_ULR_02 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 4)
    +                    f_mtc_check_TP_S6A_HSS_ULA_02 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 5)
    +                    f_mtc_check_TP_GX_PGW_CCR_01  ( vc_vxlte_monitor_components.gx, true); // Check (CCR - Event 6)
    +                    f_mtc_check_TP_S9_PCRF_CCR_01 ( vc_vxlte_monitor_components.s9); // Check (CCA – Event 7)
    +                    f_mtc_check_TP_S9_PCRF_CCA_01 ( vc_vxlte_monitor_components.s9); // Check (CCA - Event 8)
    +                    f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCA - Event 9)
    +                    
    +                    // postamble
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    
    +                    //unmap/disconnect component ports
    +                    f_cf_user_down ( v_ueA );
    +                    f_cf_VxLteMonitor_Down();
    +                    f_cf_adapter_down ( );
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_RMI_ATT_01
                 
                 /**
    @@ -162,49 +141,36 @@ module AtsImsIot_TD_ATT{
                 testcase TC_VxLTE_RMI_ATT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
    -    
    +                
                     f_setVxLteMonIterfacesAvailability();
    -				if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
    +                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_S9_INTERFACENAME,PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
                         f_cf_createVxLteMonitor();    
    -	        
    -	                // map/connect component ports
    -	                f_cf_adapter_up ( );
    -	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
    -	                f_cf_VxLteMonitor_Up();
    -	    
    -	                // preamble
    -	                f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -	                //f_mtc_userRegistration ( v_ueB, v_userInfoB );
    -	    
    -	                // test body
    -	                // Check that user A can register to IMS A
    -	                //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
    -	                //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check
    -	                f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULR – Event 2)
    -	                f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a, false ); // Check (ULA – Event 3) 
    -					f_mtc_check_TP_GX_PGW_CCR_01  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR - Event 4)
    -                    f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 5)
    -	                //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    -	                //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
    -	    
    -	                // postamble
    -	                //f_PO_user_home_deregistration ( v_ueB );
    -	                //f_PO_user_home_deregistration ( v_ueA );
    -	                f_mtc_userRadioEnabled ( v_ueA, false, true );
    -	    
    -	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
    -	                f_cf_user_down ( v_ueA );
    -	                f_cf_VxLteMonitor_Down();
    -	                f_cf_adapter_down ( );
    -			    }else{
    -					//log...
    -					setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    -				}
    +                    
    +                    // map/connect component ports
    +                    f_cf_adapter_up ( );
    +                    f_cf_user_up ( v_ueA );
    +                    f_cf_VxLteMonitor_Up();
    +                    
    +                    // preamble
    +                    f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    +                    
    +                    // test body
    +                    // Check that user A starts initial network attachment
    +                    f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true); // Check (ULR – Event 2)
    +                    f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3)
    +                    
    +                    // postamble
    +                    f_mtc_userRadioEnabled ( v_ueA, false, true );
    +                    
    +                    //unmap/disconnect component ports
    +                    f_cf_user_down ( v_ueA );
    +                    f_cf_VxLteMonitor_Down();
    +                    f_cf_adapter_down ( );
    +                }else{
    +                    //log...
    +                    setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
    +                }
                 } // End of TC TC_VxLTE_RMI_ATT_02
             } //End of group networkAttachmentAndDefaultBearer
         } // End of group Roaming
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    index d6a53ea..0dd94a7 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn
    @@ -1,5 +1,5 @@
     /**
    - *  @author     STF 574
    + *  @author     STF 574, TTF 006
      *  @version    $Id: $
      *  @desc       This module provides ATS specific test case definitions for IMS Registration.
      *  @see        ETSI TS 103 653-2 (2020)
    @@ -200,6 +200,7 @@ module AtsImsIot_TD_DRG{
                         
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_07(vc_vxlte_monitor_components.mwSI, false, true); // Event 8
                         
    +                    f_mtc_check_TP_GM_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.gmA); // Events 11, 12
                         f_mtc_check_TP_MW_PCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwPS); // Events 11, 12
                         //f_mtc_check_TP_MW_SCSCF_NOTIFY_01(vc_vxlte_monitor_components.mwIB, false, true); // Event 10, 13
                         
    @@ -356,8 +357,6 @@ module AtsImsIot_TD_DRG{
                                                               PX_SIP_MW_PI_INTERFACENAME,
                                                               PX_SIP_MW_IS_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME}))
    @@ -381,9 +380,6 @@ module AtsImsIot_TD_DRG{
                         f_mtc_check_TP_IC_IBCF_REGISTER_03(vc_vxlte_monitor_components.ic, false); // Event 3
                         //f_mtc_check_TP_MW_ICSCF_REGISTER_08(vc_vxlte_monitor_components.mwIS, false, true); // Event 4
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6
    -                    f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 8, 9
    -                    
                         f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 15
                         f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 16
                         f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 17
    @@ -421,8 +417,6 @@ module AtsImsIot_TD_DRG{
                                                               PX_SIP_MW_PI_INTERFACENAME,
                                                               PX_SIP_MW_IS_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME}))
    @@ -439,8 +433,6 @@ module AtsImsIot_TD_DRG{
             
                         // test body
                         
    -                    f_mtc_check_TP_CX_HSS_RTA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 1, 16
    -                    
                         //f_mtc_check_TP_MW_SCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwIS, false, true); // Event 2, 9
                         f_mtc_check_TP_IC_IBCF_NOTIFY_01(vc_vxlte_monitor_components.ic, false); // Events 3, 8
                         //f_mtc_check_TP_MW_PCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 4, 7
    @@ -484,8 +476,6 @@ module AtsImsIot_TD_DRG{
                                                               PX_SIP_MW_PI_INTERFACENAME,
                                                               PX_SIP_MW_IS_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME}))
    @@ -508,12 +498,9 @@ module AtsImsIot_TD_DRG{
                         //f_mtc_check_TP_MW_PCSCF_REGISTER_12(vc_vxlte_monitor_components.mwPS, false, true); // Event 3
                         f_mtc_check_TP_IC_IBCF_REGISTER_04(vc_vxlte_monitor_components.ic, false); // Event 4, 13
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 6, 7
                         
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_12(vc_vxlte_monitor_components.mwIS, false, true); // Event 8
                         
    -                    f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 9, 10
    -                    
                         //f_mtc_check_TP_MW_SCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwIS, false, true); // Event 15, 22
                         f_mtc_check_TP_IC_IBCF_NOTIFY_01(vc_vxlte_monitor_components.ic, false); // Event 16, 21
                         //f_mtc_check_TP_MW_PCSCF_NOTIFY_03(vc_vxlte_monitor_components.mwPS, false, true); // Event 17, 20
    @@ -554,8 +541,6 @@ module AtsImsIot_TD_DRG{
                                                               PX_SIP_MW_PI_INTERFACENAME,
                                                               PX_SIP_MW_IS_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME}))
    @@ -579,9 +564,6 @@ module AtsImsIot_TD_DRG{
                         //f_mtc_check_TP_MW_ICSCF_BYE_07(vc_vxlte_monitor_components.mwIS, false, true); // Event 9, 13
                         f_mtc_check_TP_IC_IBCF_BYE_02(vc_vxlte_monitor_components.ic, false); // Event 10, 24
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 6, 7
    -                    f_mtc_check_TP_CX_HSS_SAA_02(vc_vxlte_monitor_components.cxSH);// Event 14, 15
    -                    
                         f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx);// Event 16
                         f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 17
                         f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 18
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    index 4e811bd..d9ccda2 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    @@ -1,5 +1,5 @@
     /**
    - *  @author     STF 574
    + *  @author     STF 574, TTF 006
      *  @version    $Id: $
      *  @desc       This module provides ATS specific test case definitions for Network Detachment.
      *  @see        ETSI TS 103 653-2 (2020)
    @@ -46,9 +46,7 @@ module AtsImsIot_TD_DTC{
                 testcase TC_VxLTE_INT_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    @@ -58,22 +56,18 @@ module AtsImsIot_TD_DTC{
                         // map/connect component ports
                         f_cf_adapter_up ( );
                         f_cf_user_up ( v_ueA );
    -                    //f_cf_user_up ( v_ueB );
                         f_cf_VxLteMonitor_Up();
     
                         //preamble
                         f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
    -                    //f_mtc_userRegistration ( v_ueA, v_userInfoA );
    -                    //f_PO_user_home_deregistration ( v_ueA );
                         f_mtc_userRadioEnabled ( v_ueA, false, true );
                         // test body
    -                    
    +                    // Check that user A starts initial network attachment
                         f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
                         
                         //postamble
     	    
     	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    @@ -91,9 +85,7 @@ module AtsImsIot_TD_DTC{
                 testcase TC_VxLTE_INT_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    @@ -110,20 +102,17 @@ module AtsImsIot_TD_DTC{
     	                // map/connect component ports
     	                f_cf_adapter_up ( );
     	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
     	                f_cf_VxLteMonitor_Up();
     
                         //preamble
                         f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
                         //f_mtc_userRegistration ( v_ueA, v_userInfoA );
                         //postamble
    -                    //f_PO_user_home_deregistration ( v_ueB );
                         //f_PO_user_home_deregistration ( v_ueA );
                         f_mtc_userRadioEnabled ( v_ueA, false, true );
                         // test body
                         // Check that user A can register to IMS A
                         //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
    -                    //f_mtc_check_TP_EPC_6002_01 ( vc_vxlte_monitor_components.gmA, false ); // Check
                         f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
                         f_mtc_check_TP_MW_PCSCF_REGISTER_09 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 5)
                         //f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4)
    @@ -138,12 +127,10 @@ module AtsImsIot_TD_DTC{
                         f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 14)
                        
                         //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    -                    //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
    -    
    +                    
                         //postamble
     	    
     	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    @@ -203,8 +190,7 @@ module AtsImsIot_TD_DTC{
                         f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH); // Check (SAA – Event 19,20)
                         
                         //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
    -                    //f_mtc_check_TP_EPC_6003_01 ( v_ueA, c_vxlte_monitor_components.gmA, v_ueB, c_vxlte_monitor_components.gmB ); // Test sequence #4-5
    -    
    +                    
                         //postamble
     	    
     	                //unmap/disconnect component ports
    @@ -226,9 +212,7 @@ module AtsImsIot_TD_DTC{
                 testcase TC_VxLTE_INT_DTC_04 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    @@ -238,7 +222,6 @@ module AtsImsIot_TD_DTC{
     	                // map/connect component ports
     	                f_cf_adapter_up ( );
     	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
     	                f_cf_VxLteMonitor_Up();
     
                         //preamble
    @@ -254,7 +237,6 @@ module AtsImsIot_TD_DTC{
                         //postamble
     	    
     	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    @@ -272,9 +254,7 @@ module AtsImsIot_TD_DTC{
                 testcase TC_VxLTE_INT_DTC_05 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    @@ -284,7 +264,6 @@ module AtsImsIot_TD_DTC{
     	                // map/connect component ports
     	                f_cf_adapter_up ( );
     	                f_cf_user_up ( v_ueA );
    -	                //f_cf_user_up ( v_ueB );
     	                f_cf_VxLteMonitor_Up();
     
                         //preamble
    @@ -299,7 +278,6 @@ module AtsImsIot_TD_DTC{
                         //postamble
     	    
     	                //unmap/disconnect component ports
    -	                //f_cf_user_down ( v_ueB );
     	                f_cf_user_down ( v_ueA );
     	                f_cf_VxLteMonitor_Down();
     	                f_cf_adapter_down ( );
    @@ -321,9 +299,7 @@ module AtsImsIot_TD_DTC{
                 testcase TC_VxLTE_RMI_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    @@ -333,7 +309,6 @@ module AtsImsIot_TD_DTC{
                         // map/connect component ports
                         f_cf_adapter_up ( );
                         f_cf_user_up ( v_ueA );
    -                    //f_cf_user_up ( v_ueB );
                         f_cf_VxLteMonitor_Up();
     
                         //preamble
    @@ -352,7 +327,6 @@ module AtsImsIot_TD_DTC{
                         //postamble
             
                         //unmap/disconnect component ports
    -                    //f_cf_user_down ( v_ueB );
                         f_cf_user_down ( v_ueA );
                         f_cf_VxLteMonitor_Down();
                         f_cf_adapter_down ( );
    @@ -370,9 +344,7 @@ module AtsImsIot_TD_DTC{
                 testcase TC_VxLTE_RMI_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    @@ -391,7 +363,6 @@ module AtsImsIot_TD_DTC{
                         // map/connect component ports
                         f_cf_adapter_up ( );
                         f_cf_user_up ( v_ueA );
    -                    //f_cf_user_up ( v_ueB );
                         f_cf_VxLteMonitor_Up();
     
                         //preamble
    @@ -425,7 +396,6 @@ module AtsImsIot_TD_DTC{
                         //postamble
             
                         //unmap/disconnect component ports
    -                    //f_cf_user_down ( v_ueB );
                         f_cf_user_down ( v_ueA );
                         f_cf_VxLteMonitor_Down();
                         f_cf_adapter_down ( );
    @@ -580,9 +550,7 @@ module AtsImsIot_TD_DTC{
                 testcase TC_VxLTE_RMI_DTC_05 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                     
                     var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
    -                //var IotEquipmentUser v_ueB    := f_cf_create_IotEquipmentUser ( c_userUE_B );
                     var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
    -                //var ImsUserInfo v_userInfoB    := f_getImUser ( PX_EUT_B ); 
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    @@ -592,7 +560,6 @@ module AtsImsIot_TD_DTC{
                         // map/connect component ports
                         f_cf_adapter_up ( );
                         f_cf_user_up ( v_ueA );
    -                    //f_cf_user_up ( v_ueB );
                         f_cf_VxLteMonitor_Up();
     
                         //preamble
    @@ -607,7 +574,6 @@ module AtsImsIot_TD_DTC{
                         //postamble
             
                         //unmap/disconnect component ports
    -                    //f_cf_user_down ( v_ueB );
                         f_cf_user_down ( v_ueA );
                         f_cf_VxLteMonitor_Down();
                         f_cf_adapter_down ( );
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    index f28921b..57266db 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    @@ -89,7 +89,7 @@ module AtsImsIot_TD_INI{
     
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 3
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // Event 4
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8
    @@ -115,7 +115,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after 183(SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // Event 17
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 17
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // Event 18
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19
                             
    @@ -234,7 +234,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx);  // (RAR – Events 5, 15)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true);  // (RAR – Events 5, 15)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // (RAA – Events 6, 16)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 17)
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 9,10
    @@ -250,7 +250,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after 183 (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 14)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx);  // (RAR – Events 5, 15)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true);  // (RAR – Events 5, 15)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // (RAA – Events 6, 16)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 17)
                             
    @@ -367,7 +367,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after reINVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); //(AAR – Event 3)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 4)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 4)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12)
                             
    @@ -381,7 +381,7 @@ module AtsImsIot_TD_INI{
     
                             //Rx/Gx exchange after 200 OK (SDP) on reINVITE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); //(AAR – Event 13)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 10)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 10)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 12)
                                                 
    @@ -491,13 +491,13 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after reINVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Event 5)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 6)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 6)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8)
                             
                             //Rx/Gx exchange after 200 OK (SDP) on reINVITE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Event 11)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 12)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 12)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 13)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 14)
                             
    @@ -607,7 +607,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after BYE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6)
    -                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7)
    +                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 7)
                             f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8)
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9)                        
                             
    @@ -706,7 +706,7 @@ module AtsImsIot_TD_INI{
     
                             //Rx/Gx exchange after BYE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6)
    -                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7)
    +                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 7)
                             f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8)
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9)     
                             
    @@ -810,7 +810,7 @@ module AtsImsIot_TD_INI{
     
                             //Rx/Gx exchange after BYE was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6)
    -                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 7)
    +                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 7)
                             f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 8)
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 9)     
     
    @@ -900,7 +900,7 @@ module AtsImsIot_TD_INI{
     
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 5)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7)
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,9
    @@ -926,7 +926,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after 183 (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Event 14)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 15)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 15)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 16)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 17)
                             
    @@ -1043,7 +1043,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 4)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 5)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 5)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 7)
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,9
    @@ -1078,7 +1078,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after 468/600 was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_05(vc_vxlte_monitor_components.rx); // (STR – Event 15)
    -                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16)
    +                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 16)
                             f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17)
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18)
                                                     
    @@ -1172,7 +1172,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 7)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9)
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx); // Events 11,12
    @@ -1192,7 +1192,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after 183 (SDP) received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 12)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 13)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 13)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 14)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 15)
                             
    @@ -1223,7 +1223,7 @@ module AtsImsIot_TD_INI{
                             		
                             //Rx/Gx exchange after CANCEL was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 24)
    -                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 25)
    +                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 25)
                             f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 26)
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 27)
     
    @@ -1333,7 +1333,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 6)
    -                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx); // (RAR – Event 7)
    +                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // (RAR – Event 7)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 8)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 9)
                             f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx); // Events 11,12
    @@ -1355,7 +1355,7 @@ module AtsImsIot_TD_INI{
                             
                             //Rx/Gx exchange after 486/600 response was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_STR_06(vc_vxlte_monitor_components.rx); // (STR – Event 15)
    -                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 16)
    +                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 16)
                             f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 17)
                             f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 18)
                             
    @@ -1428,70 +1428,53 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_precond_TC_VxLTE_RMI_INI_01();
     
                             //test body 
    -                        //!!!!!!TODO!!!! update call flows like in INT group here in TTCN and in TD documenet
     
                             //Gm      TP_GM_PCSCF_INVITE_03 (Event 1)
     //                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1)
                             
    -                        //Rx      TP_RX_PCSCF_AAR_03 (AAR – Events 2)
    -                        //S9      TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26)
    -                        //S9      TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27)
    -                        //Gx      TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28)
    -                        //Gx      TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29)
    -                        //Rx      TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30)
    +                        //Rx/Gx/S9 exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Events 2)
    -                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26)
    -                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27)
    -                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28)
    -                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29)                     
    -                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30)
    +                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15)
    +                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16)
    +                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Events 5, 17)
    +                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18)
    +                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19)
     
                             //MwPS    TP_MW_PCSCF_INVITE_03 (Event 8)
                             //Ic      TP_IC_IBCF_INVITE_04 (INVITE – Event 9)
                             //Ic      TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 9)
     //                        f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 8)
                             f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    -                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9)
    +                        
    +                        //183 Session Progress
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)                        
    +
    +                        //Rx/Gx/S9 exchange after 183(SDP) was received at P-CSCF
    +                        f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14)
    +                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15)
    +                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16)
    +                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Events 5, 17)
    +                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18)                     
    +                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19)
    +                        
                             
                             //Ic      TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 12)
                             //MwPS    TP_MW_PCSCF_180RINGING_03 (Event 13)
    -                        //Rx      TP_RX_PCSCF_AAR_04 (AAR – Events 14)
    -                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03b(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 22)
    +
     //                        f_mtc_check_TP_MW_PCSCF_180RINGING_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
    -                        f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14)
     
    -                        //S9      TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26)
    -                        //S9      TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27)
    -                        //Gx      TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28)
    -                        //Gx      TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29)                     
    -                        //Rx      TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30)                        
    -                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26)
    -                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27)
    -                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28)
    -                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29)                     
    -                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30)
    -                                                
    -                        //Gm      TP_GM_PCSCF_180RINGING_03 (Event 20)
    +
                             //Ic      TP_IC_IBCF_2XXRESP_05  (200 OK Event 23)
                             //Ic      TP_IC_IBCF_ACK_01 (ACK – Event 33)
                             //MwPS    TP_MW_PCSCF_200OK_03 (Event 24)
                             //Rx      TP_RX_PCSCF_AAR_05 (AAR – Events 25)
     //                        f_mtc_check_TP_GM_PCSCF_180RINGING_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 20)
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 1); //  (200 OK Event 23)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 0); //  (200 OK Event 23)
                             f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33)
     //                        f_mtc_check_TP_MW_PCSCF_200OK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24)
    -                        f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 25)
    -
    -                        //S9      TP_S9_PCRF_AAR_01 (AAR – Events 3, 15, 26)
    -                        //S9      TP_S9_PCRF_AAA_02 (AAA – Events 4, 16, 27)
    -                        //Gx      TP_GX_PCRF_RAR_03 (RAR – Events 5, 17, 28)
    -                        //Gx      TP_GX_PGW_RAA_02 (RAA – Events 6, 18, 29)                     
    -                        //Rx      TP_RX_PCRF_AAA_02 (AAA – Events 7, 19, 30)
    -                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 3, 15, 26)
    -                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 4, 16, 27)
    -                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 5, 17, 28)
    -                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 6, 18, 29)                     
    -                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 7, 19, 30)
    +                        
                             
                             //Gm      TP_GM_PCSCF_200OK_03 (Event 31)
                             //Gm      TP_GM_PCSCF_ACK_03 (Event 32)
    @@ -1568,59 +1551,48 @@ module AtsImsIot_TD_INI{
                             //MwPS    TP_MW_PCSCF_INVITE_04 (Event 3)
                             //Rx      TP_RX_PCSCF_AAR_06 (AAR – Events 4)
                             f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 2)
    -                        f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 2)
    +                        f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 2)
                             f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 3)
    -                        f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4)
                             
    -                        //S9      TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24)
    -                        //S9      TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25)
    -                        //Gx      TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26)
    -                        //Gx      TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27)
    -                        //Rx      TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28)                        
    -                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24)
    -                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25)
    -                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26)
    -                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27)
    -                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28)   
    +                        
    +                        //Rx/Gx/S9 exchange after INVITE (SDP) was received at P-CSCF
    +                        f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4)
    +                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13)
    +                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14)
    +                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Events 7, 15)
    +                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16)
    +                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17)   
     
                             //Gm      TP_GM_PCSCF_INVITE_04 (Event 10)
                             //Gm      TP_GM_PCSCF_180RINGING_04 (Event 11)
                             //Rx      TP_RX_PCSCF_AAR_07 (AAR – Events 12)
                             f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 10)
    -                        f_mtc_check_TP_GM_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11)
    +                        
    +                        //183 TODO
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)
    +                        
    +                        
    +                        
    +                        //Rx/Gx/S9 exchange after 183 (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Events 12)
    +                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13)
    +                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14)
    +                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Events 7, 15)
    +                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16)
    +                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17) 
                                                     
    -                        //S9      TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24)
    -                        //S9      TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25)
    -                        //Gx      TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26)
    -                        //Gx      TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27)
    -                        //Rx      TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28) 
    -                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24)
    -                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25)
    -                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26)
    -                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27)
    -                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) 
                                                     
    +                        f_mtc_check_TP_GM_PCSCF_180RINGING_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11)
                             //MwPS    TP_MW_PCSCF_180RINGING_04 (Event 18)
                             //Ic      TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 19)                        
                             f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 18)
    -                        f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 19)
    +//AXR                        f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 19)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03b(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 22)
                                                     
                             //Gm      TP_GM_PCSCF_200OK_04 (Event 22)
    -                        //Rx      TP_RX_PCSCF_AAR_08 (AAR – Events 23)
    +                        
                             f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 22)
    -                        f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 23)
    -                        
    -                        //S9      TP_S9_PCRF_AAR_01 (AAR – Events 5, 13, 24)
    -                        //S9      TP_S9_PCRF_AAA_02 (AAA – Events 6, 14, 25)
    -                        //Gx      TP_GX_PCRF_RAR_03 (RAR – Events 7, 15, 26)
    -                        //Gx      TP_GX_PGW_RAA_02 (RAA – Events 8, 16, 27)
    -                        //Rx      TP_RX_PCRF_AAA_02 (AAA – Events 9, 17, 28)
    -                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Events 5, 13, 24)
    -                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Events 6, 14, 25)
    -                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Events 7, 15, 26)
    -                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16, 27)
    -                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17, 28) 
    +                        
                                                                             
                             //MwPS    TP_MW_PCSCF_200OK_04 (Event 29)
                             //Ic      TP_IC_IBCF_2XXRESP_06 (200 OK Event 30)
    @@ -1628,7 +1600,7 @@ module AtsImsIot_TD_INI{
                             //MwPS    TP_MW_PCSCF_ACK_04 (Event 34)
                             //Gm      TP_GM_PCSCF_ACK_04 (Event 35)
                             f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 29)
    -                        f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 1); // (200 OK Event 30)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 0); // (200 OK Event 30)
                             f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33)
                             f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 34)
                             f_mtc_check_TP_GM_PCSCF_ACK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 35)
    @@ -1709,19 +1681,16 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_MW_SCSCF_RE_INVITE_03(vc_vxlte_monitor_components.mwIS); // (Event 4)
                             f_mtc_check_TP_IC_IBCF_REINVITE_01(vc_vxlte_monitor_components.ic); // (INVITE – Event 5)
                             f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 8)  
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 27)
     
    -                        //Rx      TP_RX_PCSCF_AAR_09 (AAR – Events 11) 
    -                        //S9      TP_S9_PCRF_AAR_01 (AAR – Event 12)
    -                        //S9      TP_S9_PCRF_AAA_02 (AAA – Event 13)
    -                        //Gx      TP_GX_PCRF_RAR_03 (RAR – Event 14)
    -                        //Gx      TP_GX_PGW_RAA_02 (RAA – Event 15)
    -                        //Rx      TP_RX_PCRF_AAA_02 (AAA – Event 16)
    -                        f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); // (AAR – Events 11) 
    -                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 12)
    -                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 13)
    -                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 14)
    -                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 15)
    -                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 16)
    +                        
    +                        //Rx/Gx exchange after reINVITE (SDP) was received at P-CSCF
    +                        f_mtc_check_TP_RX_PCSCF_AAR_05(vc_vxlte_monitor_components.rx); // (AAR – Events 3) 
    +                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 4, 18)
    +                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 5, 19)
    +                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 14)
    +                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6, 7, 20, 21)
    +                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8,22)
                                                     
                             //Gm      TP_GM_PCSCF_200OK_03 (Event 17)
                             //Gm      TP_GM_PCSCF_ACK_03 (Event 18)
    @@ -1729,6 +1698,15 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GM_PCSCF_200OK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 17)
                             f_mtc_check_TP_GM_PCSCF_ACK_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 18)
                             f_mtc_check_TP_MW_PCSCF_ACK_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 19)
    +                        
    +
    +                        //Rx/Gx/S9 exchange after 200 OK (SDP) on reINVITE was received at P-CSCF
    +                        f_mtc_check_TP_RX_PCSCF_AAR_09(vc_vxlte_monitor_components.rx); // (AAR – Events 17) 
    +                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 4, 18)
    +                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 5, 19)
    +                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 14)
    +                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 6, 7, 20, 21)
    +                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8,22)
                                                     
                             //Rtp     TP_RTP_05 (Event 23)
                 
    @@ -1806,23 +1784,29 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_GM_PCSCF_RE_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 6)
     						f_mtc_check_TP_GM_PCSCF_200OK_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 7)
     												
    -						//Rx      TP_RX_PCSCF_AAR_10 (AAR – Events 8) 
    -						//S9      TP_S9_PCRF_AAR_01 (AAR – Event 9)
    -						//S9      TP_S9_PCRF_AAA_02 (AAA – Event 10)
    -						//Gx      TP_GX_PCRF_RAR_03 (RAR – Event 11)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 12)
    -						//Rx      TP_RX_PCRF_AAA_02 (AAA – Event 13)
    -						f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Events 8) 
    -						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 9)
    -						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 10)
    -						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 11)
    -						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 12)
    -						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 13)
    +						
    +                        //Rx/Gx/S9 exchange after reINVITE (SDP) was received at P-CSCF
    +                        f_mtc_check_TP_RX_PCSCF_AAR_08(vc_vxlte_monitor_components.rx); // (AAR – Events 6)
    +						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 7, 15)
    +						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 8, 16)
    +						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 9, 17)
    +						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9,10,17,18)
    +						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 11,19)
     												
     						//MwPS    TP_MW_PCSCF_200OK_04 (Event 14)						
     						//Ic      TP_IC_IBCF_2XXRESP_04 (200 OK – Event 16)
     						f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14)                       
    -						f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 16)
    +						f_mtc_check_TP_IC_IBCF_2XXRESP_04(vc_vxlte_monitor_components.ic, 1); // (200 OK – Event 22)
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 25)
    +						
    +						
    +                        //Rx/Gx/S9 exchange after 200 OK (SDP) was received at P-CSCF 
    +                        f_mtc_check_TP_RX_PCSCF_AAR_10(vc_vxlte_monitor_components.rx); // (AAR – Events 15) 
    +                        f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 7, 15)
    +                        f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 8, 16)
    +                        f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 9, 17)
    +                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9,10,17,18)
    +                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 11,19)
     						
                             //MwPS    TP_MW_PCSCF_ACK_04 (Event 21)
                             //Gm      TP_GM_PCSCF_ACK_04 (Event 22)
    @@ -1883,8 +1867,6 @@ module AtsImsIot_TD_INI{
                             
                             f_cf_createVxLteMonitor();    
     
    -                        // Preamble
    -                        f_mtc_check_precond_TC_VxLTE_RMI_REL_01();
                     
                             // map/connect component ports
                             f_cf_adapter_up ( );
    @@ -1892,8 +1874,10 @@ module AtsImsIot_TD_INI{
                             f_cf_user_up ( v_ueB );
                             f_cf_VxLteMonitor_Up();
     
    -                        //test body
    +                        // Preamble
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REL_01();
     
    +                        //test body
     
     						//Rtp     TP_RTP_06 (Event 1)
     						
    @@ -1904,16 +1888,11 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_MW_PCSCF_BYE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 3)
     						f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (Event 4)
     												
    -						//Rx      TP_RX_PCSCF_STR_01 (STR – Event 6)
    -						//S9      TP_S9_PCRF_STR_01 (STR – Event 7)
    -						//S9      TP_S9_PCRF_STA_02 (STA – Event 8)
    -						//Gx      TP_GX_PCRF_RAR_04 (RAR – Event 9)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 10)
    -						//Rx      TP_RX_PCRF_STA_01 (STA – Event 11)
    +                        //Rx/Gx/S9 exchange after BYE was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6)
     						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 7)
     						f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9); // (STA – Event 8)
    -						f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // (RAR – Event 9)
    +						f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx, true); // (RAR – Event 9)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 10)
     						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 11)
     
    @@ -1921,6 +1900,7 @@ module AtsImsIot_TD_INI{
                             //Gm      TP_GM_PCSCF_200OK_BYE_04 (Event 15)
     						f_mtc_check_TP_MW_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14)
     						f_mtc_check_TP_GM_PCSCF_200OK_BYE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_07(vc_vxlte_monitor_components.ic); //  (200 OK - BYE Event 13)
     						
     						//Rtp     TP_RTP_04 (Events 16)
     
    @@ -1941,6 +1921,17 @@ module AtsImsIot_TD_INI{
                         function f_mtc_check_precond_TC_VxLTE_RMI_REL_01() runs on ImsTestCoordinator {
                             log("If the test case fails, please check the preconditions");
                             // TODO Add real code to check pre-conditions
    +                        
    +                        f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03b(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 22)
    +
    +//                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 0); //  (200 OK Event 23)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 0); //  (200 OK Event 23)
    +
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33)
    +                        
                          } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REL_01
                          
                     } // End of f_TC_VxLTE_RMI_REL_01                                
    @@ -1994,16 +1985,11 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_MW_PCSCF_BYE_05(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 3)
     						f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (BYE – Event 4)
     						
    -						//Rx      TP_RX_PCSCF_STR_01 (STR – Event 6)
    -						//S9      TP_S9_PCRF_STR_01 (STR – Event 7)
    -						//S9      TP_S9_PCRF_STA_02 (STA – Event 8)
    -						//Gx      TP_GX_PCRF_RAR_04 (RAR – Event 9)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 10)
    -						//Rx      TP_RX_PCRF_STA_01 (STA – Event 11)
    +                        //Rx/Gx/S9 exchange after BYE was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 6)
     						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 7)
     						f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9); // (STA – Event 8)
    -						f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // (RAR – Event 9)
    +						f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx, true); // (RAR – Event 9)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 10)
     						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 11)
     
    @@ -2011,6 +1997,7 @@ module AtsImsIot_TD_INI{
                             //Gm      TP_GM_PCSCF_200OK_BYE_05 (Event 15)
     						f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14)
     						f_mtc_check_TP_GM_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_07(vc_vxlte_monitor_components.ic); //  (200 OK - BYE Event 13)
     												
     						//Rtp     TP_RTP_04 (Events 16)
                 
    @@ -2030,6 +2017,18 @@ module AtsImsIot_TD_INI{
                         function f_mtc_check_precond_TC_VxLTE_RMI_REL_02() runs on ImsTestCoordinator {
                             log("If the test case fails, please check the preconditions");
                             // TODO Add real code to check pre-conditions
    +                        
    +                        f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03b(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 22)
    +
    +//                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 0); //  (200 OK Event 23)
    +//                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 3); //  (200 OK Event 23)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_06(vc_vxlte_monitor_components.ic, 0); // (200 OK Event 30)
    +                        
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33)
    +                                                
                          } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REL_02
                          
                     } // End of f_TC_VxLTE_RMI_REL_02                                
    @@ -2083,16 +2082,11 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_GM_PCSCF_BYE_06(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 4)
     						f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic, false); // (BYE – Event 5)
     						
    -						//Rx      TP_RX_PCSCF_STR_01 (STR – Event 7)
    -						//S9      TP_S9_PCRF_STR_01 (STR – Event 8)
    -						//S9      TP_S9_PCRF_STA_02 (STA – Event 9)
    -						//Gx      TP_GX_PCRF_RAR_04 (RAR – Event 10)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 11)
    -						//Rx      TP_RX_PCRF_STA_01 (STA – Event 12)
    +						//Rx/Gx/S9 exchange after BYE was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 7)
     						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 8)
     						f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9); // (STA – Event 9)
    -						f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx); // (RAR – Event 10)
    +						f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx, true); // (RAR – Event 10)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 11)
     						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 12)
     												
    @@ -2102,6 +2096,7 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_GM_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15)
     						f_mtc_check_TP_MW_PCSCF_200OK_BYE_06(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 17)
     						f_mtc_check_TP_MW_PCSCF_200OK_BYE_05(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 16)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_07(vc_vxlte_monitor_components.ic); //  (200 OK - BYE Event 13)
     																		
     						//Rtp     TP_RTP_04 (Events 18)
                 
    @@ -2121,6 +2116,15 @@ module AtsImsIot_TD_INI{
                         function f_mtc_check_precond_TC_VxLTE_RMI_REL_03() runs on ImsTestCoordinator {
                             log("If the test case fails, please check the preconditions");
                             // TODO Add real code to check pre-conditions
    +                                                
    +                        f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 12)
    +//                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 0); //  (200 OK Event 23)
    +                        f_mtc_check_TP_IC_IBCF_2XXRESP_05(vc_vxlte_monitor_components.ic, 3); //  (200 OK Event 23)
    +                        
    +                        f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 33)
    +                                                
                          } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REL_03
                          
                     } // End of f_TC_VxLTE_RMI_REL_03                                
    @@ -2172,16 +2176,11 @@ module AtsImsIot_TD_INI{
     						//Gm      TP_GM_PCSCF_INVITE_03 (Event 2)
     						f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2)
     						
    -						//Rx      TP_RX_PCSCF_AAR_03 (AAR – Event 3)
    -						//S9      TP_S9_PCRF_AAR_01 (AAR – Event 4)
    -						//S9      TP_S9_PCRF_AAA_02 (AAA – Event 5)
    -						//Gx      TP_GX_PCRF_RAR_03 (RAR – Event 6)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 7)
    -						//Rx      TP_RX_PCRF_AAA_02 (AAA – Event 8)
    +                        //Rx/Gx/S9 exchange after INVITE (SDP) was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 3)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 4)
     						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 5)
    -						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 6)
    +						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 6)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7)
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8)
     						
    @@ -2191,19 +2190,19 @@ module AtsImsIot_TD_INI{
     						//Ic      TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 13)
     						f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 9)
     						f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10)
    -						f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 10)
    -						f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 13)
    -												
    -						//Rx      TP_RX_PCSCF_AAR_04 (AAR – Event 15)
    -						//S9      TP_S9_PCRF_AAR_01 (AAR – Event 16)
    -						//S9      TP_S9_PCRF_AAA_02 (AAA – Event 17)
    -						//Gx      TP_GX_PCRF_RAR_03 (RAR – Event 18)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 19)
    -						//Rx      TP_RX_PCRF_AAA_02 (AAA – Event 20)
    +						f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10)
    +						f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 13)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03b(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 22)
    +                        
    +                        
    +                        
    +                        //TODO 183
    +                        
    +                        //Rx/Gx/S9 exchange after 183 (SDP) was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Event 15)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 16)
     						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 17)
    -						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 18)
    +						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 18)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 19)
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 20)
     												
    @@ -2216,18 +2215,13 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_MW_PCSCF_CANCEL_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 24) 
     						f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 25)
     												
    -						//Rx      TP_RX_PCSCF_STR_04 (STR – Event 27)
    -						//S9      TP_S9_PCRF_STR_01 (STR – Event 28)
    -						//S9      TP_S9_PCRF_STA_01 (STA – Event 29)
    -						//Gx      TP_GX_PCRF_RAR_02 (RAR – Event 30)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 31)
    -						//Rx      TP_RX_PCRF_STA_01 (STA – Event 32)
    -						f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 27)
    -						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 28)
    -						f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 29)
    -						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 30)
    -						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 31)
    -						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 32)						
    +                        //Rx/Gx/S9 exchange after CANCEL was received at P-CSCF
    +						f_mtc_check_TP_RX_PCSCF_STR_04(vc_vxlte_monitor_components.rx); // (STR – Event 31)
    +						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 32)
    +						f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 33)
    +						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 34)
    +						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 35)
    +						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 36)
     						
                             //Ic      TP_IC_IBCF_CANCEL_OK_03 (OK – Event 34)
                             //MwPS    TP_MW_PCSCF_200OK_CANCEL_03 (Event 35)
    @@ -2309,16 +2303,11 @@ module AtsImsIot_TD_INI{
     						//Gm      TP_GM_PCSCF_INVITE_03 (Event 2)
     						f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2)
     						
    -						//Rx      TP_RX_PCSCF_AAR_03 (AAR – Event 3)
    -						//S9      TP_S9_PCRF_AAR_01 (AAR – Event 4)
    -						//S9      TP_S9_PCRF_AAA_02 (AAA – Event 5)
    -						//Gx      TP_GX_PCRF_RAR_03 (RAR – Event 6)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 7)
    -						//Rx      TP_RX_PCRF_AAA_02 (AAA – Event 8)
    +                        //Rx/Gx/S9 exchange after INVITE was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 3)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 4)
     						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 5)
    -						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 6)
    +						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 6)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7)
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8)
     						
    @@ -2330,21 +2319,23 @@ module AtsImsIot_TD_INI{
     						//Gm      TP_GM_PCSCF_486INVITE_03 (Event 15)
     						f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 9)
     						f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10)
    -						f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false, 1); // (INVITE, 100 Trying – Event 10)
    +						f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10)
    +
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress FOR SIMULATION ONLY)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03b(vc_vxlte_monitor_components.ic, false); // (180 Ringing FOR SIMULATION ONLY)
    +                        
     						f_mtc_check_TP_IC_IBCF_486INVITE_03(vc_vxlte_monitor_components.ic, false); // (Event 13)
     						f_mtc_check_TP_MW_PCSCF_486INVITE_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 14)
     						f_mtc_check_TP_GM_PCSCF_486INVITE_03(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 15)
    -												
    -						//Rx      TP_RX_PCSCF_STR_06 (STR – Event 16)
    -						//S9      TP_S9_PCRF_STR_01 (STR – Event 17)
    -						//S9      TP_S9_PCRF_STA_01 (STA – Event 18)
    -						//Gx      TP_GX_PCRF_RAR_02 (RAR – Event 19)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 20)
    -						//Rx      TP_RX_PCRF_STA_01 (STA – Event 21)
    +
    +                        //Ic      TP_IC_IBCF_486INVITE_ACK_01 (ACK – Event 23)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 23)
    +                        												
    +                        //Rx/Gx/S9 exchange after 486/600 was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_STR_06(vc_vxlte_monitor_components.rx); // (STR – Event 16)
     						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 17)
     						f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 18)
    -						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 19)
    +						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 19)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 20)
     						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 21)
     												
    @@ -2415,35 +2406,30 @@ module AtsImsIot_TD_INI{
     						//Ic      TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 3)
                             //MwPS    TP_MW_PCSCF_INVITE_04 (Event 4)
     						f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3)
    -						f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 3)
    +						f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 3)
     						f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 4)
     												
    -						//Rx      TP_RX_PCSCF_AAR_06 (AAR – Event 5)
    -						//S9      TP_S9_PCRF_AAR_01 (AAR – Event 6)
    -						//S9      TP_S9_PCRF_AAA_02 (AAA – Event 7)
    -						//Gx      TP_GX_PCRF_RAR_03 (RAR – Event 8)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 9)
    -						//Rx      TP_RX_PCRF_AAA_02 (AAA – Event 10)
    +						
    +                        //Rx/Gx/S9 exchange after INVITE was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 5)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 6)
     						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 7)
    -						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 8)
    +						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 8)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9)
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10)
     						
     						//Gm      TP_GM_PCSCF_INVITE_04 (Event 11)
     						f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 11)
     
    -						//Rx      TP_RX_PCSCF_AAR_07 (AAR – Event 13)
    -						//S9      TP_S9_PCRF_AAR_01 (AAR – Event 14)
    -						//S9      TP_S9_PCRF_AAA_02 (AAA – Event 15)
    -						//Gx      TP_GX_PCRF_RAR_03 (RAR – Event 16)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 17)
    -						//Rx      TP_RX_PCRF_AAA_02 (AAA – Event 18)
    +						
    +						//183(SDP)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 20)
    +						
    +                        //Rx/Gx/S9 exchange after 183 (SDP) was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_07(vc_vxlte_monitor_components.rx); // (AAR – Event 13)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 14)
     						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 15)
    -						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 16)
    +						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 16)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 17)
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 18)
     						
    @@ -2456,21 +2442,16 @@ module AtsImsIot_TD_INI{
     						//MwPS    TP_MW_PCSCF_CANCEL_04 (Event 25)
     						f_mtc_check_TP_IC_IBCF_CANCEL_02(vc_vxlte_monitor_components.ic, false); // (CANCEL – Event 24)
     						f_mtc_check_TP_MW_PCSCF_CANCEL_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 25)
    -												
    -                        //Gm      TP_GM_PCSCF_CANCEL_04 (Event 26)
    -						//Rx      TP_RX_PCSCF_STR_03 (STR – Event 27)
    -						//S9      TP_S9_PCRF_STR_01 (STR – Event 28)
    -						//S9      TP_S9_PCRF_STA_01 (STA – Event 29)
    -						//Gx      TP_GX_PCRF_RAR_02 (RAR – Event 30)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 31)
    -						//Rx      TP_RX_PCRF_STA_01 (STA – Event 32)
    +                        
     						f_mtc_check_TP_GM_PCSCF_CANCEL_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 26)
    -						f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 27)
    -						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 28)
    -						f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 29)
    -						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 30)
    -						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 31)
    -						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 32)
    +						
    +                        //Rx/Gx/S9 exchange after CANCEL was received at P-CSCF
    +						f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 31)
    +						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 32)
    +						f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 33)
    +						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 34)
    +						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 35)
    +						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 36)
     						
                             //Ic      TP_IC_IBCF_CANCEL_OK_02 (OK – Event 35)
     						f_mtc_check_TP_IC_IBCF_CANCEL_OK_02(vc_vxlte_monitor_components.ic); // (OK – Event 35)
    @@ -2549,21 +2530,22 @@ module AtsImsIot_TD_INI{
     						//Ic      TP_IC_IBCF_100TRY_01 (INVITE, 100 Trying – Event 3)
                             //MwPS    TP_MW_PCSCF_INVITE_04 (Event 4)
     						f_mtc_check_TP_IC_IBCF_INVITE_05(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3)
    -						f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false,1); // (INVITE, 100 Trying – Event 3)
    +						f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 3)
     						f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 4)
    +
    +                        //183(SDP)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – FOR SIMULATION ONLY)
     												
    -						//Rx      TP_RX_PCSCF_AAR_06 (AAR – Event 5)
    -						//S9      TP_S9_PCRF_AAR_01 (AAR – Event 6)
    -						//S9      TP_S9_PCRF_AAA_02 (AAA – Event 7)
    -						//Gx      TP_GX_PCRF_RAR_03 (RAR – Event 8)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 9)
    -						//Rx      TP_RX_PCRF_AAA_02 (AAA – Event 10)
    +                        //Rx/Gx/S9 exchange after INVITE was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Event 5)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 6)
     						f_mtc_check_TP_S9_PCRF_AAA_02(vc_vxlte_monitor_components.s9); // (AAA – Event 7)
    -						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx); // (RAR – Event 8)
    +						f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Event 8)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 9)
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10)
    +
    +                        //Ic      TP_IC_IBCF_1XXRESP_04 (180 Ringing – Event 20)
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_04(vc_vxlte_monitor_components.ic, false); // (180 Ringing – FOR SIMULATION ONLY)
     												
     						//Gm      TP_GM_PCSCF_INVITE_04 (Event 11)
     						//Gm      TP_GM_PCSCF_486INVITE_04 (Event 12)
    @@ -2573,17 +2555,15 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_GM_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 12)
     						f_mtc_check_TP_MW_PCSCF_486INVITE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
     						f_mtc_check_TP_IC_IBCF_486INVITE_04(vc_vxlte_monitor_components.ic, false); // (Event 14)
    -												
    -						//Rx      TP_RX_PCSCF_STR_03 (STR – Event 16)
    -						//S9      TP_S9_PCRF_STR_01 (STR – Event 17)
    -						//S9      TP_S9_PCRF_STA_01 (STA – Event 18)
    -						//Gx      TP_GX_PCRF_RAR_02 (RAR – Event 19)
    -						//Gx      TP_GX_PGW_RAA_02 (RAA – Event 20)
    -						//Rx      TP_RX_PCRF_STA_01 (STA – Event 21)
    +
    +                        //Ic      TP_IC_IBCF_486INVITE_ACK_01 (ACK – Event 23)
    +                        f_mtc_check_TP_IC_IBCF_486INVITE_ACK_01(vc_vxlte_monitor_components.ic, false); // (ACK – Event 23)
    +                        												
    +                        //Rx/Gx/S9 exchange after 486/600 was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_STR_03(vc_vxlte_monitor_components.rx); // (STR – Event 16)
     						f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9); // (STR – Event 17)
     						f_mtc_check_TP_S9_PCRF_STA_01(vc_vxlte_monitor_components.s9); // (STA – Event 18)
    -						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx); // (RAR – Event 19)
    +						f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 19)
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 20)
     						f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 21)
     												
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    index b2b8ff2..9ca1934 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    @@ -1,5 +1,5 @@
     /**
    - *  @author     STF 574
    + *  @author     STF 574, TTF 006
      *  @version    $Id: $
      *  @desc       This module provides ATS specific test case definitions for IMS Registration.
      *  @see        ETSI TS 103 653-2 (2020)
    @@ -263,8 +263,6 @@ module AtsImsIot_TD_REG{
                                                               PX_SIP_MW_PI_INTERFACENAME,
                                                               PX_SIP_MW_IS_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME}))
    @@ -286,19 +284,11 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12
                         f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10
                         
    -                    //Cx in IMS A and not checked here
    -                    //f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6//may be removed because in other network
    -                    //f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9//may be removed because in other network
    -                    
                         f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 28
                         f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 27
                         f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 26
                         f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 24
                         
    -                    //Cx in IMS A and not checked here
    -                    //f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20
    -                    //f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23
    -                    
                         f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 29, 36
                         f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 30, 35
                         f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Event 31, 34
    @@ -339,8 +329,6 @@ module AtsImsIot_TD_REG{
                                                               PX_SIP_MW_PI_INTERFACENAME,
                                                               PX_SIP_MW_IS_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME}))
                     {  
                         f_cf_createVxLteMonitor();    
    @@ -360,9 +348,6 @@ module AtsImsIot_TD_REG{
                         //f_mtc_check_TP_IC_IBCF_REGISTER_0X(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 //Check during validation if TD and TP need to be written in TD document because Ic interface
                         f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5
                         
    -                    //Cx in IMS A and not checked here
    -                    //f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 3, 4
    -                    
                         f_mtc_check_TP_RX_PCSCF_AAR_02(vc_vxlte_monitor_components.rx);// Event 7
             
                         // postamble
    @@ -395,12 +380,9 @@ module AtsImsIot_TD_REG{
                                                               PX_SIP_MW_PI_INTERFACENAME,
                                                               PX_SIP_MW_IS_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_GX_INTERFACENAME,
    -                                                          PX_DIAMETER_SH_INTERFACENAME,
    -                                                          PX_SIP_ISC_INTERFACENAME}))
    +                                                          PX_DIAMETER_SH_INTERFACENAME}))
                     {  
                         f_cf_createVxLteMonitor();    
                 
    @@ -419,23 +401,11 @@ module AtsImsIot_TD_REG{
                         f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12
                         f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10
                         
    -                    //Cx in IMS A and not checked here
    -                    //f_mtc_check_TP_CX_HSS_UAA_01(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6
    -                    //f_mtc_check_TP_CX_HSS_MAA_01(vc_vxlte_monitor_components.cxSH);// Event 8, 9
    -                    
                         f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32
                         f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 31
                         f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 30
                         f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 28
                         
    -                    //Cx in IMS A and not checked here
    -                    //f_mtc_check_TP_CX_HSS_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 19, 20
    -                    //f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 22, 23
    -                    
    -                    f_mtc_check_TP_ISC_SCSCF_REGISTER_01(vc_vxlte_monitor_components.isc, false); // Event 24, 27
    -                    //Sh in IMS A and not checked here
    -                    //f_mtc_check_TP_SH_HSS_UDA_01(vc_vxlte_monitor_components.sh);// Event 25, 26
    -                    
                         f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 33, 40
                         f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Events 35, 38
                         f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 36, 37
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    index 7c50854..3de9b9d 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    @@ -1,5 +1,5 @@
     /*
    - *  @author     STF 574
    + *  @author     STF 574, TTF006
      *  @version    $Id$
      *  @desc       This module provides the TP behaviour functions at IC interface
      */
    @@ -28,18 +28,6 @@ module AtsImsIot_TP_behavior_IC
         import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;}
         // LibSip
         import from LibSip_SDPTypes { type SDP_media_desc_list };
    -//    // LibMsrp
    -//    import from LibMsrp_TypesAndValues { type MsrpURI };
    -//    import from LibMsrp_Functions { function f_str2msrpUri };
    -//    import from LibMsrp_Templates { 
    -//        template 
    -//            m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, 
    -//            m_msrpReport_Dummy, mw_msrpREPORT_success, 
    -//            m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, 
    -//            mw_toPath,  mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports,
    -//            m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, 
    -//            mw_contentType 
    -//    };
     
         import from AtsImsIot_Templates_IC all;
     
    @@ -69,7 +57,7 @@ module AtsImsIot_TP_behavior_IC
                         p_monitorCompRef.start(
                                                f_Iot_Sip_receive(
                                                                  {
    -                                                                 mw_SipRequest(mdw_TP_IC_IBCF_GC_01) // TODO Enforce checks
    +                                                                 mw_SipRequest(mdw_TP_IC_IBCF_GC_01)
                                                                  },
                                                                  { mw_SipRequest(mw_MESSAGE_Request_Base) },
                                                                  {0, omit},
    @@ -101,10 +89,8 @@ module AtsImsIot_TP_behavior_IC
                                                f_Iot_Sip_receive(
                                                                  {
                                                                      mw_SipRequest(
    -//                                                                                 mw_INVITE_Request_Base)
                                                                                    mdw_TP_IC_IBCF_INVITE_01(
                                                                                                             (
    -                    //                                                                                     mw_SipUrl_Host(v_EUT_A_Addr), // v_EUT_A_Addr
                                                                                                              mw_SipUrl_Host(v_EUT_A_Addr) //f_GetEUTScscfIpAddress(PX_EUT_A)
                                                                                                             )
                                                                                    ))
    @@ -134,14 +120,10 @@ module AtsImsIot_TP_behavior_IC
                                               f_Iot_Sip_receive(
                                                                 { 
                                                                     mw_SipRequest(
    -                                                                
    -                                                                
                                                                                   mdw_TP_IC_IBCF_INVITE_02(
                                                                                                            mw_SIP_URI_Base, 
                                                                                                            mw_TEL_URI_Base
                                                                                   )
    -                                                                              
    -                                                                              
                                                                                   )
                                                                 },
                                                                 { mw_SipRequest(mw_INVITE_Request_Base) },
    @@ -192,10 +174,10 @@ module AtsImsIot_TP_behavior_IC
                  */
                 function f_mtc_check_TP_IC_IBCF_INVITE_04(
                     SipInterfaceMonitor  p_monitorCompRef,
    -                boolean p_checkMessage
    +                boolean p_checkMessage := false
                 ) runs on ImsTestCoordinator  {
                 if (isvalue(p_monitorCompRef)) {
    -               var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));
    +               var template SipUrl v_pcscfEutAUrl := ?; //mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));
                    var template SipUrl v_pcscfEutAIpUrl := mw_SipUrl_Host(f_GetEUTPcscfIpAddress(PX_EUT_A));
                     var ImsUserInfo v_user := f_getAnyValidUser(PX_EUT_B);
                     var template SipUrl v_UserEutBUrl := mw_SipUrl_Host(v_user.domain);
    @@ -215,8 +197,7 @@ module AtsImsIot_TP_behavior_IC
                                         
                    p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    -                    {mw_SipRequest((mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAUrl, v_UserEutBUrl), 
    -                        mdw_TP_IC_IBCF_INVITE_04(v_pcscfEutAIpUrl, v_UserEutBUrl)))},
    +                    {mw_SipRequest((mdw_TP_IC_IBCF_INVITE_04((v_pcscfEutAUrl, v_pcscfEutAIpUrl), v_UserEutBUrl)))},
                         {mw_SipRequest(mw_INVITE_Request_Base)},
                         {0, omit},
                         "TP_IC_IBCF_INVITE_04",
    @@ -254,7 +235,7 @@ module AtsImsIot_TP_behavior_IC
                 boolean p_checkMessage
             ) runs on ImsTestCoordinator {
              if (isvalue(p_monitorCompRef)) {
    -           //TODO: from/to 
    +           
                var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); //from
                var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to       
                p_monitorCompRef.start(
    @@ -268,20 +249,6 @@ module AtsImsIot_TP_behavior_IC
                 )
                );
                p_monitorCompRef.done;
    -           //TODO: from/to 
    -           v_UEB_PublicId := f_GetUEPublicId(PX_EUT_A); //from
    -           v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); //to       
    -           p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_INVITE_05(v_eutAUri, v_UEB_PublicId))},
    -                {mw_SipRequest(mw_INVITE_Request_Base)},
    -                {0, omit},
    -                "TP_IC_IBCF_INVITE_05",
    -                false,
    -                p_checkMessage
    -            )
    -           );
    -           p_monitorCompRef.done;
             }}
             
         } // end group g_IBCF_INVITE
    @@ -338,34 +305,16 @@ module AtsImsIot_TP_behavior_IC
               */
             function f_mtc_check_TP_IC_IBCF_100TRY_01(
                 SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage,
    -            integer p_skipCount
    +            boolean p_checkMessage/*,
    +            integer p_skipCount*/
             ) runs on ImsTestCoordinator {
               if (isvalue(p_monitorCompRef)) {
    -               
    -            var template SkipType v_skip := {0, omit};
    -                
    -            if(p_skipCount > 0) {
    -                v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)};
    -            }
    -           
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                {mw_SipRequest(mw_INVITE_Request_Base)},
    -                {},
    -                v_skip,
    -                "TP_IC_IBCF_100TRY_01",
    -                false,
    -                p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                     {mw_SipResponse(mw_100Trying_Base)},
    -                {},
    -                v_skip,
    +                {mw_SipResponse(m_Response_Dummy)},
    +                {0, omit},
                     "TP_IC_IBCF_100TRY_01",
                     false,
                     false
    @@ -382,34 +331,16 @@ module AtsImsIot_TP_behavior_IC
               */
             function f_mtc_check_TP_IC_IBCF_100TRY_02(
                 SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage,
    -            integer p_skipCount
    +            boolean p_checkMessage/*,
    +            integer p_skipCount*/
             ) runs on ImsTestCoordinator {
               if (isvalue(p_monitorCompRef)) {
    -               
    -            var template SkipType v_skip := {0, omit};
    -                
    -            if(p_skipCount > 0) {
    -                v_skip := {p_skipCount, mw_SipRequest(mw_INVITE_Request_Base)};
    -            }
    -           
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                {mw_SipRequest(mw_INVITE_Request_Base)},
    -                {},
    -                v_skip,
    -                "TP_IC_IBCF_100TRY_02",
    -                false,
    -                p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                     {mw_SipResponse(mw_100Trying_Base)},
    -                {},
    -                v_skip,
    +                {mw_SipResponse(m_Response_Dummy)},
    +                {0, omit},
                     "TP_IC_IBCF_100TRY_02",
                     false,
                     false
    @@ -585,8 +516,9 @@ module AtsImsIot_TP_behavior_IC
                                 
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    -                    {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))},
    -                    {mw_SipResponse(mw_180Ringing_Base)},
    +                    {mw_SipResponse(mdw_TP_IC_IBCF_183RESP_01(mw_SIP_URI_Base, mw_TEL_URI_Base))},
    +//                    {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))},
    +                    {mw_SipResponse(mw_183SessionProgress_Base)},
                         {0, omit},
                         "TP_IC_IBCF_1XXRESP_03",
                         false,
    @@ -594,6 +526,15 @@ module AtsImsIot_TP_behavior_IC
                     )
                 );
                 p_monitorCompRef.done;
    +        }} 
    +
    +        function f_mtc_check_TP_IC_IBCF_1XXRESP_03b(
    +            SipInterfaceMonitor  p_monitorCompRef,
    +            boolean p_checkMessage 
    +        ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
    +            var template RecordRoute v_recordRoute := ?;
    +                            
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         {mw_SipResponse(mdw_TP_IC_IBCF_1XXRESP_02(?,?,mw_SIP_URI_Base, v_recordRoute))},
    @@ -825,7 +766,7 @@ module AtsImsIot_TP_behavior_IC
                 f_Iot_Sip_receive(
                     {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))},
                     {mw_SipResponse(mdw_2XX_Base)},
    -                {0, omit},
    +                {p_skipCount, mw_SipResponse(mdw_2XX_Base)},
                     "TP_IC_IBCF_2XXRESP_05",
                     false,
                     false
    @@ -847,27 +788,40 @@ module AtsImsIot_TP_behavior_IC
               
                var template RecordRoute v_recordRoute := ?;
                                
    -           //TODO: from/to 
                p_monitorCompRef.start(
                 f_Iot_Sip_receive(
                     {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))},
                     {mw_SipResponse(mdw_2XX_Base)},
    -                {0, omit},
    -                "TP_IC_IBCF_2XXRESP_05",
    +                {p_skipCount, mw_SipResponse(mdw_2XX_Base)},
    +                "TP_IC_IBCF_2XXRESP_06",
                     false,
                     false
                 )
                );
                p_monitorCompRef.done;
    -           //TODO: from/to 
    +        }}
    +
    +        /**
    +         * @desc Starts monitor component behavior for TP_IC_IBCF_2XXRESP_07
    +         * @param p_monitorCompRef Reference to monitor component
    +         * @remark source function f_mtc_check_TP_IMS_5121_02_ic
    +         */
    +        function f_mtc_check_TP_IC_IBCF_2XXRESP_07(
    +            SipInterfaceMonitor  p_monitorCompRef,
    +            integer p_skipCount :=0
    +        ) runs on ImsTestCoordinator {
    +          if (isvalue(p_monitorCompRef)) {
    +
    +           var template RecordRoute v_recordRoute := *;
    +                           
                p_monitorCompRef.start(
                 f_Iot_Sip_receive(
    -                {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_05(?,?,mw_SIP_URI_Base, v_recordRoute))},
    +                {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_07(?,?,mw_SIP_URI_Base, v_recordRoute))},
                     {mw_SipResponse(mdw_2XX_Base)},
    -                {0, omit},
    -                "TP_IC_IBCF_2XXRESP_05",
    +                {p_skipCount, mw_SipResponse(mdw_2XX_Base)},
    +                "TP_IC_IBCF_2XXRESP_07",
                     false,
    -                false
    +                false 
                 )
                );
                p_monitorCompRef.done;
    @@ -957,7 +911,6 @@ module AtsImsIot_TP_behavior_IC
             ) runs on ImsTestCoordinator  { 
                 var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A);
                     
    -            //TODO: to/from
                 if (isvalue(p_monitorCompRef)) {
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
    @@ -971,13 +924,12 @@ module AtsImsIot_TP_behavior_IC
                                            );
                     p_monitorCompRef.done;
                     
    -                //TODO: to/from
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                              {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
                                                              {},
                                                              {0,omit},
    -                                                         "f_mtc_check_response_mx",
    +                                                         "TP_IC_IBCF_BYE_02_200OK",
                                                              false,
                                                              false
                                                           )
    @@ -999,7 +951,6 @@ module AtsImsIot_TP_behavior_IC
     
            var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A)
                     
    -       //TODO: to/from
            p_monitorCompRef.start(
             f_Iot_Sip_receive(
                {mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr)))},
    @@ -1012,26 +963,12 @@ module AtsImsIot_TP_behavior_IC
            );
            p_monitorCompRef.done;
                                 
    -       //TODO: to/from
            p_monitorCompRef.start(
             f_Iot_Sip_receive(
                {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
                {},
                {0,omit},
    -           "f_mtc_check_response_mx",
    -           false,
    -           false
    -        )
    -       );
    -       p_monitorCompRef.done;
    -    
    -       //TODO: to/from
    -       p_monitorCompRef.start(
    -        f_Iot_Sip_receive(
    -           {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
    -           {},
    -           {0,omit},
    -           "f_mtc_check_response_mx",
    +           "TP_IC_IBCF_BYE_01_200OK",
                false,
                false
             )
    @@ -1062,7 +999,7 @@ module AtsImsIot_TP_behavior_IC
                                                              {
     //                                                             mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))
                                                                  mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?))
    -                                                         }, //TODO: From/To
    +                                                         }, 
                                                              {},
                                                              {0, omit},
                                                              "TP_IC_IBCF_CANCEL_01 - Request",
    @@ -1084,7 +1021,7 @@ module AtsImsIot_TP_behavior_IC
                     // Check the CANCEL
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
    -                                                         { mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?)) }, //TODO: From/To
    +                                                         { mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?)) }, 
                                                              {},
                                                              {0, omit},
                                                              "TP_IC_IBCF_CANCEL_02",
    @@ -1136,7 +1073,7 @@ module AtsImsIot_TP_behavior_IC
                     // Check the CANCEL
                    p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    -                    {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    +                    {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))},
                         {},
                         {0,omit},
                         "TP_IC_IBCF_CANCEL_OK_01",
    @@ -1156,7 +1093,7 @@ module AtsImsIot_TP_behavior_IC
                     // Check the CANCEL
                    p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    -                    {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    +                    {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))},
                         {},
                         {0,omit},
                         "TP_IC_IBCF_CANCEL_OK_02",
    @@ -1175,7 +1112,7 @@ module AtsImsIot_TP_behavior_IC
     
                 p_monitorCompRef.start(
                  f_Iot_Sip_receive(
    -                 {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From
    +                 {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))},
                      {},
                      {0,omit},
                      "TP_IC_IBCF_CANCEL_OK_03",
    @@ -1201,16 +1138,9 @@ module AtsImsIot_TP_behavior_IC
                SipInterfaceMonitor  p_monitorCompRef,
                boolean p_checkMessage := false
            ) runs on ImsTestCoordinator {
    -    //       p_monitorCompRef.start(
    -    //        f_Iot_Sip_receive(
    -    //            { mw_SipResponse ( mw_Response_Base ( c_statusLine486, ?, ? ) ) }, { }, { 0, omit },
    -    //            "TP_IC_IBCF_486INVITE_01", false, false )
    -    //       );
    -    //       p_monitorCompRef.done;
         
                 if (isvalue(p_monitorCompRef)) {
                     // Check the INVITE
    -                //TODO: from/to 
                     p_monitorCompRef.start(
                      f_Iot_Sip_receive(
                          {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))
    @@ -1237,8 +1167,6 @@ module AtsImsIot_TP_behavior_IC
            ) runs on ImsTestCoordinator {
                                 
                 if (isvalue(p_monitorCompRef)) {
    -                // Check the INVITE
    -                  //TODO: from/to 
                       p_monitorCompRef.start(
                        f_Iot_Sip_receive(
                            {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    @@ -1263,10 +1191,9 @@ module AtsImsIot_TP_behavior_IC
            ) runs on ImsTestCoordinator {
              if (isvalue(p_monitorCompRef)) {
                                 
    -          //TODO: from/to 
               p_monitorCompRef.start(
                f_Iot_Sip_receive(
    -               {(mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?)),mw_SipResponse(mw_Response_Base(c_statusLine600)))},
    +               {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?)),mw_SipResponse(mw_Response_Base(c_statusLine600))},
                    {mw_SipResponse(mdw_4XX_Base)},
                    {0, omit},
                    "TP_IC_IBCF_486INVITE_03",
    @@ -1275,19 +1202,6 @@ module AtsImsIot_TP_behavior_IC
                )
               );
               p_monitorCompRef.done;
    -    
    -        //TODO: from/to 
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -             {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    -             {mw_SipResponse(mdw_4XX_Base)},
    -             {0, omit},
    -             "TP_IC_IBCF_486INVITE_03",
    -             false,
    -             p_checkMessage
    -         )
    -        );
    -        p_monitorCompRef.done;
            }} 
         
            /**
    @@ -1299,8 +1213,7 @@ module AtsImsIot_TP_behavior_IC
                boolean p_checkMessage 
            ) runs on ImsTestCoordinator {
              if (isvalue(p_monitorCompRef)) {
    -                            
    -          //TODO: from/to 
    +             
               p_monitorCompRef.start(
                f_Iot_Sip_receive(
                    {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    @@ -1312,19 +1225,6 @@ module AtsImsIot_TP_behavior_IC
                )
               );
               p_monitorCompRef.done;
    -    
    -        //TODO: from/to 
    -        p_monitorCompRef.start(
    -         f_Iot_Sip_receive(
    -             {mw_SipResponse(mdw_TP_IC_IBCF_486INVITE_02(?,?))},
    -             {mw_SipResponse(mdw_4XX_Base)},
    -             {0, omit},
    -             "TP_IC_IBCF_486INVITE_04",
    -             false,
    -             p_checkMessage
    -         )
    -        );
    -        p_monitorCompRef.done;
            }} 
         
         } // end group g_IBCF_486INVITE
    @@ -1346,7 +1246,9 @@ module AtsImsIot_TP_behavior_IC
                    p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                         { mw_SipResponse ( mw_Response_Base ( c_statusLine487, ?, ? ) ) }, { }, { 0, omit },
    -                    "TP_IC_IBCF_487INVITE_01", false, false )
    +                    "TP_IC_IBCF_487INVITE_01", 
    +                    false, 
    +                    false )
                    );
                    p_monitorCompRef.done;
                 }
    @@ -1362,8 +1264,6 @@ module AtsImsIot_TP_behavior_IC
            ) runs on ImsTestCoordinator {
                                 
                 if (isvalue(p_monitorCompRef)) {
    -                // Check the INVITE
    -              //TODO: from/to 
                   p_monitorCompRef.start(
                    f_Iot_Sip_receive(
                        {mw_SipResponse(mdw_TP_IC_IBCF_487INVITE_02(?,?))},
    @@ -1394,10 +1294,7 @@ module AtsImsIot_TP_behavior_IC
                 boolean p_checkMessage := false
             ) runs on ImsTestCoordinator  {
                     
    -            if (isvalue(p_monitorCompRef)) {
    -                // Check the INVITE
    -        //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    -                //TODO: from/to                
    +            if (isvalue(p_monitorCompRef)) {               
                     p_monitorCompRef.start(
                      f_Iot_Sip_receive(
                         {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    @@ -1425,9 +1322,6 @@ module AtsImsIot_TP_behavior_IC
             ) runs on ImsTestCoordinator  {
                     
                 if (isvalue(p_monitorCompRef)) {
    -                // Check the INVITE
    -    //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    -            //TODO: from/to                
                 p_monitorCompRef.start(
                  f_Iot_Sip_receive(
                     {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    @@ -1458,10 +1352,7 @@ module AtsImsIot_TP_behavior_IC
                 boolean p_checkMessage := false
             ) runs on ImsTestCoordinator  {
                     
    -            if (isvalue(p_monitorCompRef)) {
    -                // Check the INVITE
    -    //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    -            //TODO: from/to                
    +            if (isvalue(p_monitorCompRef)) {           
                 p_monitorCompRef.start(
                  f_Iot_Sip_receive(
                     {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    @@ -1489,9 +1380,6 @@ module AtsImsIot_TP_behavior_IC
             ) runs on ImsTestCoordinator  {
                     
                 if (isvalue(p_monitorCompRef)) {
    -                // Check the INVITE
    -    //        var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
    -            //TODO: from/to                
                 p_monitorCompRef.start(
                  f_Iot_Sip_receive(
                     {mw_SipRequest(mdw_TP_IC_IBCF_4XXINVITE_ACK_01(?, ?, ?))},
    @@ -1537,31 +1425,17 @@ module AtsImsIot_TP_behavior_IC
                     );
                     p_monitorCompRef.done;
             
    -                // TODO: IBCF_B receives a 200_OK from the IMS_A         
    -                p_monitorCompRef.start(
    -                    f_Iot_Sip_receive(
    -                    {mw_SipResponse(mw_200OK_Base)},
    -                    {},
    -                    {0, omit},
    -                    "TP_IC_IBCF_SUBSCRIBE_01",
    -                    true,
    -                    p_checkMessage
    -                    )
    -                );
    -                p_monitorCompRef.done;
    -            
    -                // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_P_CSCF_B          
                     p_monitorCompRef.start(
                         f_Iot_Sip_receive(
                         {mw_SipResponse(mw_200OK_Base)},
                         {},
                         {0, omit},
    -                    "TP_IC_IBCF_SUBSCRIBE_01",
    +                    "TP_IC_IBCF_SUBSCRIBE_01_200OK",
                         true,
                         p_checkMessage
                         )
                     );
    -                p_monitorCompRef.done;  
    +                p_monitorCompRef.done; 
                 }}
         
         } // end group g_IBCF_SUBSCRIBE
    @@ -1593,31 +1467,17 @@ module AtsImsIot_TP_behavior_IC
                 );
                 p_monitorCompRef.done;
         
    -            // TODO: IBCF_B receives a 200_OK from the IMS_P_CSCF_B        
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
                     {mw_SipResponse(mw_200OK_Base)},
                     {},
                     {0, omit},
    -                "TP_IC_IBCF_NOTIFY_01",
    +                "TP_IC_IBCF_NOTIFY_01_200OK",
                     true,
                     p_checkMessage
                     )
                 );
                 p_monitorCompRef.done;
    -            
    -            // TODO: IMS_IBCF_B forwards the 200_OK to the IMS_A         
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                {mw_SipResponse(mw_200OK_Base)},
    -                {},
    -                {0, omit},
    -                "TP_IC_IBCF_NOTIFY_01",
    -                true,
    -                p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;        
             }}
         
         } // end group g_IBCF_NOTIFY
    @@ -1652,25 +1512,12 @@ module AtsImsIot_TP_behavior_IC
                       {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)},
                       {mw_SipResponse (mw_401Unauthorized_Base)},
                       {0, omit},
    -                  "TP_IC_IBCF_REGISTER_01",
    +                  "TP_IC_IBCF_REGISTER_01_401",
                       false,
                       p_checkMessage
                   )
                  );
                  p_monitorCompRef.done;
    -    
    -            // @remark source function f_mtc_check_TP_IMS_5089_01_ic_then
    -                p_monitorCompRef.start(
    -                  f_Iot_Sip_receive(
    -                      {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER401_01)},
    -                      {mw_SipResponse (mw_401Unauthorized_Base)},
    -                      {0, omit},
    -                      "TP_IC_IBCF_REGISTER_01",
    -                      false,
    -                      p_checkMessage
    -                  )
    -                 );
    -                 p_monitorCompRef.done;
             }}
         
             /**
    @@ -1703,23 +1550,7 @@ module AtsImsIot_TP_behavior_IC
                         {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))},
                         {mw_SipResponse (mw_200OK_Base)},
                         {0, omit},
    -                    "TP_IC_IBCF_REGISTER_02",
    -                    false,
    -                    p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    -    
    -            // @remark source function f_mtc_check_TP_IMS_5092_01_ic
    -            v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B);
    -            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_A)
    -                
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                    {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))},
    -                    {mw_SipResponse (mw_200OK_Base)},
    -                    {0, omit},
    -                    "TP_IC_IBCF_REGISTER_02",
    +                    "TP_IC_IBCF_REGISTER_02_200OK",
                         false,
                         p_checkMessage
                     )
    @@ -1738,7 +1569,7 @@ module AtsImsIot_TP_behavior_IC
               if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                 f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: UE_A,IMS_B 
    +                {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, 
                     {mw_SipRequest(mw_REGISTER_Request_Base)},
                     {0, omit},
                     "TP_IC_IBCF_REGISTER_03",
    @@ -1757,23 +1588,7 @@ module AtsImsIot_TP_behavior_IC
                         {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))},
                         {mw_SipResponse (mw_200OK_Base)},
                         {0, omit},
    -                    "TP_IC_IBCF_REGISTER_03",
    -                    false,
    -                    p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    -    
    -            // @remark source function f_mtc_check_TP_IMS_5092_01_ic
    -            v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B);
    -            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_A)
    -                
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                    {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))},
    -                    {mw_SipResponse (mw_200OK_Base)},
    -                    {0, omit},
    -                    "TP_IC_IBCF_REGISTER_03",
    +                    "TP_IC_IBCF_REGISTER_03_200OK",
                         false,
                         p_checkMessage
                     )
    @@ -1792,19 +1607,7 @@ module AtsImsIot_TP_behavior_IC
               if (isvalue(p_monitorCompRef)) {
                 p_monitorCompRef.start(
                 f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B 
    -                {mw_SipRequest(mw_REGISTER_Request_Base)},
    -                {0, omit},
    -                "TP_IC_IBCF_REGISTER_04",
    -                false,
    -                p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    -            
    -            p_monitorCompRef.start(
    -            f_Iot_Sip_receive(
    -                {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, //TODO: P_CSCF_B ,IMS_B 
    +                {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))}, 
                     {mw_SipRequest(mw_REGISTER_Request_Base)},
                     {0, omit},
                     "TP_IC_IBCF_REGISTER_04",
    @@ -1823,23 +1626,7 @@ module AtsImsIot_TP_behavior_IC
                         {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))},
                         {mw_SipResponse (mw_200OK_Base)},
                         {0, omit},
    -                    "TP_IC_IBCF_REGISTER_04",
    -                    false,
    -                    p_checkMessage
    -                )
    -            );
    -            p_monitorCompRef.done;
    -    
    -            // @remark source function f_mtc_check_TP_IMS_5092_01_ic
    -            v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_B);
    -            v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//f_GetEUTScscfAddress(PX_EUT_A)
    -                
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                    {mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))},
    -                    {mw_SipResponse (mw_200OK_Base)},
    -                    {0, omit},
    -                    "TP_IC_IBCF_REGISTER_04",
    +                    "TP_IC_IBCF_REGISTER_04_200OK",
                         false,
                         p_checkMessage
                     )
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
    index 47accc9..0559a25 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
    @@ -72,10 +72,9 @@ group g_ISC {
                     )
                 );
                 p_monitorCompRef.done;
    -    
    -            // @remark source function f_mtc_check_TP_IMS_5092_01_ic
    -            var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
    -            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
    +
    +            var charstring v_EUT_A_Addr := f_GetEUTPcscfIpAddress_1();
    +            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());
                     
                 p_monitorCompRef.start(
                     f_Iot_Sip_receive(
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    index 83ca2a7..94df95f 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
    @@ -785,14 +785,15 @@ module AtsImsIot_Templates {
     	template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, in template (present)  SipUrl p_SCSCF_SIP_URI)
     	 modifies mw_BYE_Request_Base := {
     	  msgHeader := {
    -		route := {
    -			fieldName := ROUTE_E,
    -			routeBody := {
    -				?, 
    -				complement(mw_routeBody(p_SCSCF_SIP_URI)),
    -				*
    -			}
    -		}
    +	    route := *
    +//		route := {
    +//			fieldName := ROUTE_E,
    +//			routeBody := {
    +//				?, 
    +//				complement(mw_routeBody(p_SCSCF_SIP_URI)),
    +//				*
    +//			}
    +//		}
     	  }
     	}
         
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    index 1408758..4624eff 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
    @@ -190,9 +190,9 @@ module AtsImsIot_Templates_IC
     				routeBody := {mw_routeBody(p_pcscfEutAUri), *}              
     			},
     			pPreferredID := omit,
    -			pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_userEutBUrl)),
    +			pAssertedID := ?, //mw_PAssertedID(mw_PAssertedIDValue(p_userEutBUrl)),
     			pChargingVector :=  mw_PChargingVector({
    -				{id := "icid-value", paramValue := {quotedString :=PX_IMS_A_ICID}}, 
    +				?,//{id := "icid-value", paramValue := {quotedString :=PX_IMS_A_ICID}}, 
     				*
     			  })
     		  }
    @@ -207,8 +207,8 @@ module AtsImsIot_Templates_IC
     			template charstring p_EUTB_PublicId)
     		 modifies mw_INVITE_Request_Base := {
     		  msgHeader := {
    -	        fromField := mw_From (p_eutAUri),
    -	        toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?)                   
    +	        fromField := ?,//mw_From (p_eutAUri), TODO
    +	        toField := ?//mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?)         TODO          
     		  }
     		}
         
    @@ -326,17 +326,25 @@ module AtsImsIot_Templates_IC
     		    template RecordRoute p_recordRoute)
     		 modifies mw_180Ringing_Base := {
     		  msgHeader := {
    -            fromField := mw_From (p_eutAUri),
    -            toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),                   
    +            fromField := (mw_From (p_eutAUri),
    +            
    +                                {
    +                                    fieldName := FROM_E,
    +                                    addressField := {addrSpecUnion:=?},//{nameAddr := mw_NameAddr(*, p_sipUrl)},
    +                                    fromParams := *
    +                                }),
    +            
    +            toField := ?,//mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),                   
     			pPreferredID := omit,
    -			pAssertedID := {
    -				fieldName := P_ASSERTED_ID_E,
    -				pAssertedIDValueList := {
    -					*, 
    -					{ nameAddr := mw_NameAddr(p_SIP_URI)}, 
    -					*
    -				}
    -			},
    +			pAssertedID := ?,
    +//			{
    +//				fieldName := P_ASSERTED_ID_E,
    +//				pAssertedIDValueList := {
    +////					*, 
    +//					{ nameAddr := mw_NameAddr(p_SIP_URI)}, 
    +//					*
    +//				}
    +//			},
                 recordRoute := p_recordRoute
     		  }
     		} 
    @@ -447,20 +455,70 @@ module AtsImsIot_Templates_IC
     				template SipUrl p_SIP_URI,
     				template RecordRoute p_recordRoute) modifies mdw_2XX_Base := {
     			msgHeader := {
    -				fromField := mw_From (p_eutAUri),
    -				toField := mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?),                   
    +			    cSeq := {
    +                        fieldName := CSEQ_E,
    +                        seqNumber := ?,
    +                        method := "INVITE"
    +                        },
    +				fromField := (mw_From_NameAddr_SipUrl(?,?,?), 
    +                                {
    +                                    fieldName := FROM_E,
    +                                    addressField := {addrSpecUnion:=?},//{nameAddr := mw_NameAddr(*, p_sipUrl)},
    +                                    fromParams := *
    +                                }),
    +				//mw_From(?)),//mw_From (p_eutAUri), //AXR mw_From added
    +				toField := (mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), mw_To(?)), //AXR mw_To added                  
     				pPreferredID := omit,
    -				pAssertedID := {
    -					fieldName := P_ASSERTED_ID_E,
    -					pAssertedIDValueList := {
    -						*, 
    -						{ nameAddr := mw_NameAddr(p_SIP_URI)}, 
    -						*
    -					}
    -				},
    +                pAssertedID := *, //AXR
    +//				pAssertedID := {
    +//					fieldName := P_ASSERTED_ID_E,
    +//					pAssertedIDValueList := {
    +////						*, 
    +//						{ nameAddr := mw_NameAddr(p_SIP_URI)}, 
    +//						*
    +//					}
    +//				},
     				recordRoute := p_recordRoute
     			}   
     		}
    +
    +        /**
    +          * 
    +          * @desc checking TP_IC_IBCF_2XXRESP_07
    +          * @remark source template mw_TP_IMS_5121_02_ic
    +          */
    +        template Response mw_TP_IC_IBCF_2XXRESP_07 (template SipUrl p_eutAUri, 
    +                template charstring p_EUTB_PublicId,
    +                template SipUrl p_SIP_URI,
    +                template RecordRoute p_recordRoute) modifies mdw_2XX_Base := {
    +            msgHeader := {
    +                cSeq := {
    +                        fieldName := CSEQ_E,
    +                        seqNumber := ?,
    +                        method := "BYE"
    +                        },
    +                fromField := ?,
    +//                            (mw_From_NameAddr_SipUrl(?,?,?), 
    +//                                {
    +//                                    fieldName := FROM_E,
    +//                                    addressField := {addrSpecUnion:=?},//{nameAddr := mw_NameAddr(*, p_sipUrl)},
    +//                                    fromParams := *
    +//                                }),
    +                //mw_From(?)),//mw_From (p_eutAUri), //AXR mw_From added
    +                toField := ?,//(mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?), mw_To(?)), //AXR mw_To added                  
    +                pPreferredID := omit,
    +                pAssertedID := *, //AXR
    +//              pAssertedID := {
    +//                  fieldName := P_ASSERTED_ID_E,
    +//                  pAssertedIDValueList := {
    +////                        *, 
    +//                      { nameAddr := mw_NameAddr(p_SIP_URI)}, 
    +//                      *
    +//                  }
    +//              },
    +                recordRoute := p_recordRoute
    +            }   
    +        }
         
     	} // end group g_IBCF_2XXRESP
     
    @@ -575,14 +633,15 @@ module AtsImsIot_Templates_IC
     		template ACK_Request mdw_TP_IC_IBCF_ACK_01(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI)
     		modifies mw_ACK_Request_Base := {
     			msgHeader := {
    -				route := {
    -					fieldName := ROUTE_E,
    -					routeBody := {
    -						*, 
    -						complement(mw_routeBody(p_SCSCF_SIP_URI)),
    -						*
    -					}
    -				}
    +			    route := *
    +//				route := {
    +//					fieldName := ROUTE_E,
    +//					routeBody := {
    +//						*, 
    +//						complement(mw_routeBody(p_SCSCF_SIP_URI)),
    +//						*
    +//					}
    +//				}
     			}
     		}
     
    -- 
    GitLab
    
    
    From b75d0e831a7d25983af526864f76caf8332e0836 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Fri, 12 Nov 2021 15:18:53 +0000
    Subject: [PATCH 158/176] Validation of DTC test cases and mw and gm interfaces
    
    ---
     ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn          | 123 ++++++------
     ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn          |  91 ++++++---
     ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn          |  36 ++--
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn  |  58 +++---
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn  |  22 +--
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn  |  37 ++--
     .../AtsImsIot_TP_behavior_MW_IS.ttcn          | 146 +++++++++++----
     .../AtsImsIot_TP_behavior_MW_PS.ttcn          | 176 +++++++++++++-----
     .../AtsImsIot_TP_behavior_MW_SI.ttcn          |   8 +-
     ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn  |   2 +-
     ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn    |  58 ++++++
     11 files changed, 511 insertions(+), 246 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    index d9ccda2..ba529c0 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    @@ -89,7 +89,8 @@ module AtsImsIot_TD_DTC{
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    -                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    +                if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
    +                                                          PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
                                                               PX_DIAMETER_CX_IH_INTERFACENAME,
                                                               PX_DIAMETER_CX_SH_INTERFACENAME,
    @@ -113,18 +114,18 @@ module AtsImsIot_TD_DTC{
                         // test body
                         // Check that user A can register to IMS A
                         //f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
    -                    f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_09 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 5)
    -                    //f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4)
    -                    f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 13)
    +                    //f_mtc_check_TP_GM_PCSCF_REGISTER_07(vc_vxlte_monitor_components.gmA); // Events 2, 11
                         
    -                    f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 8)
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_09 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 3)
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 6)
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 8,11)
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Event 7)
    -                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 10,11)
    +                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Events 4,5)
    +                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Events 7,8)
    +                    
    +                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Events 12, 13)
                         
    -                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 14)
    +                    f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 14, 15)
                        
                         //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
                         
    @@ -154,7 +155,14 @@ module AtsImsIot_TD_DTC{
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    -                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_RX_INTERFACENAME,PX_DIAMETER_CX_IH_INTERFACENAME,PX_DIAMETER_CX_SH_INTERFACENAME,PX_SIP_MW_PS_INTERFACENAME,PX_SIP_MW_IS_INTERFACENAME/*,PX_SIP_MW_SI_INTERFACENAME*/})){
    +                if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
    +                                                          PX_DIAMETER_GX_INTERFACENAME,
    +                                                          PX_DIAMETER_RX_INTERFACENAME,
    +                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
    +                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
    +                                                          PX_SIP_MW_PS_INTERFACENAME,
    +                                                          PX_SIP_MW_IS_INTERFACENAME/*,
    +                                                          PX_SIP_MW_SI_INTERFACENAME*/})){
     	                f_cf_createVxLteMonitor();    
     	        
     	                // map/connect component ports
    @@ -171,23 +179,26 @@ module AtsImsIot_TD_DTC{
                         //f_PO_user_home_deregistration ( v_ueA );
                         f_mtc_userRadioEnabled ( v_ueA, false, true );
                         // test body
    -                    f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
                       
                       
    -                    //f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 4)
    -                    f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 4,5)
    -                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 6,7)
    +                    //f_mtc_check_TP_GX_PCRF_RAR_02 ( vc_vxlte_monitor_components.gx, true ); // Check (RAR – Event 5)
    +                    f_mtc_check_TP_GX_PGW_RAA_03 ( vc_vxlte_monitor_components.gx, false ); // Check (RAA – Event 6)
                         //TODO: TP for check BYE?
    -                    f_mtc_check_TP_RX_PCRF_ASA_01 ( vc_vxlte_monitor_components.rx, false ); // Check (ASA – Event 11,12)
    -                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 13,14)
    +                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 4,7)
                       
    -                    //f_mtc_check_TP_MW_PCSCF_REGISTER_11 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8,9,15,22)
    +                    //f_mtc_check_TP_MW_PCSCF_REGISTER_11 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 11)
                         
    -                    f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 18)
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_07 (vc_vxlte_monitor_components.mwIS, false); //Check (REGISTER - event 14)
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_07 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 18,21)
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE)); // Check (UAA - Event 16,17)
    -                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH); // Check (SAA – Event 19,20)
    +                    //f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE)); // Check (UAA - Event 12,13)
    +                    //f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH); // Check (SAA – Event 15,16)
    +                    
    +                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Events 12,13)
    +                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Events 15,16)
    +                    
    +                    f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 20,21)
    +                    f_mtc_check_TP_GX_PCRF_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 22, 23)
                         
                         //f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
                         
    @@ -348,10 +359,9 @@ module AtsImsIot_TD_DTC{
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    -                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    +                if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
    +                                                          PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
                                                               PX_SIP_MW_PS_INTERFACENAME,
    @@ -373,24 +383,19 @@ module AtsImsIot_TD_DTC{
                         
                         // test body
                         
    -                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    -                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    -                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    -                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
    -                    
    -                    f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    -                    f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
    -                    
    -                    //f_mtc_check_TP_MW_PCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
    -                    f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
    +                    //f_mtc_check_TP_MW_PCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 2)
    +                    f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 3)
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 10)
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Event 11,12)
    -                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 14,15)
    -                        
    -                    f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    -                    f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    -                    f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
    +                    f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 7
    +                    //f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 8
    +                    //f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 9
    +                    f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 10
    +                    
    +                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 11)
    +                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 12)
    +                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 13)
    +                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 14)
        
                         
                         //postamble
    @@ -419,10 +424,9 @@ module AtsImsIot_TD_DTC{
         
                     f_setVxLteMonIterfacesAvailability();
                     //Check required monitor interfaces due to TD
    -                if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,
    +                if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
    +                                                          PX_DIAMETER_GX_INTERFACENAME,
                                                               PX_DIAMETER_RX_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_IH_INTERFACENAME,
    -                                                          PX_DIAMETER_CX_SH_INTERFACENAME,
                                                               PX_DIAMETER_S9_INTERFACENAME,
                                                               PX_SIP_IC_INTERFACENAME,
                                                               PX_SIP_MW_PS_INTERFACENAME,
    @@ -445,33 +449,30 @@ module AtsImsIot_TD_DTC{
                         
                         // test body
                         
    -                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 1)
    -                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 2)
    -                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 3)
    -                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 4)
    -                    
                         //f_mtc_check_TP_MW_PCSCF_BYE_07 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
                         f_mtc_check_TP_IC_IBCF_BYE_03 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
                         
    -                    f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    -                    f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
    -                    f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    -                    f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    -                    f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
    -                    
    -                    f_mtc_check_TP_S9_PCRF_ASR_01  ( vc_vxlte_monitor_components.s9, false ); // Check (ASR - Event 6)
    -                    f_mtc_check_TP_RX_PCSCF_ASR_01  ( vc_vxlte_monitor_components.rx, false ); // Check (ASR - Event 7)
    +                    f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx);// Event 4
    +                    //f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 5
    +                    //f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 6
    +                    //f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx, true); // Event 7
    +                    f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx, false); // Event 8
    +                    f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 9
                         
                         //f_mtc_check_TP_MW_PCSCF_REGISTER_13 (vc_vxlte_monitor_components.mwPS, false); //Check (REGISTER - event 8)
                         f_mtc_check_TP_IC_IBCF_REGISTER_05 (vc_vxlte_monitor_components.ic, false); //Check (REGISTER - event 9)
                         //f_mtc_check_TP_MW_SCSCF_REGISTER_12 (vc_vxlte_monitor_components.mwSI, false); //Check (REGISTER - event 10)
                         
    -                    f_mtc_check_TP_CX_HSS_UAA_04 ( f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE), false ); // Check (UAA - Event 11,12)
    -                    f_mtc_check_TP_CX_HSS_SAA_02 ( vc_vxlte_monitor_components.cxSH, false ); // Check (SAA – Event 14,15)
    -                        
    -                    f_mtc_check_TP_S9_PCRF_ASA_01 ( vc_vxlte_monitor_components.s9, false ); // Check (ASA – Event 20,22)
    -                    f_mtc_check_TP_S9_PCRF_STR_01 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 21,23)
    -                    f_mtc_check_TP_S9_PCRF_STA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (STA – Event 24,25)
    +                    
    +                    f_mtc_check_TP_RX_PCSCF_STR_07(vc_vxlte_monitor_components.rx);// Event 22
    +                    //f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 23
    +                    //f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 24
    +                    f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 25
    +                    
    +                    f_mtc_check_TP_GX_PGW_CCR_02  ( vc_vxlte_monitor_components.gx, false ); // Check (CCR – Event 26)
    +                    f_mtc_check_TP_S9_PCRF_CCR_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCR – Event 27)
    +                    f_mtc_check_TP_S9_PCRF_CCA_02 ( vc_vxlte_monitor_components.s9, false ); // Check (CCA – Event 28)
    +                    f_mtc_check_TP_GX_PCRF_CCA_05 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 29)
        
                         
                         //postamble
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    index 57266db..a41eada 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn
    @@ -637,6 +637,13 @@ module AtsImsIot_TD_INI{
                         
                         function f_mtc_check_precond_TC_VxLTE_INT_REL_01(out SipMessage p_sip) runs on ImsTestCoordinator {
                             f_mtc_check_TP_MW_PCSCF_INVITE_01(vc_vxlte_monitor_components.mwPS, -, p_sip);
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_01(vc_vxlte_monitor_components.mwPS, -, p_sip);
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 15
    +                        f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 15
    +                        f_mtc_check_TP_MW_PCSCF_180RINGING_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 24
    +                        f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 15
    +                        f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 28
    +                        f_mtc_check_TP_MW_PCSCF_ACK_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 19    
     
                             f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
                             f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic)
    @@ -1430,7 +1437,8 @@ module AtsImsIot_TD_INI{
                             //test body 
     
                             //Gm      TP_GM_PCSCF_INVITE_03 (Event 1)
    -//                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 1)
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1
    +                        f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip);
                             
                             //Rx/Gx/S9 exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Events 2)
    @@ -1448,7 +1456,9 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9)
                             
                             //183 Session Progress
    -                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)                        
    +                        f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)
    +                        //f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 13
    +                        //f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_03(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
     
                             //Rx/Gx/S9 exchange after 183(SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Events 14)
    @@ -1552,8 +1562,9 @@ module AtsImsIot_TD_INI{
                             //Rx      TP_RX_PCSCF_AAR_06 (AAR – Events 4)
                             f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 2)
                             f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 2)
    -                        f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 3)
    -                        
    +
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 3)
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_04(vc_vxlte_monitor_components.mwPS, -, v_sip);
                             
                             //Rx/Gx/S9 exchange after INVITE (SDP) was received at P-CSCF
                             f_mtc_check_TP_RX_PCSCF_AAR_06(vc_vxlte_monitor_components.rx); // (AAR – Events 4)
    @@ -1562,15 +1573,28 @@ module AtsImsIot_TD_INI{
                             f_mtc_check_TP_GX_PCRF_RAR_03(vc_vxlte_monitor_components.gx, true); // (RAR – Events 7, 15)
                             f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Events 8, 16)
                             f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Events 9, 17)   
    -
    +                        
    +                        f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, v_sip);
    +                        
    +                        f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip);
    +                        
    +                        f_mtc_check_TP_MW_PCSCF_180RINGING_04(vc_vxlte_monitor_components.mwPS, -, v_sip);
    +                        
    +                        f_mtc_check_TP_MW_PCSCF_200OK_04(vc_vxlte_monitor_components.mwPS, -, v_sip);
    +                        
    +                        f_mtc_check_TP_MW_PCSCF_ACK_04(vc_vxlte_monitor_components.mwPS, -, v_sip);
    +                        
                             //Gm      TP_GM_PCSCF_INVITE_04 (Event 10)
                             //Gm      TP_GM_PCSCF_180RINGING_04 (Event 11)
                             //Rx      TP_RX_PCSCF_AAR_07 (AAR – Events 12)
    -                        f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 10)
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 10)
                             
    -                        //183 TODO
    +                        //183
                             f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)
                             
    +                        //f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // Event 11
    +                        //f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_04(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18
    +                        
                             
                             
                             //Rx/Gx/S9 exchange after 183 (SDP) was received at P-CSCF
    @@ -1875,7 +1899,7 @@ module AtsImsIot_TD_INI{
                             f_cf_VxLteMonitor_Up();
     
                             // Preamble
    -                        f_mtc_check_precond_TC_VxLTE_RMI_REL_01();
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REL_01(v_sip);
     
                             //test body
     
    @@ -1918,10 +1942,17 @@ module AtsImsIot_TD_INI{
                     
                     group f_TC_VxLTE_RMI_REL_01 {
                         
    -                    function f_mtc_check_precond_TC_VxLTE_RMI_REL_01() runs on ImsTestCoordinator {
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_REL_01(out SipMessage p_sip) runs on ImsTestCoordinator {
                             log("If the test case fails, please check the preconditions");
    -                        // TODO Add real code to check pre-conditions
    -                        
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmA, -, p_sip); // Event 1
    +                        f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, p_sip);
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS, -, p_sip); // (INVITE – Event 9)
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_03(vc_vxlte_monitor_components.mwPS, -, p_sip); // (INVITE, 100 Trying – Event 9)
    +                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_03(vc_vxlte_monitor_components.gmA, -, p_sip); // (183 Session Progress – Event 12)                        
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_03(vc_vxlte_monitor_components.mwPS, -, p_sip); // (183 Session Progress – Event 12)                        
    +                        f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 15
    +                        f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, p_sip); // Event 20
    +
                             f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
                             f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9)
                             f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)
    @@ -1934,7 +1965,7 @@ module AtsImsIot_TD_INI{
                             
                          } // End of function f_mtc_check_precond_TC_VxLTE_RMI_REL_01
                          
    -                } // End of f_TC_VxLTE_RMI_REL_01                                
    +                } // End of f_TC_VxLTE_RMI_REL_01
                     
                 } //End of group OriginatingUEInitiatedSessionRelease
                 group TerminatingUEInitiatedSessionRelease {
    @@ -1972,7 +2003,7 @@ module AtsImsIot_TD_INI{
                             f_cf_VxLteMonitor_Up();
     
                             // Preamble
    -                        f_mtc_check_precond_TC_VxLTE_RMI_REL_02();
    +                        f_mtc_check_precond_TC_VxLTE_RMI_REL_02(v_sip);
     
                             //test body
     
    @@ -2014,10 +2045,12 @@ module AtsImsIot_TD_INI{
     
                     group f_TC_VxLTE_RMI_REL_02 {
                         
    -                    function f_mtc_check_precond_TC_VxLTE_RMI_REL_02() runs on ImsTestCoordinator {
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_REL_02(out SipMessage p_sip) runs on ImsTestCoordinator {
                             log("If the test case fails, please check the preconditions");
                             // TODO Add real code to check pre-conditions
                             
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS, -, p_sip);
    +                        
                             f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 9)
                             f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 9)
                             f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 12)
    @@ -2167,15 +2200,12 @@ module AtsImsIot_TD_INI{
                             f_cf_VxLteMonitor_Up();
     
                             // Preamble
    -                        f_mtc_check_precond_TC_VxLTE_RMI_ABT_01();
    +                        f_mtc_check_precond_TC_VxLTE_RMI_ABT_01(v_sip);
     
                             //test body
     
     						//Rtp     TP_RTP_04 (Events 1)
     						
    -						//Gm      TP_GM_PCSCF_INVITE_03 (Event 2)
    -						f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2)
    -						
                             //Rx/Gx/S9 exchange after INVITE (SDP) was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 3)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 4)
    @@ -2184,20 +2214,15 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // (RAA – Event 7)
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 8)
     						
    -						//MwPS    TP_MW_PCSCF_INVITE_03 (Event 9)
     						//Ic      TP_IC_IBCF_INVITE_04 (INVITE – Event 10)
     						//Ic      TP_IC_IBCF_100TRY_02 (INVITE, 100 Trying – Event 10)
     						//Ic      TP_IC_IBCF_1XXRESP_03 (180 Ringing – Event 13)
    -						f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 9)
     						f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10)
     						f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10)
     						f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – Event 13)
                             f_mtc_check_TP_IC_IBCF_1XXRESP_03b(vc_vxlte_monitor_components.ic, false); // (180 Ringing – Event 22)
                             
                             
    -                        
    -                        //TODO 183
    -                        
                             //Rx/Gx/S9 exchange after 183 (SDP) was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx); // (AAR – Event 15)
     						f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // (AAR – Event 16)
    @@ -2255,8 +2280,16 @@ module AtsImsIot_TD_INI{
     
                     group f_TC_VxLTE_RMI_ABT_01 {
                         
    -                    function f_mtc_check_precond_TC_VxLTE_RMI_ABT_01() runs on ImsTestCoordinator {
    +                    function f_mtc_check_precond_TC_VxLTE_RMI_ABT_01(out SipMessage p_sip) runs on ImsTestCoordinator {
                             log("If the test case fails, please check the preconditions");
    +                        f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmA, -, p_sip); // Event 1
    +                        f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, p_sip);
    +                        f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS, -, p_sip); // (INVITE – Event 9)
    +                        f_mtc_check_TP_MW_PCSCF_100Trying_03(vc_vxlte_monitor_components.mwPS, -, p_sip); // (INVITE, 100 Trying – Event 9)
    +                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_03(vc_vxlte_monitor_components.gmA, -, p_sip); // (183 Session Progress – Event 12)                        
    +                        f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_03(vc_vxlte_monitor_components.mwPS, -, p_sip); // (183 Session Progress – Event 12)                        
    +                        f_mtc_check_TP_MW_PCSCF_PRACK_01(vc_vxlte_monitor_components.mwPS, -, p_sip); // Event 15
    +                        f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, p_sip); // Event 20
                          } // End of function f_mtc_check_precond_TC_VxLTE_RMI_ABT_01
                          
                     } // End of f_TC_VxLTE_RMI_ABT_01
    @@ -2301,7 +2334,7 @@ module AtsImsIot_TD_INI{
     						//Rtp     TP_RTP_04 (Events 1)
     						
     						//Gm      TP_GM_PCSCF_INVITE_03 (Event 2)
    -						f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmB); // (Event 2)
    +						f_mtc_check_TP_GM_PCSCF_INVITE_03(vc_vxlte_monitor_components.gmA, -, v_sip); // (Event 2)
     						
                             //Rx/Gx/S9 exchange after INVITE was received at P-CSCF
     						f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx); // (AAR – Event 3)
    @@ -2317,7 +2350,7 @@ module AtsImsIot_TD_INI{
                             //Ic      TP_IC_IBCF_486INVITE_03 (Event 13)
                             //MwPS    TP_MW_PCSCF_486INVITE_03 (Event 14)
     						//Gm      TP_GM_PCSCF_486INVITE_03 (Event 15)
    -						f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS); // (Event 9)
    +						f_mtc_check_TP_MW_PCSCF_INVITE_03(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 9)
     						f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 10)
     						f_mtc_check_TP_IC_IBCF_100TRY_02(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 10)
     
    @@ -2419,7 +2452,7 @@ module AtsImsIot_TD_INI{
     						f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // (AAA – Event 10)
     						
     						//Gm      TP_GM_PCSCF_INVITE_04 (Event 11)
    -						f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 11)
    +						f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmA, -, v_sip); // (Event 11)
     
     						
     						//183(SDP)
    @@ -2531,7 +2564,7 @@ module AtsImsIot_TD_INI{
                             //MwPS    TP_MW_PCSCF_INVITE_04 (Event 4)
     						f_mtc_check_TP_IC_IBCF_INVITE_05(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3)
     						f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 3)
    -						f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 4)
    +						f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 4)
     
                             //183(SDP)
                             f_mtc_check_TP_IC_IBCF_1XXRESP_03(vc_vxlte_monitor_components.ic, false); // (183 Session Progress – FOR SIMULATION ONLY)
    @@ -2551,7 +2584,7 @@ module AtsImsIot_TD_INI{
     						//Gm      TP_GM_PCSCF_486INVITE_04 (Event 12)
     						//MwPS    TP_MW_PCSCF_486INVITE_04 (Event 13)
     						//Ic      TP_IC_IBCF_486INVITE_04 (Event 14)
    -						f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB); // (Event 11)
    +						f_mtc_check_TP_GM_PCSCF_INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 11)
     						f_mtc_check_TP_GM_PCSCF_486INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // (Event 12)
     						f_mtc_check_TP_MW_PCSCF_486INVITE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 13)
     						f_mtc_check_TP_IC_IBCF_486INVITE_04(vc_vxlte_monitor_components.ic, false); // (Event 14)
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    index 9ca1934..bde4e54 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn
    @@ -280,17 +280,17 @@ module AtsImsIot_TD_REG{
                         //test body
                         
                         f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA); // Events 1, 14
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, true); // Event 2, 13
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS); // Event 2, 13
                         f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12
    -                    f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_04(vc_vxlte_monitor_components.mwIS); // Event 7, 10
                         
    -                    f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 28
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 27
    +                    f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA); // Events 15, 28
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS); // Events 16, 27
                         f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 26
    -                    f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 24
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS); // Event 21, 24
                         
    -                    f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 29, 36
    -                    f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 30, 35
    +                    f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA); // Events 29, 36
    +                    f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS); // Events 30, 35
                         f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Event 31, 34
     
                         f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 37
    @@ -343,10 +343,10 @@ module AtsImsIot_TD_REG{
             
                         // test body
                         
    -                    f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA, false); // Events 1, 6
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS, true); // Event 2, 5
    +                    f_mtc_check_TP_GM_PCSCF_REGISTER_03(vc_vxlte_monitor_components.gmA); // Events 1, 6
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_03(vc_vxlte_monitor_components.mwPS); // Event 2, 5
                         //f_mtc_check_TP_IC_IBCF_REGISTER_0X(vc_vxlte_monitor_components.mwPS, false, true); // Event 2, 5 //Check during validation if TD and TP need to be written in TD document because Ic interface
    -                    f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 2, 5
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS); // Event 2, 5
                         
                         f_mtc_check_TP_RX_PCSCF_AAR_02(vc_vxlte_monitor_components.rx);// Event 7
             
    @@ -396,19 +396,19 @@ module AtsImsIot_TD_REG{
             
                         // test body
                         
    -                    f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA, false); // Events 1, 14
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS, true); // Event 2, 13
    +                    f_mtc_check_TP_GM_PCSCF_REGISTER_04(vc_vxlte_monitor_components.gmA); // Events 1, 14
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_04(vc_vxlte_monitor_components.mwPS); // Event 2, 13
                         f_mtc_check_TP_IC_IBCF_REGISTER_01(vc_vxlte_monitor_components.ic, false); // Event 3, 12
    -                    f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS, true); // Event 7, 10
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_01(vc_vxlte_monitor_components.mwIS); // Event 7, 10
                         
    -                    f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA, false); // Events 15, 32
    -                    f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS, false); // Events 16, 31
    +                    f_mtc_check_TP_GM_PCSCF_REGISTER_05(vc_vxlte_monitor_components.gmA); // Events 15, 32
    +                    f_mtc_check_TP_MW_PCSCF_REGISTER_05(vc_vxlte_monitor_components.mwPS); // Events 16, 31
                         f_mtc_check_TP_IC_IBCF_REGISTER_02(vc_vxlte_monitor_components.ic, false); // Event 17, 30
    -                    f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS, true); // Event 21, 28
    +                    f_mtc_check_TP_MW_ICSCF_REGISTER_05(vc_vxlte_monitor_components.mwIS); // Event 21, 28
                         
    -                    f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA, false); // Events 33, 40
    +                    f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.gmA); // Events 33, 40
                         f_mtc_check_TP_IC_IBCF_SUBSCRIBE_01(vc_vxlte_monitor_components.ic, false); // Events 35, 38
    -                    f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS, false); // Events 36, 37
    +                    f_mtc_check_TP_MW_PCSCF_SUBSCRIBE_02(vc_vxlte_monitor_components.mwPS); // Events 36, 37
     
                         f_mtc_check_TP_RX_PCSCF_AAR_01(vc_vxlte_monitor_components.rx);// Event 41
                         f_mtc_check_TP_S9_PCRF_AAR_01(vc_vxlte_monitor_components.s9); // Event 42
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    index c449376..cec6cb6 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
    @@ -448,7 +448,7 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipRequest(mw_REGISTER_Request_Base)
                                                             },
                                                             {0, omit},
    -                                                        "TP_GM_PCSCF_REGISTER_04 - Second request",
    +                                                        "TP_GM_PCSCF_REGISTER_04 - First request",
                                                             true,
                                                             p_checkMessage
                                                             )
    @@ -459,23 +459,23 @@ module AtsImsIot_TP_behavior_GM {
                     if (not(isbound(v_sip))) {
                         return;
                     }
    +                
                     // Check REGISTER 404 Not Found response
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
                                                             { 
    -                                                            (
    -                                                            mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)),
    +                                                            mw_SipResponse(mw_401Unauthorized(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)),
                                                                 mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate))
    -                                                            )
                                                             },
                                                             {
    +                                                            mw_SipResponse(mw_401Unauthorized_Base),
                                                                 mw_SipResponse(mw_Response_4xx_Base(
                                                                                                     v_sip.request.msgHeader.callId,
                                                                                                     v_sip.request.msgHeader.cSeq
                                                                                                     )) 
                                                             },
                                                             {0, omit},
    -                                                        "TP_GM_PCSCF_REGISTER_04 - 200 OK",
    +                                                        "TP_GM_PCSCF_REGISTER_04 - 401 Unauthorized",
                                                             false,
                                                             p_checkMessage
                                                             )
    @@ -519,20 +519,19 @@ module AtsImsIot_TP_behavior_GM {
                     if (not(isbound(v_sip))) {
                         return;
                     }
    -                // Check REGISTER 404 Not Found response
    +                // Check REGISTER 200 OK response
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
    -                                                        { 
    -                                                            (
    -                                                            mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)),
    -                                                            mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate))
    -                                                            )
    +                                                        {
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                    ))
                                                             },
                                                             {
    -                                                            mw_SipResponse(mw_Response_4xx_Base(
    -                                                                                                v_sip.request.msgHeader.callId,
    -                                                                                                v_sip.request.msgHeader.cSeq
    -                                                                                                )) 
    +                                                            mw_SipResponse(mw_Response_2xx_Base)
                                                             },
                                                             {0, omit},
                                                             "TP_GM_PCSCF_REGISTER_05 - 200 OK",
    @@ -770,8 +769,10 @@ module AtsImsIot_TP_behavior_GM {
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)){
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +//                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +//                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     var SipMessage v_sip;
                     
                     // Check the SUBSCRIBE
    @@ -781,8 +782,10 @@ module AtsImsIot_TP_behavior_GM {
                                                                 mw_SipRequest(
                                                                               mw_TP_GM_PCSCF_SUBSCRIBE_02(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
    +//                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +//                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
                                                                                                           ))
                                                             },
                                                             {mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
    @@ -1151,7 +1154,8 @@ module AtsImsIot_TP_behavior_GM {
             
             function f_mtc_check_TP_GM_PCSCF_INVITE_04( // FIXME RMI To be reviewed
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := false
    +                                                   in boolean p_checkMessage := false,
    +                                                   out SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                  if (isvalue(p_monitorCompRef)){
                     var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    @@ -1170,11 +1174,13 @@ module AtsImsIot_TP_behavior_GM {
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
                                                             {0, omit},
                                                             "TP_GM_PCSCF_INVITE_04 - Request",
    -                                                        false,
    +                                                        true,
                                                             p_checkMessage
                                                             )
                                            );
    -               p_monitorCompRef.done;
    +                p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                  }
             } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_04
             
    @@ -1848,10 +1854,10 @@ module AtsImsIot_TP_behavior_GM {
             } // End of function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02
             
             function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_03(
    -                                                       in SipInterfaceMonitor p_monitorCompRef,
    -                                                       in boolean p_checkMessage := false,
    -                                                       in SipMessage p_sip
    -                                                       ) runs on ImsTestCoordinator {
    +                                                                in SipInterfaceMonitor p_monitorCompRef,
    +                                                                in boolean p_checkMessage := false,
    +                                                                in SipMessage p_sip
    +                                                                 ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     // Check the 183 SESSION_PROGRESS
                     p_monitorCompRef.start(
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    index 146c35d..7596bc0 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
    @@ -217,7 +217,7 @@ group g_PGW {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)}
                         },
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic }
                         },
                         {0, omit},
                         "TP_RX_PGW_RAA_01 - RAR",
    @@ -233,7 +233,7 @@ group g_PGW {
                             DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode}
                         },
                         {
    -                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic }
    +                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic }
                         },
                         {0, omit},
                         "TP_RX_PGW_RAA_01 - RAA",
    @@ -286,7 +286,7 @@ group g_PGW {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic }
                         },
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy }
    @@ -305,7 +305,7 @@ group g_PGW {
                             DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode }
                         },
                         {
    -                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic}
    +                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic}
                         },
                         {0, omit},
                         "TP_RX_PGW_RAA_02 - RAA",
    @@ -358,7 +358,7 @@ group g_PGW {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic}
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic}
                         },
                         {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy}
    @@ -435,7 +435,7 @@ group g_PGW {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove }
                         },
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic }
                         },
                         {0, omit},
                         "TP_RX_PGW_RAA_04 - RAR",
    @@ -451,7 +451,7 @@ group g_PGW {
                             DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode }
                         },
                         {
    -                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic }
    +                        DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic }
                         },
                         {0, omit},
                         "TP_RX_PGW_RAA_04 - RAA",
    @@ -907,7 +907,7 @@ group g_PCRF {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)}
                         },
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic}
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic}
                         },
                         {0, omit},
                         "TP_RX_PCRF_RAR_01 - RAR",
    @@ -964,7 +964,7 @@ group g_PCRF {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove}
                         },
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic}
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic}
                         },
                         {0, omit},
                         "TP_RX_PCRF_RAR_02 - RAR",
    @@ -1038,7 +1038,7 @@ group g_PCRF {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) } //During validation some additions may be required
                         },
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic } 
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic } 
                         },
                         {0, omit},
                         "TP_RX_PCRF_RAR_03 - RAR",
    @@ -1094,7 +1094,7 @@ group g_PCRF {
                             DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove } //During validation some additions may be required
                         },
                         {
    -                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic }
    +                        DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic }
                         },
                         {0, omit},
                         "TP_RX_PCRF_RAR_04 - RAR",
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    index 3de9b9d..f46956d 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
    @@ -286,7 +286,7 @@ module AtsImsIot_TP_behavior_IC
                                                              {0, omit},
                                                              "TP_IC_IBCF_REINVITE_01",
                                                              false,
    -                                                         false
    +                                                         p_checkMessage
                                                              )
                                            );
                     p_monitorCompRef.done;
    @@ -304,25 +304,24 @@ module AtsImsIot_TP_behavior_IC
               * @remark source function f_mtc_check_TP_IMS_5070_01_ic
               */
             function f_mtc_check_TP_IC_IBCF_100TRY_01(
    -            SipInterfaceMonitor  p_monitorCompRef,
    -            boolean p_checkMessage/*,
    -            integer p_skipCount*/
    +                                                  in SipInterfaceMonitor  p_monitorCompRef,
    +                                                  in boolean p_checkMessage := false
             ) runs on ImsTestCoordinator {
    -          if (isvalue(p_monitorCompRef)) {
    +            if (isvalue(p_monitorCompRef)) {
                     
    -            p_monitorCompRef.start(
    -                f_Iot_Sip_receive(
    -                {mw_SipResponse(mw_100Trying_Base)},
    -                {mw_SipResponse(m_Response_Dummy)},
    -                {0, omit},
    -                "TP_IC_IBCF_100TRY_01",
    -                false,
    -                false
    -                )
    -            );
    -            p_monitorCompRef.done;
    -           
    -        }}
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                         {mw_SipResponse(mw_100Trying_Base)},
    +                                                         {mw_SipResponse(m_Response_Dummy)},
    +                                                         {0, omit},
    +                                                         "TP_IC_IBCF_100TRY_01",
    +                                                         false,
    +                                                         p_checkMessage
    +                                                         )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
    +        }
         
             /**
               * @desc Starts monitor component behavior for TP_IMS_5070_02
    @@ -343,7 +342,7 @@ module AtsImsIot_TP_behavior_IC
                     {0, omit},
                     "TP_IC_IBCF_100TRY_02",
                     false,
    -                false
    +                p_checkMessage
                     )
                 );
                 p_monitorCompRef.done;
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
    index 52b065a..21076ef 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
    @@ -291,7 +291,7 @@ module AtsImsIot_TP_behavior_MW_IS {
                                                             },
                                                             {0, omit},
                                                             "TP_MW_ICSCF_REGISTER_02 - 200 OK",
    -                                                        true,
    +                                                        false,
                                                             p_checkMessage
                                                             )
                                            );
    @@ -399,44 +399,120 @@ module AtsImsIot_TP_behavior_MW_IS {
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    -
    -            if (isvalue(p_monitorCompRef)) {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { 
    -                                                        mw_SipRequest(mw_REGISTER_Request_Base),
    -                                                        mw_SipResponse(mw_404NotFound_Base)
    -                                                    },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_ICSCF_REGISTER_04",
    -                                                    false,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    -        }} // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_04
    +            if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var SipMessage v_sip;
    +                
    +                // Check the first REGISTER
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipRequest(
    +                                                                          mw_TP_MW_ICSCF_REGISTER_04(
    +                                                                                                     mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_Authorization_other/*(mw_credentialIntegrityYes)*/
    +                                                                                                     )
    +                                                                          )
    +                                                        },
    +                                                        { 
    +                                                            mw_SipRequest(mw_REGISTER_Request_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_ICSCF_REGISTER_04- First request",
    +                                                        true,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
    +                // Check REGISTER 401 Unauthorized response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipResponse(mw_401Unauthorized(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)),
    +                                                            mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate))
    +                                                        },
    +                                                        {
    +                                                            mw_SipResponse(mw_401Unauthorized_Base),
    +                                                            mw_SipResponse(mw_Response_4xx_Base(
    +                                                                                                v_sip.request.msgHeader.callId,
    +                                                                                                v_sip.request.msgHeader.cSeq
    +                                                                                                )) 
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_ICSCF_REGISTER_04 - 401 Unauthorized",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_04
             
             function f_mtc_check_TP_MW_ICSCF_REGISTER_05( // FIXME RMI To be reviewed
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    -            if (isvalue(p_monitorCompRef)) {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { 
    -                                                        mw_SipRequest(mw_REGISTER_Request_Base),
    -                                                        mw_SipResponse(mw_404NotFound_Base)
    -                                                    },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_ICSCF_REGISTER_05",
    -                                                    false,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    -        }} // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_05
    +            if (isvalue(p_monitorCompRef)){
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var SipMessage v_sip;
    +                
    +                // Check the first REGISTER
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipRequest(
    +                                                                          mw_TP_MW_ICSCF_REGISTER_05(
    +                                                                                                     mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_Authorization_other
    +                                                                                                     )
    +                                                                          )
    +                                                        },
    +                                                        { 
    +                                                            mw_SipRequest(mw_REGISTER_Request_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_ICSCF_REGISTER_05 - Second request",
    +                                                        true,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
    +                // Check REGISTER 200 OK response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipResponse(mw_Response_200onREGISTER_IMS(
    +                                                                                                         v_sip.request.msgHeader.callId,
    +                                                                                                         v_sip.request.msgHeader.cSeq,
    +                                                                                                         ?, // UE URI
    +                                                                                                         mw_contact(mw_ContactAddress),
    +                                                                                                         ? //FIXME ?
    +                                                                                                         ))
    +                                                        },
    +                                                        {
    +                                                            mw_SipResponse(mw_Response_2xx_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_ICSCF_REGISTER_05 - 200 OK",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_05
             
         } // End of group imsRegistration
         
    @@ -513,7 +589,7 @@ module AtsImsIot_TP_behavior_MW_IS {
                                                             },
                                                             {0, omit},
                                                             "TP_MW_PCSCF_REGISTER_07 - 200 OK",
    -                                                        true,
    +                                                        false,
                                                             p_checkMessage
                                                             )
                                            );
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    index fbca514..c6aaded 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
    @@ -331,7 +331,7 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipResponse(mw_Response_2xx_Base)
                                                             },
                                                             {0, omit},
    -                                                        "TP_MW_PCSCF_REGISTER_02 - 200 Okay",
    +                                                        "TP_MW_PCSCF_REGISTER_02 - 200 OK",
                                                             false,
                                                             p_checkMessage
                                                             )
    @@ -451,43 +451,117 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
    -            if (isvalue(p_monitorCompRef)) {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { 
    -                                                        mw_SipRequest(mw_REGISTER_Request_Base),
    -                                                        mw_SipResponse(mw_404NotFound_Base)
    -                                                    },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_PCSCF_REGISTER_04",
    -                                                    false,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    -        }} // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_04
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var SipMessage v_sip;
    +                
    +                // Check first REGISTER request
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipRequest(
    +                                                                          mw_TP_MW_PCSCF_REGISTER_04( // FIXME Add CallId...
    +                                                                                                     mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_Authorization_other/*(mw_credentialIntegrityYes)*/
    +                                                                                                     )
    +                                                                          )
    +                                                        },
    +                                                        { 
    +                                                            mw_SipRequest(mw_REGISTER_Request_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_REGISTER_04 - First request",
    +                                                        true,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
    +                // Check REGISTER 401 Unauthorized response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipResponse(mw_401Unauthorized(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)),
    +                                                            mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate))
    +                                                        },
    +                                                        {
    +                                                            mw_SipResponse(mw_401Unauthorized_Base),
    +                                                            mw_SipResponse(mw_Response_4xx_Base(
    +                                                                                                v_sip.request.msgHeader.callId,
    +                                                                                                v_sip.request.msgHeader.cSeq
    +                                                                                                )) 
    +                                                         },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_REGISTER_04 - 401 Unauthorized",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +               p_monitorCompRef.done;
    +        } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_04
             
             function f_mtc_check_TP_MW_PCSCF_REGISTER_05( // FIXME RMI To be reviewed
                                                          in SipInterfaceMonitor p_monitorCompRef,
                                                          in boolean p_checkMessage := true
                                                          ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -            p_monitorCompRef.start(
    -                                   f_Iot_Sip_receive(
    -                                                    { 
    -                                                        mw_SipRequest(mw_REGISTER_Request_Base),
    -                                                        mw_SipResponse(mw_404NotFound_Base)
    -                                                    },
    -                                                    {},
    -                                                    {0, omit},
    -                                                    "TP_MW_PCSCF_REGISTER_05",
    -                                                    false,
    -                                                    p_checkMessage
    -                                                    )
    -                                   );
    -           p_monitorCompRef.done;
    -        }} // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_05
    +                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +                var SipMessage v_sip;
    +                
    +                // Check the second REGISTER
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        {
    +                                                            mw_SipRequest(
    +                                                                          mw_TP_MW_PCSCF_REGISTER_05(
    +                                                                                                     mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +                                                                                                     mw_Authorization_other
    +                                                                                                     )
    +                                                                          )
    +                                                        },
    +                                                        { 
    +                                                            mw_SipRequest(mw_REGISTER_Request_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_REGISTER_05 - Second request",
    +                                                        true,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
    +                // Check the second REGISTER response
    +                p_monitorCompRef.start(
    +                                       f_Iot_Sip_receive(
    +                                                        { 
    +                                                            mw_SipResponse(mw_200OK(
    +                                                                                    v_sip.request.msgHeader.cSeq,
    +                                                                                    v_sip.request.msgHeader.callId,
    +                                                                                    v_sip.request.msgHeader.fromField,
    +                                                                                    v_sip.request.msgHeader.toField
    +                                                                                   ))
    +                                                        },
    +                                                        {
    +                                                            mw_SipResponse(mw_Response_2xx_Base)
    +                                                        },
    +                                                        {0, omit},
    +                                                        "TP_MW_PCSCF_REGISTER_05 - 200 OK",
    +                                                        false,
    +                                                        p_checkMessage
    +                                                        )
    +                                       );
    +                p_monitorCompRef.done;
    +            }
    +        } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_05
             
         } // End of group imsRegistration
         
    @@ -791,8 +865,10 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                           in boolean p_checkMessage := false
                                                           ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +//                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    +//                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     var SipMessage v_sip;
                     
                     // Check the SUBSCRIBE
    @@ -802,14 +878,16 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                                 mw_SipRequest(
                                                                               mw_TP_MW_PCSCF_SUBSCRIBE_02(
                                                                                                           -, // FIXME Set expected value
    -                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                      mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                      mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
    +//                                                                                                      mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    +//                                                                                                      mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
                                                                                                           ))
                                                             },
                                                             { mw_SipRequest(mw_SUBSCRIBE_Request_Base) },
                                                             {0, omit},
                                                             "TP_MW_PCSCF_SUBSCRIBE_02 - Request",
    -                                                        false,
    +                                                        true,
                                                             p_checkMessage
                                                             )
                                            );
    @@ -1162,7 +1240,8 @@ module AtsImsIot_TP_behavior_MW_PS {
             
             function f_mtc_check_TP_MW_PCSCF_INVITE_03( // FIXME RMI To be reviewed
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := false
    +                                                   in boolean p_checkMessage := false,
    +                                                   out SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
                     var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    @@ -1181,21 +1260,25 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
                                                             {0, omit},
                                                             "TP_MW_PCSCF_INVITE_03 - Request",
    -                                                        false,
    +                                                        true,
                                                             p_checkMessage
                                                             )
                                            );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
    +                log("##### p_sip: ", p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_03
             
             function f_mtc_check_TP_MW_PCSCF_INVITE_04( // FIXME RMI To be reviewed
                                                        in SipInterfaceMonitor p_monitorCompRef,
    -                                                   in boolean p_checkMessage := false
    +                                                   in boolean p_checkMessage := false,
    +                                                   out SipMessage p_sip
                                                        ) runs on ImsTestCoordinator {
                 if (isvalue(p_monitorCompRef)) {
    -                var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
    -                var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
    +                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
    +                var ImsUserInfo v_userInfoB := f_getTelUserId(PX_EUT_B);
                     
                     // Check the INVITE
                     p_monitorCompRef.start(
    @@ -1203,18 +1286,21 @@ module AtsImsIot_TP_behavior_MW_PS {
                                                             {
                                                                 mw_SipRequest(mw_TP_MW_PCSCF_INVITE_04(
                                                                                                        -, // FIXME Set expected value
    -                                                                                                   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
    -                                                                                                   mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain)
    +                                                                                                   mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
    +                                                                                                   mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                        ))
                                                             },
                                                             { mw_SipRequest(mw_INVITE_Request_Base) },
                                                             {0, omit},
                                                             "TP_MW_PCSCF_INVITE_04 - Request",
    -                                                        false,
    +                                                        true,
                                                             p_checkMessage
                                                             )
                                            );
                     p_monitorCompRef.done;
    +                // Retrieve messge
    +                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
    +                log("##### p_sip: ", p_sip);
                 }
             } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_04
             
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    index 8526091..9ccf70c 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
    @@ -167,6 +167,9 @@ module AtsImsIot_TP_behavior_MW_SI {
                     p_monitorCompRef.done;
                     // Retrieve messge
                     f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
                     // Check REGISTER 401 Unauthorized response
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
    @@ -272,6 +275,9 @@ module AtsImsIot_TP_behavior_MW_SI {
                     p_monitorCompRef.done;
                     // Retrieve messge
                     f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    +                if (not(isbound(v_sip))) {
    +                    return;
    +                }
                     // Check REGISTER 200 OK response
                     p_monitorCompRef.start(
                                            f_Iot_Sip_receive(
    @@ -289,7 +295,7 @@ module AtsImsIot_TP_behavior_MW_SI {
                                                             },
                                                             {0, omit},
                                                             "TP_MW_SCSCF_REGISTER_02 - 200 OK",
    -                                                        true,
    +                                                        false,
                                                             p_checkMessage
                                                             )
                                            );
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn
    index 8f4e4cf..a0bdc8b 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn
    @@ -447,7 +447,7 @@ group g_PCRF {
                 p_monitorCompRef.start (
                     f_Iot_Diameter_receive(
                         {
    -                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Termination(INITIAL_REQUEST_E) }
    +                        DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Termination(TERMINATION_REQUEST_E) }
                         },
                         {
                             DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_basic }
    diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    index b070845..4d82cc0 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
    @@ -232,6 +232,24 @@ module AtsImsIot_Templates_MW {
             ) modifies mw_TP_MW_PCSCF_REGISTER_01 := {
             } // End of template mw_TP_MW_PCSCF_REGISTER_02
             
    +        template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_04(
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?,
    +                                                                      template (present) Authorization p_authorization := ?,
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
    +        ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { 
    +        } // End of template mw_TP_MW_PCSCF_REGISTER_04
    +        
    +        template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_05(
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?,
    +                                                                      template (present) Authorization p_authorization := ?,
    +                                                                      template PChargingVector p_pChargingVector := *,
    +                                                                      template PVisitedNetworkID p_pVisitedNetworkID := *
    +        ) modifies mw_TP_MW_PCSCF_REGISTER_02 := { 
    +        } // End of template mw_TP_MW_PCSCF_REGISTER_05
    +        
             template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_07(
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
    @@ -811,6 +829,46 @@ module AtsImsIot_Templates_MW {
                 }
             } // End of template mw_TP_MW_ICSCF_REGISTER_03
             
    +        template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_04(
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?, 
    +                                                                      template (present) Authorization p_authorization := ?,
    +                                                                      template (present) Path p_Path := ?,
    +                                                                      template (present) PChargingVector p_pChargingVector := ?,
    +                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +        ) modifies mw_TP_MW_ICSCF_REGISTER_01 := {
    +            msgHeader := {
    +                fromField := p_from,
    +                toField := p_to,
    +                authorization := p_authorization,
    +                pAccessNetworkInfo := ?,
    +                path := p_Path,
    +                pChargingVector := p_pChargingVector,
    +                pVisitedNetworkID := p_pVisitedNetworkID,
    +                require := mw_require_path
    +            }
    +        } // End of template mw_TP_MW_ICSCF_REGISTER_04
    +        
    +        template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_05(
    +                                                                      template (present) From p_from := ?,
    +                                                                      template (present) To p_to := ?, 
    +                                                                      template (present) Authorization p_authorization := ?,
    +                                                                      template (present) Path p_Path := ?,
    +                                                                      template (present) PChargingVector p_pChargingVector := ?,
    +                                                                      template (present) PVisitedNetworkID p_pVisitedNetworkID := ?
    +        ) modifies mw_TP_MW_ICSCF_REGISTER_01 := {
    +            msgHeader := {
    +                fromField := p_from,
    +                toField := p_to,
    +                authorization := p_authorization,
    +                pAccessNetworkInfo := ?,
    +                path := p_Path,
    +                pChargingVector := p_pChargingVector,
    +                pVisitedNetworkID := p_pVisitedNetworkID,
    +                require := mw_require_path
    +            }
    +        } // End of template mw_TP_MW_ICSCF_REGISTER_05
    +        
             template(present) REGISTER_Request mw_TP_MW_ICSCF_REGISTER_07(
                                                                           template (present) From p_from := ?,
                                                                           template (present) To p_to := ?,
    -- 
    GitLab
    
    
    From 02ebcf9e725ccd71991601f37ad3fe5807edf9b3 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Mon, 15 Nov 2021 11:30:36 +0000
    Subject: [PATCH 159/176] Minor updates done on DTC tests
    
    ---
     ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    index ba529c0..a88b3f0 100644
    --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn
    @@ -181,7 +181,7 @@ module AtsImsIot_TD_DTC{
                         // test body
                       
                       
    -                    //f_mtc_check_TP_GX_PCRF_RAR_02 ( vc_vxlte_monitor_components.gx, true ); // Check (RAR – Event 5)
    +                    f_mtc_check_TP_GX_PCRF_RAR_02 ( vc_vxlte_monitor_components.gx, false ); // Check (RAR – Event 5)
                         f_mtc_check_TP_GX_PGW_RAA_03 ( vc_vxlte_monitor_components.gx, false ); // Check (RAA – Event 6)
                         //TODO: TP for check BYE?
                         f_mtc_check_TP_RX_PCRF_STA_02 ( vc_vxlte_monitor_components.rx, false ); // Check (STA – Event 4,7)
    @@ -455,7 +455,7 @@ module AtsImsIot_TD_DTC{
                         f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx);// Event 4
                         //f_mtc_check_TP_S9_PCRF_STR_01(vc_vxlte_monitor_components.s9);// Event 5
                         //f_mtc_check_TP_S9_PCRF_STA_02(vc_vxlte_monitor_components.s9);// Event 6
    -                    //f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx, true); // Event 7
    +                    f_mtc_check_TP_GX_PCRF_RAR_04(vc_vxlte_monitor_components.gx, true); // Event 7
                         f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx, false); // Event 8
                         f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 9
                         
    -- 
    GitLab
    
    
    From 618103ebabb7500d9df4882b4a4a29a50d5e6e3a Mon Sep 17 00:00:00 2001
    From: juvancic 
    Date: Mon, 15 Nov 2021 14:43:26 +0100
    Subject: [PATCH 160/176] updated diameter codec
    
    ---
     .../codec/DIAMETERCodec/DIAMETERCodec.java    | 633 +++++++++++++++++-
     1 file changed, 605 insertions(+), 28 deletions(-)
    
    diff --git a/javasrc/com/iskratel/ttcn/tci/codec/DIAMETERCodec/DIAMETERCodec.java b/javasrc/com/iskratel/ttcn/tci/codec/DIAMETERCodec/DIAMETERCodec.java
    index fe83e8c..43ae912 100644
    --- a/javasrc/com/iskratel/ttcn/tci/codec/DIAMETERCodec/DIAMETERCodec.java
    +++ b/javasrc/com/iskratel/ttcn/tci/codec/DIAMETERCodec/DIAMETERCodec.java
    @@ -314,6 +314,7 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
       private static final int AVP_Routing_Rule_Install_AVP = 1081;
       private static final int AVP_Routing_Rule_Remove_AVP = 1075;
       private static final int AVP_QoS_Information_AVP = 1016;
    +  private static final int AVP_Default_EPS_Bearer_QoS_AVP = 1049;
       private static final int AVP_Server_Capabilities_AVP = 603;							//Ref: ETSI TS 129 229 Server_Capabilities_AVP
     //  private static final int AVP_vendIdMandatory_Capability_AVP = 604;							//Ref: ETSI TS 129 229 Mandatory_Capability_AVP
     //  private static final int AVP_vendIdOptional_Capability_AVP = 605;							//Ref: ETSI TS 129 229 Optional_Capability_AVP
    @@ -364,7 +365,24 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
       ////private static final int AVP_Experimental_Result_Code_AVP = 298;
       ////private static final int AVP_Experimental_Result_AVP = 297; 
       ////private static final int AVP_User_Data_AVP = 606;
    -
    +  //TS129_214 AVP codes
    +  private static final int AVP_Media_Component_Description_AVP = 517;
    +  private static final int AVP_Media_Component_Nr_AVP = 518;
    +  private static final int AVP_Media_Sub_Component_AVP = 519;
    +  private static final int AVP_AF_Application_Identifier_AVP = 504;
    +  private static final int AVP_Media_Type_AVP = 520;
    +  private static final int AVP_AF_Signalling_Protocol_AVP = 529;
    +  private static final int AVP_Reservation_Priority_AVP = 458;
    +  private static final int AVP_RS_Bandwidth_AVP = 522;
    +  private static final int AVP_RR_Bandwidth_AVP = 521;
    +  private static final int AVP_Codec_Data_AVP = 524;
    +  private static final int AVP_Flow_Description_AVP = 507;
    +  private static final int AVP_Flow_Number_AVP = 509;
    +  private static final int AVP_Flow_Status_AVP = 511;
    +  private static final int AVP_Flow_Usage_AVP = 512;
    +  private static final int AVP_Specific_Action_AVP = 513;
    +  private static final int AVP_Service_Info_Status_AVP = 527;
    +  private static final int AVP_Rx_Request_Type_AVP = 533;
       
       //TS129_215 AVP codes
       private static final int AVP_QoS_Rule_Name_AVP = 1054;
    @@ -420,6 +438,8 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
        private static final int AVP_APN_OI_Replacement_AVP = 1427;
        private static final int AVP_Max_Requested_Bandwidth_UL_AVP = 516;
        private static final int AVP_Max_Requested_Bandwidth_DL_AVP = 515;
    +   private static final int AVP_APN_Aggregate_Max_Bitrate_UL_AVP = 1041;
    +   private static final int AVP_APN_Aggregate_Max_Bitrate_DL_AVP = 1040;
        private static final int AVP_AMBR_AVP = 1435;
        
        private static final int AVP_All_APN_Conf_Included_Id_AVP = 1428;
    @@ -427,6 +447,9 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
        private static final int AVP_PDN_Type_AVP = 1456;
        private static final int AVP_QoS_Class_Identifier_AVP=1028;
        private static final int AVP_Priority_Level_AVP = 1046;
    +   private static final int AVP_Pre_emption_Capability_AVP = 1047;
    +   private static final int AVP_Pre_emption_Vulnerability_AVP = 1048;
    + 
        private static final int AVP_Allocation_Retention_Priority_AVP =1034;
        private static final int AVP_EPS_Subscribed_QoS_Profile_AVP = 1431;
        private static final int AVP_APN_Configuration_AVP = 1430;
    @@ -1020,7 +1043,7 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
         	  	    //UnionValue NewHypotesisu = (UnionValue) decodingHypothesis.newInstance();
     	    		try {
     	    			// Now we parse the received String instead of the byteArray
    -	    			Message = Codec.decodeDiameterMessage(encodedMsg,0);
    +	    			Message = Codec.decodeDiameterMessage(encodedMsg,0);	   	    		
     	    		}
     	    		catch (DiameterMessageDecodeException ex) {
     	    		    RB.getTciTLProvidedV321TT().tliRT("", System.currentTimeMillis(), "", -1,	null, RTLoggingConstants.RT_LOG_ERROR, "DIAMETERCodec: exception:"+ex.getMessage());
    @@ -1400,6 +1423,7 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		/*RFC4005*/
     		decode_Framed_IP_Address_AVP(rv_DiameterM, msg);
     		decode_Framed_IPv6_Prefix_AVP(rv_DiameterM, msg);
    +		decode_Called_Station_Id_AVP(rv_DiameterM ,msg);
     		/*End RFC4005 AVPs*/
     		
     		/*RFC4006*/
    @@ -1446,7 +1470,11 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		decode_Experimental_Result_AVP(rv_DiameterM,	 msg);
     		decode_User_Data_AVP(rv_DiameterM,	 msg);
     		/*End Sh*/
    -		
    +		//TS129?214 AVP codes
    +		decode_Media_Component_Description_AVP(rv_DiameterM,	 msg);
    +		decode_Service_Info_Status_AVP(rv_DiameterM,	 msg);
    +		decode_Specific_Action_AVP(rv_DiameterM,	 msg);
    +		decode_Rx_Request_Type_AVP(rv_DiameterM,	 msg);
     		//TS129_215 AVP codes
     		decode_Routing_Rule_Install_AVP(rv_DiameterM,	 msg);
     		decode_Routing_Rule_Remove_AVP(rv_DiameterM,	 msg);
    @@ -1506,7 +1534,12 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		decode_Event_Trigger_AVP(rv_DiameterM,	 msg);
     		decode_Session_Release_Cause_AVP(rv_DiameterM,	 msg);
     		decode_AN_GW_Addr_AVP(rv_DiameterM,	 msg);
    -	
    +	    
    +		/*TS129_212*/
    +		decode_Default_EPS_Bearer_QoS_AVP(rv_DiameterM,	 msg);
    +		decode_Charging_Rule_Install_AVP(rv_DiameterM,	 msg);
    +		decode_Charging_Rule_Remove_AVP(rv_DiameterM,	 msg);
    +		
     		if (rov_any_AVP.getLength()>0){
     			rv_DiameterM.setField("aVP_Type", rov_any_AVP);
     		}
    @@ -2608,6 +2641,24 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     	/*End Rx Types */
     	
     	/*RFC4005 Types*/
    +    private void decode_Called_Station_Id_AVP(RecordValue rv_DiameterM,	DiameterMessage msg){
    +        AVP[] avp=msg.findAVPs(AVP_Called_Station_Id_AVP);
    +		
    +		if (avp==null) return;
    +		
    +		if (avp.length>1){} //Should never be more than one AVP
    +		else{
    +			RecordValue rv = (RecordValue) rv_DiameterM.getField("called_Station_Id").getType().newInstance();
    +			
    +			decode_AVPHeader( rv ,avp[0]);
    +			rv.setField("aVP_Data", mkCvUTF8(avp[0].getStringData()));
    +									
    +			rv_DiameterM.setField("called_Station_Id",rv);
    +		}
    +		return;
    +	}
    +	
    +	
     	private void decode_Called_Station_Id_AVP(RecordValue rv_,	AVP avp_){
     		AVP[] avp=avp_.findChildAVPs(AVP_Called_Station_Id_AVP);
     		
    @@ -2854,7 +2905,7 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     				for (int i = 0; i < avps.length; i++) {
     				    RecordValue rv = (RecordValue) recOfSubscription_Id.getElementType().newInstance();
     				    
    -				    try{avps[0].ungroup();}catch(Exception e){return;}
    +				    try{avps[i].ungroup();}catch(Exception e){return;}
     				    
     				    decode_AVPHeader( rv ,avps[i]);
     		     		decode_Subscription_Id_Type_AVP(rv,avps[i]);
    @@ -3802,7 +3853,7 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     			    for (int i = 0; i < avps.length; i++) {   
     				    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
     				   
    -				    try{avps[0].ungroup();}catch(Exception e){}
    +				    try{avps[i].ungroup();}catch(Exception e){}
     
     		        	decode_AVPHeader( rv ,avps[i]);
     		        	decode_Charging_Rule_Name_AVP( rv ,avps[i]);//            charging_Rule_Name optional,
    @@ -3816,6 +3867,51 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		return;	
         }
         
    +    private void decode_Charging_Rule_Remove_AVP(RecordValue rv_rid,	DiameterMessage rt){
    +    	
    +    	boolean rv_present=false;
    +    	AVP[] avps=rt.findAVPs(AVP_Charging_Rule_Remove_AVP);
    +   	    if (avps==null) return;
    +    	
    +        if (avps.length>=1){
    +        	try{
    + 			   RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("charging_Rule_Remove").getType().newInstance();
    + 			   
    + 			   try{avps[0].ungroup();}catch(Exception e){}
    + 			   
    + 			   decode_AVPHeader( rv ,avps[0]);
    + 			   decode_Charging_Rule_Name_AVP( rv ,avps[0]);//            charging_Rule_Name optional,
    +//             set of Charging_Rule_Base_Name_AVP        charging_Rule_Base_Name optional,
    +//             set of AVP_Type                         aVP_Type optional
    +            
    +               rv_rid.setField("charging_Rule_Remove",rv);
    +			   rv_present=true;
    +			   return;
    +			}
    +			catch(Exception ex){
    +				//System.out.print(ex.getMessage());
    +			}
    +			if(!rv_present){
    +				RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("charging_Rule_Remove").getType().newInstance();
    +			    rov_rt.setLength(0);
    +			    
    +			    for (int i = 0; i < avps.length; i++) {   
    +				    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
    +				   
    +				    try{avps[i].ungroup();}catch(Exception e){}
    +
    +		        	decode_AVPHeader( rv ,avps[i]);
    +		        	decode_Charging_Rule_Name_AVP( rv ,avps[i]);//            charging_Rule_Name optional,
    +//		            set of Charging_Rule_Base_Name_AVP        charging_Rule_Base_Name optional,
    +//		            set of AVP_Type                         aVP_Type optional		           
    +		            rov_rt.appendField(rv);
    + 				}			    	    
    + 			    rv_rid.setField("charging_Rule_Remove",rov_rt);
    + 			}
    +        }
    +		return;	
    +    }
    +
         private void decode_Charging_Rule_Install_AVP(RecordValue rv_rid,	AVP rt){
         	
         	boolean rv_present=false;
    @@ -3874,6 +3970,64 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		return;	
         }
         
    +    private void decode_Charging_Rule_Install_AVP(RecordValue rv_rid,	DiameterMessage rt){
    +    	
    +    	boolean rv_present=false;
    +    	AVP[] avps=rt.findAVPs(AVP_Charging_Rule_Install_AVP);
    +   	    if (avps==null) return;
    +    	
    +    	
    +        if (avps.length>=1){
    +        	try{
    + 			   RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("charging_Rule_Install").getType().newInstance();
    + 			   
    + 			  try{avps[0].ungroup();}catch(Exception e){}
    + 			  
    + 			  decode_AVPHeader( rv ,avps[0]);    	
    +//            set of Charging_Rule_Definition_AVP        charging_Rule_Definition optional,
    +              decode_Charging_Rule_Name_AVP( rv ,avps[0]);//            charging_Rule_Name optional,
    +//            set of Charging_Rule_Base_Name_AVP        charging_Rule_Base_Name optional,
    +//            Bearer_Identifier_AVP                    bearer_Identifier optional,
    +//            Rule_Activation_Time_AVP                rule_Activation_Time optional,
    +//            Rule_DeActivation_Time_AVP                rule_DeActivation_Time optional,
    +//            Resource_Allocation_Notification_AVP    resource_Allocation_Notification optional,
    +//            Charging_Correlation_Indicator_AVP        charging_Correlation_Indicator optional,
    +//            set of AVP_Type                         aVP_Type optional
    +            
    +               rv_rid.setField("charging_Rule_Install",rv);
    +			   rv_present=true;
    +			   return;
    +			}
    +			catch(Exception ex){
    +				//System.out.print(ex.getMessage());
    +			}
    +			if(!rv_present){
    +				RecordOfValue rov_rt = (RecordOfValue) rv_rid.getField("charging_Rule_Install").getType().newInstance();
    +			    rov_rt.setLength(0);
    +			    
    +			    for (int i = 0; i < avps.length; i++) {
    +				    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
    +				    
    +				    try{avps[0].ungroup();}catch(Exception e){}
    +		        	
    +		        	decode_AVPHeader( rv ,avps[i]);
    +//		            set of Charging_Rule_Definition_AVP        charging_Rule_Definition optional,
    +		        	decode_Charging_Rule_Name_AVP( rv ,avps[i]);//            charging_Rule_Name optional,
    +//		            set of Charging_Rule_Base_Name_AVP        charging_Rule_Base_Name optional,
    +//		            Bearer_Identifier_AVP                    bearer_Identifier optional,
    +//		            Rule_Activation_Time_AVP                rule_Activation_Time optional,
    +//		            Rule_DeActivation_Time_AVP                rule_DeActivation_Time optional,
    +//		            Resource_Allocation_Notification_AVP    resource_Allocation_Notification optional,
    +//		            Charging_Correlation_Indicator_AVP        charging_Correlation_Indicator optional,
    +//		            set of AVP_Type                         aVP_Type optional
    +		            rov_rt.appendField(rv);
    + 				}	    
    + 			    rv_rid.setField("charging_Rule_Install",rov_rt);
    + 			}
    +        }
    +		return;	
    +    }
    +    
        private void decode_Charging_Rule_Report_AVP(RecordValue rv_rid,	DiameterMessage rt){
         	
         	boolean rv_present=false;
    @@ -3948,8 +4102,8 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     			   //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);//                guaranteed_Bitrate_DL optional,
     			   //decode_Bearer_Identifier_AVP ( rv ,avps[i]);//                   bearer_Identifier optional,
     			   decode_Allocation_Retention_Priority_AVP( rv ,avps[0]);//        allocation_Retention_Priority optional,
    -			   //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    -			   //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_DL optional,
    +			   decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[0]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    +			   decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[0]);//        aPN_Aggregate_Max_Bitrate_DL optional,
     	           //decode_AVP_Type(rv ,avps[i]);//                aVP_Data optional    //other parameters.
     	     	   
     			   rv_rid.setField("qoS_Information",rv);
    @@ -3976,8 +4130,8 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
      				    //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);//                guaranteed_Bitrate_DL optional,
      				    //decode_Bearer_Identifier_AVP ( rv ,avps[i]);//                   bearer_Identifier optional,
      				    decode_Allocation_Retention_Priority_AVP( rv ,avps[i]);//        allocation_Retention_Priority optional,
    - 				    //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    - 				    //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_DL optional,
    + 				    decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    + 				    decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_DL optional,
      		            
      		            //decode_AVP_Type(rv ,avps[i]);//                aVP_Data optional    //other parameters.
      			
    @@ -3994,10 +4148,10 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
         	boolean rv_present=false;
         	AVP[] avps=rt.findAVPs(AVP_QoS_Information_AVP);
        	    if (avps==null) return;
    -    	
    +	   	    
             if (avps.length>=1){
             	try{
    - 			    RecordValue rv = (RecordValue) (RecordValue) rv_rid.getField("qoS_Information").getType().newInstance();
    + 			    RecordValue rv = (RecordValue) rv_rid.getField("qoS_Information").getType().newInstance();
      			   
      			    try{avps[0].ungroup();}catch(Exception e){}
      			   
    @@ -4009,8 +4163,8 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     			    //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);//                guaranteed_Bitrate_DL optional,
     			    //decode_Bearer_Identifier_AVP ( rv ,avps[i]);//                   bearer_Identifier optional,
     			    decode_Allocation_Retention_Priority_AVP( rv ,avps[0]);//        allocation_Retention_Priority optional,
    -			    //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    -			    //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_DL optional,
    +			    decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[0]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    +			    decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[0]);//        aPN_Aggregate_Max_Bitrate_DL optional,
     	            
     	            //decode_AVP_Type(rv ,avps[i]);//                aVP_Data optional    //other parameters.
     		
    @@ -4029,7 +4183,7 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
      					   
      				    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
      				    
    - 				    try{avps[0].ungroup();}catch(Exception e){}
    + 				    try{avps[i].ungroup();}catch(Exception e){}
      		        	
      				    decode_AVPHeader( rv ,avps[i]);
      				    decode_QoS_Class_Identifier_AVP ( rv ,avps[i]);//               qoS_Class_Identifier optional,
    @@ -4039,8 +4193,8 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
      				    //decode_Guaranteed_Bitrate_DL_AVP( rv ,avps[i]);//                guaranteed_Bitrate_DL optional,
      				    //decode_Bearer_Identifier_AVP ( rv ,avps[i]);//                   bearer_Identifier optional,
      				    decode_Allocation_Retention_Priority_AVP( rv ,avps[i]);//        allocation_Retention_Priority optional,
    - 				    //decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    - 				    //decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_DL optional,
    + 				    decode_APN_Aggregate_Max_Bitrate_UL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_UL optional,
    + 				    decode_APN_Aggregate_Max_Bitrate_DL_AVP( rv ,avps[i]);//        aPN_Aggregate_Max_Bitrate_DL optional,
      		            
      		            //decode_AVP_Type(rv ,avps[i]);//                aVP_Data optional    //other parameters.
      			
    @@ -4052,6 +4206,25 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		return;	
         }
         
    +    public void decode_Default_EPS_Bearer_QoS_AVP(RecordValue rv_rid,	DiameterMessage rt){
    +    
    +        AVP avp=rt.findAVP(AVP_Default_EPS_Bearer_QoS_AVP);
    +   	    if (avp==null) return;
    +   	    
    +   	    RecordValue rv_eps = (RecordValue) (RecordValue) rv_rid.getField("default_EPS_Bearer_QoS").getType().newInstance();
    +   	   
    +   	    try{avp.ungroup();}catch(Exception e){}
    +	    
    +   	    decode_AVPHeader( rv_eps,avp);
    +	     		
    +        decode_QoS_Class_Identifier_AVP(rv_eps,avp);//            qoS_Class_Identifier optional,
    +        decode_Allocation_Retention_Priority_AVP(rv_eps,avp);//    allocation_Retention_Priority optional,
    +        //decode_AVP_Type( rv_eps ,avp);
    +	    rv_rid.setField("default_EPS_Bearer_QoS",rv_eps);
    +	  	return;
    +        
    +    }
    +    
         private void decode_Server_Capabilities_AVP(RecordValue rv_sid,	AVP sc){
         	
            AVP avp=sc.findChildAVP(AVP_Server_Capabilities_AVP);
    @@ -4594,6 +4767,352 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
         }
         /*End TS129_329 AVPS*/
         
    +    /*TS129_214 AVPS*/
    +		private void decode_Media_Sub_Component_AVP(RecordValue rv_ufd,	AVP avps2){
    +	    	
    +			AVP[] avps=avps2.findChildAVPs(AVP_Media_Sub_Component_AVP);
    +	   	    if (avps==null) return;
    +	
    +	   	    
    +		   	    RecordOfValue rov_rt = (RecordOfValue) rv_ufd.getField("media_Sub_component").getType().newInstance();
    +			    rov_rt.setLength(0);
    +			    
    +			    for (int i = 0; i < avps.length; i++) {
    +					   
    +				    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
    +		        	
    +				    try{avps[i].ungroup();}catch(Exception e){}
    +				    
    +				    decode_AVPHeader( rv ,avps[i]);//
    +	
    +				    decode_Flow_Number_AVP( rv ,avps[i]);//                                flow_Number,
    +	                /*/record length (0..2) of */decode_Flow_Description_AVP( rv ,avps[i]);//     flow_Description optional,
    +				    decode_Flow_Status_AVP( rv ,avps[i]);//                                flow_Status optional,
    +				    decode_Flow_Usage_AVP( rv ,avps[i]);//                                    flow_Usage optional,
    +				    decode_Max_Requested_Bandwidth_UL_AVP( rv ,avps[i]);//                    max_Requested_Bw_Ul optional,
    +				    decode_Max_Requested_Bandwidth_DL_AVP( rv ,avps[i]);//                    max_Requested_Bw_Dl optional,
    +				    decode_AF_Signalling_Protocol_AVP( rv ,avps[i]);//                        af_Signalling_Protocol optional,
    +	                //set of AVP_Type                                   aVP_Type optional
    +			
    +				    rov_rt.appendField(rv);
    +				} 	    
    +			    rv_ufd.setField("media_Sub_component",rov_rt);	
    +			
    +	    	return;
    +	    }
    +    
    +		private void decode_Media_Component_Number_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_Media_Component_Nr_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("media_Component_Nr").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("media_Component_Nr",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_AF_Application_Identifier_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_AF_Application_Identifier_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("af_Application_Id").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkOctetstring(avp.data));
    +	     	  
    +	        rv_.setField("af_Application_Id",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_Media_Type_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_Media_Type_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("media_type").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("media_type",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_AF_Signalling_Protocol_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_AF_Signalling_Protocol_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("af_Signalling_Protocol").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("af_Signalling_Protocol",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_Reservation_Priority_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_Reservation_Priority_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("reservation_Priority").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("reservation_Priority",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_RS_Bandwidth_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_RS_Bandwidth_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("rs_Bw").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("rs_Bw",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_RR_Bandwidth_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_RR_Bandwidth_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("rr_Bw").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("rr_Bw",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +        private void decode_Codec_Data_AVP(RecordValue rv_ufd,	AVP avps2){
    +	    	
    +			AVP[] avps=avps2.findChildAVPs(AVP_Codec_Data_AVP);
    +	   	    if (avps==null) return;
    +	
    +	   	    
    +		   	    RecordOfValue rov_rt = (RecordOfValue) rv_ufd.getField("codec_data").getType().newInstance();
    +			    rov_rt.setLength(0);
    +			    
    +			    for (int i = 0; i < avps.length; i++) {
    +					   
    +				    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
    +		        	
    +				    try{avps[i].ungroup();}catch(Exception e){}
    +				    
    +				    decode_AVPHeader( rv ,avps[i]);//
    +				    rv.setField("aVP_Data", mkOctetstring(avps[i].data));
    +			     	  
    +				    rov_rt.appendField(rv);
    +				} 	    
    +			    rv_ufd.setField("codec_data",rov_rt);	
    +			
    +	    	return;
    +	    }
    + 
    +        private void decode_Flow_Description_AVP( RecordValue rv_ufd,	AVP avps2){
    +	    	
    +			AVP[] avps=avps2.findChildAVPs(AVP_Flow_Description_AVP);
    +	   	    if (avps==null) return;
    +	
    +	   	    
    +		   	    RecordOfValue rov_rt = (RecordOfValue) rv_ufd.getField("flow_Description").getType().newInstance();
    +			    rov_rt.setLength(0);
    +			    
    +			    for (int i = 0; i < avps.length; i++) {
    +					   
    +				    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
    +		        	
    +				    try{avps[i].ungroup();}catch(Exception e){}
    +				    
    +				    decode_AVPHeader( rv ,avps[i]);//
    +				    //decode_IPFilterRule_Type_AVP(rv ,avps[i]);///      aVP_Data
    +			     	  
    +				    rov_rt.appendField(rv);
    +				} 	    
    +			    rv_ufd.setField("flow_Description",rov_rt);	
    +			
    +	    	return;
    +	    }		
    +		private void decode_Flow_Number_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_Flow_Number_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("flow_Number").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("flow_Number",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_Flow_Status_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_Flow_Status_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("flow_Status").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("flow_Status",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_Flow_Usage_AVP(RecordValue rv_,	AVP avp_){
    +	    	
    +	    	AVP avp=avp_.findChildAVP(AVP_Flow_Usage_AVP);
    +	   	    if (avp==null) return;
    +	   	   
    +	   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("flow_Usage").getType().newInstance();
    +		   
    +		    decode_AVPHeader( rv_uf ,avp);
    +		    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +	     	  
    +	        rv_.setField("flow_Usage",rv_uf);
    +	    
    +	    	return;
    +	    }
    +		
    +		private void decode_Specific_Action_AVP(RecordValue rv_ufd,	DiameterMessage uf){
    +                
    +           	boolean rv_present=false;
    +  	        AVP avps[]=uf.findAVPs(AVP_Specific_Action_AVP);
    +  	        if (avps==null) return;
    +  	         
    +  	        if (avps.length>=1){
    +  	        	try{
    +  	        		RecordValue rv_uf = (RecordValue) rv_ufd.getField("specific_Action").getType().newInstance();
    +  	          	   
    +  	         	    decode_AVPHeader( rv_uf ,avps[0]);
    +  	         	    rv_uf.setField("aVP_Data", mkInt(avps[0].int_data));
    +  	         	
    +  	                rv_ufd.setField("specific_Action",rv_uf);
    +  	 			    rv_present=true;
    +  	 			    return;
    +  	 			}
    +  	 			catch(Exception ex){
    +  	 				//System.out.print(ex.getMessage());
    +  	 			}
    +  	 			if(!rv_present){
    +  					RecordOfValue recOfrr = (RecordOfValue) rv_ufd.getField("specific_Action").getType().newInstance();
    +  					recOfrr.setLength(0);
    +  				
    +  					for (int i = 0; i < avps.length; i++) {
    +  					    RecordValue rv = (RecordValue) recOfrr.getElementType().newInstance();
    +  			        	
    +  					    decode_AVPHeader( rv ,avps[i]);
    +  					    rv.setField("aVP_Data", mkInt(avps[i].int_data));	
    +  			     	
    +  			    	    recOfrr.appendField(rv);
    +  					}
    +  					rv_ufd.setField("specific_Action",recOfrr);
    +  	 			}
    +  	        }
    +  	        return;
    +           	
    +           	
    +           	
    +           
    +		}
    +		
    +		
    +	private void decode_Media_Component_Description_AVP(RecordValue rv_ufd,	DiameterMessage uf){
    +    	
    +		AVP[] avps=uf.findAVPs(AVP_Media_Component_Description_AVP);
    +   	    if (avps==null) return;
    +
    +   	    
    +	   	    RecordOfValue rov_rt = (RecordOfValue) rv_ufd.getField("media_Component_Description").getType().newInstance();
    +		    rov_rt.setLength(0);
    +		    
    +		    for (int i = 0; i < avps.length; i++) {
    +				   
    +			    RecordValue rv = (RecordValue) rov_rt.getElementType().newInstance();
    +	        	
    +			    try{avps[i].ungroup();}catch(Exception e){}
    +			    
    +			    decode_AVPHeader( rv ,avps[i]);
    +
    +	            decode_Media_Component_Number_AVP( rv ,avps[i] );//   media_Component_Nr);
    +	            /*set of*/decode_Media_Sub_Component_AVP( rv ,avps[i] );// media_Sub_component optional,
    +	            decode_AF_Application_Identifier_AVP( rv ,avps[i] );//    af_Application_Id optional,
    +	            decode_Media_Type_AVP( rv ,avps[i] );//                    media_type optional,
    +	            decode_Max_Requested_Bandwidth_UL_AVP( rv ,avps[i] );//    max_Requested_Bw_Ul optional,
    +	            decode_Max_Requested_Bandwidth_DL_AVP( rv ,avps[i] );//    max_Requested_Bw_Dl optional,
    +	            decode_Flow_Status_AVP( rv ,avps[i] );//                flow_Status optional,
    +	            decode_Reservation_Priority_AVP( rv ,avps[i] );//        reservation_Priority optional,
    +	            decode_RS_Bandwidth_AVP( rv ,avps[i] );//                rs_Bw optional,
    +	            decode_RR_Bandwidth_AVP( rv ,avps[i] );//                rr_Bw optional,
    +	            /*set of*/decode_Codec_Data_AVP( rv ,avps[i] );//            codec_data optional
    +		
    +			    rov_rt.appendField(rv);
    +			} 	    
    +		    rv_ufd.setField("media_Component_Description",rov_rt);	
    +		
    +    	return;
    +    }
    +
    +	private void decode_Service_Info_Status_AVP(RecordValue rv_,	DiameterMessage uf){
    +    	
    +    	AVP avp=uf.findAVP(AVP_Service_Info_Status_AVP);
    +   	    if (avp==null) return;
    +   	   
    +   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("service_Info_Status").getType().newInstance();
    +	   
    +	    decode_AVPHeader( rv_uf ,avp);
    +	    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +     	  
    +        rv_.setField("service_Info_Status",rv_uf);
    +    
    +    	return;
    +    }
    +	
    +    private void decode_Rx_Request_Type_AVP(RecordValue rv_,	DiameterMessage uf){
    +    	
    +    	AVP avp=uf.findAVP(AVP_Rx_Request_Type_AVP);
    +   	    if (avp==null) return;
    +   	   
    +   	    RecordValue rv_uf = (RecordValue) (RecordValue) rv_.getField("rx_Request_Type").getType().newInstance();
    +	   
    +	    decode_AVPHeader( rv_uf ,avp);
    +	    rv_uf.setField("aVP_Data", mkInt(avp.int_data));
    +     	  
    +        rv_.setField("rx_Request_Type",rv_uf);
    +    
    +    	return;
    +    }
    +	
    +	
    + 
    +    /*End TS129_214 AVPS*/
    +
         /*TS129_215 AVPS*/
         private void decode_Routing_Rule_Install_AVP(RecordValue rv_,	AVP avp_){
         	
    @@ -5618,12 +6137,12 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		AVP avp=avp_.findChildAVP(AVP_Max_Requested_Bandwidth_UL_AVP);
        	    if (avp==null) return;
        	   
    -   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("max_Requested_Bandwidth_UL").getType().newInstance();
    +   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("max_Requested_Bw_Ul").getType().newInstance();
     	   
     	    decode_AVPHeader( rv_ed ,avp);
     	    rv_ed.setField("aVP_Data", mkInt(avp.int_data));
     	    
    -	    rv_.setField("max_Requested_Bandwidth_UL",rv_ed);
    +	    rv_.setField("max_Requested_Bw_Ul",rv_ed);
     	    return;
     	}
     	
    @@ -5632,14 +6151,43 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     		AVP avp=avp_.findChildAVP(AVP_Max_Requested_Bandwidth_DL_AVP);
        	    if (avp==null) return;
        	   
    -   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("max_Requested_Bandwidth_DL").getType().newInstance();
    +   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("max_Requested_Bw_Dl").getType().newInstance();
    +	   
    +	    decode_AVPHeader( rv_ed ,avp);
    +	    rv_ed.setField("aVP_Data", mkInt(avp.int_data));
    +	    
    +	    rv_.setField("max_Requested_Bw_Dl",rv_ed);
    +	    return;
    +	}
    +	
    +	private void decode_APN_Aggregate_Max_Bitrate_UL_AVP(RecordValue rv_,	AVP avp_){
    +		
    +		AVP avp=avp_.findChildAVP(AVP_APN_Aggregate_Max_Bitrate_UL_AVP);
    +   	    if (avp==null) return;
    +   	   
    +   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("aPN_Aggregate_Max_Bitrate_UL").getType().newInstance();
    +	   
    +	    decode_AVPHeader( rv_ed ,avp);
    +	    rv_ed.setField("aVP_Data", mkInt(avp.int_data));
    +	    
    +	    rv_.setField("aPN_Aggregate_Max_Bitrate_UL",rv_ed);
    +	    return;
    +	}
    +	
    +	private void decode_APN_Aggregate_Max_Bitrate_DL_AVP(RecordValue rv_,	AVP avp_){
    +		
    +		AVP avp=avp_.findChildAVP(AVP_APN_Aggregate_Max_Bitrate_DL_AVP);
    +   	    if (avp==null) return;
    +   	   
    +   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("aPN_Aggregate_Max_Bitrate_DL").getType().newInstance();
     	   
     	    decode_AVPHeader( rv_ed ,avp);
     	    rv_ed.setField("aVP_Data", mkInt(avp.int_data));
     	    
    -	    rv_.setField("max_Requested_Bandwidth_DL",rv_ed);
    +	    rv_.setField("aPN_Aggregate_Max_Bitrate_DL",rv_ed);
     	    return;
     	}
    +	
         
         private void decode_AMBR_AVP(RecordValue rv_, AVP avp_) {                                //ref: 7.3.33
         	
    @@ -5712,13 +6260,14 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
        			String _str="";
     
        		   	AVP avp=avp_.findChildAVP(AVP_QoS_Class_Identifier_AVP);
    +   		   
        		    if (avp==null) return;
        		        	
        		    RecordValue rv_c = (RecordValue) rv_.getField("qoS_Class_Identifier").getType().newInstance();
        		       
        		    decode_AVPHeader( rv_c ,avp);
        		    
    -   	        switch(avp.int_data){
    +   	        /*switch(avp.int_data){
     	   	        case 0: _str="Reserved1_E";break;//                (  0),
     	    		case 1: _str="QCI_1_E";break;//                 (  1),
     	    		case 2: _str="QCI_2_E";break;//                 (  2),
    @@ -5734,10 +6283,10 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     	   			   else if (avp.int_data>=128 & avp.int_data<=254) _str="OperatorSpecific_E";//        (128),    // .. 254
     	   			   else if (avp.int_data==255 )  _str="Reserved3_E";//                (255)break;
        		    }
    -   	        
    -   			EnumeratedValue e= (EnumeratedValue)rv_c.getField("qoS_Class_Identifier_Code");
    -   			e.setEnum(_str);
    -   			rv_c.setField("qoS_Class_Identifier_Code", e);
    +   	        */
    +   			//EnumeratedValue e= (EnumeratedValue)rv_c.getField("aVP_Data"/*qoS_Class_Identifier_Code"*/);
    +   			//e.setEnum(_str);
    +   			rv_c.setField("aVP_Data"/*qoS_Class_Identifier_Code", e*/,mkInt(avp.int_data));
        			
        		    rv_.setField("qoS_Class_Identifier",rv_c);
        			return;
    @@ -5756,6 +6305,34 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     	   		    rv_.setField("priority_Level",rv_ed);
     	   		    return;
     	   		}
    +	   		
    +            private void decode_Pre_emption_Capability_AVP(RecordValue rv_,	AVP avp_){
    +	   			
    +	   			AVP avp=avp_.findChildAVP(AVP_Pre_emption_Capability_AVP);
    +	   	   	    if (avp==null) return;
    +	   	   	   
    +	   	   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("pre_emption_Capability").getType().newInstance();
    +	   		   
    +	   		    decode_AVPHeader( rv_ed ,avp);
    +	   		    rv_ed.setField("aVP_Data", mkInt(avp.int_data));
    +	   		    
    +	   		    rv_.setField("pre_emption_Capability",rv_ed);
    +	   		    return;
    +	   		}
    +            
    +            private void decode_Pre_emption_Vulnerability_AVP(RecordValue rv_,	AVP avp_){
    +	   			
    +	   			AVP avp=avp_.findChildAVP(AVP_Pre_emption_Vulnerability_AVP);
    +	   	   	    if (avp==null) return;
    +	   	   	   
    +	   	   	    RecordValue rv_ed = (RecordValue) (RecordValue) rv_.getField("pre_emption_Vulnerability").getType().newInstance();
    +	   		   
    +	   		    decode_AVPHeader( rv_ed ,avp);
    +	   		    rv_ed.setField("aVP_Data", mkInt(avp.int_data));
    +	   		    
    +	   		    rv_.setField("pre_emption_Vulnerability",rv_ed);
    +	   		    return;
    +	   		}
        		
        		private void decode_Allocation_Retention_Priority_AVP(RecordValue rv_,	AVP avp_){                                //ref: 7.3.34
        		   	
    @@ -5768,8 +6345,8 @@ private static final int AVP_Value_Digits_AVP = 447; 							//Ref: RFC4006 8.10.
     
     	    	decode_AVPHeader( rv_c ,avp);
                 decode_Priority_Level_AVP( rv_c ,avp);//                    priority_Level,
    -            //Pre_emption_Capability_AVP            pre_emption_Capability            optional,
    -            //Pre_emption_Vulnerability_AVP        pre_emption_Vulnerability        optional
    +            decode_Pre_emption_Capability_AVP(rv_c ,avp);//            pre_emption_Capability            optional,
    +            decode_Pre_emption_Vulnerability_AVP( rv_c ,avp);//        pre_emption_Vulnerability        optional
     	    	
     	    	rv_.setField("allocation_Retention_Priority",rv_c);
     	        return;
    -- 
    GitLab
    
    
    From 9ac790aafdbfea4d93335181502d2f2669abe509 Mon Sep 17 00:00:00 2001
    From: juvancic 
    Date: Mon, 15 Nov 2021 14:44:09 +0100
    Subject: [PATCH 161/176] updated ta  module
    
    ---
     .../ttcn/tri/IotConnectionOffline.java        | 505 +++++++++---------
     1 file changed, 254 insertions(+), 251 deletions(-)
    
    diff --git a/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java
    index 653affd..0c653fe 100644
    --- a/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java
    +++ b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java
    @@ -26,254 +26,255 @@ import java.util.LinkedList;
     import java.util.List;
     import java.util.Queue;
     
    -public class IotConnectionOffline extends Thread/* PCAP */ implements LocalAdapterBase {
    -
    +public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapterBase {
    +		
     	TriCommunicationTE cte = null;
     	TriPortId comPortId = null;
     	TriPortId tsiPortId = null;
     
    -	Logger log = null;
    -
    -	public static Hashtable ComponentCollection = new Hashtable();
    -	public static Hashtable ComponentCollectionCompPort = new Hashtable();
    -	public static Hashtable ComponentCollectionFilter2Port = new Hashtable();
    -
    -	private Queue FilterMsgFIFO = new LinkedList<>(); // for selection sequence to which PTC first send
    -																		// resonse
    -
    -	public String tracefile = "";
    -
    -	public class FilterPackets {
    -		public List packets;
    -		public String filter;
    -		public TriComponentId componentId;
    -		public TriPortId tsiPortId;
    -		public TriCommunicationTE cte;
    -		final IotConnectionOffline this$0;
    -
    -		public boolean equals(Object obj) {
    -			if (obj instanceof FilterPackets) {
    -				return filter.equals(((FilterPackets) obj).filter);
    -			} else {
    -				return false;
    -			}
    -		}
    -
    -		public int hashCode() {
    -			return filter.hashCode() + componentId.hashCode();
    -		}
    -
    -		public FilterPackets(String filter) {
    -			super();
    -			this$0 = IotConnectionOffline.this;
    -			this.filter = filter;
    -		}
    -
    -		public FilterPackets(String filter, TriComponentId componentId, TriPortId tsiPortId, TriCommunicationTE cte) {
    -			this(filter);
    -			this.componentId = componentId;
    -			this.tsiPortId = tsiPortId;
    -			this.cte = cte;
    -		}
    -
    -		public void setPackets(List packets) {
    -			this.packets = packets;
    -		}
    -
    -		public String toString() {
    -			return (componentId.getComponentName() + " " + tsiPortId.toString() + " "
    -					+ ((filter != null) ? filter : "(null)"));// + "\n" + "packets count: " + ((packets != null) ?
    -																// packets.size() : "(null)"));
    -		}
    -	}
    -
    +	protected Logger log = null;
    +
    +	public static Hashtable ComponentCollection = new Hashtable();
    +	public static Hashtable ComponentCollectionCompPort = new Hashtable();
    +	public static Hashtable ComponentCollectionFilter2Port = new Hashtable();
    +	
    +	private Queue FilterMsgFIFO = new LinkedList<>(); //for selection sequence to which PTC first send resonse
    +
    +	public String tracefile="";
    +    
    +	
    +	
    +    public class FilterPackets
    +    {
    +        public List packets;
    +        public String filter;
    +        public TriComponentId componentId;
    +        public TriPortId tsiPortId;
    +        public TriCommunicationTE cte;
    +        final IotConnectionOffline this$0;
    +
    +        public boolean equals(Object obj)
    +        {
    +            if(obj instanceof FilterPackets)
    +            {
    +                return filter.equals(((FilterPackets)obj).filter);
    +            } else
    +            {
    +                return false;
    +            }
    +        }
    +
    +        public int hashCode()
    +        {
    +            return filter.hashCode()+componentId.hashCode();
    +        }
    +
    +        public FilterPackets(String filter)
    +        {
    +            super();
    +            this$0 = IotConnectionOffline.this;
    +            this.filter = filter;
    +        }
    +
    +        public FilterPackets(String filter,  TriComponentId componentId, TriPortId tsiPortId, TriCommunicationTE cte)
    +        {
    +            this(filter);
    +            this.componentId = componentId;
    +            this.tsiPortId = tsiPortId;
    +            this.cte = cte;
    +        }
    +        
    +        public void setPackets(List packets){
    +        	this.packets=packets;
    +        }
    +        
    +        public String toString(){
    +        	return (componentId.getComponentName() + " " + tsiPortId.toString() + " " + ((filter != null) ? filter : "(null)"));// + "\n" + "packets count: " + ((packets != null) ? packets.size() : "(null)"));
    +        }
    +    }
    +	
    +	
     	public IotConnectionOffline(Logger log, TriCommunicationTE cte) {
     		this.cte = cte;
     		this.log = log;
     	}
     
    +	
     	public synchronized TriStatus triMap(TriPortId comPortId, TriPortId tsiPortId) {
     		try {
    -			boolean result = false;
    -			log.debug("comPortId.getPortName()= " + comPortId.getPortName() + "; tsiPortId.getPortName()= "
    -					+ tsiPortId.getPortName());
    +			boolean result=false;
    +			log.debug("comPortId.getPortName()= " + comPortId.getPortName() + "; tsiPortId.getPortName()= " + tsiPortId.getPortName());
     			// Save parameters for later usage
    -			// this.comPortId = comPortId;
    -			// this.tsiPortId = tsiPortId;
    -
    -			if (tsiPortId.getPortName().equals("acPort")) {
    -				if (comPortId.getComponent().getComponentName().equals("MTC")) {
    -					this.comPortId = comPortId;
    -					this.tsiPortId = tsiPortId;
    -					ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId);
    -					ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId);
    -					// log.debug(""+ComponentCollection.elements().toString());
    -					// result = connect();
    -					result = true;
    -				} else {
    -					ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId);
    -					ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId);
    -					// log.debug(""+ComponentCollection.elements().toString());
    -					result = true; // assume MTC acport was succesfully conected
    +			//this.comPortId = comPortId;
    +			//this.tsiPortId = tsiPortId;
    +
    +			if(tsiPortId.getPortName().equals("acPort")){
    +				if (comPortId.getComponent().getComponentName().equals("MTC")){
    +				   this.comPortId = comPortId;
    +				   this.tsiPortId = tsiPortId;
    +				   ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId);	
    +				   ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId);
    +				   //log.debug(""+ComponentCollection.elements().toString());
    +			       //result = connect();
    +			       result=true;
    +				}else{
    +				   ComponentCollection.put(comPortId.getComponent().getComponentName(), tsiPortId);
    +				   ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName(), comPortId);
    +				   //log.debug(""+ComponentCollection.elements().toString());
    +				   result = true; //assume MTC acport was succesfully conected
     				}
    -			} else if (tsiPortId.getPortName().equals("sipPort")) {
    -				ComponentCollection.put(comPortId.getComponent().getComponentName() + "-data", tsiPortId);
    -				ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/* +"-sip" */, comPortId);
    -				// log.debug(""+ComponentCollection.elements().toString());
    -				result = true; // asuume MTC acport was succesfully conected
    -			} else if (tsiPortId.getPortName().equals("diameterPort")) {
    -				ComponentCollection.put(comPortId.getComponent().getComponentName() + "-data", tsiPortId);
    -				ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/* +"-diameter" */,
    -						comPortId);
    -				// log.debug(""+ComponentCollection.elements().toString());
    -				result = true; // asuume MTC acport was succesfully conected
    -			} else if (tsiPortId.getPortName().equals("dPort")) {
    -				ComponentCollection.put(comPortId.getComponent().getComponentName() + "-d", tsiPortId);
    -				ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName() + "-d", comPortId);
    -				// log.debug(""+ComponentCollection.elements().toString());
    -				result = true; // asuume MTC acport was succesfully conected
    -			} else if (tsiPortId.getPortName().equals("")) {
    -				result = false;
    +			}else
    +			    if (tsiPortId.getPortName().equals("sipPort")){
    +			    	ComponentCollection.put(comPortId.getComponent().getComponentName()+"-data", tsiPortId);
    +			    	ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/*+"-sip"*/, comPortId);
    +					//log.debug(""+ComponentCollection.elements().toString());
    +					result = true; //asuume MTC acport was succesfully conected
    +			}else
    +			    if (tsiPortId.getPortName().equals("diameterPort")){
    +			    	ComponentCollection.put(comPortId.getComponent().getComponentName()+"-data", tsiPortId);
    +			    	ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()/*+"-diameter"*/, comPortId);
    +					//log.debug(""+ComponentCollection.elements().toString());
    +					result = true; //asuume MTC acport was succesfully conected
    +			}else
    +			    if (tsiPortId.getPortName().equals("dPort")){
    +			    	ComponentCollection.put(comPortId.getComponent().getComponentName()+"-d", tsiPortId);
    +			    	ComponentCollectionCompPort.put(comPortId.getComponent().getComponentName()+"-d", comPortId);
    +					//log.debug(""+ComponentCollection.elements().toString());
    +					result = true; //asuume MTC acport was succesfully conected
    +			}else
    +				if(tsiPortId.getPortName().equals("")){
    +					result = false;
     			}
     
    -			return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR);
    -			// return new TriStatusImpl(TriStatus.TRI_OK);
    +			return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK)
    +					: new TriStatusImpl(TriStatus.TRI_ERROR);
    +			//return new TriStatusImpl(TriStatus.TRI_OK);
     		} catch (Throwable ex) {
     			ex.printStackTrace();
     		}
     		return new TriStatusImpl(TriStatus.TRI_ERROR);
     	}
     
    -	// public synchronized TriStatus triSend(TriAddress triAddress,
    -	public TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId, TriAddress triAddress,
    -			TriMessage triMessage) {
    +    //public synchronized TriStatus triSend(TriAddress triAddress,
    +    public TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId,TriAddress triAddress,	TriMessage triMessage) {
     
    -		try {
    +    	try {
     			byte[] buffer = triMessage.getEncodedMessage();
    -
    +		    
     			if (buffer == null) {
     				return new TriStatusImpl(TriStatus.TRI_ERROR);
     			}
    -			log.debug("Send message: "/* +triMessage.getClass() +"// " */ + triMessage.toString());
    -
    +			log.debug("Send message: "/*+triMessage.getClass() +"// "*/ + triMessage.toString());
    +			
     			int recv_reply = 0;
    -			int iotmsgType = buffer[0] & 0xFF | buffer[1] & 0xFF << 8;
    -			int iotmsgLen = 2 + 4 + (((buffer[2] & 0xFF)) | ((buffer[3] & 0xFF) << 8) | ((buffer[4] & 0xFF) << 16)
    -					| ((buffer[5] & 0xFF) << 24));
    -
    -			switch (iotmsgType) {
    -			case 7: /* OPEN_DEVICE_REQ = 0x0007; /**< ID of OpenDeviceRequest */
    -				log.info("ConfigureREQ");
    -				byte[] confresp = { 0x08, 0x00, 0x01, 0x00, 0x00, 0x00,
    -						0x00 };/* OPEN_DEVICE_REP = 0x0008; /**< ID of OpenDeviceReply */
    -
    -				log.debug(this.getTraceFile());
    -
    -				recv_reply = receiveBuffer(confresp, confresp.length);
    -				break;
    -
    -			case 2: /* SET_FILTER_REQ = 0x0002; /**< ID of SetFilterRequest */
    -				log.info("FilterREQ: " + componentId.getComponentName());
    -				byte[] filterresp = { 0x09, 0x00, 0x01, 0x00, 0x00, 0x00,
    -						0x00 };/* SET_FILTER_REP = 0x0009; /**< ID of SetFilterReply */
    -
    -				String filter = new String(buffer, 10, buffer.length - 10);
    -				log.debug("FilterREQ: filter=" + filter);
    -				try {
    -					FilterPackets fp = new FilterPackets(filter, componentId,
    -							ComponentCollection.get(componentId.getComponentName() + "-data"), this.cte/* tsiPortId */);
    -					ComponentCollectionFilter2Port.put(componentId.getComponentName(), fp);
    +			int iotmsgType = buffer[0]&0xFF | buffer[1]&0xFF << 8; 
    +	    	int iotmsgLen  = 2+4+(((buffer[2] & 0xFF))|((buffer[3] & 0xFF) << 8)|((buffer[4] & 0xFF) << 16) |  ((buffer[5] & 0xFF)<<24));
    +	       
    +	    	switch (iotmsgType){
    +	        case 7: /*OPEN_DEVICE_REQ	  =	  0x0007; /**< ID of OpenDeviceRequest */
    +	        	log.info("ConfigureREQ");
    +	        	byte[] confresp= {0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*OPEN_DEVICE_REP	  =	  0x0008; /**< ID of OpenDeviceReply*/
    +	        	
    +	        	log.debug(this.getTraceFile());
    +	        	
    +	    	    recv_reply=receiveBuffer(confresp, confresp.length);
    +	        	break;
    +
    +	        case 2: /*SET_FILTER_REQ       =   0x0002; /**< ID of SetFilterRequest */
    +	        	log.info("FilterREQ: " + componentId.getComponentName());
    +	        	byte[] filterresp= {0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*SET_FILTER_REP    =   0x0009; /**< ID of SetFilterReply */
    +	        		        	
    +	        	String filter = new String(buffer,10,buffer.length-10);
    +	        	log.debug("FilterREQ: filter=" + filter);
    +	        	try {
    +	        	    FilterPackets fp = new FilterPackets(filter, componentId,ComponentCollection.get(componentId.getComponentName()+"-data"), this.cte/*tsiPortId*/);
    +	        	    ComponentCollectionFilter2Port.put(componentId.getComponentName(), fp);
     				} catch (Exception e) {
     					// TODO Auto-generated catch block
     					e.printStackTrace();
     				}
    -				
    -				FilterMsgFIFO.add(componentId);
    -				recv_reply = receiveBuffer(filterresp, filterresp.length);
    -				break;
    -
    -			case 3:/* START_CAPTURE_REQ = 0x0003; /**< ID of StartCaptureRequest */
    -				log.info("StartCaptureREQ: " + componentId.getComponentName());
    -				log.info("StartCaptureREQ: ComponentCollectionFilter2Port=" + ComponentCollectionFilter2Port.size());
    -				byte[] startcapresp = { 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
    -						0x00 };/* START_CAPTURE_REP = 0x0004; /**< ID of StartCaptureReply */
    -
    -				if (!ComponentCollectionFilter2Port.isEmpty()) {
    -
    -					Enumeration keys = ComponentCollectionFilter2Port.keys();
    -					// log.info("StartCaptureREQ: keys=" + keys);
    -
    -					do {
    -						try {
    -							String key = (String) keys.nextElement();
    -							FilterPackets fp = ComponentCollectionFilter2Port.get(key);
    -							log.info("StartCaptureREQ: launch ReadCaptureThread for component "
    -									+ fp.componentId.getComponentName());
    -							ReadCaptureThread t = new ReadCaptureThread(fp.componentId.getComponentName(), log,
    -									tracefile, fp);
    -							t.join(1000);
    -							Thread.sleep(100);
    -						} catch (Exception e) {
    -							log.debug(e.getMessage());
    -							e.printStackTrace();
    -						}
    -					} while (keys.hasMoreElements());
    -					// adapterCollection.clear();
    -				}
    -				
    -				recv_reply = receiveBuffer(startcapresp, startcapresp.length);
    -				break;
    -
    -			case 5:/* STOP_CAPTURE_REQ = 0x0005; /**< ID of StopCaptureRequest */
    -				log.info("StopCaptureREQ");
    -				byte[] stopcapresp = { 0x06, 0x00, 0x01, 0x00, 0x00, 0x00,
    -						0x00 };/* STOP_CAPTURE_REP = 0x0006; /**< ID of StopCaptureReply */
    -
    -				if (!ComponentCollectionFilter2Port.isEmpty()) {
    -
    -					Enumeration keys = ComponentCollectionFilter2Port.keys();
    -
    -					do {
    -						try {
    -							String key = (String) keys.nextElement();
    -							FilterPackets fp = ComponentCollectionFilter2Port.get(key);
    -
    -							// Check active capture threads
    -							Thread.sleep(100);
    -
    -						} catch (Exception e) {
    -							log.debug(e.getMessage());
    -						}
    -					} while (keys.hasMoreElements());
    -					// adapterCollection.clear();
    -				}
    -
    -				recv_reply = receiveBuffer(stopcapresp, stopcapresp.length);
    -				break;
    -
    -			default:
    -
    -			}
     
    +	        	FilterMsgFIFO.add(componentId);
    +	        	recv_reply=receiveBuffer(filterresp, filterresp.length);
    +	        	break;
    +
    +	        case 3:/*START_CAPTURE_REQ    =   0x0003; /**< ID of StartCaptureRequest */
    +	        	log.info("StartCaptureREQ: " + componentId.getComponentName());
    +	        	log.info("StartCaptureREQ: ComponentCollectionFilter2Port=" + ComponentCollectionFilter2Port.size());
    +	        	byte[] startcapresp= {0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*START_CAPTURE_REP    =   0x0004; /**< ID of StartCaptureReply */
    +
    +	        	if (!ComponentCollectionFilter2Port.isEmpty()) {
    +	    			
    +	    			Enumeration keys = ComponentCollectionFilter2Port.keys();
    +					//log.info("StartCaptureREQ: keys=" + keys);
    +	    			
    +	    			do {
    +	    				try{
    +		    				String key = (String) keys.nextElement();
    +	    					FilterPackets fp = ComponentCollectionFilter2Port.get(key);
    +		    				log.info("StartCaptureREQ: launch ReadCaptureThread for component " + fp.componentId.getComponentName());
    +		    				ReadCaptureThread t = new ReadCaptureThread (fp.componentId.getComponentName(),log, tracefile,fp);
    +		    			    t.join(1000);
    +		    				Thread.sleep(100);
    +	    				}catch(Exception e){
    +	    					log.debug(e.getMessage());
    +	    					e.printStackTrace();
    +	    				}
    +	    			} while (keys.hasMoreElements());
    +	    			//adapterCollection.clear();
    +	    		} 
    +	        	
    +	        	recv_reply=receiveBuffer(startcapresp, startcapresp.length);
    +	        	break;
    +	               	
    +	        case 5:/*STOP_CAPTURE_REQ    =   0x0005; /**< ID of StopCaptureRequest */
    +	        	log.info("StopCaptureREQ");
    +	        	byte[] stopcapresp= {0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};/*STOP_CAPTURE_REP     =   0x0006; /**< ID of StopCaptureReply */
    +	        	
    +	        	if (!ComponentCollectionFilter2Port.isEmpty()) {
    +	    			
    +	    			Enumeration keys = ComponentCollectionFilter2Port.keys();
    +	    			
    +	    			do {
    +	    				try{
    +		    				String key = (String) keys.nextElement();
    +		    				FilterPackets fp = ComponentCollectionFilter2Port.get(key);
    +
    +                            //Check active capture threads
    +		    				Thread.sleep(100);
    +
    +	    				}catch(Exception e){
    +	    					log.debug(e.getMessage());
    +	    				}
    +	    			} while (keys.hasMoreElements());
    +	    			//adapterCollection.clear();
    +	    		} 
    +	        	
    +	        	recv_reply=receiveBuffer(stopcapresp, stopcapresp.length);
    +	        	break;
    +	        	
    +	        default:
    +	        	
    +	    	}
    +			
     //			int packetSize = message.length;
     //			byte[] packet = new byte[packetSize];
     //			System.arraycopy(message, 0, packet, 0, message.length);
     //						
    -			boolean result = false;
    -			if (tsiPortId.getPortName().equals("acPort")) {
    -				if (componentId.getComponentName().equals("MTC")) {
    -					// result = send(packet);
    -					result = true;
    -				} else {
    -					// for selection sequence to which PTC first send resonse //FILTER_REQ -
    -					// FILTER_REP
    -					//log.debug(FilterMsgFIFO.size());
    +			boolean result=false;
    +			if(tsiPortId.getPortName().equals("acPort")){
    +				if (componentId.getComponentName().equals("MTC")){
    +					//result = send(packet);
    +				    result = true;
    +				}
    +				else{
    +					//for selection sequence to which PTC first send resonse //FILTER_REQ - FILTER_REP
     					//FilterMsgFIFO.add(componentId);
    -					// result = send(packet);
    +					//result = send(packet);
     					result = true;
     				}
    -			} else {
    -				// result = send(packet);
    +			}else{
    +				//result = send(packet);
     				result = true;
     			}
     
    @@ -285,55 +286,57 @@ public class IotConnectionOffline extends Thread/* PCAP */ implements LocalAdapt
     		}
     		return new TriStatusImpl(TriStatus.TRI_ERROR);
     	}
    -
    -	public TriStatus triUnmap() {
    -		return new TriStatusImpl(TriStatus.TRI_OK);
    -	}
    -
    -	// public synchronized TriStatus triUnmap() {
    +    
    +    public TriStatus triUnmap(){
    +    	return new TriStatusImpl(TriStatus.TRI_OK);
    +    }
    +    
    +	//public synchronized TriStatus triUnmap() {
     	public TriStatus triUnmap(TriPortId comPortId, TriPortId tsiPortId) {
    -		// log.info("triUnmap");
    +		//log.info("triUnmap");
     		try {
     			boolean result = true;
    -
    -			if (tsiPortId.getPortName().equals("acPort")) {
    -				if (comPortId.getComponent().getComponentName().equals("MTC")) {
    -					// ComponentCollection.remove(comPortId.getComponent().getComponentName(),
    -					// tsiPortId);
    -					result = true;// disconnect();
    -				} else {
    -					ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    -					ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName(), comPortId);
    -					// log.debug(ComponentCollection.elements().toString());
    -					result = true; // assume MTC acport was successfully connected
    +			
    +			if(tsiPortId.getPortName().equals("acPort")){
    +				if (comPortId.getComponent().getComponentName().equals("MTC")){
    +				   //ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    +			       result = true;//disconnect();
    +				}else{
    +				   ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    +				   ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName(), comPortId);
    +				   //log.debug(ComponentCollection.elements().toString());
    +				   result = true; //assume MTC acport was successfully connected
     				}
    -			} else if (tsiPortId.getPortName().equals("sipPort")) {
    -				ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    -				ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName() + "-data", comPortId);
    -				// log.debug(ComponentCollection.elements().toString());
    -				result = true; // assume MTC acport was successfully connected
    -			} else if (tsiPortId.getPortName().equals("diameterPort")) {
    -				ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    -				ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName() + "-data", comPortId);
    -				// log.debug(ComponentCollection.elements().toString());
    -				result = true; // assume MTC acport was successfully connected
    -			} else if (tsiPortId.getPortName().equals("dPort")) {
    -				ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    -				ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName() + "-d", comPortId);
    -				// log.debug(ComponentCollection.elements().toString());
    -				result = true; // assume MTC acport was successfully connected
    -			} else {
    -				result = false;// disconnect();
    +			}else
    +			    if (tsiPortId.getPortName().equals("sipPort")){
    +			    	ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    +			    	ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-data", comPortId);
    +					//log.debug(ComponentCollection.elements().toString());
    +					result = true; //assume MTC acport was successfully connected
    +			}else
    +			    if (tsiPortId.getPortName().equals("diameterPort")){
    +			    	ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    +			    	ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-data", comPortId);
    +					//log.debug(ComponentCollection.elements().toString());
    +					result = true; //assume MTC acport was successfully connected
    +			}else
    +			    if (tsiPortId.getPortName().equals("dPort")){
    +			    	ComponentCollection.remove(comPortId.getComponent().getComponentName(), tsiPortId);
    +			    	ComponentCollectionCompPort.remove(comPortId.getComponent().getComponentName()+"-d", comPortId);
    +					//log.debug(ComponentCollection.elements().toString());
    +					result = true; //assume MTC acport was successfully connected
    +		    }else{
    +		        result = false;//disconnect();
     			}
    -
    +			
     			return (result == true) ? new TriStatusImpl(TriStatus.TRI_OK) : new TriStatusImpl(TriStatus.TRI_ERROR);
    -
    +			
     		} catch (Throwable ex) {
     			log.error("Exception: ", ex);
     		}
     		return new TriStatusImpl(TriStatus.TRI_ERROR);
     	}
    -
    +    
     	protected int receiveBuffer(byte[] buffer, int bufferSize) {
     		// Try to decode message		
     	    Packet ippacket = new Packet();
    @@ -345,7 +348,7 @@ public class IotConnectionOffline extends Thread/* PCAP */ implements LocalAdapt
     		
     		int iotmsg = ((buffer[0] & 0xFF))|((buffer[1] & 0xFF) << 8);//iot message type
     		byte[] message = new byte[packetLength];
    -		log.debug("IOT MSG TYPE "+iotmsg);
    +		
     		if (iotmsg==1){ //CAPTURE_DATA_IND
     			byte[] packetb = new byte[packetLength-0x1b];
     			System.arraycopy(buffer,0x1b, packetb, 0, packetLength-0x1b);
    @@ -374,7 +377,7 @@ public class IotConnectionOffline extends Thread/* PCAP */ implements LocalAdapt
     				//DONE in separate class
     			}
     			else
    -				log.debug("ENQUE"+tsiPortId.toString()+" "+compid.getComponentName().toString());
    +				log.debug("ENQUE"+tsiPortId.toString()+" "+ compid.getComponentName().toString());
     			    cte.triEnqueueMsg(tsiPortId, triAddress, compid/*comPortId.getComponent()*/, triMessage);
     			
     		}
    @@ -383,9 +386,9 @@ public class IotConnectionOffline extends Thread/* PCAP */ implements LocalAdapt
     	}
     
     	public void setTraceFile(String tracefile) {
    -		this.tracefile = tracefile;
    +		this.tracefile=tracefile;
     	}
    -
    +		
     	public String getTraceFile() {
     		return this.tracefile;
     	}
    -- 
    GitLab
    
    
    From 32cfa198514562217b5299190fce4965189a5b74 Mon Sep 17 00:00:00 2001
    From: juvancic 
    Date: Mon, 15 Nov 2021 14:44:19 +0100
    Subject: [PATCH 162/176] updated ta  module
    
    ---
     .../iskratel/ttcn/tri/ReadCaptureThread.java  | 92 ++++++++++++++++---
     1 file changed, 78 insertions(+), 14 deletions(-)
    
    diff --git a/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java
    index db8b46f..8cad588 100644
    --- a/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java
    +++ b/javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java
    @@ -117,7 +117,7 @@ public class ReadCaptureThread extends Thread implements Runnable{
     	  //private List packets;
     	  private FilterPackets filterpackets;
     	  private Map _fragments = null;
    -	  
    +	  private Map _tcpBodys = null;
     	  
     	  private class _fragmented_packet {
     		Packet _packet;
    @@ -156,16 +156,73 @@ public class ReadCaptureThread extends Thread implements Runnable{
     			return result;
     		}
     	  } // End of class _fragmented_packet
    +	  
    +	  private class _tcp_data{
    +		  byte[] _data=null;
    +				  
    +		  public _tcp_data(TCPPacket p_tcppacket) {
    +				_data = p_tcppacket.data;
    +		  }
    +		  
    +		  public void appendData(final byte[] p_data) {
    +				_data = concat(_data, p_data);
    +			}
    +
    +			public byte[] getData() {
    +				return _data;
    +			}
    +
    +			private byte[] concat(byte[]... arrays) {
    +				// Determine the length of the result array
    +				int totalLength = 0;
    +				for (int i = 0; i < arrays.length; i++) {
    +					totalLength += arrays[i].length;
    +				}
    +
    +				// create the result array
    +				byte[] result = new byte[totalLength];
    +
    +				// copy the source arrays into the result array
    +				int currentIndex = 0;
    +				for (int i = 0; i < arrays.length; i++) {
    +					System.arraycopy(arrays[i], 0, result, currentIndex, arrays[i].length);
    +					currentIndex += arrays[i].length;
    +				}
    +
    +				return result;
    +			}
    +		  
    +	  } // End of class _tcp_data
    +	  
    +	  private byte[] addBodyData(TCPPacket packet) {
    +	      _tcp_data tcpBodyData;
    +	      Long ack = new Long(packet.ack_num);
    +	      if (_tcpBodys.containsKey(ack)){
    +	          tcpBodyData = _tcpBodys.get(ack);
    +	          tcpBodyData.appendData(packet.data);
    +	      }else{
    +	          tcpBodyData = new _tcp_data(packet/*.data*/);
    +	          _tcpBodys.put(ack, tcpBodyData);
    +	      }
    +
    +	      if (packet.psh){
    +	          _tcpBodys.remove(ack);
    +	      }
    +
    +	      return tcpBodyData.getData();
    +	  }
     	 	  
     	  public PacketHandler(String name) {
     	    this.name = name;
     	    _fragments = new HashMap();
    +	    _tcpBodys = new HashMap();
     	  }
     	  
     	  public PacketHandler(FilterPackets filterpackets) {
     	    this.name = filterpackets.componentId.getComponentName();
     	    this.filterpackets = filterpackets;
     	    _fragments = new HashMap();
    +	    _tcpBodys = new HashMap();
     	  }
     	  
     	  public void receivePacket(Packet packet) {
    @@ -201,6 +258,8 @@ public class ReadCaptureThread extends Thread implements Runnable{
     					//System.out.println("Final packet: " + new_packet.getClass().getName());
     					// Remove entry
     					_fragments.remove((long) ipPacket.ident);
    +				} else {
    +					new_packet = packet;
     				}
     			} else {
     				new_packet = packet;
    @@ -209,19 +268,24 @@ public class ReadCaptureThread extends Thread implements Runnable{
     	    
         	if(new_packet instanceof TCPPacket) {
      	    	TCPPacket tcpPacket = (TCPPacket)new_packet;
    - 	    	byte[] message= tcpPacket.data;//.getTCPData();//TODO: assume data is in one packet
    - 	    	 	    	
    - 	    	//String srcHost = tcpPacket.src_ip.toString();
    - 	    	//String dstHost = tcpPacket.dst_ip.toString();
    - 	    	//String isoData = new String(data);//, "ISO-8859-1");
    - 	    	//log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData);
    -			    
    - 		    TriMessage triMessage =TriMessageImpl.valueOf(message);
    - 			TriAddress triAddress = new TriAddressImpl(new byte[] {});
    - 			
    - 			synchronized(this.filterpackets.cte) { 
    -				log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString());
    -				this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage);
    + 	    	//byte[] message= tcpPacket.data;//.getTCPData();//TODO: assume data is in one packet
    + 	    	log.debug(tcpPacket.toString());
    + 	        byte[] message = addBodyData(tcpPacket);
    + 	        if(tcpPacket.psh){
    + 	            //body is complete
    + 	            
    +	 	    	//String srcHost = tcpPacket.src_ip.toString();
    +	 	    	//String dstHost = tcpPacket.dst_ip.toString();
    +	 	    	//String isoData = new String(data);//, "ISO-8859-1");
    +	 	    	//log.debug(srcHost+" -> " + dstHost );//+ ": " + isoData);
    +				    
    +	 		    TriMessage triMessage =TriMessageImpl.valueOf(message);
    +	 			TriAddress triAddress = new TriAddressImpl(new byte[] {});
    +	 			
    +	 			synchronized(this.filterpackets.cte) { 
    +					log.debug("ENQUE"+this.filterpackets.tsiPortId.toString()+" "+ this.filterpackets.componentId.getComponentName().toString());
    +					this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage);
    +	 			}
      			}
      	    }
         	
    -- 
    GitLab
    
    
    From 05956ce30e6bd7a46699a2bb23fbbdc86024c3dd Mon Sep 17 00:00:00 2001
    From: juvancic 
    Date: Mon, 15 Nov 2021 14:44:35 +0100
    Subject: [PATCH 163/176] updated ta  module
    
    ---
     .../com/iskratel/ttcn/tri/VxlteAdapter.java   | 26 ++++++++++++-------
     1 file changed, 17 insertions(+), 9 deletions(-)
    
    diff --git a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java
    index 0f0c269..e581666 100644
    --- a/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java
    +++ b/javasrc/com/iskratel/ttcn/tri/VxlteAdapter.java
    @@ -7,6 +7,8 @@
     package com.iskratel.ttcn.tri;
     
     
    +import java.nio.file.Files;
    +import java.nio.file.Paths;
     import java.util.Enumeration;
     import java.util.HashMap;
     import java.util.Hashtable;
    @@ -316,14 +318,17 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA,	Tri
     	}
     
     	public TciCDProvided getCodec(String s) {
    -		loginfo(">>> TciCDProvided.getCodec for " + portNameForCoding + " = " + ((s != null) ? s : "(null)"));
    +		TciCDProvided codec = null;
    +		
    +		//loginfo(">>> TciCDProvided.getCodec for " + portNameForCoding + " = " + ((s != null) ? s : "(null)"));
    +		loginfo(">>> TciCDProvided.getCodec " + ((s != null) ? s : "(null)"));
     		if (s == null  || s.equals("")) {
     			
     			loginfo("No codec name for usage!!! Last used port = " + portNameForCoding);			
     			if (portNameForCoding.equals("") || portNameForCoding == null) {
     				s = "IOTCodec";				
     			}
    -
    +		
     			else if (portNameForCoding.startsWith("acPort")){
     				s= "IOTCodec";
     			}else if (portNameForCoding.startsWith("eaPort")){
    @@ -333,13 +338,14 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA,	Tri
     			}else if (portNameForCoding.startsWith("diameterPort")){
     				s= "DIAMETERCodec";
     			}
    +			codec = super.getCodec(s);
    +		} else {
    +			codec = super.getCodec(s);
     		}
     		
    -		TciCDProvided codec = super.getCodec(s);
    -		
    -		if (codec != null) {		
    -			return codec;
    -		}
    +//		if (codec != null) {		
    +//			return codec;
    +//		}
     
     		return codec;		
     	}
    @@ -349,8 +355,10 @@ public class VxlteAdapter extends TestAdapter implements TriCommunicationSA,	Tri
     		//loginfo("Executing TestCase"+ testcase.getTestCaseName());
     	    
     		this.testcaseName=testcase.getTestCaseName();
    -	    
    -		return super.triExecuteTestcase(testcase, tsiList);
    +		if(Files.exists(Paths.get(ROOTFOLDERTRACEFILE+this.testcaseName+".pcapng")))
    +	    	return super.triExecuteTestcase(testcase, tsiList);
    +		else
    +			return new TriStatusImpl("Check if correct capture file exists!("+this.testcaseName+".pcapng)");
     	}
     	
     	public TciParameterList getTestCaseParameters(TciModuleId moduleId,	String testCaseId) {
    -- 
    GitLab
    
    
    From 18a3f42bbd2d820e0de839e445b81e60dd7dbf7b Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Mon, 22 Nov 2021 16:52:53 +0100
    Subject: [PATCH 164/176] References grammer update
    
    ---
     test_purposes/Gm/TP_GM.tplan2    | 102 +++++++++++++++----------------
     test_purposes/Gx/TP_GX.tplan2    |  14 ++---
     test_purposes/Ic/TP_IC.tplan2    |  14 ++---
     test_purposes/Mw/TP_MW_IS.tplan2 |  16 ++---
     test_purposes/Mw/TP_MW_PS.tplan2 |  84 ++++++++++++-------------
     test_purposes/Mw/TP_MW_SI.tplan2 |  64 +++++++++----------
     test_purposes/Rx/TP_RX.tplan2    |  40 ++++++------
     test_purposes/S9/TP_S9.tplan2    |   6 --
     8 files changed, 164 insertions(+), 176 deletions(-)
    
    diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2
    index 1e6cda2..418252b 100644
    --- a/test_purposes/Gm/TP_GM.tplan2
    +++ b/test_purposes/Gm/TP_GM.tplan2
    @@ -77,7 +77,7 @@ Package TP_GM {
             Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1, 6.1.1 and 6.1.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -137,7 +137,7 @@ Package TP_GM {
             Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1, 6.1.1 and 6.1.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -198,7 +198,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1, 6.1.1 and 6.1.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -245,7 +245,7 @@ Package TP_GM {
             Test objective "Verify that the P-CSCF successfully processes a first registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1, 6.1.1 and 6.1.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -306,7 +306,7 @@ Package TP_GM {
             Test objective "Verify that the P-CSCF successfully processes a full registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.13"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1 and 6.1.13"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -368,7 +368,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1 and 6.1.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -413,7 +413,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -444,7 +444,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -477,7 +477,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -513,7 +513,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a SUBSCRIBE."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1, 6.1.1 and 6.1.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -554,7 +554,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a SUBSCRIBE."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.1.1 and Clause 6.1.1 and Clause 6.1.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.1.1, 6.1.1 and 6.1.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -596,7 +596,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.2.1, 6.1.1 and 6.1.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -627,7 +627,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.2.1 and Clause 6.1.1 and Clause 6.1.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.2.1, 6.1.1 and 6.1.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -697,7 +697,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 5.4.4.1 and Clause 5.4.4.2 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.2, 5.4.4.1, 5.4.4.2 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -740,7 +740,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -781,7 +781,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -822,7 +822,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.3 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -863,7 +863,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -898,7 +898,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -944,7 +944,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -979,7 +979,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1025,7 +1025,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -1061,7 +1061,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -1113,7 +1113,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1151,7 +1151,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.5 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.3.5 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1713,7 +1713,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1"
    +            "ETSI TS 124 229 [2] Clauses 5.1.5 (1st paragraph), 5.2.8.2 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -1752,7 +1752,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1"
    +            "ETSI TS 124 229 [2] Clauses 5.1.5 (1st paragraph), 5.2.8.2 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -1791,7 +1791,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Network initiated)."
             
             Reference 
    -            "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1"
    +            "ETSI TS 124 229 [2] Clauses 5.1.5 (1st paragraph), 5.2.8.2 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -1832,7 +1832,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1"
    +            "ETSI TS 124 229 [2] Clauses 5.1.5 (1st paragraph), 5.2.8.2 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1873,7 +1873,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1"
    +            "ETSI TS 124 229 [2] Clauses 5.1.5 (1st paragraph), 5.2.8.2 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1914,7 +1914,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Network initiated)."
             
             Reference 
    -            "ETSI TS 124 229 [2] Clause 5.1.5 (1st paragraph), Clause 5.2.8.2, Clause 6.1"
    +            "ETSI TS 124 229 [2] Clauses 5.1.5 (1st paragraph), 5.2.8.2 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1953,7 +1953,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2000,7 +2000,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2047,7 +2047,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Network initiated)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2083,7 +2083,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2130,7 +2130,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2177,7 +2177,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Network initiated)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2213,7 +2213,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2252,7 +2252,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2292,7 +2292,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2332,7 +2332,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2373,7 +2373,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2411,7 +2411,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2534,7 +2534,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2573,7 +2573,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2612,7 +2612,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2652,7 +2652,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2691,7 +2691,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2729,7 +2729,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_INT
             
    @@ -2770,7 +2770,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2809,7 +2809,7 @@ Package TP_GM {
             Test objective  "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.1"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1"
             
             Config Id CF_VxLTE_RMI_B
             
    diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2
    index 90a2efa..b09a994 100644
    --- a/test_purposes/Gx/TP_GX.tplan2
    +++ b/test_purposes/Gx/TP_GX.tplan2
    @@ -109,7 +109,7 @@ Package TP_GX {
             Test objective  "Verify that IUT when receives CC-Request for session release sends a CC-Answer in case of detachment procedure."
             
             Reference 
    -            "TS 129 212 [9], clauses 4.5.7"
    +            "TS 129 212 [9], clause 4.5.7"
             
             Config Id CF_VxLTE_INT
             
    @@ -186,7 +186,7 @@ Package TP_GX {
             Test objective  "Verify that IUT receives CC-Answer from home PCRF and it sends CC-Answer towards home P-GW."
             
             Reference 
    -            "TS 129 212 [9], clauses 4.5.7"
    +            "TS 129 212 [9], clause 4.5.7"
             
             Config Id CF_VxLTE_RMI
             
    @@ -218,7 +218,7 @@ Package TP_GX {
             Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer controle mode selection."
             
             Reference 
    -            "TS 129 212 [9], clauses 4.5.10"
    +            "TS 129 212 [9], clause 4.5.10"
             
             Config Id CF_VxLTE_INT
             
    @@ -278,15 +278,9 @@ Package TP_GX {
                             IP_CAN_Type_AVP
                             RAT_Type_AVP
                             Called_Station_Id_AVP
    -                        PDN_Connection_Id_AVP
                             Framed_IP_Address_AVP
                             "or" Framed_IP6_IP_Address_AVP
    -                        Bearer_Usage_AVP
    -                            indicating value IMS_SIGNALLING
                             QoS_Information_AVP
    -                            APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
    -                            APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
    -                            Bearer_Identifier_AVP
                             Default_EPS_Bearer_QoS_AVP containing
                                 QoS_Class_Identifier_AVP
                                     indicating value '5'
    @@ -305,7 +299,7 @@ Package TP_GX {
             Test objective  "Verify that when IUT is invoked with a delete session request the CC-Request is sent towards PCRF."
             
             Reference 
    -            "TS 129 212 [9], clauses 4.5.7"
    +            "TS 129 212 [9], clause 4.5.7"
             
             Config Id CF_VxLTE_RMI
             
    diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2
    index 607bed7..a2c2e0c 100644
    --- a/test_purposes/Ic/TP_IC.tplan2
    +++ b/test_purposes/Ic/TP_IC.tplan2
    @@ -83,7 +83,7 @@ Package TP_IC {
                    "S-CSCF shall insert orig-ioi parameter, remove access-network-charging-info parameter 
                     and P-Access-Network-Info header before sending initial INVITE or a initial request over NNI"
             Reference
    -            "TS 124 229 [1], clause 5.4.3.2 �11 (1st numbered list), clause 5.10.3.2"
    +            "TS 124 229 [1], clauses 5.4.3.2 paragraph 11 (1st numbered list)and clause 5.10.3.2"
             Config Id  CF_VxLTE_INT
             
             PICS Selection  NONE
    @@ -126,7 +126,7 @@ Package TP_IC {
                    "S-CSCF inserts a second P-Asserted-Identity header indicating a registered tel URI 
                     or sip URI whichever is not present in initial INVITE"
             Reference
    -            "TS 124 229 [1], clause 5.4.3.2 �9 (item 9 1st numbered list)"
    +            "TS 124 229 [1], clause 5.4.3.2 paragraph 9 (item 9 1st numbered list)"
             Config Id  CF_VxLTE_INT
             
             PICS Selection  NONE
    @@ -1618,7 +1618,7 @@ Package TP_IC {
             Test objective
                "The IBCF shall perform encryption for topology hiding before an initial REGISTER request is sent "
             Reference
    -            "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2"
    +            "TS 124 229 [1], clauses 5.10.2.1, 5.10.3.1, 5.10.4.2"
                 
             Config Id CF_VxLTE_RMI_B
             
    @@ -1660,7 +1660,7 @@ Package TP_IC {
             Test objective
                "The IBCF shall perform encryption for topology hiding before a second REGISTER request is sent "
             Reference
    -            "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2"
    +            "TS 124 229 [1], clauses 5.10.2.1, 5.10.3.1, 5.10.4.2"
                 
             Config Id CF_VxLTE_RMI_B
             
    @@ -1704,7 +1704,7 @@ Package TP_IC {
             Test objective
                "Verify that the IBCF successfully processes a user de-registration."
             Reference
    -            "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2"
    +            "TS 124 229 [1], clauses 5.10.2.1, 5.10.3.1, 5.10.4.2"
                 
             Config Id CF_VxLTE_RMI_B
             
    @@ -1742,7 +1742,7 @@ Package TP_IC {
             Test objective
                "Verify that the IBCF successfully processes an IMS de-registration due to expiration of registration timer."
             Reference
    -            "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2"
    +            "TS 124 229 [1], clauses 5.10.2.1, 5.10.3.1, 5.10.4.2"
                 
             Config Id CF_VxLTE_RMI_B
             
    @@ -1781,7 +1781,7 @@ Package TP_IC {
             Test objective
                "Verify that the IBCF successfully processes an IMS de-registration due user initiated network detachment."
             Reference
    -            "TS 124 229 [1], clause 5.10.2.1, 5.10.3.1, 5.10.4.2"
    +            "TS 124 229 [1], clauses 5.10.2.1, 5.10.3.1, 5.10.4.2"
                 
             Config Id CF_VxLTE_RMI_B
             
    diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2
    index 8e05b45..b68950a 100644
    --- a/test_purposes/Mw/TP_MW_IS.tplan2
    +++ b/test_purposes/Mw/TP_MW_IS.tplan2
    @@ -57,7 +57,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the I-CSCF successfully processes a first registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.1.1 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -106,7 +106,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the I-CSCF successfully processes a full registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.1.1 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -218,7 +218,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the I-CSCF successfully processes a first registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.1.1 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -281,7 +281,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the I-CSCF successfully processes a full registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.1.1 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.1.1 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -401,7 +401,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -434,7 +434,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the I-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.1.5 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.1.5 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -467,7 +467,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the P-CSCF successfully processes a network de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -499,7 +499,7 @@ Package TP_MW_IS {
             Test objective  "Verify that the I-CSCF successfully processes a user de-registration (with SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2
    index 659229a..5fe26fd 100644
    --- a/test_purposes/Mw/TP_MW_PS.tplan2
    +++ b/test_purposes/Mw/TP_MW_PS.tplan2
    @@ -70,7 +70,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a first registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -131,7 +131,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a full registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -205,7 +205,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -268,7 +268,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a first registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -331,7 +331,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a full registration (Successful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -408,7 +408,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -470,7 +470,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -503,7 +503,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -536,7 +536,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -567,7 +567,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a user de-registration (with SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -605,7 +605,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a user network detachment."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -642,7 +642,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a network de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -676,7 +676,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a user network detachment."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -813,7 +813,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -848,7 +848,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -882,7 +882,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -955,7 +955,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -1009,7 +1009,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.3 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -1063,7 +1063,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.2 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1117,7 +1117,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7.3 and 6.2"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1171,7 +1171,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -1205,7 +1205,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -1239,7 +1239,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1275,7 +1275,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1309,7 +1309,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -1343,7 +1343,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -1379,7 +1379,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.1 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1415,7 +1415,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.9.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2000,7 +2000,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -2045,7 +2045,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -2090,7 +2090,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Originating Network)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -2129,7 +2129,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2176,7 +2176,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2223,7 +2223,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a BYE (Network initiated)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2260,7 +2260,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a user network detachment (with Previously Established IMS Registration & IMS Sessions)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.1 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2548,7 +2548,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -2594,7 +2594,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -2642,7 +2642,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2690,7 +2690,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.2"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2736,7 +2736,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -2781,7 +2781,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -2827,7 +2827,7 @@ Package TP_MW_PS {
             Test objective  "Verify that the P-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2
    index 1d2e6c2..cabff0c 100644
    --- a/test_purposes/Mw/TP_MW_SI.tplan2
    +++ b/test_purposes/Mw/TP_MW_SI.tplan2
    @@ -310,7 +310,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -342,7 +342,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a user de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.1.5 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.1.5 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -379,7 +379,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a user de-registration (with SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -422,7 +422,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a network de-registration (no SIP session active)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -541,7 +541,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.2, 6.1.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -577,7 +577,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.2 and Clause 6.1.1 and Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.2, 6.1.1 and 6.2"
             
             Config Id CF_VxLTE_INT
             
    @@ -611,7 +611,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -648,7 +648,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a NOTIFY in case of IMS Administrative de-registration."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.5.2 Clause 6.2"
    +            "ETSI TS 124 229 [1], Clauses 5.2.5.2 and 6.2"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -685,7 +685,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.1 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.1 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -739,7 +739,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.1 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.1 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -794,7 +794,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes an initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.1 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.1 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -849,7 +849,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes an initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.3.2.1 and Clause 5.3.2.1A"
    +            "ETSI TS 124 229 [1], Clauses 5.3.2.1 and 5.3.2.1A"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -903,7 +903,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -939,7 +939,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -975,7 +975,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1011,7 +1011,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1045,7 +1045,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -1082,7 +1082,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -1119,7 +1119,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1153,7 +1153,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.4.4.2.2 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.4.4.2.2 and 6.3"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1747,7 +1747,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -1792,7 +1792,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -1837,7 +1837,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a BYE (Originating Network)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.1, Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.1 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -1883,7 +1883,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a BYE (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -1928,7 +1928,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a BYE (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.2, Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.2 and 6.3"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -1975,7 +1975,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a BYE (Originating Network)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.1, Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.1 and 6.3"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2023,7 +2023,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a BYE (IMS De-registration with Active SIP Sessions)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.5, Clause 5.4.5.1, Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.5, 5.4.5.1 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2343,7 +2343,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a CANCEL (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.1.3 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    @@ -2391,7 +2391,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a CANCEL (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7 and 6.3"
             
             Config Id CF_VxLTE_RMI_A
             
    @@ -2437,7 +2437,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], clauses Clause 5.2.7 and Clause 6.3"
    +            "ETSI TS 124 229 [1], clauses 5.2.7 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -2482,7 +2482,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Terminating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7 and 6.3"
             
             Config Id CF_VxLTE_INT
             
    @@ -2528,7 +2528,7 @@ Package TP_MW_SI {
             Test objective  "Verify that the S-CSCF successfully processes a 486 INVITE (busy) to reject call (Originating Leg)."
             
             Reference 
    -            "ETSI TS 124 229 [1], Clause 5.2.7 and Clause 6.3"
    +            "ETSI TS 124 229 [1], Clauses 5.2.7 and 6.3"
             
             Config Id CF_VxLTE_RMI_B
             
    diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2
    index 00a4d28..0144a75 100644
    --- a/test_purposes/Rx/TP_RX.tplan2
    +++ b/test_purposes/Rx/TP_RX.tplan2
    @@ -25,7 +25,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after AA-Request is received due to provisioning of AF Signalling flow sends AA-Answer."
             
             Reference 
    -            "TS 129 214 [8], clause A.8, 4.4.5a and Annex B"
    +            "TS 129 214 [8], clauses A.8, 4.4.5a and Annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -103,7 +103,7 @@ Package TP_RX {
             Test objective  "Verify that IUT receives AA-Answer from home PCRF and it sends AA-Answer towards visited P-CSCF."
             
             Reference 
    -            "TS 129 214 [8], clause 4.4.5a, A.8 and annex B"
    +            "TS 129 214 [8], clauses 4.4.5a, A.8 and annex B"
             
             Config Id CF_VxLTE_RMI
             
    @@ -133,7 +133,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after 2XX_Response on REGISTER sends an AA-Request due to provisioning of AF Signalling flow."
             
             Reference
    -            "TS 129 214 [8], clause A.8, 4.4.5a and Annex B"
    +            "TS 129 214 [8], clauses A.8, 4.4.5a and Annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -210,7 +210,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -250,7 +250,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
            
             Config Id CF_VxLTE_INT
             
    @@ -290,7 +290,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -330,7 +330,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -370,7 +370,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -410,7 +410,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -450,7 +450,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -490,7 +490,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2, B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -664,7 +664,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of ST-Request sends ST-Answer."
             
             Reference 
    -            "TS 129 214 [8], clause 4.4.4, 4.4.5, A.8"
    +            "TS 129 214 [8], clauses 4.4.4, 4.4.5 and A.8"
             
             Config Id CF_VxLTE_INT
             
    @@ -696,7 +696,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of BYE sends an ST-Request at originating leg."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4"
    +            "TS 129 214 [8], clause 4.4.4"
             
             Config Id CF_VxLTE_INT
             
    @@ -728,7 +728,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of BYE sends an ST-Request at terminating leg."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4"
    +            "TS 129 214 [8], clause 4.4.4"
             
             Config Id CF_VxLTE_INT
             
    @@ -760,7 +760,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of CANCEL sends an ST-Request at originating leg."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4"
    +            "TS 129 214 [8], clause 4.4.4"
             
             Config Id CF_VxLTE_INT
             
    @@ -791,7 +791,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of CANCEL sends an ST-Request at terminating leg."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4"
    +            "TS 129 214 [8], clause 4.4.4"
             
             Config Id CF_VxLTE_INT
             
    @@ -822,7 +822,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of 486 response sends an ST-Request at originating leg."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4"
    +            "TS 129 214 [8], clause 4.4.4"
             
             Config Id CF_VxLTE_INT
             
    @@ -853,7 +853,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of 486 response sends an ST-Request at terminating leg."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4"
    +            "TS 129 214 [8], clause 4.4.4"
             
             Config Id CF_VxLTE_INT
             
    @@ -884,7 +884,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of 200 response REGISTER sends an ST-Request."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4, 4.4.5a, A.8"
    +            "TS 129 214 [8], clauses 4.4.4, 4.4.5a and A.8"
             
             Config Id CF_VxLTE_INT
             
    @@ -915,7 +915,7 @@ Package TP_RX {
             Test objective  "Verify that IUT after reception of NOTIFY during administrative de-registration sends an ST-Request."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.4, 4.4.5a, A.8"
    +            "TS 129 214 [8], clauses 4.4.4, 4.4.5a and A.8"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2
    index 607ac32..cb0861e 100644
    --- a/test_purposes/S9/TP_S9.tplan2
    +++ b/test_purposes/S9/TP_S9.tplan2
    @@ -210,15 +210,9 @@ Package TP_S9 {
                             IP_CAN_Type_AVP
                             RAT_Type_AVP
                             Called_Station_Id_AVP
    -                        PDN_Connection_Id_AVP
                             Framed_IP_Address_AVP
                             "or" Framed_IP6_IP_Address_AVP
    -                        Bearer_Usage_AVP
    -                            indicating value IMS_SIGNALLING
                             QoS_Information_AVP
    -                            APN_Aggregate_Max_Requested_Bandwidth_UL_AVP
    -                            APN_Aggregate_Max_Requested_Bandwidth_DL_AVP
    -                            Bearer_Identifier_AVP
                             Default_EPS_Bearer_QoS_AVP containing
                                 QoS_Class_Identifier_AVP
                                     indicating value '5'
    -- 
    GitLab
    
    
    From e9593073b4869a7ddf9f65bc0bc6ac0e8b570636 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 15:48:26 +0100
    Subject: [PATCH 165/176] Edit help spellcheck updates
    
    ---
     test_purposes/Gm/TP_GM.tplan2    | 38 ++++++++++++-------------
     test_purposes/Gx/TP_GX.tplan2    |  2 +-
     test_purposes/Ic/TP_IC.tplan2    | 48 ++++++++++++++++----------------
     test_purposes/Mw/TP_MW_IS.tplan2 | 12 ++++----
     test_purposes/Mw/TP_MW_PS.tplan2 | 22 +++++++--------
     test_purposes/Mw/TP_MW_SI.tplan2 | 18 ++++++------
     test_purposes/Rtp/TP_Rtp.tplan2  |  2 +-
     test_purposes/Rx/TP_RX.tplan2    | 16 +++++------
     test_purposes/Sh/TP_Sh.tplan2    |  2 +-
     test_purposes/Sip_Common.tplan2  | 10 +++----
     ttcn/LibDiameter                 |  2 +-
     ttcn/LibSip                      |  2 +-
     12 files changed, 87 insertions(+), 87 deletions(-)
    
    diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2
    index 418252b..ac6b9be 100644
    --- a/test_purposes/Gm/TP_GM.tplan2
    +++ b/test_purposes/Gm/TP_GM.tplan2
    @@ -22,7 +22,7 @@ Package TP_GM {
             
             TP Id TP_GM_PCSCF_MESSAGE_01
             
    -        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A (1st paragraph)"
    @@ -44,7 +44,7 @@ Package TP_GM {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         to the IMS_P_CSCF_A entity
                     }
                     then {
    @@ -53,7 +53,7 @@ Package TP_GM {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         from the UE_A entity
                         and the IMS_P_CSCF_A entity sends a 200_Ok containing
                             From indicating value PX_UE_A_SIP_URI,
    @@ -147,7 +147,7 @@ Package TP_GM {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstRegistration
    +            the UE_A entity hasAchievedFirstRegistration
             }
             
             Expected behaviour
    @@ -316,7 +316,7 @@ Package TP_GM {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstRegistration
    +            the UE_A entity hasAchievedFirstRegistration
             }
             
             Expected behaviour
    @@ -879,7 +879,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 100_Trying
    @@ -960,7 +960,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 100_Trying
    @@ -1041,7 +1041,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 180_Ringing containing
    @@ -1129,7 +1129,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 180_Ringing containing
    @@ -1217,7 +1217,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 200_Ok containing
    @@ -1305,7 +1305,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 200_Ok containing
    @@ -1393,7 +1393,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveINVITE
    +                    the UE_A entity hasAchievedINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity receives an ACK containing
    @@ -1433,7 +1433,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_B entity hasAchieveInitialINVITE
    +                    the UE_B entity hasAchievedInitialINVITE
                     }
                     then {
                         the UE_B entity receives an ACK containing
    @@ -1473,7 +1473,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveINVITE
    +                    the UE_A entity hasAchievedINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity receives an ACK containing
    @@ -2224,7 +2224,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2263,7 +2263,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2303,7 +2303,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2343,7 +2343,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasAchieveInitialINVITE
    +            the UE_B entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2781,7 +2781,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2
    index b09a994..a310853 100644
    --- a/test_purposes/Gx/TP_GX.tplan2
    +++ b/test_purposes/Gx/TP_GX.tplan2
    @@ -215,7 +215,7 @@ Package TP_GX {
         Test Purpose {
             TP Id TP_GX_PCRF_CCA_06
             
    -        Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer controle mode selection."
    +        Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer control mode selection."
             
             Reference 
                 "TS 129 212 [9], clause 4.5.10"
    diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2
    index a2c2e0c..66e65f5 100644
    --- a/test_purposes/Ic/TP_IC.tplan2
    +++ b/test_purposes/Ic/TP_IC.tplan2
    @@ -40,7 +40,7 @@ Package TP_IC {
                 ensure that {
                     when {
                         the UE_A entity sends a MESSAGE   
    -                       containing  Message_Body_Size indicating value greater than 1300 bytes ;
    +                       containing  Message_Body_Size indicating value greater than 1_300 bytes ;
                         to the IMS_A entity
                     }
                     then {
    @@ -97,7 +97,7 @@ Package TP_IC {
             Expected behaviour 
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity forwards the initial INVITE containing
    @@ -225,7 +225,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_B entity sends an intial INVITE "addressed to UE_A" to the IMS_A entity  
    +                    the UE_B entity sends an initial INVITE "addressed to UE_A" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity forwards the initial INVITE containing
    @@ -274,7 +274,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to roaming UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an initial INVITE "addressed to roaming UE_B" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity receives the initial INVITE 
    @@ -306,7 +306,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -341,7 +341,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -374,7 +374,7 @@ Package TP_IC {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
                 the UE_A entity registeredPublicIdsWithTelUriAndSipUri and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -407,7 +407,7 @@ Package TP_IC {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
                 the UE_A entity registeredPublicIdsWithTelUriAndSipUri and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -439,7 +439,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -480,7 +480,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -522,7 +522,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -637,7 +637,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -706,7 +706,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -748,7 +748,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -975,7 +975,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_A entity  
                     }
                     then {
                     	the IMS_IBCF_A entity receives the INVITE
    @@ -1008,7 +1008,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_B entity  
    +                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_B entity  
                     }
                     then {
                     	the IMS_IBCF_B entity sends the INVITE
    @@ -1173,7 +1173,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1207,7 +1207,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1239,7 +1239,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1274,7 +1274,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity
             }
    @@ -1310,7 +1310,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity
             }
    @@ -1343,7 +1343,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity and
                 the UE_A entity hasReceivedTerminatedRequest from the UE_B entity  
    @@ -1379,7 +1379,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity and
                 the UE_A entity hasReceivedTerminatedRequest from the UE_B entity
    @@ -1671,7 +1671,7 @@ Package TP_IC {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2
    index b68950a..052f393 100644
    --- a/test_purposes/Mw/TP_MW_IS.tplan2
    +++ b/test_purposes/Mw/TP_MW_IS.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_MESSAGE_01
             
    -        Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -40,7 +40,7 @@ Package TP_MW_IS {
                 ensure that {
                     when {
                         the IMS_I_CSCF_A entity receives a MESSAGE
    -                       containing ContentLength indicating value greater than 1300 bytes;
    +                       containing ContentLength indicating value greater than 1_300 bytes;
                         from the IMS_P_CSCF_A entity
                     }
                     then {
    @@ -116,7 +116,7 @@ Package TP_MW_IS {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -162,7 +162,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_REGISTER_03
             
    -        Test objective  "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the I-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    @@ -291,7 +291,7 @@ Package TP_MW_IS {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -352,7 +352,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_REGISTER_06
             
    -        Test objective  "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the I-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], clauses 5.2.1, 5.2.2 and 6.3"
    diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2
    index 5fe26fd..b1f6245 100644
    --- a/test_purposes/Mw/TP_MW_PS.tplan2
    +++ b/test_purposes/Mw/TP_MW_PS.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_PS {
             
             TP Id TP_MW_PCSCF_MESSAGE_01
             
    -        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -44,7 +44,7 @@ Package TP_MW_PS {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         from the UE_A entity
                     }
                     then {
    @@ -57,7 +57,7 @@ Package TP_MW_PS {
                                 icid_value,
                                 orig_value,
                             not PAccessNetworkInfo,
    -                        ContentLength indicating value greater than 1300 bytes;;
    +                        ContentLength indicating value greater than 1_300 bytes;;
                         to the IMS_S_CSCF_A entity
                     }
                 }  
    @@ -141,7 +141,7 @@ Package TP_MW_PS {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -202,7 +202,7 @@ Package TP_MW_PS {
             
             TP Id TP_MW_PCSCF_REGISTER_03
             
    -        Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
    @@ -341,7 +341,7 @@ Package TP_MW_PS {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -405,7 +405,7 @@ Package TP_MW_PS {
             TP Id TP_MW_PCSCF_REGISTER_06
             // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07)
             
    -        Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
    @@ -2559,7 +2559,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE and
    +            the UE_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2605,7 +2605,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasAchieveInitialINVITE and
    +            the UE_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2653,7 +2653,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE and
    +            the UE_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2701,7 +2701,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_A and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasAchieveInitialINVITE and
    +            the UE_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2
    index cabff0c..a8cb580 100644
    --- a/test_purposes/Mw/TP_MW_SI.tplan2
    +++ b/test_purposes/Mw/TP_MW_SI.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_SI {
             
             TP Id TP_MW_SCSCF_MESSAGE_01
             
    -        Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -40,12 +40,12 @@ Package TP_MW_SI {
                 ensure that {
                     when {
                         the IMS_S_CSCF_A entity receives a MESSAGE containing
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         from the IMS_I_CSCF_A entity
                     }
                     then {
                         the IMS_S_CSCF_A entity forwards the MESSAGE containing
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         to the IMS_IBCF_A entity
                     }
                 }  
    @@ -117,7 +117,7 @@ Package TP_MW_SI {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -241,7 +241,7 @@ Package TP_MW_SI {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -2260,7 +2260,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the IMS_P_CSCF_A entity hasAchieveInitialINVITE and
    +            the IMS_P_CSCF_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2306,7 +2306,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the IMS_P_CSCF_B entity hasAchieveInitialINVITE and
    +            the IMS_P_CSCF_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2354,7 +2354,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE and
    +            the UE_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2402,7 +2402,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_A and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasAchieveInitialINVITE and
    +            the UE_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    diff --git a/test_purposes/Rtp/TP_Rtp.tplan2 b/test_purposes/Rtp/TP_Rtp.tplan2
    index ef9a2fc..7a5122e 100644
    --- a/test_purposes/Rtp/TP_Rtp.tplan2
    +++ b/test_purposes/Rtp/TP_Rtp.tplan2
    @@ -225,7 +225,7 @@ Package TP_RTP {
             Test objective  "Verify that IMS registration is possible over default bearer."
             
             Reference 
    -            "TS 129 328 (V15.3.0) [12], clause 6.1.1.1"
    +            "TS 129 328 [12], clause 6.1.1.1"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2
    index 0144a75..55d5cc9 100644
    --- a/test_purposes/Rx/TP_RX.tplan2
    +++ b/test_purposes/Rx/TP_RX.tplan2
    @@ -210,7 +210,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -250,7 +250,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
            
             Config Id CF_VxLTE_INT
             
    @@ -290,7 +290,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -330,7 +330,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -370,7 +370,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -410,7 +410,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -450,7 +450,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -490,7 +490,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/Sh/TP_Sh.tplan2 b/test_purposes/Sh/TP_Sh.tplan2
    index 58d34ee..a6b35bc 100644
    --- a/test_purposes/Sh/TP_Sh.tplan2
    +++ b/test_purposes/Sh/TP_Sh.tplan2
    @@ -27,7 +27,7 @@ Package TP_Sh {
             Test objective  "IUT successfully processes all mandatory AVPs in a UD-Request and sends UD-Answer."
             
             Reference 
    -            "TS 129 328 (V15.3.0) [12], clause 6.1.1.1"
    +            "TS 129 328 [12], clause 6.1.1.1"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2
    index 2ef3ff9..292a71a 100644
    --- a/test_purposes/Sip_Common.tplan2
    +++ b/test_purposes/Sip_Common.tplan2
    @@ -60,7 +60,7 @@ Package Sip_Common {
                 // Initial conditions
                 - isTriggeredToStart
                 - isNotRegisteredTo
    -            - hasAchieveFirstRegistration
    +            - hasAchievedFirstRegistration
                 - isRegisteredTo
                 - isNotAttachedTo
                 - isAttachedTo
    @@ -72,7 +72,7 @@ Package Sip_Common {
                 - registeredIdentitySipURI
                 - hasInitiatedDialogWith
                 - isConfiguredWithENUMentryForTelURI_E164NumberOf
    -            - hasReceivedIntialRequestForDialog
    +            - hasReceivedInitialRequestForDialog
                 - hasReceived200OkOnInitialRequestForDialogWith
                 - hasReceived180OnInitialRequest
                 - hasReceived200OkCancel
    @@ -86,10 +86,10 @@ Package Sip_Common {
                 - isNoLongerAvailable
                 - isTriggeredToDetachUser
                 - isRequestedToDetachfromNetwork
    -            - hasAchieveFirstREGISTER
    +            - hasAchievedFirstREGISTER
                 - hasResponded486INVITE
    -            - hasAchieveInitialINVITE
    -            - hasAchieveINVITE
    +            - hasAchievedInitialINVITE
    +            - hasAchievedINVITE
             ;
         } // End of Domain section
     
    diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
    index 1f3760b..1bf5e31 160000
    --- a/ttcn/LibDiameter
    +++ b/ttcn/LibDiameter
    @@ -1 +1 @@
    -Subproject commit 1f3760b09ac67c211d11508263c565c50776c98a
    +Subproject commit 1bf5e310ba324943a88b4922c5d479b13ef5548a
    diff --git a/ttcn/LibSip b/ttcn/LibSip
    index a227e9f..7d79616 160000
    --- a/ttcn/LibSip
    +++ b/ttcn/LibSip
    @@ -1 +1 @@
    -Subproject commit a227e9fca956475c5b481fb6042ecfcc9d632502
    +Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d
    -- 
    GitLab
    
    
    From a64b2387bacb102e0c8b68eb24020c64d10abc8a Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 15:57:27 +0100
    Subject: [PATCH 166/176] Revert "Edit help spellcheck updates"
    
    This reverts commit e9593073b4869a7ddf9f65bc0bc6ac0e8b570636.
    ---
     test_purposes/Gm/TP_GM.tplan2    | 38 ++++++++++++-------------
     test_purposes/Gx/TP_GX.tplan2    |  2 +-
     test_purposes/Ic/TP_IC.tplan2    | 48 ++++++++++++++++----------------
     test_purposes/Mw/TP_MW_IS.tplan2 | 12 ++++----
     test_purposes/Mw/TP_MW_PS.tplan2 | 22 +++++++--------
     test_purposes/Mw/TP_MW_SI.tplan2 | 18 ++++++------
     test_purposes/Rtp/TP_Rtp.tplan2  |  2 +-
     test_purposes/Rx/TP_RX.tplan2    | 16 +++++------
     test_purposes/Sh/TP_Sh.tplan2    |  2 +-
     test_purposes/Sip_Common.tplan2  | 10 +++----
     ttcn/LibDiameter                 |  2 +-
     ttcn/LibSip                      |  2 +-
     12 files changed, 87 insertions(+), 87 deletions(-)
    
    diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2
    index ac6b9be..418252b 100644
    --- a/test_purposes/Gm/TP_GM.tplan2
    +++ b/test_purposes/Gm/TP_GM.tplan2
    @@ -22,7 +22,7 @@ Package TP_GM {
             
             TP Id TP_GM_PCSCF_MESSAGE_01
             
    -        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 300 bytes"
    +        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A (1st paragraph)"
    @@ -44,7 +44,7 @@ Package TP_GM {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1_300 bytes;
    +                        ContentLength indicating value greater than 1300 bytes;
                         to the IMS_P_CSCF_A entity
                     }
                     then {
    @@ -53,7 +53,7 @@ Package TP_GM {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1_300 bytes;
    +                        ContentLength indicating value greater than 1300 bytes;
                         from the UE_A entity
                         and the IMS_P_CSCF_A entity sends a 200_Ok containing
                             From indicating value PX_UE_A_SIP_URI,
    @@ -147,7 +147,7 @@ Package TP_GM {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstRegistration
    +            the UE_A entity hasAchieveFirstRegistration
             }
             
             Expected behaviour
    @@ -316,7 +316,7 @@ Package TP_GM {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstRegistration
    +            the UE_A entity hasAchieveFirstRegistration
             }
             
             Expected behaviour
    @@ -879,7 +879,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedInitialINVITE
    +                    the UE_A entity hasAchieveInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 100_Trying
    @@ -960,7 +960,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedInitialINVITE
    +                    the UE_A entity hasAchieveInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 100_Trying
    @@ -1041,7 +1041,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedInitialINVITE
    +                    the UE_A entity hasAchieveInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 180_Ringing containing
    @@ -1129,7 +1129,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedInitialINVITE
    +                    the UE_A entity hasAchieveInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 180_Ringing containing
    @@ -1217,7 +1217,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedInitialINVITE
    +                    the UE_A entity hasAchieveInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 200_Ok containing
    @@ -1305,7 +1305,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedInitialINVITE
    +                    the UE_A entity hasAchieveInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 200_Ok containing
    @@ -1393,7 +1393,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedINVITE
    +                    the UE_A entity hasAchieveINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity receives an ACK containing
    @@ -1433,7 +1433,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_B entity hasAchievedInitialINVITE
    +                    the UE_B entity hasAchieveInitialINVITE
                     }
                     then {
                         the UE_B entity receives an ACK containing
    @@ -1473,7 +1473,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchievedINVITE
    +                    the UE_A entity hasAchieveINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity receives an ACK containing
    @@ -2224,7 +2224,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedInitialINVITE
    +            the UE_A entity hasAchieveInitialINVITE
             }
             
             Expected behaviour
    @@ -2263,7 +2263,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedInitialINVITE
    +            the UE_A entity hasAchieveInitialINVITE
             }
             
             Expected behaviour
    @@ -2303,7 +2303,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedInitialINVITE
    +            the UE_A entity hasAchieveInitialINVITE
             }
             
             Expected behaviour
    @@ -2343,7 +2343,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasAchievedInitialINVITE
    +            the UE_B entity hasAchieveInitialINVITE
             }
             
             Expected behaviour
    @@ -2781,7 +2781,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedInitialINVITE
    +            the UE_A entity hasAchieveInitialINVITE
             }
             
             Expected behaviour
    diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2
    index a310853..b09a994 100644
    --- a/test_purposes/Gx/TP_GX.tplan2
    +++ b/test_purposes/Gx/TP_GX.tplan2
    @@ -215,7 +215,7 @@ Package TP_GX {
         Test Purpose {
             TP Id TP_GX_PCRF_CCA_06
             
    -        Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer control mode selection."
    +        Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer controle mode selection."
             
             Reference 
                 "TS 129 212 [9], clause 4.5.10"
    diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2
    index 66e65f5..a2c2e0c 100644
    --- a/test_purposes/Ic/TP_IC.tplan2
    +++ b/test_purposes/Ic/TP_IC.tplan2
    @@ -40,7 +40,7 @@ Package TP_IC {
                 ensure that {
                     when {
                         the UE_A entity sends a MESSAGE   
    -                       containing  Message_Body_Size indicating value greater than 1_300 bytes ;
    +                       containing  Message_Body_Size indicating value greater than 1300 bytes ;
                         to the IMS_A entity
                     }
                     then {
    @@ -97,7 +97,7 @@ Package TP_IC {
             Expected behaviour 
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity forwards the initial INVITE containing
    @@ -225,7 +225,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_B entity sends an initial INVITE "addressed to UE_A" to the IMS_A entity  
    +                    the UE_B entity sends an intial INVITE "addressed to UE_A" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity forwards the initial INVITE containing
    @@ -274,7 +274,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an initial INVITE "addressed to roaming UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an intial INVITE "addressed to roaming UE_B" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity receives the initial INVITE 
    @@ -306,7 +306,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -341,7 +341,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -374,7 +374,7 @@ Package TP_IC {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
                 the UE_A entity registeredPublicIdsWithTelUriAndSipUri and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -407,7 +407,7 @@ Package TP_IC {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
                 the UE_A entity registeredPublicIdsWithTelUriAndSipUri and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -439,7 +439,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -480,7 +480,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -522,7 +522,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -637,7 +637,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -706,7 +706,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -748,7 +748,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -975,7 +975,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity  
                     }
                     then {
                     	the IMS_IBCF_A entity receives the INVITE
    @@ -1008,7 +1008,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_B entity  
    +                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_B entity  
                     }
                     then {
                     	the IMS_IBCF_B entity sends the INVITE
    @@ -1173,7 +1173,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1207,7 +1207,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1239,7 +1239,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1274,7 +1274,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity
             }
    @@ -1310,7 +1310,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity
             }
    @@ -1343,7 +1343,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity and
                 the UE_A entity hasReceivedTerminatedRequest from the UE_B entity  
    @@ -1379,7 +1379,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity and
                 the UE_A entity hasReceivedTerminatedRequest from the UE_B entity
    @@ -1671,7 +1671,7 @@ Package TP_IC {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstREGISTER
    +            the UE_A entity hasAchieveFirstREGISTER
             }
             
             Expected behaviour
    diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2
    index 052f393..b68950a 100644
    --- a/test_purposes/Mw/TP_MW_IS.tplan2
    +++ b/test_purposes/Mw/TP_MW_IS.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_MESSAGE_01
             
    -        Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1 300 bytes"
    +        Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -40,7 +40,7 @@ Package TP_MW_IS {
                 ensure that {
                     when {
                         the IMS_I_CSCF_A entity receives a MESSAGE
    -                       containing ContentLength indicating value greater than 1_300 bytes;
    +                       containing ContentLength indicating value greater than 1300 bytes;
                         from the IMS_P_CSCF_A entity
                     }
                     then {
    @@ -116,7 +116,7 @@ Package TP_MW_IS {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstREGISTER
    +            the UE_A entity hasAchieveFirstREGISTER
             }
             
             Expected behaviour
    @@ -162,7 +162,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_REGISTER_03
             
    -        Test objective  "Verify that the I-CSCF successfully processes an invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    @@ -291,7 +291,7 @@ Package TP_MW_IS {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstREGISTER
    +            the UE_A entity hasAchieveFirstREGISTER
             }
             
             Expected behaviour
    @@ -352,7 +352,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_REGISTER_06
             
    -        Test objective  "Verify that the I-CSCF successfully processes an invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], clauses 5.2.1, 5.2.2 and 6.3"
    diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2
    index b1f6245..5fe26fd 100644
    --- a/test_purposes/Mw/TP_MW_PS.tplan2
    +++ b/test_purposes/Mw/TP_MW_PS.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_PS {
             
             TP Id TP_MW_PCSCF_MESSAGE_01
             
    -        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 300 bytes"
    +        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -44,7 +44,7 @@ Package TP_MW_PS {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1_300 bytes;
    +                        ContentLength indicating value greater than 1300 bytes;
                         from the UE_A entity
                     }
                     then {
    @@ -57,7 +57,7 @@ Package TP_MW_PS {
                                 icid_value,
                                 orig_value,
                             not PAccessNetworkInfo,
    -                        ContentLength indicating value greater than 1_300 bytes;;
    +                        ContentLength indicating value greater than 1300 bytes;;
                         to the IMS_S_CSCF_A entity
                     }
                 }  
    @@ -141,7 +141,7 @@ Package TP_MW_PS {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstREGISTER
    +            the UE_A entity hasAchieveFirstREGISTER
             }
             
             Expected behaviour
    @@ -202,7 +202,7 @@ Package TP_MW_PS {
             
             TP Id TP_MW_PCSCF_REGISTER_03
             
    -        Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
    @@ -341,7 +341,7 @@ Package TP_MW_PS {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstREGISTER
    +            the UE_A entity hasAchieveFirstREGISTER
             }
             
             Expected behaviour
    @@ -405,7 +405,7 @@ Package TP_MW_PS {
             TP Id TP_MW_PCSCF_REGISTER_06
             // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07)
             
    -        Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
    @@ -2559,7 +2559,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedInitialINVITE and
    +            the UE_A entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2605,7 +2605,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasAchievedInitialINVITE and
    +            the UE_B entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2653,7 +2653,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedInitialINVITE and
    +            the UE_A entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2701,7 +2701,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_A and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasAchievedInitialINVITE and
    +            the UE_B entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2
    index a8cb580..cabff0c 100644
    --- a/test_purposes/Mw/TP_MW_SI.tplan2
    +++ b/test_purposes/Mw/TP_MW_SI.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_SI {
             
             TP Id TP_MW_SCSCF_MESSAGE_01
             
    -        Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1 300 bytes"
    +        Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -40,12 +40,12 @@ Package TP_MW_SI {
                 ensure that {
                     when {
                         the IMS_S_CSCF_A entity receives a MESSAGE containing
    -                        ContentLength indicating value greater than 1_300 bytes;
    +                        ContentLength indicating value greater than 1300 bytes;
                         from the IMS_I_CSCF_A entity
                     }
                     then {
                         the IMS_S_CSCF_A entity forwards the MESSAGE containing
    -                        ContentLength indicating value greater than 1_300 bytes;
    +                        ContentLength indicating value greater than 1300 bytes;
                         to the IMS_IBCF_A entity
                     }
                 }  
    @@ -117,7 +117,7 @@ Package TP_MW_SI {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstREGISTER
    +            the UE_A entity hasAchieveFirstREGISTER
             }
             
             Expected behaviour
    @@ -241,7 +241,7 @@ Package TP_MW_SI {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedFirstREGISTER
    +            the UE_A entity hasAchieveFirstREGISTER
             }
             
             Expected behaviour
    @@ -2260,7 +2260,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the IMS_P_CSCF_A entity hasAchievedInitialINVITE and
    +            the IMS_P_CSCF_A entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2306,7 +2306,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the IMS_P_CSCF_B entity hasAchievedInitialINVITE and
    +            the IMS_P_CSCF_B entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2354,7 +2354,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchievedInitialINVITE and
    +            the UE_A entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2402,7 +2402,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_A and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasAchievedInitialINVITE and
    +            the UE_B entity hasAchieveInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    diff --git a/test_purposes/Rtp/TP_Rtp.tplan2 b/test_purposes/Rtp/TP_Rtp.tplan2
    index 7a5122e..ef9a2fc 100644
    --- a/test_purposes/Rtp/TP_Rtp.tplan2
    +++ b/test_purposes/Rtp/TP_Rtp.tplan2
    @@ -225,7 +225,7 @@ Package TP_RTP {
             Test objective  "Verify that IMS registration is possible over default bearer."
             
             Reference 
    -            "TS 129 328 [12], clause 6.1.1.1"
    +            "TS 129 328 (V15.3.0) [12], clause 6.1.1.1"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2
    index 55d5cc9..0144a75 100644
    --- a/test_purposes/Rx/TP_RX.tplan2
    +++ b/test_purposes/Rx/TP_RX.tplan2
    @@ -210,7 +210,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -250,7 +250,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
            
             Config Id CF_VxLTE_INT
             
    @@ -290,7 +290,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -330,7 +330,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -370,7 +370,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -410,7 +410,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -450,7 +450,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    @@ -490,7 +490,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and annex B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/Sh/TP_Sh.tplan2 b/test_purposes/Sh/TP_Sh.tplan2
    index a6b35bc..58d34ee 100644
    --- a/test_purposes/Sh/TP_Sh.tplan2
    +++ b/test_purposes/Sh/TP_Sh.tplan2
    @@ -27,7 +27,7 @@ Package TP_Sh {
             Test objective  "IUT successfully processes all mandatory AVPs in a UD-Request and sends UD-Answer."
             
             Reference 
    -            "TS 129 328 [12], clause 6.1.1.1"
    +            "TS 129 328 (V15.3.0) [12], clause 6.1.1.1"
             
             Config Id CF_VxLTE_INT
             
    diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2
    index 292a71a..2ef3ff9 100644
    --- a/test_purposes/Sip_Common.tplan2
    +++ b/test_purposes/Sip_Common.tplan2
    @@ -60,7 +60,7 @@ Package Sip_Common {
                 // Initial conditions
                 - isTriggeredToStart
                 - isNotRegisteredTo
    -            - hasAchievedFirstRegistration
    +            - hasAchieveFirstRegistration
                 - isRegisteredTo
                 - isNotAttachedTo
                 - isAttachedTo
    @@ -72,7 +72,7 @@ Package Sip_Common {
                 - registeredIdentitySipURI
                 - hasInitiatedDialogWith
                 - isConfiguredWithENUMentryForTelURI_E164NumberOf
    -            - hasReceivedInitialRequestForDialog
    +            - hasReceivedIntialRequestForDialog
                 - hasReceived200OkOnInitialRequestForDialogWith
                 - hasReceived180OnInitialRequest
                 - hasReceived200OkCancel
    @@ -86,10 +86,10 @@ Package Sip_Common {
                 - isNoLongerAvailable
                 - isTriggeredToDetachUser
                 - isRequestedToDetachfromNetwork
    -            - hasAchievedFirstREGISTER
    +            - hasAchieveFirstREGISTER
                 - hasResponded486INVITE
    -            - hasAchievedInitialINVITE
    -            - hasAchievedINVITE
    +            - hasAchieveInitialINVITE
    +            - hasAchieveINVITE
             ;
         } // End of Domain section
     
    diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
    index 1bf5e31..1f3760b 160000
    --- a/ttcn/LibDiameter
    +++ b/ttcn/LibDiameter
    @@ -1 +1 @@
    -Subproject commit 1bf5e310ba324943a88b4922c5d479b13ef5548a
    +Subproject commit 1f3760b09ac67c211d11508263c565c50776c98a
    diff --git a/ttcn/LibSip b/ttcn/LibSip
    index 7d79616..a227e9f 160000
    --- a/ttcn/LibSip
    +++ b/ttcn/LibSip
    @@ -1 +1 @@
    -Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d
    +Subproject commit a227e9fca956475c5b481fb6042ecfcc9d632502
    -- 
    GitLab
    
    
    From a327e380c2818c899ef6a286b5ba0343be78f06c Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:05:29 +0100
    Subject: [PATCH 167/176] Edit help spellcheck updates
    
    ---
     test_purposes/Gm/TP_GM.tplan2 | 38 +++++++++++++++++------------------
     1 file changed, 19 insertions(+), 19 deletions(-)
    
    diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2
    index 418252b..ac6b9be 100644
    --- a/test_purposes/Gm/TP_GM.tplan2
    +++ b/test_purposes/Gm/TP_GM.tplan2
    @@ -22,7 +22,7 @@ Package TP_GM {
             
             TP Id TP_GM_PCSCF_MESSAGE_01
             
    -        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A (1st paragraph)"
    @@ -44,7 +44,7 @@ Package TP_GM {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         to the IMS_P_CSCF_A entity
                     }
                     then {
    @@ -53,7 +53,7 @@ Package TP_GM {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         from the UE_A entity
                         and the IMS_P_CSCF_A entity sends a 200_Ok containing
                             From indicating value PX_UE_A_SIP_URI,
    @@ -147,7 +147,7 @@ Package TP_GM {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstRegistration
    +            the UE_A entity hasAchievedFirstRegistration
             }
             
             Expected behaviour
    @@ -316,7 +316,7 @@ Package TP_GM {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstRegistration
    +            the UE_A entity hasAchievedFirstRegistration
             }
             
             Expected behaviour
    @@ -879,7 +879,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 100_Trying
    @@ -960,7 +960,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 100_Trying
    @@ -1041,7 +1041,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 180_Ringing containing
    @@ -1129,7 +1129,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 180_Ringing containing
    @@ -1217,7 +1217,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity sends a 200_Ok containing
    @@ -1305,7 +1305,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveInitialINVITE
    +                    the UE_A entity hasAchievedInitialINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity sends a 200_Ok containing
    @@ -1393,7 +1393,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveINVITE
    +                    the UE_A entity hasAchievedINVITE
                     }
                     then {
                         the IMS_P_CSCF_A entity receives an ACK containing
    @@ -1433,7 +1433,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_B entity hasAchieveInitialINVITE
    +                    the UE_B entity hasAchievedInitialINVITE
                     }
                     then {
                         the UE_B entity receives an ACK containing
    @@ -1473,7 +1473,7 @@ Package TP_GM {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity hasAchieveINVITE
    +                    the UE_A entity hasAchievedINVITE
                     }
                     then {
                         the IMS_P_CSCF_B entity receives an ACK containing
    @@ -2224,7 +2224,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2263,7 +2263,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2303,7 +2303,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2343,7 +2343,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasAchieveInitialINVITE
    +            the UE_B entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    @@ -2781,7 +2781,7 @@ Package TP_GM {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE
    +            the UE_A entity hasAchievedInitialINVITE
             }
             
             Expected behaviour
    -- 
    GitLab
    
    
    From 86cee01258abb6f447ecdfb62a7357cbd68be1a3 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:05:54 +0100
    Subject: [PATCH 168/176] Edit help spellcheck updates
    
    ---
     test_purposes/Gx/TP_GX.tplan2 | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2
    index b09a994..a310853 100644
    --- a/test_purposes/Gx/TP_GX.tplan2
    +++ b/test_purposes/Gx/TP_GX.tplan2
    @@ -215,7 +215,7 @@ Package TP_GX {
         Test Purpose {
             TP Id TP_GX_PCRF_CCA_06
             
    -        Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer controle mode selection."
    +        Test objective  "Verify that IUT when receives CC-Request for session update sends a CC-Answer in case of bearer control mode selection."
             
             Reference 
                 "TS 129 212 [9], clause 4.5.10"
    -- 
    GitLab
    
    
    From 576c0edafe7ec210ef1876604b95a776e80c0840 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:06:19 +0100
    Subject: [PATCH 169/176] Edit help spellcheck updates
    
    ---
     test_purposes/Ic/TP_IC.tplan2 | 48 +++++++++++++++++------------------
     1 file changed, 24 insertions(+), 24 deletions(-)
    
    diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2
    index a2c2e0c..66e65f5 100644
    --- a/test_purposes/Ic/TP_IC.tplan2
    +++ b/test_purposes/Ic/TP_IC.tplan2
    @@ -40,7 +40,7 @@ Package TP_IC {
                 ensure that {
                     when {
                         the UE_A entity sends a MESSAGE   
    -                       containing  Message_Body_Size indicating value greater than 1300 bytes ;
    +                       containing  Message_Body_Size indicating value greater than 1_300 bytes ;
                         to the IMS_A entity
                     }
                     then {
    @@ -97,7 +97,7 @@ Package TP_IC {
             Expected behaviour 
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity forwards the initial INVITE containing
    @@ -225,7 +225,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_B entity sends an intial INVITE "addressed to UE_A" to the IMS_A entity  
    +                    the UE_B entity sends an initial INVITE "addressed to UE_A" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity forwards the initial INVITE containing
    @@ -274,7 +274,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to roaming UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an initial INVITE "addressed to roaming UE_B" to the IMS_A entity  
                     }
                     then {
                         the IMS_IBCF_A entity receives the initial INVITE 
    @@ -306,7 +306,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -341,7 +341,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -374,7 +374,7 @@ Package TP_IC {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
                 the UE_A entity registeredPublicIdsWithTelUriAndSipUri and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -407,7 +407,7 @@ Package TP_IC {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
                 the UE_A entity registeredPublicIdsWithTelUriAndSipUri and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -439,7 +439,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -480,7 +480,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -522,7 +522,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -637,7 +637,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity 
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity 
             }
             
             Expected behaviour
    @@ -706,7 +706,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -748,7 +748,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasReceivedIntialRequestForDialog from the UE_A entity 
    +            the UE_B entity hasReceivedInitialRequestForDialog from the UE_A entity 
             }
             
             Expected behaviour
    @@ -975,7 +975,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_A entity  
    +                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_A entity  
                     }
                     then {
                     	the IMS_IBCF_A entity receives the INVITE
    @@ -1008,7 +1008,7 @@ Package TP_IC {
             Expected behaviour
                 ensure that { 
                     when { 
    -                    the UE_A entity sends an intial INVITE "addressed to UE_B" to the IMS_B entity  
    +                    the UE_A entity sends an initial INVITE "addressed to UE_B" to the IMS_B entity  
                     }
                     then {
                     	the IMS_IBCF_B entity sends the INVITE
    @@ -1173,7 +1173,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1207,7 +1207,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1239,7 +1239,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -1274,7 +1274,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity
             }
    @@ -1310,7 +1310,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity
             }
    @@ -1343,7 +1343,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity and
                 the UE_A entity hasReceivedTerminatedRequest from the UE_B entity  
    @@ -1379,7 +1379,7 @@ Package TP_IC {
             Initial conditions with {
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasReceivedIntialRequestForDialog from the UE_B entity and
    +            the UE_A entity hasReceivedInitialRequestForDialog from the UE_B entity and
                 the UE_A entity isRequestedToSend a CANCEL and
                 the UE_A entity hasReceived200OkCancel from the UE_B entity and
                 the UE_A entity hasReceivedTerminatedRequest from the UE_B entity
    @@ -1671,7 +1671,7 @@ Package TP_IC {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    -- 
    GitLab
    
    
    From 61f7fdd5cce695cb4733ff78713c7ecb351229ea Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:06:34 +0100
    Subject: [PATCH 170/176] Edit help spellcheck updates
    
    ---
     test_purposes/Mw/TP_MW_IS.tplan2 | 12 ++++++------
     1 file changed, 6 insertions(+), 6 deletions(-)
    
    diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2
    index b68950a..052f393 100644
    --- a/test_purposes/Mw/TP_MW_IS.tplan2
    +++ b/test_purposes/Mw/TP_MW_IS.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_MESSAGE_01
             
    -        Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the I-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -40,7 +40,7 @@ Package TP_MW_IS {
                 ensure that {
                     when {
                         the IMS_I_CSCF_A entity receives a MESSAGE
    -                       containing ContentLength indicating value greater than 1300 bytes;
    +                       containing ContentLength indicating value greater than 1_300 bytes;
                         from the IMS_P_CSCF_A entity
                     }
                     then {
    @@ -116,7 +116,7 @@ Package TP_MW_IS {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -162,7 +162,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_REGISTER_03
             
    -        Test objective  "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the I-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clause 5.2.2.1 and Clause 6.2"
    @@ -291,7 +291,7 @@ Package TP_MW_IS {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -352,7 +352,7 @@ Package TP_MW_IS {
             
             TP Id TP_MW_ICSCF_REGISTER_06
             
    -        Test objective  "Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the I-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], clauses 5.2.1, 5.2.2 and 6.3"
    -- 
    GitLab
    
    
    From 6dcad14f14c445ee49c3ad2cd2fa78d6b5879c02 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:06:39 +0100
    Subject: [PATCH 171/176] Edit help spellcheck updates
    
    ---
     test_purposes/Mw/TP_MW_PS.tplan2 | 22 +++++++++++-----------
     1 file changed, 11 insertions(+), 11 deletions(-)
    
    diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2
    index 5fe26fd..b1f6245 100644
    --- a/test_purposes/Mw/TP_MW_PS.tplan2
    +++ b/test_purposes/Mw/TP_MW_PS.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_PS {
             
             TP Id TP_MW_PCSCF_MESSAGE_01
             
    -        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the P-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -44,7 +44,7 @@ Package TP_MW_PS {
                             To indicating value PX_UE_A_SIP_URI,
                             CallId indicating value PX_UE_A_CALLID,
                             Via indicating value PX_UE_A_VIA,
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         from the UE_A entity
                     }
                     then {
    @@ -57,7 +57,7 @@ Package TP_MW_PS {
                                 icid_value,
                                 orig_value,
                             not PAccessNetworkInfo,
    -                        ContentLength indicating value greater than 1300 bytes;;
    +                        ContentLength indicating value greater than 1_300 bytes;;
                         to the IMS_S_CSCF_A entity
                     }
                 }  
    @@ -141,7 +141,7 @@ Package TP_MW_PS {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -202,7 +202,7 @@ Package TP_MW_PS {
             
             TP Id TP_MW_PCSCF_REGISTER_03
             
    -        Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
    @@ -341,7 +341,7 @@ Package TP_MW_PS {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -405,7 +405,7 @@ Package TP_MW_PS {
             TP Id TP_MW_PCSCF_REGISTER_06
             // TP_IMST2_MW_REG_01 from ETSI TS 102 790-2 V3.1.1 (2014-07)
             
    -        Test objective  "Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful)."
    +        Test objective  "Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful)."
             
             Reference 
                 "ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2"
    @@ -2559,7 +2559,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE and
    +            the UE_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2605,7 +2605,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_B entity hasAchieveInitialINVITE and
    +            the UE_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2653,7 +2653,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE and
    +            the UE_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2701,7 +2701,7 @@ Package TP_MW_PS {
                 the UE_B entity isAttachedTo the EPC_A and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasAchieveInitialINVITE and
    +            the UE_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    -- 
    GitLab
    
    
    From a863ec47b80a723c0f2222b276c19a21d7bf15e0 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:06:46 +0100
    Subject: [PATCH 172/176] Edit help spellcheck updates
    
    ---
     test_purposes/Mw/TP_MW_SI.tplan2 | 18 +++++++++---------
     1 file changed, 9 insertions(+), 9 deletions(-)
    
    diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2
    index cabff0c..a8cb580 100644
    --- a/test_purposes/Mw/TP_MW_SI.tplan2
    +++ b/test_purposes/Mw/TP_MW_SI.tplan2
    @@ -22,7 +22,7 @@ Package TP_MW_SI {
             
             TP Id TP_MW_SCSCF_MESSAGE_01
             
    -        Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1300 bytes"
    +        Test objective "Verify that the S-CSCF successfully processes a SIP messages greater than 1 300 bytes"
                    
             Reference 
               "TS 124 229 [1], clause 4.2A"  
    @@ -40,12 +40,12 @@ Package TP_MW_SI {
                 ensure that {
                     when {
                         the IMS_S_CSCF_A entity receives a MESSAGE containing
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         from the IMS_I_CSCF_A entity
                     }
                     then {
                         the IMS_S_CSCF_A entity forwards the MESSAGE containing
    -                        ContentLength indicating value greater than 1300 bytes;
    +                        ContentLength indicating value greater than 1_300 bytes;
                         to the IMS_IBCF_A entity
                     }
                 }  
    @@ -117,7 +117,7 @@ Package TP_MW_SI {
                 the UE_A entity isAttachedTo the EPC_A and
                 the UE_A entity isNotRegisteredTo the IMS_A and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -241,7 +241,7 @@ Package TP_MW_SI {
                 the UE_A entity isAttachedTo the EPC_B and
                 the UE_A entity isNotRegisteredTo the IMS_B and
                 the UE_B entity isNotRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveFirstREGISTER
    +            the UE_A entity hasAchievedFirstREGISTER
             }
             
             Expected behaviour
    @@ -2260,7 +2260,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the IMS_P_CSCF_A entity hasAchieveInitialINVITE and
    +            the IMS_P_CSCF_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2306,7 +2306,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the IMS_P_CSCF_B entity hasAchieveInitialINVITE and
    +            the IMS_P_CSCF_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2354,7 +2354,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_B and
                 the UE_A entity isRegisteredTo the IMS_B and
                 the UE_B entity isRegisteredTo the IMS_B and
    -            the UE_A entity hasAchieveInitialINVITE and
    +            the UE_A entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    @@ -2402,7 +2402,7 @@ Package TP_MW_SI {
                 the UE_B entity isAttachedTo the EPC_A and
                 the UE_A entity isRegisteredTo the IMS_A and
                 the UE_B entity isRegisteredTo the IMS_A and
    -            the UE_B entity hasAchieveInitialINVITE and
    +            the UE_B entity hasAchievedInitialINVITE and
                 the UE_A entity isRequestedToSend a CANCEL
             }
             
    -- 
    GitLab
    
    
    From 52aebfdae544ef8d802a53abfedf7a3b2c625418 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:07:01 +0100
    Subject: [PATCH 173/176] Edit help spellcheck updates
    
    ---
     test_purposes/Rtp/TP_Rtp.tplan2 | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/test_purposes/Rtp/TP_Rtp.tplan2 b/test_purposes/Rtp/TP_Rtp.tplan2
    index ef9a2fc..7a5122e 100644
    --- a/test_purposes/Rtp/TP_Rtp.tplan2
    +++ b/test_purposes/Rtp/TP_Rtp.tplan2
    @@ -225,7 +225,7 @@ Package TP_RTP {
             Test objective  "Verify that IMS registration is possible over default bearer."
             
             Reference 
    -            "TS 129 328 (V15.3.0) [12], clause 6.1.1.1"
    +            "TS 129 328 [12], clause 6.1.1.1"
             
             Config Id CF_VxLTE_INT
             
    -- 
    GitLab
    
    
    From cea0151f075c867424a76e525a62141ed7b96f86 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:07:25 +0100
    Subject: [PATCH 174/176] Edit help spellcheck updates
    
    ---
     test_purposes/Rx/TP_RX.tplan2 | 16 ++++++++--------
     1 file changed, 8 insertions(+), 8 deletions(-)
    
    diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2
    index 0144a75..55d5cc9 100644
    --- a/test_purposes/Rx/TP_RX.tplan2
    +++ b/test_purposes/Rx/TP_RX.tplan2
    @@ -210,7 +210,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -250,7 +250,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for originating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
            
             Config Id CF_VxLTE_INT
             
    @@ -290,7 +290,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -330,7 +330,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -370,7 +370,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session establishment for terminating side after 183 response with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -410,7 +410,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after reINVITE with SDP is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.1, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -450,7 +450,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for originating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    @@ -490,7 +490,7 @@ Package TP_RX {
             Test objective  "Verify that IUT send AA-Request in case of session modification for terminating side after 200 OK on re-INVITE is received."
             
             Reference 
    -            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and B"
    +            "TS 129 214 [8], clauses 4.4.2, A.1, A.2 and annex B"
             
             Config Id CF_VxLTE_INT
             
    -- 
    GitLab
    
    
    From d633617e554fc8f2dfb4a9ba74b24081e5d1ad09 Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:07:35 +0100
    Subject: [PATCH 175/176] Edit help spellcheck updates
    
    ---
     test_purposes/Sh/TP_Sh.tplan2 | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/test_purposes/Sh/TP_Sh.tplan2 b/test_purposes/Sh/TP_Sh.tplan2
    index 58d34ee..a6b35bc 100644
    --- a/test_purposes/Sh/TP_Sh.tplan2
    +++ b/test_purposes/Sh/TP_Sh.tplan2
    @@ -27,7 +27,7 @@ Package TP_Sh {
             Test objective  "IUT successfully processes all mandatory AVPs in a UD-Request and sends UD-Answer."
             
             Reference 
    -            "TS 129 328 (V15.3.0) [12], clause 6.1.1.1"
    +            "TS 129 328 [12], clause 6.1.1.1"
             
             Config Id CF_VxLTE_INT
             
    -- 
    GitLab
    
    
    From 8c17ad4976bc85adabc3f555f820cda53dbf52dc Mon Sep 17 00:00:00 2001
    From: pintar 
    Date: Sun, 26 Dec 2021 16:07:43 +0100
    Subject: [PATCH 176/176] Edit help spellcheck updates
    
    ---
     test_purposes/Sip_Common.tplan2 | 10 +++++-----
     1 file changed, 5 insertions(+), 5 deletions(-)
    
    diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2
    index 2ef3ff9..292a71a 100644
    --- a/test_purposes/Sip_Common.tplan2
    +++ b/test_purposes/Sip_Common.tplan2
    @@ -60,7 +60,7 @@ Package Sip_Common {
                 // Initial conditions
                 - isTriggeredToStart
                 - isNotRegisteredTo
    -            - hasAchieveFirstRegistration
    +            - hasAchievedFirstRegistration
                 - isRegisteredTo
                 - isNotAttachedTo
                 - isAttachedTo
    @@ -72,7 +72,7 @@ Package Sip_Common {
                 - registeredIdentitySipURI
                 - hasInitiatedDialogWith
                 - isConfiguredWithENUMentryForTelURI_E164NumberOf
    -            - hasReceivedIntialRequestForDialog
    +            - hasReceivedInitialRequestForDialog
                 - hasReceived200OkOnInitialRequestForDialogWith
                 - hasReceived180OnInitialRequest
                 - hasReceived200OkCancel
    @@ -86,10 +86,10 @@ Package Sip_Common {
                 - isNoLongerAvailable
                 - isTriggeredToDetachUser
                 - isRequestedToDetachfromNetwork
    -            - hasAchieveFirstREGISTER
    +            - hasAchievedFirstREGISTER
                 - hasResponded486INVITE
    -            - hasAchieveInitialINVITE
    -            - hasAchieveINVITE
    +            - hasAchievedInitialINVITE
    +            - hasAchievedINVITE
             ;
         } // End of Domain section
     
    -- 
    GitLab